基于51单片机洗衣机课程设计报告分解

合集下载

全自动洗衣机课程设计报告及体会

全自动洗衣机课程设计报告及体会

全自动洗衣机课程设计报告及体会课程设计报告通信1001班一:课程设计目标:全自动洗衣机二:设计要求:实现相应的输入功能,如:水位开关,键盘。

实现相应的输出功能,如:显示器,进出水阀,电机正反转,脱水等实现相应的功能:强洗涤,弱洗涤,漂洗,脱水三设计过程:(一):总体设计思想:本课程设计是基于MC51单片机的嵌入式设计,在电子辅助设计软件protel 环境下,画出相应的原理图和PCB板,作为实现全自动洗衣机的相应功能的硬件基础。

设计将分为4大部分作图,即CPU,ROM/RAM,IO,POWER四张原理图。

CPU:采用了51系列单片机8031作为CPU,故需要扩展片外存储ROM/RAM:采用两片2764芯片扩展片外ROM,采用2片6264扩展片外RAMIO:采用总线驱动方式,扩展IO接口,设计中采用了74系列的双向总线驱动器74LS245POWER:采用220V转5V方式,得到数字供给电源(二)设计中,最小系统的扩展如下:数据总线:P0口分时复用数据总线。

P0第三位接38译码器,作为IO片选地址总线:通过地址锁存器74LS373引出的P0口的8位和直接引出的P2口的低5位,作为13位地址总线。

P2.5端通过线选法,片选外部存储,P2口高三位通过译码器片选IO芯片控制总线:ALE,PSEN,RD,WR均为片选,读写控制总线的部分。

(三)设计中,关于硬件连线说明:CPU:上述中已经说明8031的各个引脚及其扩展内容,因为其无内部存储,故引脚EA接地,使其通过硬件设置访问片外存储;ROM/RAM:通过CPU相关控制端口如PESN,P2.6(A13),RD,WE等实现CPU对片外存储器存储读写的控制。

P2端口的后两位通过38译码器扩展,作为IO地址线。

IO:本设计中扩展的IO有键盘,显示器,电机,水阀,状态显示设备(LED 小灯和警报器);键盘和显示器通过总线驱动器接入数据总线中,其余扩展通过控制总线,位寻址单独实现控制。

基于51单片机的智能洗衣控制系统设计

基于51单片机的智能洗衣控制系统设计

基于51单片机的智能洗衣控制系统设计1. 引言智能家居技术的发展为我们的生活带来了诸多便利,其中智能洗衣控制系统是其中的一项重要应用。

本文旨在基于51单片机设计一种智能洗衣控制系统,通过对洗衣机的控制和监测,提高洗衣质量和用户体验。

2. 智能洗衣控制系统设计原理2.1 51单片机介绍51单片机是一种常用的微控制器,具有体积小、功耗低、易于编程等特点。

在本设计中,我们选择51单片机作为主要的控制器。

2.2 智能洗衣系统功能需求智能洗衣系统应具备以下功能需求:2.2.1 温度控制:根据用户设定的温度要求,自动调节水温。

2.2.2 洗涤程序选择:根据用户选择不同类型的布料和污渍程度,自动调节洗涤程序。

2.2.3 水位监测:通过传感器实时监测水位情况,并根据需要自动添加或排放水量。

2.2.4 电机驱动:通过电机驱动实现转筒运转、排放水等功能。

...3 实验结果与分析在实际实验中,我们成功地实现了基于51单片机的智能洗衣控制系统,并进行了多组洗衣实验。

通过对洗衣机的控制和监测,系统能够根据用户设定的要求进行智能化的洗涤操作,并在完成后自动停止。

4 总结与展望通过本次研究,我们成功地设计并实现了一种基于51单片机的智能洗衣控制系统。

该系统具备温度控制、洗涤程序选择、水位监测和电机驱动等功能,能够提高洗衣质量和用户体验。

然而,目前该系统还存在一些局限性,如对于特殊布料和污渍处理不够精细等。

未来工作可以进一步优化系统设计,并结合更多的传感器和算法来提高智能化程度。

5 致谢本次研究得到了指导教师的悉心指导与帮助,在此向他们表示诚挚的感谢。

同时也感谢参与本研究工作并提供支持与帮助的各位同学们。

6 附录附录中包含了本次研究中使用到的关键代码、电路图、数据表格等详细信息,以供读者参考。

通过对基于51单片机的智能洗衣控制系统的设计,本文详细介绍了系统的原理、功能需求、硬件设计和软件设计等方面。

通过实验验证了系统的可行性,并对实验结果进行了分析。

全自动洗衣机单片机课程设计报告书

全自动洗衣机单片机课程设计报告书

一、设计目标1、全自动洗衣机用51系列单片机89C51控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。

不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在LED显示屏上显示过程代码。

在运行的时候能显示完成整个过程的剩余时间。

2、洗衣机主要功能:进水、洗涤、脱水、排水具体功能有浸泡、强力洗、轻柔洗、标准洗、快速洗、单独洗、单独脱水、漂洗脱水二、设计过程洗衣机要实现衣服的洗涤、漂洗和脱水,离不开进水、电机正转、电机反转和排水这四个动作。

上述四个动作,是通过单片机的P0端口,做输出端口,去控制双向可控硅通断来实现的,如下图所示。

同时加上输入开关的按钮、数码管显示器、蜂鸣按警器和欠压检测保护电路等,就可以形成完整的单片机控制系统。

通过软件编程达到对整个洗衣过程进行控制、检测以及与用户交互。

三、设计结果(1)硬件部分1、电路图2、PCB版图(2)、汇编语言洗衣机的一次洗衣过程控制过程主要为顺序控制,如先进水、洗涤(电机正转反转)、再排水脱水。

将把脱水、洗涤、进水单独编为一个子程序,由主程序根据过程选择,不断调用,可以减少源程序的长度,不同的洗衣过程,三大动作的时间不同,这可以通过建立数据表格,通过查表的方式获得每个洗衣过程所需时间。

此外,还需编出显示子程序,延时子程序供主程序不断调用。

