全自动洗衣机单片机课程设计
- 格式:docx
- 大小:2.63 MB
- 文档页数:16
全自动洗衣机单片机课程设计
Revised by BETTY on December 25,2020 一、设计目标
1、全自动洗衣机
用51系列单片机89C51控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在LED显示屏上显示过程代码。在运行的时候能显示完成整个过程的剩余时间。
2、洗衣机主要功能:进水、洗涤、脱水、排水
具体功能有浸泡、强力洗、轻柔洗、标准洗、快速洗、单独洗、单独脱水、漂洗脱水
二、设计过程
洗衣机要实现衣服的洗涤、漂洗和脱水,离不开进水、电机正转、电机反转和排水这四个动作。上述四个动作,是通过单片机的P0端口,做输出端口,去控制双向可控硅通断来实现的,如下图所示。同时加上输入开关的按钮、数码管显示器、蜂鸣按警器和欠压检测保护电路等,就可以形成完整的单片机控制系统。通过软件编程达到对整个洗衣过程进行控制、检测以及与用户交互。
水位开关
安全开关
程序选择/启动/暂停 可控硅X 4个
~220V
洗衣机单片机控制系统方框图
三、设计结果
(1)硬件部分
1、电路图
2、PCB版图
(2)、汇编语言
洗衣机的一次洗衣过程控制过程主要为顺序控制,如先进水、洗涤(电机正转反转)、再排水脱水。将把脱水、洗涤、进水单独编为一个子程序,由主程序根据过程选择,不断调用,可以减少源程序的长度,不同的洗衣过程,三大动作的时间不同,这可以通过建立数据表格,通过查表的方式获得每个洗衣过程所需时间。此外,还需编出显示子程序,延时子程序供主程序不断调用。
1、流程图
(1)、洗衣机控制系统主程序流程图
(2)洗涤动作子程序流程图
是
否
否
是
否 单片机
89C51 进水电磁排水电磁电机正转
电机反转 显示屏
蜂鸣器
开始
用户选择洗衣过程
是否洗涤 进水
洗涤
是否漂洗 置注水漂洗标志 开始
根据过程代码获取电机正转-停止-反转-停止的电机动进水处
是
否
是
是
否
(3)脱水子程序流程图
是
否
否
是
是
否
否
是
是
否
否
是
是
2、程序ORG 0000H
LJMP MAIN
ORG 0030H
;延迟10ms程序
;使用R0, R1
DELAY10MS:
MOV R0, #100D;
DELAY10MS02:
MOV R1, #23D
DELAY10MS01:
DJNZ R1, DELAY10MS01
DJNZ R0, DELAY10MS02
RET
;显示子程序 ;闪烁标志位:=0不闪烁,=1在1s内亮灭一次
;程序开始标志:=1开始, =0选择
;显示缓冲:50H
;经过的时间:53H,52H,51H=分钟,秒,20ms的次数
;总时间:TOTALTIME=40H
TOTALTIME EQU 40H
DISPLAY:
PUSH ACC
PUSH PSW
SETB RS0
JNB , DISPLAY01 延时5电机动暂停处安全开关
脱水时间
到否 安全开关断不平衡修重置修正是否暂停
是否暂开安全开关
延时30秒,关闭是否瞬间不平衡修正>3脱水不平安全开关是否显示鸣叫结 MOV A, 50H ;高位是否为零
CJNE A, #0AH, DISPLAY05
DISPLAY05:
JNC DISPLAY06
XRL A, #0F0H ;高位为零不显示
MOV 50H, A
DISPLAY06:
JNB , DISPLAY01 ;是否需闪烁
MOV A, 51H
CJNE A, #25D, DISPLAY02;
DISPLAY02:
JC DISPLAY01
MOV 50H, #0FFH ;暗显示(不亮)
DISPLAY01:
MOV A, 50H ;显示低位
ANL A, #0FH;
MOV DPTR, #DISPLAYTAB;
MOVC A, @A+DPTR;
MOV P2, A;
SETB
CLR
LCALL DELAY10MS
MOV A, 50H ;显示高位 SWAP A
ANL A, #0FH;
MOV DPTR, #DISPLAYTAB;
MOVC A, @A+DPTR;
MOV P2, A;
CLR
SETB
LCALL DELAY10MS
INC 51H ;累计时间
MOV A, #50D ;
XRL A, 51H ;
JNZ DISPLAY03
;50次的20ms未到
MOV 51H, A ;
INC 52H
;1s
MOV A, #60D;
XRL A, 52H ;
JNZ DISPLAY03
MOV 52H, A ;
INC 53H
;1min
DISPLAY03:
JNB , DISPLAY04;
MOV A, TOTALTIME ;计算剩余时间
CLR C
SUBB A, 53H ; MOV B, #10D
;16进制转换到10进制
DIV AB
SWAP A
XRL A, B ;
MOV 50H, A ;
DISPLAY04:
POP PSW
POP ACC
RET
DISPLAYTAB: ;共阳数码管反向编码
DB 03H, 9FH, 25H, 0DH, 99H ;01234
DB 49H, 41H, 1FH, 01H, 09H ;56789
DB 11H, 0C1H, 63H, 85H,
61H ;ABCDE
DB 0FFH ;暗
;重算时间
;入口数据:A=总时间(分)
CALUTIME:
MOV TOTALTIME, A
CLR A
MOV 52H, A ;秒
MOV 53H, A ;经过的分钟
RET ;鸣叫一下, 时长120ms
PLAY:
SETB
MOV R0, #12D;
PLAY1:
LCALL DISPLAY
DJNZ R0, PLAY1
CLR
RET
;鸣叫六下, 时长240ms*12
ALARM:
SETB
MOV R1, #11D;
ALARM2:
MOV R0, #12D;
ALARM3:
LCALL DISPLAY
DJNZ R0, ALARM3
CPL
DJNZ R1, ALARM2
RET
;;;;;洗涤用子程序
;洗涤时暂停按键
XDPAUSE:
JB , XDPS01
LCALL DISPLAY
JB , XDPS01
PUSH 52H
PUSH 53H CLR ;不闪烁
MOV A, P1
PUSH ACC
MOV P1, #00H
LCALL PLAY
XDPS02:
LCALL DISPLAY
JNB , XDPS02 ;等待按键释放
XDPS03:
LCALL DISPLAY
JB , XDPS03
LCALL DISPLAY
JB , XDPS03
LCALL PLAY
XDPS04:
LCALL DISPLAY
JNB , XDPS04 ;等待按键释放
POP ACC
MOV P1, ACC
SETB
POP 53H
POP 52H
XDPS01:
RET
;洗涤时延迟
DELAY320MS:
MOV R2, #14D; SJMP XDELAY01
;洗涤时延迟
XDELAY560MS:
MOV R2, #28D
SJMP XDELAY01
;洗涤时延迟1s
XDELAY1S:
MOV R2, #50D
SJMP XDELAY01
;洗涤时延迟
DELAY1600MS:
MOV R2, #80D
XDELAY01:
LCALL DISPLAY
LCALL XDPAUSE ;暂停按键
LCALL IFINWATER ;水位开关
DJNZ R2, XDELAY01
RET
;洗涤前进水子程序
INWATER:
JNB , PI1;
SETB
MOV A, 53H;
ADD A, #20D;
MOV 59H, A;
PI3:
MOV A, 53H;