1、 第一章 绪论本次设计分析主要是针对洗衣机在各种生产和生活中的应用,对其控制原理和方式的分析。 一、选题的背景意义洗衣机作为一种常见的家电,已经成为人们生活中不可缺少的家用电器。在工业生产中的应用也十分广泛,本课题在于全自动洗衣机控制的研究,自动控制洗衣机适用于洗涤棉、毛、化纤、丝绸等衣物织品。水磨洗涤机可用于服装厂水洗牛仔服及丝绸等衣物。自动控制用洗衣机适用于宾馆、饭店、医院、学校、工厂等领域,满足人们生活工作中的各种需求。但是传统的基于半手动的控制,已经不能满足人们对洗衣机的自动化程度的要求了。洗衣机需要更好地满足人们的需求,必须借助于自动化技术的发展。而随着PLC技术的发展,用PLC作为
2、控制器,就能很好地满足全自动洗衣机对自动化的要求,并且控制方式灵活多样,控制模式也可以因地制宜。自动化技术的飞速发展使得洗衣机控制方式由初始的半自动式洗衣机发展到现在的全自动洗衣机,又正在向智能化洗衣机方向发展。 二、洗衣机的发展历史洗衣服一直都是一项难于逃避的家务劳动,在没有洗衣机的那些年代里,对于许多人而言,洗衣并不像田园诗描绘的那样充满乐趣,手搓、棒击、冲刷、甩打这些不断重复的简单的体力劳动,留给人的感受常常是:辛苦,劳累以及不公平的待遇。 1874年,美国人比尔布莱克斯发明了木制手摇洗衣机,给长期从事洗衣作业的人们带来了福音。布莱克斯的洗衣机构造极为简单,是在木筒里装上6块叶片,用手柄
3、和齿轮传动,使衣服在筒内翻转,从而达到“净衣”的目的。这套装置的问世,使人们大受启发,洗衣机的改进过程开始大大加快。 1880年,美国又出现了蒸汽洗衣机,蒸汽动力开始取代人力。 之后,水力洗衣机、内燃机洗衣机也相继出现。到1911年,美国试制成功世界上第一台电动洗衣机。电动洗衣机的问世,标志着人类家务劳动自动化的开端。1922制造出的“搅拌式”洗衣机使洗衣机的进化有了新的里程。搅拌式洗衣机由美国玛依塔格公司研制成功。这意味着电动洗衣机的型式跃上一个新台阶,朝自动化又前进了一大步!直至今日滚筒式洗衣机在欧美国家仍得到广泛应用。 三、自动控制的应用领域现代社会要求制造业对市场需求做出迅速的反应,生
4、产出小批量、多品种、多规格、低成本和高质量的产品,为了满足这一要求,生产设备和自动生产线的控制系统必须具有极高的可靠性和灵活性,可编程控制器简称PLC(Programmable Logic Controller)正是顺应这一要求出现的,它是以微处理器为基础的通用工业控制装置。PLC的应用面广、功能强大、使用方便,是当代工业自动化的主要设备之一。PLC已经广泛地应用在各种机械设备和生产过程的自动控制系统中,当然PLC在其他领域也得到了迅速的发展。在发达的工业国家,PLC已经广泛的应用在所有的工业部门,随着其性能价格比的不断提高,应用范围不断扩大,在我国有越来越多的行业领域开始应用到PLC。PLC
5、的应用领域主要有数字量逻辑控制、运动控制、闭环过程控制、数据处理、通信联网等几个方面。 四、 本次毕设主要研究的内容本次毕业设计是利用已有的洗衣机电路及其系统对洗衣机的控制面板和控制方式进行分析探讨,了解控制面板针对各个部件及其工作单元的控制方式和流程。通过对洗衣机的控制系统的分析更多的了解生活中常用的家电的系统设计和结构原理。并初步掌握自动控制的基本方式以及实现方式。以期实现对洗衣机原有的控制面板和系统的改良和完善。在实现以上全部功能的前提下,再对监控界面的控制功能作进一步研究,监控界面的控制功能就是不在现场的情况下,对现场的设备进行控制。第一章 洗衣机控制面板设计任务及技术要求1 主要内容
6、设计一个用单片机控制的洗衣机控制面板。以单片机为主控制器,扩展必要的外部电路,设计制作一个洗衣机控制面板。(1) 洗涤按钮 洗涤时间20分钟。洗涤种类有:强洗、弱洗、轻柔等。通过按键改变洗涤种类。(2) 洗涤时 洗涤指示灯亮:强洗时强洗指示灯亮;弱洗时,弱洗指示灯亮;轻柔时,轻柔指示灯亮。(3) 有启动/停止按钮控制:第一次启动时,标准洗涤;工作时,再按停止按键停止工作。默认洗涤时间为20分钟。2工程技术方案目前国内市场上有很多种类的洗衣机,采用的控制系统也各不相同,基于学习与实际的情况,本设计采用AT89S52系列单片机来实现洗衣机控制器的各z种控制要求。此设计以单片机为主体配以各种控制电路
7、,构成洗衣机的程序控制系统。当有故障时,在排除了机械系统和程控器外接部件后。一般来说,先检测判定单片机外围控制电路,正常后,再判断单片机的故障。程序控制系统接受来自操作面板的动作指令,传送出相应的执行命令,并发出声音报警。重新控制系统的这些功能是由它的各种控制电路相互配合工作来实现的。3 控制面板内容控制面板包括显示界面,控制开光,报警灯和特殊情况下使用的紧急开关按钮。控制面板设计要求系统可以方便直接的控制洗衣机内部的各个功能电路以实现现实生活中的各种需求。 第二章 系统概述2.1 系统设计要求洗衣机控制面板主要包括:功能键 选择键 时间调整键 复位键设计内容:设计一个用单片机控制的洗衣机控制
8、面板。以单片机为主控制器,扩展必要的外部电路,设计创作一个洗衣机控制器。完成一次洗涤过程需要的动作有:(1) 进水动作 进行洗涤时,桶内的水量必须达到水位设定要求。洗衣机的进水和水位判断,是由水位开关和进水阀的开合来进行控制的,当桶内没有水或水量达不到设定水位时,单片机程序奖可在进水阀闭合,开始注水,当桶内的水位达到设定水位时,水位开关受压闭合,程序就可进行下一步处理。(2) 排水动作 进入脱水动作前应先排水。为了避免空排水及排水不完造成对电机的损害。洗衣机能够根据实际水量对排水时间进行动态控制。(3) 洗涤动作 洗涤动作指的是点击周期性的“正传停止反转停止”。不同的洗衣过程,控制电机执行“正
9、传停止反转停止”的时间是不同的。(4) 脱水动作 排水结束后进入脱水动作,脱水是通过电机的正转来实现的,同时要求排水阀一直打开。脱水结束后,发出报警,并自动关闭排水阀。(5) 其他动作 洗衣机控制面板上还配有启动,停止 电源,强洗,弱洗按钮。2.2 系统构成部件主控制系统运用的是AT89S52单片机其主要控制的对象包括:洗衣时间,洗衣种类及电机.。这些被控对象是根据不同的洗衣程序来设定他们不同的工作状况和工作时间的,同时需要液晶显示不同的工作状态及运行时间。发光二极管用来指示洗涤速度及洗涤种类;按键用来控制程序的运行和洗涤种类和洗涤时间;蜂鸣器用来进行程序运行提示及故障报警。下面是洗衣机控制器
10、系统控制框图:ATS8952电源时钟信号LCD液晶显示电路按键控制电路复位电路报警电路各框图的作用包括:a) 单片机电路 单片机电路是程序控制的中心。它把计算机的各种功能电路都集成在一块芯片上。单片机根据输入指令和检测信号,调出内部的相应程序,通过电路处理后输出各种控制信号,是洗衣机自动完成操作过程。如果单片机自己出现故障或控制电路传送给单片机的信号不正确,洗衣机就不能正常工作。b) 直流电源电路 这是为单片机及其外围控制电路提供晓以电压直流电源的电路,它将输入的220V交流电经过变压、整流、滤波-稳压后,变为稳定的低压直流电,送给单片机、显示电路等。c) 复位电路 此电路的作应是复位。在单片
11、机接上电源以后,或电源出现过低电压时,将单片机存储器复位,使其各项参数处于初始位置,即处于开机时的标准程序状态,以消除某种原因的程序紊乱。d) 时钟电路 由晶振元件与单片机内部电路组成,产生的振荡频率为单片机提供时钟信号,供单片机计时和定时。e) 按键输入电路 按键开关按照一定的矩阵排列,当按键被按动时,其接通的信号将输送到单片机。单片机将对应的调出内部软件进行工作,使洗衣机进入相应的洗涤程序。f) 显示电路 显示电路由发光二极管按一定的矩阵排列而成,它是程序控制系统向用户直接观察到洗衣机的工作状态的窗口。预设工作程序时,可根据指示灯的闪亮来判断洗衣机是否接受了指令;还可以通过指示灯的显示来判
12、断洗衣机工作是否正常。g) 报警电路 此电路在洗衣机中起提示和报警作用。根据程序安排和软件设置,当洗衣完成后,洗衣机将发出声音以提示用户洗衣完成。第三章 方案论证显示方式采用液晶显示器显示 液晶显示屏具有体积小、功耗低、显示内容丰富等特点,用户可以根据自己的需求,显示自己所需要的、甚至是自己动手设计的图案。当需要显示的数据比较复杂的时候,它的优点就突现出来了,并且当硬件设计完成时,可以通过软件的修改来不断扩展系统显示能力。外围驱动电路设计比较简单,显示能力的扩展将不会涉及到硬件电路的修改,可扩展性很强。字符型液晶显示屏已经成为了单片机应用设计中最常用的信息显示器件之一。不足之处在于其价格比较昂
13、贵,驱动程序编写比较复杂。综上所述,为了更好的显示出洗衣机的工作状态以达到系统设计的要求,本设计选用方案二,即采用液晶显示及相关电路来构成洗衣机的控制面板。单片机AT89S52单片机52系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H2FH,
14、它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为OOH7FH),使用极为灵活。这一功能无疑给使用者提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理(包括前面所有的位功能),只需用一条位操作指令即可。AT89S52单片机第四章 系统硬件电路的设计4.1 单片机控制部分单片机 AT89S52AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的F
15、lash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。单片机采用AT89S52,其采用最小化应用系统设计。P0口和P2口作为共阳LED数码管驱动用。P1口作为16键的键盘接口,其中T0-T3分别为百位,个位,小数位的频率操作键。百位数只能是0或1。当百位数为0时,十位数为8或9;当百位数为1时,十位数只能为0。个位及小数位为0-9之中任意数。T4-T14为发射频率预置键,T15
16、为单声道立体声控制键。P3.0,P3.1和P3.2作为与BH1415F的通信端口,用于传送发射频率控制数据;P3.3用于立体声发射指标。芯片内部结构及性能AT89S52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O口、串行I/O口和中断系统等几大单元以及数据总线、地址总线和控制总线三大总线构成。图4-1为单片机内部结构框图13。(1) 中央处理器中央处理器(CPU)是整个单片机的核心部件,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。(2) 程序存储器AT89S52共有8KB个E2P
17、ROM,用于存放用户程序,原始数据或表格。(3) 数据存储器(RAM)AT89S52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。图4-1内部结构框图(4) 并行输入输出口AT89S52共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。(5) 串行输入输出口AT89S52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器
18、使用。(6) 定时/计数器AT89S52有三个16位的可编程定时/计数器,以实现定时或计数功能,并以其定时或计数结果对单片机进行控制。(7) 中断系统AT89S52具备较完善的中断功能,有两个外中断、三个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有两级的优先级别选择。(8)主要性能8KB可改编程序Flash存储器(可经受1000次的写入/擦除周期) 全静态工作:0Hz24MHz三级程序存储器保密1288字节内部RAM32条可编程I/O线2个16位定时器/计数器6个中断源可编程串行通道片内时钟振荡器AT89S52的引脚及功能图4-2 AT89S52芯片引脚图(1) 电源和晶振VC
19、C:供电电压。GND:接地。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(2) I/O口 P0口P0口的字节地址为80H,位地址为80H87H。P0口既可以作为通用I/O口使用,也可以作为单片机系统的地址/数据线使用。当作为输出口使用时,由于输出电路是漏极开路,必须外接上拉电阻才能有高电平输出。 P1口P1口的字节地址为90H,位地址为90H97H。P1口只能作为通用I/O口使用。当作为输出口使用时,已能对外提供推拉电流负载,外电路无需再接上拉电阻;当作为输入口使用时,应先向其锁存器写入“1”,使输出驱动电路的FET截止。 P2口P2口的字节地址
20、为0A0H,位地址为0A0H0A7H。P2口用于为系统提供高位地址,但只作为地址线使用而不作为数据线使用。此外,P2口也可作为通用I/O口使用。 P3口P3口的字节地址为0B0H,位地址为0B0H0B7H。P3口可以作为通用I/O口使用,但在实际应用中它的第二功能信号更为重要。P3口引脚的第二功能,如下所示: 表4-1 P3端口的特殊功能 端口引脚 兼 用 功 能 P3.0RXD (串行输入口) P3.1TXD (串行输出口) P3.2 (外部中断0) P3.3 (外部中断1) P3.4T0 ( 定时器0的外部输入) P3.5T1 (定时器1的外部输入) P3.6 (外部数据存储器写选通) P
21、3.7 (外部数据存储器读选通)(3) 4根控制线 RST:复位信号。保持RST脚两个机器周期以上的高电平,就可以完成CPU系统复位操作,使系统的一些单元内容回到规定值。 /PSEN:外部程序存储器读选通信号。在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。 /EA/VPP:访问程序存储器控制信号。当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当/EA为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。 ALE/PROG:地址锁存控制信号。在系统扩展时,ALE用于控制P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址
22、和数据的分时传送。此外由于ALE是以六分之一晶振频率的固定频率输出的正脉冲,因此也可作为外部时钟或外部定时脉冲使用.4.2 单片机时钟信号4.3 显示模块4.3.1液晶显示管概述要用单片机构成洗衣机控制面板,就需要一个人机界面。常采用的方式是LCD液晶显示运行结果,用一个小键盘执行某些功能,如请零、预置值、改变工作方式等等。所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 4.3 1602液晶的正面(绿色背光,黑色字
23、体) 4.4 1602液晶背面(绿色背光,黑色字体)4.3.2 工作原理字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示: HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个A字,就要向DDRAM的00H地址写入“A”字的代码(指A的字模代码,0x200x7F为标准的ASCII码,通过这个代码,在CG
24、ROM中查找到相应的字符显示)就行了。DDRAM地址与显示位置的对应关系 事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码,见字模关系对照表)并不能显示1出来。这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。依次类推。大家看一下控制指令的的8条:DDRAM地址的设定,即可以明白是怎么样的一回事了),1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形(无汉字),如下表所示,这些字符有:阿拉
25、伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 上表中的字符代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1A这样的方法。PC在编译时就把“A”先转为41H代码了。字符代码0x000x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。后面我会详细说的。 0x200x7F为标准的ASCII码,0xA00xFF
26、为日文字符和希腊文字符,其余字符码(0x100x1F及0x800x9F)没有定义。 那么如何对DDRAM的内容和地址进行具体操作呢?HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。共11条指令: HD44780的指令集1.清屏指令功能: 清除液晶显示器,即将DDRAM的内容全部填入空白的ASCII码20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为0。2.光标归位指令功能: 把光标撤回到显示器的左上方; 把地址计数器(AC)的值设置为0; 保持DDRAM的内容不变3.进入模式设置指令功能:设定每次定入1位数据后光
27、标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示:位名设置 I/D0=写入新数据后光标左移1=写入新数据后光标右移S0=写入新数据后显示屏不移动1=写入新数据后显示屏整体右移1个字4.显示开关控制指令功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:位名设置 D0=显示功能关 1=显示功能开 C0=无光标 1=有光标 B0=光标闪烁 1=光标不闪烁5.设定显示屏或光标移动方向指令功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L设定情况 0 0光标左移1格,且AC值减1 0 1光标右移1格,且AC值加11 0显示器上字符
28、全部左移一格,但光标不动1 1显示器上字符全部右移一格,但光标不动6.功能设定指令功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:位名设置 DL0=数据总线为4位1=数据总线为8位 N0=显示1行1=显示2行 F0=57点阵/每字符1=510点阵/每字符7.设定CGRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。8.设定DDRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。 (注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因) 9.读取忙信号或AC地址指令功能: 读取忙碌信号BF的内容,BF=1表示液
29、晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; 读取地址计数器(AC)的内容。10.数据写入DDRAM或CGRAM指令一览功能: 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符; 将使用者自己设计的图形存入CGRAM。11.从CGRAM或DDRAM读出数据的指令一览功能:读取DDRAM或CGRAM中的内容。基本操作时序:读状态 输入:RS=L,RW=H,E=H输出:DB0DB7=状态字写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无读数据 输入:RS=H,RW=H,E=H输出:DB0DB7=数
30、据写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无4.4 键盘部分4.4.1 单片机键盘和键盘接口概述单片机使用的键盘可分为独立式和矩阵式两种。独立式实际上就是一组相互独立的按键,这些按键可直接与单片机的I/O接口连接,其方法是每个按键独占一条口线,接口简单12。矩阵式键盘也称行列式键盘,因为键的数目不多,所以键采用独立式(如图4-7所示)。图4-5 键盘接口电路图按一个键到键的功能被执行主要应包括两项工作:一是键的识别,即在键盘中找出被按的是哪个键,通过接口电路来实现;另一项是键功能的实现,通过执行中断服务程序来完成。下面来介绍键盘接口问题13。具体来说,键盘接
31、口应完成以下操作功能:a 键盘扫描,以判定是否有键被按下(称之为“闭合键”)。b 键识别,以确定闭合键的行列位置。c 产生闭合键的键码。d 排除多键、串键(复按)及去抖动。这些内容通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完成。但具体那些由硬件完成由软件完成,要看接口电路的情况。总的原则是,硬件复杂软件就简单,硬件简单软件就得复杂一些。4.4.2 单片机键盘接口和键功能的实现(1) 键盘接口处理内容 键扫描键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定有无键按下(闭合键)以及被按键的位置,可使用两种方法:扫描法和翻转法,其中扫描法使用较为普遍。 去抖动当扫描
32、表明有键被按下之后,紧接着应进行去抖动处理。因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械接触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图4-8所示。抖动时间长短与键的机械特性有关,一般为510ms。而键的稳定闭合时间和操作者按键动作有关,大约为十分之几到几秒不等。键按下前沿抖动后沿抖动 图4-6 键闭合和断开时的电压抖动 键码计算被按键确定下来之后,接下来的工作是计算闭合键的键码,因为有了键码,才能通过散转指令把程序执行转到闭合键所对应的中断服务程序上去。也可以直接使用该闭合键的行列值组合产生键码,但这样做会使各子程序的入口地址比较散乱,给JMP指令的
33、使用带来不便。所以通常都是以键的排列顺序安排键号,这样安排,使键码既可以根据行号列号以查表求得,也可以通过计算得到。若各行的首号依次是00H,04H,08H,0CH。若列号按03顺序,则键码的计算公式为: 键码=行首号+列号 等待键释放计算键码之后,再以延时后进行扫描的方法等待键释放。等待键释放是为了保证键的一次闭合仅进行一次处理。综上所述,键盘接口处理的核心内容是测试有无闭合键,对闭合键进行去抖动处理,求得闭合键的键码。为了使键盘操作更稳定可靠,还可以加一些附加功能。例如屏蔽功能:在对一个闭合键已进行处理时,再按下其它键不会产生影响;对于一个键,不管按下多长时间,仅执行一次键处理子程序等。(
34、2) 键盘接口的控制方式在单片机的运行过程中,何时执行键盘扫描和处理,可有以下3种情况: 随机方式,每当CPU空闲时执行键盘扫描程序。 中断方式,每当有键闭合时才向CPU发出中断请求,中断响应后执行键盘扫描程序。 定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机定时器完成。(3) 键处理子程序在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序(分支是使用JMP等散转指令实现的),进行字符、数据的输入或命令的处理,这样就可以实现相应键所设定的功能14。4.4.3 单元电源电路设计由于采用单片机控制的数字调频台功耗很小,可用7805三端稳压块
35、分别对单片机和BH1415F电路单独供电,电源变压器功率大于10W即可。为了能够让单片机和调频发射部分更好,更稳定地工作,采用了图4-10所示单元电源电路,由电源变压器、桥堆和滤波电容器所组成。电源变压器的初级电压输入为220V,次级输出电压为12V15 16。由于单片机所需的是+5V电源,经滤波电容和三端稳压集成电路MC7812后可得到+12V电压,MC7812能将15V25V的直流电压变换成12V的稳定电压,在12V的电压中含有少量的低频成分和接收外界的高频成分,再经后一级滤波后送三端稳压集成电路7805,7805能将大于7V15V的直流电压变换成5V的稳定电压。同时由于电流较大导致三端稳
36、压集成电路MC7812和7805过热,为了确保电路工作正常,给两个芯片分别加上散热片。图4-7 电源电路图直流稳压电源的检测本系统对电源要求高,因为稳定性和可靠性在发射电路重要意义。为了提高稳定性,所以采用如图4-10的稳压电源,电源电路的主要部件采用集成的三端稳压器件如7812与7805,稳压电源输入电压范围宽,输出电压稳定,抗干扰能力强,以满足调频发射机的要求12。 数字万用表对稳压电源的测试结果: 表4-5 稳压电源的测试结果输入级(原)滤波稳压输出输出级+12V直流稳压电源220V11.99 V4.99V第五章 系统程序的设计5.1 主程序首先,进行整个程序的初始化,开机时先显示一下“
37、088.0”, 然后进入查键和显示函数的循环。当有按键按下时,程序判断是哪个键被按下,然后执行相应的按键功能,并调用数码显示,显示所设置的发射频率;当没有键按下时,返回键盘扫描,再判断是否有键被按下。本次程序设计的整体流程图,如图5-1所示:Y清屏调用显示键盘扫描判断哪个键被按下及次数执行相应的按键功能图5-1程序设计整体流程图初始化N键被按下5.2延时子程序延时函数在本系统中主要用于1ms的显示延时和10ms的按键消抖。5.3 查键子程序系统采用独立式键盘。键盘部分应实现如下功能:首先,对键盘进行扫描,判断是否有键被按下。如果没有,则转回键盘扫描,看下次是否有键被按下;如果有键被按下,则检测
38、此按键被按下了几次。接着对键进行去抖动,然后算出是哪个键被按下,再延时等待键释放。因为每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序,进行字符、数据的输入或命令的处理。这样就可以实现该键所设定的功能。根据上述说明,画出本次程序设计的键处理流程图,如图5-6所示:开始键扫描延时去抖是否按下?NY计算键值返回第六章 系统调试和具体电路图6.1 硬件调试硬件调试时先检查电路板的焊接情况,在检查无误后可以通电检查。实际制作中可结合示波器对电路各个主要点的波形情况进行综合硬件测试分析。6.2 软件调试软件调试与所选用的软件结构和程序设计技术有关。如果采用模块化程序
39、设计技术,则逐个模块设计好之后,再进行系统程序总调试。调试子程序时可采用单步运行方式和断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检查程序执行结果是否符合设计要求。通过检测,可以发现程序中的死循环错误、机器码错误及转换地址错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误。在调试过程中逐部调整用户系统的软件和硬件。各程序模块设计好后,可把相关的功能模块联合起来一起进行整体综合调试。在这个阶段若发生错误,可以考虑子程序在运行时是否在破坏现场,缓冲区数据是否发生变化,最展区的深度是否不够,输入设备的状态是否正常等。单步和断点调试后,还应进行连续调试,因为
40、单片机的运行是在严格的时序下进行的,单步运行成功并不代表连续运行成功。待全部调试完成后,应反复运行多次,除观察稳定性之外,还要考虑运行条件是否与实际相符等等。6.3 性能分析用液晶显示器显示的洗衣机控制面板显示明了简单,方便用户观察洗衣机的工作状态。用AT89S52单片机作为主控制器价格低廉,工作可靠性高,设计调试简单。.6.4 主电路图程序源代码#include#define uchar unsigned charsbit rs=P35;sbit rw=P36;sbit e=P37;sbit a0=P20;sbit a1=P21;sbit a2=P22;sbit a3=P23;sbit a4
41、=P24;static char su_ma=0123456789;char shi_jian=time:30:00;uchar hour,minute,second,da,mo,ye;unsigned int C100us;uchar key1=0,key2=0,key3=0,a=0;delay(unsigned int i)while(i)i-;anniu1()key1+;delay(20000);anniu2()key2+;delay(20000);anniu3()key3+;delay(20000);enrw()rs=0; rw=0; e=0; delay(35); e=1;write
42、_data(uchar M)P1=M; rs=1; rw=0; e=0; delay(35); e=1;display(uchar *s)for(;*s!=0;s+) write_data(*s);niti()P1=0x01;enrw();P1=0x38;enrw();P1=0x0c;enrw();P1=0x06;enrw();lcdstart0()niti(); P1=0x80; enrw(); if(key1=0) if(key3=0)display(MOD laundry); if(a4=0) anniu3; if(key3=1) display(MOD laundry z); if(key3=2) display(MOD laundry q); if(key32)key3=0; if(key1=1) display(MOD Dehydration); if(key11)key1=0; P1=0xc0; enrw(); display(shi_jian);lcdxs() shi_jian5=su_maminute/10; shi_jian6=su_maminute%10; shi_jian8=