1、流程图(1)、洗衣机控制系统主程序流程图(2)洗涤动作子程序流程图(3)脱水子程序流程图2、程序ORG 0000HLJMP MAINORG 0030H;延迟10ms程序;使用R0, R1DELAY10MS:MOV R0, #100D;DELAY10MS02:MOV R1, #23DDELAY10MS01:DJNZ R1, DELAY10MS01DJNZ R0, DELAY10MS02RET;显示子程序;20H.0闪烁标志位:=0不闪烁,=1在1s内亮灭一次;20H.1程序开始标志:=1开始, =0选择;显示缓冲:50H;经过的时间:53H,52H,51H=分钟,秒,20ms的次数;总时间:TOTALTIME=40HTOTALTIME EQU 40H DISPLAY:PUSH ACCPUSH PSWSETB RS0JNB 20H.1, DISPLAY01MOV A, 50H ;高位是否为零CJNE A, #0AH, DISPLAY05 DISPLAY05:JNC DISPLAY06XRL A, #0F0H ;高位为零不显示MOV 50H, ADISPLAY06:JNB 20H.0, DISPLAY01 ;是否需闪烁MOV A, 51HCJNE A, #25D, DISPLAY02; DISPLAY02:JC DISPLAY01MOV 50H, #0FFH ;暗显示(不亮)DISPLAY01:MOV A, 50H ;显示低位ANL A, #0FH;MOV DPTR, #DISPLAYTAB;MOVC A, @A+DPTR;MOV P2, A;SETB P0.6CLR P0.7LCALL DELAY10MSMOV A, 50H ;显示高位SWAP AANL A, #0FH;MOV DPTR, #DISPLAYTAB;MOVC A, @A+DPTR;MOV P2, A;CLR P0.6SETB P0.7LCALL DELAY10MSINC 51H ;累计时间MOV A, #50D ;XRL A, 51H ;JNZ DISPLAY03 ;50次的20ms 未到MOV 51H, A ;INC 52H ;1sMOV A, #60D;XRL A, 52H ;JNZ DISPLAY03MOV 52H, A ;INC 53H ;1min DISPLAY03:JNB 20H.0, DISPLAY04;MOV A, TOTALTIME ;计算剩余时间CLR CSUBB A, 53H ;MOV B, #10D ;16进制转换到10进制DIV ABSWAP AXRL A, B ;MOV 50H, A ;DISPLAY04:POP PSWPOP ACCRETDISPLAYTAB: ;共阳数码管反向编码DB 03H, 9FH, 25H, 0DH, 99H;01234DB 49H, 41H, 1FH, 01H, 09H;56789DB 11H, 0C1H, 63H, 85H, 61H;ABCDEDB 0FFH ;暗;重算时间;入口数据:A=总时间(分)CALUTIME:MOV TOTALTIME, ACLR AMOV 52H, A ;秒MOV 53H, A ;经过的分钟RET;鸣叫一下, 时长120msPLAY:SETB P1.6MOV R0, #12D;PLAY1:LCALL DISPLAYDJNZ R0, PLAY1CLR P1.6RET;鸣叫六下, 时长240ms*12 ALARM:SETB P1.6MOV R1, #11D; ALARM2:MOV R0, #12D; ALARM3:LCALL DISPLAYDJNZ R0, ALARM3CPL P1.6DJNZ R1, ALARM2RET;;;;;洗涤用子程序;洗涤时暂停按键XDPAUSE:JB P0.0, XDPS01LCALL DISPLAYJB P0.0, XDPS01PUSH 52HPUSH 53HCLR 20H.0 ;不闪烁MOV A, P1PUSH ACCMOV P1, #00HLCALL PLAY XDPS02:LCALL DISPLAYJNB P0.0, XDPS02 ;等待按键释放XDPS03:LCALL DISPLAYJB P0.0, XDPS03LCALL DISPLAYJB P0.0, XDPS03LCALL PLAYXDPS04:LCALL DISPLAYJNB P0.0, XDPS04 ;等待按键释放POP ACCMOV P1, ACCSETB 20H.0POP 53HPOP 52HXDPS01:RET;洗涤时延迟0.32sDELAY320MS:MOV R2, #14D;SJMP XDELAY01;洗涤时延迟0.56sXDELAY560MS:MOV R2, #28DSJMP XDELAY01;洗涤时延迟1sXDELAY1S:MOV R2, #50DSJMP XDELAY01;洗涤时延迟1.6sDELAY1600MS:MOV R2, #80DXDELAY01:LCALL DISPLAYLCALL XDPAUSE ;暂停按键LCALL IFINWATER ;水位开关DJNZ R2, XDELAY01RET;洗涤前进水子程序INWATER:JNB P0.2, PI1;SETB P1.2MOV A, 53H;ADD A, #20D;MOV 59H, A;PI3:MOV A, 53H;XRL A, 59H;JNZ PI2LCALL ERRORE4SJMP INWATERPI2:JNB P0.2, PI4;LCALL DISPLAYLCALL XDPAUSESJMP PI3PI4:CLR P1.2PI1:RET;洗涤时是否再进水IFINWATER:JNB P0.2, IF1;MOV A, P1;PUSH ACCMOV P1, #00H;LCALL INWATER ;进水POP ACCMOV P1, A;IF1:RET;不能进水报警ERRORE4:PUSH 52HPUSH 53HCLR 20H.0MOV A, P1;PUSH ACCMOV P1, #00H;MOV 50H, #0E4HLCALL ALARME4PK2:LCALL DISPLAYJNB P0.1, E4PK2;LCALL DISPLAYJNB P0.1, E4PK2E4PK3:LCALL DISPLAYJB P0.1, E4PK3LCALL DISPLAYJB P0.1, E4PK3SETB 20H.0POP ACCMOV P1, ACC;POP 53HPOP 52HRET;排水时延迟1sDELAY1000MS:MOV R2, #50D;DLY51:LCALL DISPLAYLCALL XDPAUSE ;暂停按键DJNZ R2, DLY51;RET;排水子程序OUTWATER:CLR ASETB P1.3JB P0.2, OUTW1MOV R7, #60D OUTW2:LCALL DELAY1000MSJB P0.2, OUTW4DJNZ R7, OUTW2LCALL ERRORE1SJMP OUTWATER OUTW4:CLR CMOV A, #60DSUBB A, R7OUTW1:ADD A, #60DMOV R7, AOUTW3:LCALL DELAY1000MSDJNZ R7, OUTW3RET;不能排水报警ERRORE1:PUSH 52HPUSH 53HCLR 20H.0MOV A, P1;PUSH ACCMOV P1, #00H;MOV 50H, #0E1HLCALL ALARME1PK2:LCALL DISPLAYJNB P0.1, E1PK2;LCALL DISPLAYJNB P0.1, E1PK2 E1PK3:LCALL DISPLAYJB P0.1, E1PK3LCALL DISPLAYJB P0.1, E1PK3SETB 20H.0POP ACCMOV P1, ACC;POP 53HPOP 52HRET;脱水时暂停按键TPKEY:JB P0.0, TPK1;LCALL DISPLAYJB P0.0, TPK1;PUSH 52HPUSH 53HCLR 20H.0LCALL PLAYMOV A, P1;PUSH ACCJNB ACC.0, TPK6CLR P1.0MOV R0, #250 ;延迟5秒TPK5:LCALL DISPLAYDJNZ R0, TPK5TPK6:MOV P1, #00H;TPK2:LCALL DISPLAYJNB P0.0, TPK2;TPK3:LCALL DISPLAYJB P0.0, TPK3LCALL DISPLAYJB P0.0, TPK3LCALL PLAYSETB 20H.0SETB P1.3MOV R0, #250 ;延迟5秒TPK4:LCALL DISPLAYDJNZ R0, TPK4POP ACCMOV P1, ACC;POP 53HPOP 52HTPK1:RET;脱水时开盖, 脱水时安全报警IFOPEN:ERRORE2:JNB P0.1, TTPK1;LCALL DISPLAYJNB P0.1, TTPK1;PUSH 52HPUSH 53HCLR 20H.0MOV A, P1;PUSH ACC; LCALL ALARMJNB ACC.0, TTPK6CLR P1.0MOV R0, #250 ;延迟5秒TTPK5:LCALL DISPLAYDJNZ R0, TTPK5TTPK6:MOV P1, #00H;MOV 50H, #0E2HTTPK2:LCALL DISPLAYJB P0.1, TTPK2;TTPK3:LCALL DISPLAYJB P0.1, TTPK2LCALL DISPLAY; JB P0.1, TTPK3SETB 20H.0SETB P1.3MOV R0, #250 ;延迟5秒TTPK4:LCALL DISPLAYDJNZ R0, TPK4POP ACCMOV P1, ACC;POP 53HPOP 52HTTPK1:RET;脱水时延迟4sDELAY4S:MOV R2, #200D;DLY431:LCALL DISPLAYLCALL TPKEY ;暂停按键LCALL IFOPEN ;安全开关DJNZ R2, DLY431;RET;脱水时延迟3sDELAY3S:MOV R2, #150D;DLY321:LCALL DISPLAYLCALL TPKEY ;暂停按键LCALL IFOPEN ;安全开关DJNZ R2, DLY321;RET;主程序开始;选择程序:30H, 程序开始20H.1=1 MAIN:MOV SP, #60H;CLR 20H.0CLR 20H.1MOV A, #00H;MOV P1, A;MOV 50H, A;MOV 51H, A;MOV 52H, A;MOV 53H, A;MOV 30H, A;LP1: ;有无按键LCALL DISPLAYJB P0.0, LP1;LCALL DISPLAY ;按键去抖动JB P0.0, LP1;LP3:INC 30HMOV A, #0AH ;共有九种可选择XRL A, 30H;JNZ LP2MOV 30H, #01H;LP2:LCALL PLAYMOV 50H, 30H;LP4:LCALL DISPLAYJNB P0.0, LP4 ;等待按键释放CLR AMOV 52H, A;LP5:LCALL DISPLAYMOV A, 52H;XRL A, #03H ;3秒延迟到否JZ START ;开始洗衣JB P0.0, LP5;SJMP LP3 ;重选洗衣程序START:LCALL ALARMSETB 20H.1CLR AMOV 52H, A;MOV A, 30H;DEC AMOV B, #03H;MUL ABMOV DPTR, #PROCTAB;JMP @A+DPTRPROCTAB:LJMP PROC1 ;洗衣程序1LJMP PROC2 ;洗衣程序2LJMP PROC3 ;洗衣程序3LJMP PROC4 ;洗衣程序4LJMP PROC5 ;洗衣程序5LJMP PROC6 ;洗衣程序6LJMP PROC7 ;洗衣程序7LJMP PROC8 ;洗衣程序8LJMP PROC9 ;洗衣程序9PROC1:MOV A, #59DLCALL CALUTIMESETB 20H.0LCALL INWATER ;进水MOV A, #57DLCALL CALUTIME;洗涤3分钟MOV R7, #42D;XIDI0:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI0MOV R6, #01D ;共4次*3分钟=12分钟MOV R7, #30D ;停2分钟XIDI01:LCALL XDELAY1SDJNZ R7, XIDI01MOV R7, #14D ;洗涤1分钟XIDI03:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI03DJNZ R6, XIDI02MOV R7, #30D ;停2分钟XIDI04:LCALL XDELAY1SDJNZ R7, XIDI04LJMP PROC3 ;以下同过程3PROC2:;(待完成)LJMP overPROC3:MOV A, #42DLCALL CALUTIMESETB 20H.0LCALL INWATER ;进水MOV A, #40DLCALL CALUTIME;洗涤15分钟MOV R7, #8D; XIDI:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI;快速洗涤15秒MOV R7, #11D QXIDI:SETB P1.0LCALL DELAY320MSCLR P1.0LCALL DELAY320MSSETB P1.1LCALL DELAY320MSCLR P1.1LCALL DELAY320MSDJNZ R7, QXIDIMOV A, #25DLCALL CALUTIME;排水LCALL OUTWATERMOV A, #23DLCALL CALUTIME;第一次脱水MOV R7, #04D ;间隙脱水30秒TS1:SETB P1.0LCALL DELAY4SCLR P1.0LCALL DELAY3SDJNZ R7, TS1SETB P1.0 ;长脱水90秒MOV R7, #10D ;TS2:LCALL DELAY4SDJNZ R7, TS2CLR P1.0MOV R7, #250 ;延迟5秒TS25:LCALL DISPLAYDJNZ R7, TS25CLR P1.3MOV A, #20DLCALL CALUTIME;第一次漂洗LCALL INWATERMOV A, #18DLCALL CALUTIME;洗涤2分钟MOV R7, #08D ;XIDI1:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI1;快速洗涤15秒MOV R7, #11D QXIDI1:SETB P1.0LCALL DELAY320MSCLR P1.0LCALL DELAY320MSSETB P1.1LCALL DELAY320MSCLR P1.1LCALL DELAY320MSDJNZ R7, QXIDI1MOV A, #16DLCALL CALUTIME;排水LCALL OUTWATERMOV A, #14DLCALL CALUTIME;第二次脱水MOV R7, #04DTS21:SETB P1.0LCALL DELAY4SCLR P1.0LCALL DELAY3SDJNZ R7, TS21SETB P1.0MOV R7, #10D ; TS22:LCALL DELAY4SDJNZ R7, TS22CLR P1.0MOV R7, #250 ;延迟5秒TS26:LCALL DISPLAYDJNZ R7, TS26CLR P1.3MOV A, #12DLCALL CALUTIME;第二次漂洗LCALL INWATERMOV A, #10DLCALL CALUTIME;洗涤2分钟MOV R7, #08D ; XIDI2:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI2;快速洗涤15秒MOV R7, #11DQXIDI2:SETB P1.0LCALL DELAY320MSCLR P1.0LCALL DELAY320MSSETB P1.1LCALL DELAY320MSCLR P1.1LCALL DELAY320MSDJNZ R7, QXIDI2PROC8:SETB 20H.0 ;过程8需要闪烁MOV A, #08DLCALL CALUTIME;排水LCALL OUTWATERMOV A, #06DLCALL CALUTIME;最后脱水MOV R7, #04D ;间隙脱水30秒TS31:SETB P1.0LCALL DELAY4SCLR P1.0LCALL DELAY3SDJNZ R7, TS31SETB P1.0 ;长脱水5分钟?MOV R7, #05DTS32:LCALL DELAY4SDJNZ R7, TS32CLR P1.0MOV R6, #06TS28:MOV R7, #250 ;延迟5秒*6=30秒TS29:LCALL DISPLAYDJNZ R7, TS29DJNZ R6, TS28CLR P1.3LJMP OVEROVER:LCALL ALARMSETB P0.6CLR P0.7MOV P2, #03HSJMP $END四、设计体会通过此次对全自动洗衣机的课程设计,对单片机的知识进一步掌握,也巩固了之前学习到的知识。

