配色: 字号:
基于51单片机的全自动洗衣机控制设计
2021-01-28 | 阅:  转:  |  分享 
  
《单片机技术与应用》课程设计洗衣机控制设计专业班级:学号:姓名:目录一、设计目的要求3二、设计要目标3三、硬
件设计41、系统设计流程41.1系统模块划分52、模块设计72.1AT89C51单片机控制模块的设计72.1.1AT89C51
介绍72.1.2AT89C51单片机的主要管脚功能72.2单片机系统复位电路82.3标准时钟电路92.4控制电路设计102.5显示
电路设计102.6数码管显示电路设计112.7水位检测电路132.7.1进水控制电路132.7.2排水控制电路142.8水位监测模
块142.9报警电路设计153.0电机控制系统设计15四、软件设计181、系统设计流程181.1系统模块划分182、模块设计192
.1主程序192.1.1主程序执行192.2三个运行方案程序202.2.1三个运行方案执行20五、结果讨论225.1仿真原理图
:22六、工作总结25附录26原理图:26参考文献26一、设计目的要求设计要求(1)洗衣机可选择多种洗涤状态,用户只需要选择洗涤模
式,洗衣机自动选择洗涤程序,完成洗涤。(2)暂停功能。不管洗衣机工作在什么状态,当按下暂停键时,洗衣机必须暂停工作,待驱动键按下后
洗衣机又能按原来所选择的工作方式继续工作。(3)声光显示功能。洗衣机各种工作方式的选择和各种工作状态均有声光提示或显示。(4)本设
计包含硬件和软件设计。(5)因为是全自动洗衣机,程序将完成洗涤、脱水的全过程。(6)脱水完成后,蜂鸣器蜂鸣,通知用户洗涤完成。二、
设计要目标本系统控制的对象为套桶式单缸低波轮全自动洗衣机,其功能要求如下:1.强、弱洗涤功能。强洗时正、反转驱动时间各为4秒,间歇
时间为1秒;标准洗时正、反转驱动时间各为3秒,间歇时间为1秒弱洗洗时正、反转驱动时间各为2秒,间歇时间为1秒2.三种洗衣工作程序,
即标准程序强洗程序、弱洗程序和甩干程序。标准程序是进水→洗涤→排水→甩干→漂洗→排水→甩干,具体是:第一循环为洗涤,时间为20S,
第二、第三次循环为漂洗,时间分别为20秒。排水时间采用动态时间法确定,脱水时间为20秒。排水程序是排水→脱水→结束,时间确定与上述
程序相应环节相同。4.间歇驱动方式。脱水期间采取间歇驱动方式,以便节能。本系统要求驱动4秒,间歇1秒,间歇期间靠惯性力使脱水桶保持
高速旋转。5.通过led显示屏显示时间。实现方法:基于上述要实现软硬件结合,考虑到89C51的特点,以其作为核心器件,设计了全自动
洗衣机控制系统。本系统实现了对洗衣机整个洗衣过程的控制。包括进水、洗涤、漂洗、排水和脱水五个阶段。控制系统主要由电源电路、数字控制
电路和机械控制电路三大模块组成,电源电路为数字控制电路提供稳定的5V直流电压;数字控制电路负责控制洗衣机的工作过程,主要由89C5
1单片机、按键、蜂鸣器、LED指示灯组成;机械控制电路实现水位检测、电机驱动、进水、排水等功能,主要由水位开关、电动机、进水排水电
磁阀组成。6.声光显示功能。洗衣机各种工作方式的选择和各种工作状态均有声、光提示或显示。三、硬件设计1、系统设计流程1.1系统模块
划分主控系统是运用AT89C51单片机,其控制的对象包括:进水阀、排水阀、驱动电机、按键和LED显示器件。这些被控制对象需要根据不
同的洗衣程序来设定它们的工作状态和时间,进水阀和排水阀的控制还需要检测水位,同时需要数码管显示不同的工作状态及运行剩余时间。按键用
来控制程序的运行和设置洗涤模式。蜂鸣器用来进行程序结束提示。⑴单片机电路:单片机电路是控制的中心,它把计算机的各种功能电路都集成在
一块芯片上,主要包括中央处理器CPU、程序存储器ROM、数据存储器RAM、输入/输出接口电路及计时等电路,ROM内已经固化了洗衣机
操作程序,单片机根据输入指令和检测信号,调出内部相应的操作程序,通过电路处理后输出各种电路控制信号,使洗衣机自动完成程序操作过程。
(2).复位电路:在单片机接上电源以后,若电源出现过低电压时,将单片机存储器复位,使其各项参数处于初始位置。(3)时钟电路:由晶振
单元与单片机内部电路组成,产生的振荡频率为单片机提供时钟信号,供单片机定时和计时。(4)按键输入电路:①按键K1,接RST口,作为
“复位”按键;②按键K2,接P3.0,作为“程序选择”按键;③按键K3,接P3.1,作为“强弱洗选择”按键;④按键K4,接P3.2
,作为“运行/暂停”按键。(5)显示电路:采用LED灯及共阴数码管,用以显示洗衣机的各种工作方式、状态及剩余时间。(6)水位控制电
路:在进水期间,系统不断检测,当到达预定水位时就停止进水。水位控制电路由传感器监测,其通断状态由电路传给单片机,由单片机进行指令控
制。(7)报警电路:在洗衣机工作结束时,发出蜂鸣声提示用户洗衣完成。完成一次洗衣过程所需的动作有:(1)进水动作:进行洗涤时,盛水
桶内的水量必须达到设定要求。洗衣机的进水和水位判断,是由水位开关和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单
片机程序将控制进水阀打开,开始注水,当桶内的水位达到设定水位时,水位开关受压闭合,程序就可进入下一步处理。(2)洗涤动作:洗涤动作
指的是电机周期性的“正转-停止-反转-停止”。不同的洗衣过程,控制电机执行“正转-停止-反转-停止”的时间是不同的。(3)排水动作
:进入脱水动作前应先排水。为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害,洗衣机适当延长排水时间。(4)脱水动作
:排水结束后进入脱水动作,脱水是通过电机的正反转来实现的,同时要求排水阀一直打开,也正是由于排水阀的打开,才使得脱水时的电机正转速
度不同于洗涤时的电机正转速度。进行脱水是若遇到洗衣机盖打开,则暂停脱水,并发出报警,直至用户合上桶盖后,才继续进行脱水。脱水结束后
,发出警报,并自动关闭排水阀。2、模块设计2.1AT89C51单片机控制模块的设计2.1.1AT89C51介绍AT89C51单片
机是一种高效微控制器,也是低功耗高性能单片机。单片机是本设计的核心主要起控制作用,采用40引脚双列直插封装形式,32个外部双向输入
/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,因为受引脚数目的限制,所以有不少引脚
具有第二功能。外形及引脚排列如图所示。2.1.2AT89C51单片机的主要管脚功能:VCC:供电电压。GND:接地。P0口:P0口
为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存
储器,它可以被定义为数据/地址的第八位。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电
流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口:P2口
为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为
输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。P3口:P3口是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL
门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上
拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址
锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲
信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。PSEN:外部程序存储器的选通信号。在由外部程序存储
器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电
平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;
当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。2.2单片机系统复位电路
复位电路使单片机或系统中的其他部件处于某种确定的状态。当在MCS-51系列单片的RST引脚处引入高电平并保持2个机器周期,单片机内
部就执行复位操作。复位操作有两种基本形式:一种是上电复位,另一位是按键复位。本设计采用按键复位方式。如图3-4工作原理:当按下按键
时,RST直接与VCC相连,出现2个以上的高电平形成复位,同时电解电容被短路放电;按键松开时,电容充电,电流流过电阻,RST为高电
平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,正常工作。2.3标准时钟电路该电路由时钟89c51内部计时器和晶振组成
。晶振全称为晶体振荡器,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。晶振一般
叫做晶体谐振器,是一种机电器件,是用电损耗很小的石英晶体经精密切割磨削并镀上电极焊上引线做成。这种晶体有一个很重要的特性,如果给它
通电,它就会产生机械振荡,反之,如果给它机械力,它又会产生电,这种特性叫机电效应。他们有一个很重要的特点,其振荡频率与他们的形状,
材料,切割方向等密切相关。由于石英晶体化学性能非常稳定,热膨胀系数非常小,其振荡频率也非常稳定,由于控制几何尺寸可以做到很精密,因
此,其谐振频率也很准确。因此我们使用外部振荡脉冲信号,由XTALl和XTAL2端引脚输入,其电路图如图所示。2.4控制电路设计单片
机设计中,重要的一个模块是按键的设计。常见的单片机按键设计分为独立式和行列式(矩阵式)。独立式按键设计简单,但占用I/O口较多;行
列式按键设计相对复杂,占用I/O口较少。根据键盘扫描方法,一开始单片机将行线全部置低电平,此时读入数据,若全为高电平,则没有键按下
,当有出现低电平时调用延时程序以此来去除按键抖动。延时后再判断是否有低电平,如果此时读入数据还是有低电平,则说明确实有键按下,最后
一步确认键值。2.5显示电路设计指示灯主要是以光亮指示的方式引起操作者注意或者指示操作者进行某种操作,并作为某一种状态或指令正在执
行或已被执行的指示。本设计用七只发光二极管作为洗衣机的指示灯,它是半导体二极管的一种。当LED的A极通过限流电阻连接到8051单片
机的I/O口,K极连接到了GND地线,因此要使LED发光,也就是使电流流过LED,只需要把I/O口置成高电平即可,所以最终我们对L
ED的控制变成了对一个I/O口的控制,比如要点亮标号为“D10”的LED,就是把RC0口设置成高电平而已,这就是实现方法。本设计中
AT89C51单片机的P2.口到P2.4分别与5个发光二极管的阴极相连,发光二极管的阳极接电源。分别指示“洗衣模式”、“洗涤方式”
和“工作状态”。D2为“标准模式”指示灯,D3为“弱洗模式”指示灯,D4为“漂洗模式”指示灯,D5为“甩干模式”指示灯;2.6数码
管显示电路设计发光二极管简称为LED,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发
光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生
自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的
光的波长越短。常用的是发红光、绿光或黄光的二极管。与小白炽灯泡和氖灯相比,发光二极管的特点是:工作电压很低(有的仅一点几伏);工作
电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有
这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。LED数码管根据LED的接法不同分为共阴和共阳两
类,不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连
在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。而LED的电流通常较小,一般均需在回路中接上
拉电阻。共阴极LED数码管的内部结构原理图所示。为了使LED显示器显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数
点,共计8段。因此为LED显示器提供的编码正好是一个字节。LED数码管真值表如下表0x3f0x060x5b0x4f0x660123
40x6d0x7d0x070x7f0x6f56789LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数
码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占
用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控
制是哪一位数码管有效。选亮数码管采用动态扫描显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示数码管显示
模块。但为了减少硬件开销,提高系统可靠性并降低成本,单片机控制系统通常采用动态扫描显示。本设计选用的是7seg-mpx2-cc共阴
数码管,用以显示显示洗衣工作的剩余时间。单片机的P39~P33口分别接数码管的A~G口.P2.7~P2.8口分别接数码管的1、2口
,分别控制第一片和第二片的暗亮。外加上拉电阻加强驱动能力,使数码管更亮。数码管显示电路图如图所示。2.7水位检测电路2.7.1进水
控制电路水位开关和继电器是全自动洗衣机中比较重要而结构又相对简单的两个器件。它们一般都在直流低压下工作,是电子程控器的两个输入端,
只有判定它们处于正确的闭合状态,程序才可以正常地向下运行,完成正常的操作。洗衣机的进出水控制由两个继电器配合电控水龙头完成,设计中
电控水阀共2只,一只为进水阀,受P2.2控制;另一只为排水阀,受P2.3控制。当进水阀的控制端,即三极管Q2的基极为高电平时,阀门
打开,开始进水;当进水阀的控制端,即三极管Q2的基极为低电平时,阀门关闭,进水完成。进水控制电路图如图所示。2.7.2排水控制电路
当洗涤步骤完成后,排水阀的控制端,即三极管Q3的基极为低电平时,阀门打开,开始排水;当排水阀的控制端,即三极管Q2的基极为高电平时
,阀门关闭,排水完成。排水控制电路图如图所示。2.8水位监测模块洗衣机的水位监测模块实际上是一个压力检测装置。它由导管、浮子、波纹
膜片、继电器等组成,导管与洗衣桶相连,导管中的水位就是洗衣桶内的水位,在放水或进水的过程中。当水注入洗衣桶后,导管口很快被封闭,随
水位上升,导管内的水位也上升,被封闭的空气压强亦增大,水位开关中的波纹膜片受压而胀起,推动顶杆运动而使触点改变,从而实现自动通断。
全自动洗衣机气压式水位开关(以下简称水位开关)的两组触头分别与程控器以及相关电路配合,共同完成洗涤、脱水等洗衣工序。水位开关中的两
组触头的动作分别对应两个水位值。洗衣机接水桶内水位的变化,通过一段密封的连接导管,引致水位开关中导管的气压改变,继而转换成触头的动
作。触头的动作控制继电器接通产生一个电平值,传送给单片机,进而控制进﹑排水阀的工作状态。2.9报警电路设计在洗衣机运行中起提示的作
用。根据程序安排和软件设置,当洗衣完成后,洗衣机将发出蜂鸣声以提示用户洗衣完成。本设计采用电磁式蜂鸣器,蜂鸣器由振荡器、电磁线圈、
磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作
用下,周期性地振动发声。本设计中的蜂鸣器由P2.7控制,当P2.7输出为“1”(脱水完成后)时,洗衣机的蜂鸣器发声,提示用户洗衣过
程完成。其电路如图所示。3.0电机控制系统设计电动机也称电机,它的主要作用是产生驱动力矩,作为用电器或小型机械的动力源。交流异步电
动机是领先交流电压运行的电动机,广泛应用于电风扇、电冰箱、洗衣机、空调器、食品加工机等家用电器及各种电动工具、小型机电设备中。单相
交流电动机只有一个绕组,转子是鼠笼式的。当单相正弦电流通过定子绕组时,电动机就会产生一个交变磁场,这个磁场的强弱和方向随时间作正弦
规律变化,但在空间方位上是固定的,所以又称这个磁场是交变脉动磁场。这个交变脉动磁场可分解为两个以相同转速、旋转方向互为相反的旋转磁
场,当转子静止时,这两个旋转磁场在转子中产生两个大小相等、方向相反的转矩,使得合成转矩为零,所以电动机无法旋转。当我们用外力使电动
机向某一方向旋转时,这时转子与顺时针旋转方向的旋转磁场间的切割磁力线运动变小;转子与逆时针旋转方向的旋转磁场间的切割磁力线运动变大
。这样平衡就打破了,转子所产生的总的电磁转矩将不再是零,转子将顺着推动方向旋转起来。洗衣机里的机动机是电容式单相异步电动机,电容式
单相异步电动机有原理是在启动绕组上串联一个适量的电容器,由于电容器的电流滞后于它的电压90度,所以会在定子上产生一个偏转磁场,使电
动机旋转。本洗衣机的控制电路中单片机通过L298电机电机驱动芯片直接驱动单相异步交流电机。L298通过单片机的I/O输入改变芯片控
制端的电平,即可以对电机进行正反转,停止的操作。输入引脚与输出引脚的逻辑关系如表ENAIN1IN2电机状态0XX停止100停止10
1反转110正转111刹车由表可知当EnA为低电平时,输入电平对电机控制不起作用;当EnA为高电平,输入电平为一高一低,电机正或反
转。同为低电平电机停止,同为高电平电机刹停。L298控制电机的正反转,完成最基本的洗涤、漂洗、脱水功能。电动机有2个控制端,一端控
制电动机正向运转,该端与L298的OUT1相连;另一端控制电动机反向运转,与OUT2相连。L298的使能端接的地,因此IN1~IN
4开关全开。在整个洗衣过程中,程序会不断判断洗衣机的强弱洗模式,从而不断调整电机转动。电动机控制原理图如图所示。四、软件设计1、系
统设计流程整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型的时候软件也基本定下了,从软件的功能不同,可以分为两的类:一是
监控软件(主程序)它是整个软件的核心,专门用来协调各个执行模块和操作者的联系。二是执行软件(子程序)它是用来完成各种实质性的工作的
,如测量、计算、显示、通讯等。每一个执行软件就是一个小的执行模块,这里将每一个模块一一列出来,并为每个执行模块进行功能定义和接口定
义。各执行模块规划好以后,就可以规划监控软件了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的条件,合理安
排监控软件和执行软件之间的调度关系。1.1系统模块划分2、模块设计软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软
硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。软件采用模块化设计方法,不仅易于编程和调试,也可减小
软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。由于编程多涉及到数值运算,比较复杂,还有LC
D灯的显示设计都是需要多重选择判断,用我们平时常用的汇编语言编程是很难实现的,这里我们选用了移值性好、结构清晰、能进行复杂运算的C
语言来实现编程。2.1主程序甩干按弱按标按下强洗否是是是是2.1.1主程序执行主程序主要是进行初始化,洗涤模式方案一,方案二,方
案三和手动甩干的选择,完成各部分硬件的控制和协调。2.2三个运行方案程序水位达到否是甩干20秒f-qiang()20秒排水排完2.
2.1三个运行方案执行主程序选择完执行方案之后就开始按方案执行,三个方案在执行过程中都大同小异,都是先执行进水程序,液位传感器
感性到水位达到之后(在模拟电路图要手动的对液位传感器滑动变阻器的调节)就开始执行洗涤程序,方案一是强洗,洗涤时正转4秒,停一秒,再
反转4秒,连续执行20秒,在方案二中正转反转执行3秒,是执行标准洗涤方式,方案三是执行弱洗,洗涤时间为正反转各为2秒,在现实中20
秒当然不现实,在这里设置成20秒是为了节省演示模拟的时间。洗涤完之后进行排水,排水的结束通过调节液位传感器的滑动变阻器完成结束排水
,排水完成之后自动进入甩干,甩干的时间为20秒,甩干完成之后自动进入漂洗,漂洗的时间为20秒,漂洗完成之后甩干20秒,甩干完成之后
报警提示。在每个程序执行的时候都有对应的LED灯进行显示,时间有LED显示,以实现人机交互。五、结果讨论5.1仿真原理图:进水:洗
涤:洗涤完排水:漂洗:甩干:六、工作总结主要是以AT89C51单片机为核心的,对洗衣机进行了简单的设计与阐述。本次设计可以说是软硬
结合,又以硬件为主,软件为辅。当今科技发展迅速,单片机嵌入式开发有着光明的前景。由于单片机具有经济实用、开发简便等特点,所以依然在
工业控制、家电等领域占据广泛的市场。所以我选择这样的课程设计课题,并且能通过此次设计来提高自己软件编制和硬件电路设计的能力。在我完
成这次毕业设计的过程中,当看到自己将专业知识用于解决实际的问题时,那份成就感和喜悦感是难以形容的。但是,在实际的编程以及调试程序过
程中,我发现自己应该学的东西太多太多。光靠自己在书本上所学过的这点知识是远远不够的,真正地认识到了工作就是学习的道理。由于我以前对
51单片机的C语言没有认真钻研过,所以感觉课程设计的任务十分紧迫。通过对本系统的设计,我学习到了硬件开发和软件开发的基本流程并有了
一定的驾御此开发过程的能力。编程的过程中,虽然不乏辛苦,但更多的是程序调试成功后的喜悦。总之,这次课程设计对我来说是一次比较全面的
、富有创造性和探索性的锻炼,完成了我选题时的心愿。令我深有感触,对于我今后的学习、工作和生活都将是受益非浅的。附录原理图:参考文
献[1]张永岚.单片机应用技术.北京:电子工业出版社,2009[2]刘守义.单片机高等教程.北京:北京航空航天大学出版社,2000
[3]何立民.单片机应用系统设计.北京:北京航空航天大学出版社,2001[4]熊建云.Protel99seEDA技术及应用.北京:
机械工业出版社,2007[5]华永平.电子线路课程设计.南京:东南大学出版社,2006[6]林春方.电子线路学习指导与实训.北京:
电子工业出版社,2004[7]杨宝清.实用电路手册.北京:机械工业出版社,2002[8]张存礼.电子技术综合实训.北京:北京师范大
学出版社,[9]向骞.全自动洗衣机原理与维修[M].福建科技技术出版社,2000[10]李华.MCS-51系列单片机实用接口技术[
M].北京:北京航空航天大学出版社,2000[11]王成安童建华.电子技术基本技能综合训练[M].北京:人民邮电出版社,2005[
12]李圣良.基于MCS-51单片机的洗衣控制系统[J].兵工自动化2006,3:77~79[13]蒋浩.,孔飘红.电机转速控制方
法[J].中国测试技术,2003(3):34~59[14]江雪山.智能洗衣机控制电路[J].家庭电子,2006(2):22~26[
15]赵贵顾,雷英豪.时钟控制器[J].新颖实用电路,2004(8):12~14程序:#include#def
ineucharunsignedchar#defineuintunsignedint#defineqiang_led
onqiang_led=1;#defineqiang_ledoffqiang_led=0;#definebiao_ledo
nbiao_led=1;#definebiao_ledoffbiao_led=0;#defineruo_ledonruo
_led=1;#defineruo_ledoffruo_led=0;#definepiao_ledonpiao_led=1
;#definepiao_ledoffpiao_led=0;#definesgan_ledonsgan_led=1;#de
finesgan_ledoffsgan_led=0;#definejin_ledonjin_led=1;#definej
in_ledoffjin_led=0;#definepai_ledonpai_led=1;#definepai_ledof
fpai_led=0;unsignedcharcodeTab[11]={0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F};//数码管显示0~9的段码表unsignedcharint_time;
//记录中断次数unsignedcharsecond;//储存秒uintt=0,tt=0;s
bitk1=P0^0;sbitk2=P0^1;sbitk3=P0^2;sbitsg=P0^3;sbithk1=P
0^4;sbithk2=P0^5;sbitledon=P0^7;sbitqiang_led=P2^0;sbitbi
ao_led=P2^1;sbitruo_led=P2^2;sbitpiao_led=P2^3;sbitsgan_led
=P2^4;sbitjin_led=P2^5;sbitpai_led=P2^6;sbitp30=P3^0;sbit
p31=P3^1;sbitbeepon=P2^7;sbitsm1=P3^6;sbitsm2=P3^7;voiddel
ay2(void){unsignedcharm;for(m=0;m<200;m++);}voiddelay1(in
ts){inti;for(;s>0;s--)for(i=0;i<65;i++);}voiddelay(uint
i){ucharj;for(i;i>0;i--)for(j=255;j>0;j--);}/
显示程序/voidDisplaySecond(u
nsignedchark){sm1=0;//P3.6引脚输出低电平,DS6点亮P1=Tab[k/10
];//显示十位delay2();delay2();sm1=1;sm2=0;//P3.7
引脚输出低电平,DS7点亮P1=Tab[k%10];//显示个位delay2();delay2();
P3=0xff;//关闭所有数码管P1=1;//显示个位delay2();delay2();}/
报警程序/voidbeep(){p30=0;
p31=0;t=0;while(1){beepon^=1;delay(300);if(t>=80)break;}bee
pon=0;biao_led=0;}/强洗程序/voi
df_qiang(){qiang_ledon;t=0;tt=0;int_time=0;second=00;whi
le(1){if(tt>=400)break;t=0;while(t<80&&tt<=400){p31=0;p3
0=1;//正转4sDisplaySecond(second);}t=0;//反转4swhile(t<80&&tt
<=400){p30=0;p31=1;DisplaySecond(second);}}p30=0;p31=0;
}/标准洗程序/voidf_biao(){
qiang_led=0;biao_led=1;t=0;tt=0;int_time=0;second=00;while
(1){if(tt>=400)break;t=0;while(t<60&&tt<=400){p31=0;p30=
1;//正转3sDisplaySecond(second);}t=0;//反转3swhile(t<60&&tt<=400
){p30=0;p31=1;DisplaySecond(second);}}p30=0;p31=0;}/
弱洗程序/voidf_ruo(){qiang_led=0
;biao_led=0;ruo_led=1;t=0;tt=0;int_time=0;second=00;while(1
){if(tt>=400)break;t=0;while(t<40&&tt<=400){p31=0;p30=1;
//正转2sDisplaySecond(second);}t=0;//反转2swhile(t<40&&tt<=400
){p30=0;p31=1;DisplaySecond(second);}}p30=0;p31=0;}/
漂洗程序/voidf_piao(){qian
g_ledoff;biao_ledoff;piao_ledon;t=0;tt=0;int_time=0;second=
00;while(1){if(tt>=400)break;t=0;while(t<40&&tt<=400){p3
1=0;p30=1;//正转2sDisplaySecond(second);}t=0;//反转2swhile(t<4
0&&tt<=400){p30=0;p31=1;DisplaySecond(second);}}p30=0;
p31=0;piao_ledoff;}/排水程序
/voidpai_leds(){p30=0;p31=0;pai_led=1;//排水阀灯亮等待霍尔
开关2while(hk2);if(hk2==0)//如果闭合pai_led=0;//排水灯灭}/
进水程序/voidjin(){p30=0;p
31=0;jin_ledon;while(hk1);if(hk1==0)jin_ledoff;}/
甩干程序/voidsgan(){sga
n_ledon;//甩干灯亮t=0;int_time=0;second=00;while(t<=400){p31=
0;p30=1;DisplaySecond(second);}sgan_ledoff;}/
手动甩干程序/voidsgan1(){sgan_ledo
n;t=0;int_time=0;second=00;while(t<=400){p31=0;p30=1;Dis
playSecond(second);}piao_ledoff;sgan_ledoff;beep();t=401;}/
方案一程序/voidf_an1(){
qiang_ledon;//方案1灯亮jin();//进入强洗f_qiang();//循环20Sdelay1(4000
);//延时4spai_leds();delay1(1000);//延时1S进入甩干sgan();//甩干20ssgan_l
edoff;jin();delay1(1000);//延时1S进入漂洗f_piao();//循环20Ssgan_ledof
f;piao_ledoff;pai_leds();delay1(1000);//延时1S进入甩干sgan1();//最终甩干2
0Sdelay(500);//延时beep();}/方案二程序
/voidf_an2(){biao_ledon;//方案2灯亮jin();f_biao();
//循环20Sdelay1(4000);//延时4Spai_leds();delay1(1000);//延时1S进入甩干s
gan();//甩干20spiao_ledoff;jin();delay1(1000);//延时1S进入漂洗f_piao()
;//循环20Ssgan_led=0;pai_leds();delay1(1000);//延时1S进入甩干sgan();/
/最终甩干20sdelay(500);//延时5spiao_led=0;beep();}/
方案三程序/voidf_an3(){ruo_led=1;
//方案3灯亮jin();f_ruo();//循环20Sruo_ledoff;pai_leds();delay1(1000);//延时1S进入甩干sgan();//甩干20Sruo_ledoff;piao_ledoff;jin();delay1(1000);//延时1S进入漂洗f_piao();//循环20Ssgan_led=0;pai_leds();delay1(1000);//延时1S进入甩干sgan();//最终甩干20sdelay(500);//延时5spiao_led=0;p30=0;beep();}/主程序/intmain(void){TMOD=0x01;//方式116位计数器TH0=-50000/256;//设定初值TL0=-50000%256;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0P2=0;int_time=0;//中断次数初始化second=00;//秒初始化while(1){if(k1==0){delay(10);if(k1==0){f_an1();}}if(k2==0){delay(10);if(k2==0){f_an2();}}if(k3==0){delay(10);if(k3==0){f_an3();}}if(sg==0){delay(10);if(sg==0){sgan1();}}}return0;}/中断程序/voidtime0()interrupt1using1{int_time++;//每来一次中断,中断次数int_time自加1if(int_time==20)//够20次中断,即1秒钟进行一次检测结果采样{int_time=0;//中断次数清0second++;//秒加1}TH0=-50000/256;//50000=50ms中断一次TL0=-50000%256;t++;tt++;}12
献花(0)
+1
(本文系错觉17525原创)