基于单片机的洗衣机课程设计

基于单片机的洗衣机课程设计

摘要设计要满足如下要求:实现6种模式的互动选择:标准,轻柔,快洗和单独地进行洗涤、漂洗和脱水操作,被选中的模式用LED显示器表明。

实现不同模式下的洗衣过程,根据衣物多少允许用户设置4种的水位,被选中的水位用LED显示器表明。

当洗衣机启动后,上水电磁阀打开注水,当水到达设定的限位时,上水电磁阀断电,注水过程停止,启动电机全自动控制洗衣操作,整个过程的进行按时间控制,时间自定。

液位检测和控制:使水位限定在某一个给定的液位范围内,当水位越限时打开下水电磁阀放水,不启动洗衣过程,待满足要求后,投入运行。

当投入洗衣量大于洗衣机额定容量时,控制系统应报警,不启动洗衣过程。

待满足要求后,投入运行。

本设计通过采用AT89C51单片机,通过74LS139,水位检测机构,LED 数码显示器,LED发光二极管,独立键盘,继电器,进排水阀等硬件实现了上述功能要求。

应用表明该系统具有水位选择,模式设定,水位越限检测,过容及脱水安全保护等功能。

其性能可靠,提到了效率,降低了能耗,减少了噪音。

关键字:89C51RC 智能家电自动控制洗衣机二、前言单片机又称微控制器,或称嵌入式控制器。

而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。

它是家用电器实现智能化的心脏和大脑。

由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。

而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。

单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足家用电器的需求。

波轮式全自动洗衣机是家用电器领域的重要一员,在全自动洗衣机市场中占有很大的比例,其中绝大多数品是用单片机来实现的AT89C52单片机是ATMEL公司8位单片机系列产品之一,是一种20引脚双列直插式芯片。

它内含4KB可反复烧录的FLASH存储器,RAM字节也有128个,15个I/O口,5个中断,2个定时,已经可以满足程序的需要,指令也和51系列兼容,基于上述特点,选择它来设计一台智能洗衣机,完全可以达到以下的功能:1、洗衣程序功能:含6种独立程序,即标准洗衣程序、轻柔洗衣、快洗、单次洗衣、漂洗、脱水功能;2、特殊功能:安全保护、防振、间歇工作、声光显示功能。

基于51单片机自助洗衣机毕业设计

基于51单片机自助洗衣机毕业设计

基于51单片机自助洗衣机毕业设计一、导言在当今社会,随着生活水平的提高和科技的不断发展,人们对生活品质的要求也越来越高。

各种智能家居产品应运而生,其中包括自助洗衣机。

本文将围绕基于51单片机的自助洗衣机毕业设计展开深入探讨,从多个角度探究其设计原理、功能特点和未来发展趋势。

二、基于51单片机的自助洗衣机毕业设计的概述自助洗衣机是一种方便、智能的洗衣设备,它能够根据用户的需求自动完成洗涤、漂洗和脱水等流程,而基于51单片机的自助洗衣机毕业设计则是利用了这一现代化技术,实现了更加智能、高效的洗衣功能。

通过使用51单片机,可以实现对洗衣机整体的控制和监测,改善用户体验,提高洗衣效率。

三、基于51单片机的自助洗衣机毕业设计的技术原理1. 传感器技术基于51单片机的自助洗衣机毕业设计中,传感器技术起着至关重要的作用。

通过使用温度传感器、湿度传感器和称重传感器等,可以实时监测洗衣机内部环境的变化,从而调节水温、水量和洗涤时间,使洗衣效果更加理想。

2. 控制系统在这一设计中,基于51单片机的控制系统能够实现对洗衣机的智能控制。

通过编程控制,可以实现洗衣机的启动、停止、程序选择和故障诊断等功能,使用户能够更加便捷地使用洗衣机,同时提高了洗衣机的稳定性和可靠性。

3. 通信技术基于51单片机的自助洗衣机毕业设计还涉及到通信技术的应用。

通过与智能手机或电脑进行通信,用户可以随时随地监控洗衣机的运行状态,实现远程控制和故障排查,极大地提升了洗衣机的智能化水平。

四、基于51单片机的自助洗衣机毕业设计的功能特点1. 智能化基于51单片机的自助洗衣机毕业设计将洗衣机的控制系统进行了升级,实现了洗涤过程的智能化控制。

用户可以通过简单的操作界面选择合适的洗涤程序,而洗涤机能够根据不同的衣物材质和污渍程度自动调节洗涤参数,提供专业级的洗衣效果。

2. 节能环保在设计中,基于51单片机的自助洗衣机注重了节能和环保的理念。

通过智能控制水温、水量和洗涤时间,实现了洗衣过程中的资源最优利用,减少了水和电的浪费,降低了对环境的影响。

基于51单片机的全自动洗衣机控制设计

基于51单片机的全自动洗衣机控制设计

《单片机技术与应用》课程设计洗衣机控制设计专业班级:学号:姓名:目录一、设计目的要求 (3)二、设计要目标 (3)三、硬件设计 (4)1、系统设计流程 (4)1.1系统模块划分 (5)2、模块设计 (7)2.1AT89C51单片机控制模块的设计 (7)2.1.1 AT89C51介绍 (7)2.1.2AT89C51单片机的主要管脚功能 (7)2.2单片机系统复位电路 (8)2.3标准时钟电路 (9)2.4控制电路设计 (10)2.5显示电路设计 (10)2.6数码管显示电路设计 (11)2.7水位检测电路 (13)2.7.1进水控制电路 (13)2.7.2排水控制电路 (14)2.8水位监测模块 (14)2.9报警电路设计 (15)3.0电机控制系统设计 (15)四、软件设计 (18)1、系统设计流程 (18)1.1系统模块划分 (18)2、模块设计 (19)2.1主程序 (19)2.1.1 主程序执行 (19)12.2三个运行方案程序 (20)2.2.1 三个运行方案执行 (20)五、结果讨论 (22)5.1仿真原理图: (22)六、工作总结 (25)附录 (26)原理图: (26)参考文献 (26)2一、设计目的要求设计要求(1)洗衣机可选择多种洗涤状态,用户只需要选择洗涤模式,洗衣机自动选择洗涤程序,完成洗涤。

(2)暂停功能。

不管洗衣机工作在什么状态,当按下暂停键时,洗衣机必须暂停工作,待驱动键按下后洗衣机又能按原来所选择的工作方式继续工作。

(3)声光显示功能。

洗衣机各种工作方式的选择和各种工作状态均有声光提示或显示。

(4)本设计包含硬件和软件设计。

(5)因为是全自动洗衣机,程序将完成洗涤、脱水的全过程。

(6)脱水完成后,蜂鸣器蜂鸣,通知用户洗涤完成。

二、设计要目标本系统控制的对象为套桶式单缸低波轮全自动洗衣机,其功能要求如下:1.强、弱洗涤功能。

强洗时正、反转驱动时间各为4秒,间歇时间为1秒;标准洗时正、反转驱动时间各为3秒,间歇时间为1秒弱洗洗时正、反转驱动时间各为2秒,间歇时间为1秒2.三种洗衣工作程序,即标准程序强洗程序、弱洗程序和甩干程序。

基于的51单片机全自动洗衣机设计(北理工)

基于的51单片机全自动洗衣机设计(北理工)

全自动洗衣机课程设计基于51单片机,C语言实现。

基本要求模拟全自动洗衣机工作过程。

以电机替代洗衣机电机。

显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。

显示工作剩余时间(洗衣程序可自定义,时间精度:秒)。

洗衣时交替正、反转。

扩展要求洗衣和脱水时电机转速不同。

增加水位传感器输入。

故障报警。

增加声音提示。

其它自定义功能。

设计用Preteus仿真:仿真图如下:C文件函数代码:#include<reg51.h>//****************************//#define uchar unsigned char#define uint unsigned int//*******************************////***************************//sbit mo_r = P3^2; //电机右控制线sbit mo_l = P3^3; //电机左控制线//****************************//sbit key_menu = P3^4; // 菜单按键sbit key_on = P3^5; // 开始按键sbit key_off = P3^6; // 结束按键sbit key_se = P3^7; // 菜单选择按键//***************************//sbit led_in = P0^0; // 进水指示灯sbit led_xi = P0^1; // 洗衣指示灯sbit led_pao = P0^2; // 泡洗指示灯sbit led_xx = P0^3; // 脱水指示灯sbit led_out = P0^4; // 出水指示灯sbit led_over = P0^5; // 洗衣结束指示灯sbit led_work = P0^6; // 电机工作指示灯sbit led_wring = P0^7; // 报警指示灯sbit other = P3^1; // 脱水电源控制开关sbit anther = P3^0; // 洗衣电源控制开关//******************************//uchar code num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };////*****************************//char sec = 0; // 时间秒char min = 0; // 时间分uchar count=0; // 中断计数uchar flag0=0; // 洗衣机工作状态标志uchar flag1=0; // 进水次数标志uchar flag2=0; // 出水次数标志uchar flag3=0; // 泡洗次数标志uchar err =0; // 报警标志uchar quan = 0;//正反转计数//**********************************//// 函数声明//*************************************// void delay();// 延时函数void in(); // 进水子程序void out(); // 出水子程序void over(); // 结束子程序void xi(); // 洗衣子程序void pao(); // 泡衣子程序void xx(); // 脱水子程序void on(); // 工作on处理子程序void se(); // 显示菜单选择void SEG_display(); //显示时间子程序void key_scan(); // 按键扫描子程序//*****************************//// 延时函数//****************************//void delay(uint i){uint x,y;for(x=i;x>0;x--)for(y=120;y>0;y--);}//******************************// // 工作on处理子程序//********************************// void on(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;P0 = 0xff;if(flag0 == 0)in();if(flag0 == 1)xi();if(flag0 == 2)pao();if(flag0 == 3)xx();if(flag0 == 4)out();}//*******************************// // 结束子程序//*********************************// void over(){ other=0;anther=0;P0 = 0xff;mo_r=0;mo_l=0;led_over = 0;EA=0;}//*********************************// // 进水子程序//*********************************// void in(){ anther=0;other=0;P0 = 0xff;led_in = 0;flag1++;mo_r = 0;mo_l = 0;min = 0;sec = 8;}//*********************************// // 洗衣子程序//*********************************// void xi(){ anther=1;other=0;P0 = 0xff;led_work = 0;led_xi = 0;mo_r = 1;mo_l = 0;min = 1;sec = 36;quan = 0;}//*********************************// // 泡衣子程序//*********************************// void pao(){anther=1;other=0;P0 = 0xff;led_pao = 0;led_work = 0;flag3++;mo_r = 1;mo_l = 0;min = 1;sec = 35;quan = 0;}//*********************************// // 脱水子程序//*********************************// void xx(){ other=1;anther=0;P0 = 0xff;led_xx = 0;mo_r = 0;mo_l = 1;min = 0;sec = 50;}//*********************************// // 出水子程序//*********************************// void out(){ anther=0;other=0;P0 = 0xff;led_out = 0;flag2++;mo_r = 0;mo_l = 0;min = 0;sec = 5;}//*********************************// // 显示菜单选择//*********************************// void se(){P0 = 0xff;if(flag0 >= 5)flag0 = 0;if(flag0 == 0){led_in = 0;}if(flag0 == 1){led_xi=0;}if(flag0 == 2){led_pao=0;}if(flag0 == 3){led_xx=0;}if(flag0 == 4){led_out=0;}}//********************************// // 菜单处理子程序//**********************************// void menu(){min = 0;sec = 0;mo_r=0;mo_l=0;SEG_display();while(1){if(key_on == 0){delay(5);if(key_on == 0){while(!key_on);on();break;}}//**************************// if(key_off == 0){delay(5);if(key_off == 0){while(!key_off);over();break;}}//****************************//if(key_se == 0){delay(5);if(key_se == 0){while(!key_se);flag0++;se();}}}}//*********************************// // 按键扫描子程序//*********************************// void key_scan(){if(key_menu == 0){delay(5);if(key_menu == 0){while(!key_menu);menu();}}//********************************// if(key_on == 0){delay(5);if(key_on == 0){while(!key_on);on();}}//*********************************// if(key_off == 0){delay(5);if(key_off == 0){while(!key_off);over();}}}//*******************************// // 显示子程序//*********************************// void SEG_display(){P1=0x01;P2 = num[min/10];delay(10);P1 = 0x02;P2 = num[min%10];delay(10);P1 = 0x04;P2 = num[sec/10];delay(10);P1 = 0x08;P2 = num[sec%10];delay(10);}//*********************************// // 主函数//*********************************// void main(){led_in=0;anther=0;other=0;while(1){SEG_display();key_scan();}}//**********************************// // 定时器0中断处理程序//**********************************//void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count = 0;sec--;if((flag0==1)||(flag0==2)){quan++;switch(quan){case 1:mo_r=1;mo_l=0;break;case 10:mo_r=0;mo_l=0;break;case 15:mo_r=0;mo_l=1;break;case 25:mo_r=0;mo_l=0;break;default:;}if(quan==30){quan=0;}}//**********************************//if((sec == 0)&&(min != 0)){min--;sec = 59;}//**********************************// if((sec<0)&&(min==0)&&(flag0==0)) //进水结束{switch(flag1){case 1:flag0=1;xi();break;case 2:flag0=2;pao();break;case 3:flag0=2;pao();break;case 4:flag0=2;pao();break;default: err=1;led_wring = 0;}}//**********************************//if((sec<0)&&(min==0)&&(flag0==1)) //洗衣结束{flag0 = 4;out();}//**********************************//if((sec<0)&&(min==0)&&(flag0==2)) //泡衣结束{switch(flag3){case 1:flag0=4;out();break;case 2:flag0=4;out();break;case 3:flag0=4;out();break;default: err=1;led_wring = 0;}}//**********************************//if((sec<0)&&(min==0)&&(flag0==4)) //出水结束{switch(flag2){case 1:flag0=0;in();break;case 2:flag0=0;in();break;case 3:flag0=0;in();break;case 4:flag0=3;xx();break;default: err= 1;led_wring = 0;}}//***********************************// if((sec<0)&&(min==0)&&(flag0==3)){ sec = 0;over();}}}。

基于单片机的全自动洗衣机系统设计

基于单片机的全自动洗衣机系统设计

基于单片机的全自动洗衣机系统设计一、本文概述随着科技的进步和人们生活水平的提高,家用电器在日常生活中扮演着越来越重要的角色。

全自动洗衣机作为其中的一种,其便捷性和高效性受到了广大用户的青睐。

传统的洗衣机设计在智能化、节能性、操作简便性等方面仍有待提升。

为此,本文提出了一种基于单片机的全自动洗衣机系统设计,旨在通过技术创新和智能控制,为用户提供更加人性化、高效且节能的洗衣体验。

本文将详细介绍该系统的设计原理、硬件构成、软件编程以及实际应用效果。

我们将对单片机的选择及其在系统中的作用进行阐述,同时分析洗衣机控制系统中所需的传感器和执行器。

接着,我们将深入探讨软件设计的关键技术和算法,包括控制逻辑的实现、人机交互界面的设计以及故障检测和处理机制。

我们将通过实际测试和用户体验反馈,对该系统的性能进行评估和优化。

本文旨在提供一种基于单片机的全自动洗衣机系统设计方案,为相关领域的研究和实践提供有益的参考和借鉴。

通过不断优化和创新,我们期待这种智能化、高效且节能的洗衣机能够在未来得到更广泛的应用,为人们的生活带来更多便利和舒适。

二、系统总体设计全自动洗衣机系统的设计,基于单片机作为核心控制器,旨在实现洗衣机的全自动化和智能化。

整个系统由单片机、电机驱动模块、水位检测模块、洗涤剂投放模块、温度控制模块、显示模块和用户交互模块等多个子模块组成。

我们选择一款性能稳定、价格适中且易于编程的单片机作为本系统的核心控制器。

该单片机将负责接收用户输入指令、处理传感器信号、控制各功能模块以及实现与显示模块的通信。

通过编程,单片机能够实现对洗衣机的全面控制,包括启动、停止、调整洗涤方式、设定洗涤时间等功能。

电机驱动模块是洗衣机的动力来源,负责驱动洗衣机的电机进行旋转。

我们选用一款能够驱动电机正反转且具备调速功能的驱动模块,通过单片机输出的PWM信号实现对电机转速的精确控制。

电机驱动模块还具备过流保护功能,以确保系统的安全可靠。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理及系统课程设计专业:自动控制班级:控1102姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014年1月13日基于51单片机的洗衣机设计1 设计目的、要求及原理1.1设计目的由单片机控制实现洗衣机的各项功能,单片机的体积小,控制功能灵活,因此,设计出基于单片机的全自动洗衣机控制电路系统具有很强的实用性。

用单片机设计出简单操作省水省电的洗衣机,在方便日常生活和节约资源方面都有重要意义。

由于个人能力有限,我能设计的洗衣机比前沿科技产品要差很多。

所以我这次课设的主要目的在于通过亲手操作,查找资料,培养自己的分析设计能力。

把这学期课程中零散的知识进行整合,将理论的知识联系到实际的生活中。

在实例中深入理解一些理论知识,并从中有所收获,就是意义所在。

1.2设计要求通过仿真软件模拟洗衣机的基本工作过程,如进水、洗涤、排水、漂洗、脱水等。

1.3设计方法利用89C51单片机的P0,P1,P2,P3串行输入输出功能,控制数码管、电机、发光二极管的工作状态模拟洗衣机的基本工作过程。

2 设计方案及原理2.1 设计方案洗衣机的主要工作程序是:进水—洗涤—排水—进水—漂洗—排水—脱水—排水。

上述工作程序中,主要包含三个过程,洗涤过程、漂洗过程、脱水过程。

(1) 洗涤过程:放好待洗物,启动开关,进水阀通电,向洗衣机供水,当供水达到预定时间后,进水阀断电关闭,停止供水。

洗涤电动机接通电源,带动波轮(或桶)旋转,产生各种形式的水流搅动衣物进行洗涤。

通过电动机不停的正转、反转,形成洗涤水对洗涤物产生强烈的翻滚作用。

同时,衣物之间、衣物与四周桶壁之间产生互相摩擦和撞击力,以次达到洗涤衣物的目的。

(2) 漂洗过程:漂洗的目的在于清除衣物上的洗涤液。

因此,在洗涤结束之后,换水进行漂洗。

漂洗过程与洗涤过程的电器动作是完全相同的。

为了完全漂净衣服上的洗衣粉等,所以要多次漂洗,在这次设计中漂洗次数设定为三次。

(3) 脱水过程:漂洗后,需要对衣物进行脱水以便晾干,节省水资源,所以脱水是洗衣过程中必不可少的环节。

漂洗过程结束后,电动机停止转动,排水阀通电,打开排水阀门排水。

当排水到达预定时间后,脱水电动机接通,电机带动脱水桶高速旋转,利用离心力把衣服上的水从桶壁的小眼里甩出。

全部洗衣工作完成后,表示结束的LED灯点亮,表示衣物已经洗好,洗衣机在这时就会自动停止工作。

2.2 设计原理本设计用51单片机实现对洗衣机的控制,通过功能选择开关可以选择洗衣机的工作模式。

当选择好模式后洗衣机进入相应的工作状态。

该模式的参数已装入单片机中,洗衣机在单片机中预先装入程序的控制下进行工作。

程序实现的主要功能是洗涤,漂洗和脱水的控制。

其中洗涤时间设为96s,用sec和min控制,其中sec代表分钟min代表秒。

并且通过改变它们的值可以改变洗涤时间。

用P3.2和P3.3控制电机的正反转(通过它们高低不同的电平控制电流的方向,从而改变电机的转向。

漂洗过程和洗涤过程较为相似,由于漂洗要多次进行,所以用进水次数标志位flag1控制漂洗的次数,当flag1=2、3、4时为漂洗过程。

脱水过程是在出水次数flag2的控制下进行。

当flag2=4时脱水,当脱水时间到达0后,脱水结束,洗衣结束,表示停止的指示灯亮。

图1 系统组成框图3 硬件设计3.1系统主要元器件在本设计中主要使用了以下元器件:AT89C51芯片、74LS245芯片、四数码管、发光二极管、直流电动机、三极管等。

3.2 设计原理图洗衣机的各项功能是由单片机控制实现的,单片机的体积小,控制功能灵活,因此,设计出基于单片机的全自动洗衣机控制电路系统具有很强的实用性采用5l 系列单片机作为控制核心,主要包括功能选择及控制电路、洗衣机工作状态显示及输出控制电路。

控制电机正反转以及进水阀和排水阀的开启和关闭。

如图2所示为设计原理图。

图2 硬件连接图4 软件设计4.1 主程序流程图按下K1键,洗衣机从待命状态。

当按下K2键后,51单片机通过预先装入的程序控制各引脚的状态,让洗衣机才进入工作状态,以实现进水、洗衣、排水、漂洗、脱水、报警等基本功能。

主程序流程图如图3所示。

图3 主程序流程图5 系统仿真及实际调试5.1 仿真结果图4 :系统仿真结果5.1 问题分析本电路为模拟洗衣机工作过程,所以进水和排水部分只能用输出引脚上的发光二极管表示工作状态,报警电路为脱水过程的保护电路,当脱水未结束打开洗衣机盖的时候,报警电路工作并断开电机电源,防止发生事故。

6 总结在本设计中通过软,硬件的配合设计,很好的实现了洗衣机的控制功能。

本系统结构简单,控制功能强大,自动化程度高等特点。

系统软硬件设计采用模块化的设计方法,各模块功能相对独立,最后把它们整合在一起,大大的缩短了系统的设计周期。

为保证洗衣机及人身安全,设计了报警电路。

本设计还考虑半自动的设计,用户可以根据自己的需求自由选择洗衣机的工作方式,这一点是通过功能选择键实现的。

通过这次单片机课程设计,不仅巩固了课本上所学的知识,而且更加深刻地认识到了单片机在生活中的重要地位,通过这次课程设计让我对单片机系统设计的过程与方法有了一定的认识,很好的培养了自己的创新设计能力。

参考文献[1] 李朝青.单片机原理及接口技术[M].北京:北京航空航天出版社,1999.[2] 顾滨.单片微计算机原理、开发及应用[M].北京:高等教育出版社,2000.[3] 王思明,张金敏,苟军年等.单片机原理及应用系统设计[M]:科学出版社,2012.[4] 房小翠.单片机实用系统设计技术[M].北京:国防工业出版社,1990.附录1 源程序#include<reg51.h>#define uchar unsigned char#define uint unsigned int//***************************//sbit mo_r=P3^2; //电机右控制线sbit mo_l=P3^3; //电机左控制线//****************************//sbit key_menu=P3^4; // 菜单按键sbit key_on=P3^5; // 开始按键sbit key_off=P3^6; // 结束按键sbit key_se=P3^7; // 菜单选择按键//***************************//sbit led_in=P0^0; // 进水指示灯sbit led_xi=P0^1; // 洗衣指示灯sbit led_pao=P0^2; // 泡洗指示灯sbit led_xx=P0^3; // 脱水指示灯sbit led_out=P0^4; // 出水指示灯sbit led_over=P0^5; // 洗衣结束指示灯sbit led_work=P0^6; // 电机工作指示灯sbit led_wring=P0^7; // 报警指示灯sbit other=P3^1; // 脱水电源控制开关sbit anther=P3^0; // 洗衣电源控制开关//******************************//uchar code num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //*****************************//char sec=0; // 时间秒char min=0; // 时间分uchar count=0; // 中断计数uchar flag0=0; // 洗衣机工作状态标志uchar flag1=0; // 进水次数标志uchar flag2=0; // 出水次数标志uchar flag3=0; // 泡洗次数标志uchar err=0; // 报警标志uchar quan=0; // 正反转计数//**********************************//void delay(); // 延时函数void in(); // 进水子程序void out(); // 出水子程序void over(); // 结束子程序void xi(); // 洗衣子程序void pao(); // 泡衣子程序void xx(); // 脱水子程序void on(); // 工作on处理子程序void se(); // 显示菜单选择void SEG_display(); // 显示时间子程序void key_scan(); // 按键扫描子程序void delay(uint i){uint x,y;for(x=i;x>0;x--)for(y=120;y>0;y--);}//*********工作on处理子程序**********// void on(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;P0 = 0xff;if(flag0==0)in();if(flag0==1)xi();if(flag0==2)pao();if(flag0==3)xx();if(flag0==4)out();}//********结束子程序*********//void over(){ other=0;anther=0;P0=0xff;mo_r=0;mo_l=0;led_over=0;EA=0;}//**********进水子程序**********//void in(){ anther=0;other=0;P0=0xff;led_in=0;flag1++;mo_r=0;mo_l=0;min=0;sec=8;}//**********洗衣子程序**********// void xi(){ anther=1;other=0;P0=0xff;led_work=0;led_xi=0;mo_r=1;mo_l=0;min=1;sec=36;quan=0;}////********泡衣子程序********// void pao(){anther=1;other=0;P0=0xff;led_pao=0;led_work=0;flag3++;mo_r=1;mo_l=0;min=1;sec=35;quan=0;}//*********脱水子程序********// void xx(){ other=1;anther=0;P0=0xff;led_xx=0;mo_r=0;mo_l=1;min=0;sec=50;}//********出水子程序********// void out(){ anther=0;other=0;P0=0xff;led_out=0;flag2++;mo_r=0;mo_l=0;min=0;sec=5;}//**********显示菜单选择********// void se(){P0=0xff;if(flag0 >= 5)flag0=0;if(flag0==0){led_in=0;}if(flag0==1){led_xi=0;}if(flag0==2){led_pao=0;}if(flag0==3){led_xx=0;}if(flag0==4){led_out=0;}}//*********菜单处理子程序**********// void menu(){min=0;sec=0;mo_r=0;mo_l=0;SEG_display();while(1){if(key_on==0){delay(5);if(key_on==0){while(!key_on);on();break;}}//**************************//if(key_off==0){delay(5);if(key_off==0){while(!key_off);over();break;}}//****************************//if(key_se==0){delay(5);if(key_se==0){while(!key_se);flag0++;se();}}}}//*********按键扫描子程序*********// void key_scan(){if(key_menu==0){delay(5);if(key_menu==0){while(!key_menu);menu();}}//********************************// if(key_on==0){delay(5);if(key_on==0){while(!key_on);on();}}//*********************************// if(key_off==0){delay(5);if(key_off==0){while(!key_off);over();}}}//*********显示子程序**********// void SEG_display(){P1=0x01;P2=num[min/10];delay(10);P1=0x02;P2=num[min%10];delay(10);P1=0x04;P2=num[sec/10];delay(10);P1=0x08;P2=num[sec%10];delay(10);}//*********主函数**********//void main(){led_in=0;anther=0;other=0;while(1){SEG_display();key_scan();}}//*****定时器0中断处理程序*****// void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;sec--;if((flag0==1)||(flag0==2)){quan++;switch(quan){case 1:mo_r=1;mo_l=0;break;case 10:mo_r=0;mo_l=0;break;case 15:mo_r=0;mo_l=1;break;case 25:mo_r=0;mo_l=0;break;default:;}if(quan==30){quan=0;}}//**********************************//if((sec==0)&&(min != 0)){min--;sec=59;}//**********************************//if((sec<0)&&(min==0)&&(flag0==0)) //进水结束{switch(flag1){case 1:flag0=1;xi();break;case 2:flag0=2;pao();break;case 3:flag0=2;pao();break;case 4:flag0=2;pao();break;default: err=1;led_wring = 0;}}//**********************************//if((sec<0)&&(min==0)&&(flag0==1)) //洗衣结束{flag0=4;out();}//**********************************//if((sec<0)&&(min==0)&&(flag0==2)) //泡衣结束{switch(flag3){case 1:flag0=4;out();break;case 2:flag0=4;out();break;case 3:flag0=4;out();break;default: err=1;led_wring = 0;}}//**********************************//if((sec<0)&&(min==0)&&(flag0==4)) //出水结束{switch(flag2){case 1:flag0=0;in();break;case 2:flag0=0;in();break;case 3:flag0=0;in();break;case 4:flag0=3;xx();break;default: err=1;led_wring=0;}}//***********************************//if((sec<0)&&(min==0)&&(flag0==3)){ sec=0;over();}}}。

相关文档
最新文档