全自动洗衣机单片机课程设计.docx
- 文档编号:28463851
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:30
- 大小:133.74KB
全自动洗衣机单片机课程设计.docx
《全自动洗衣机单片机课程设计.docx》由会员分享,可在线阅读,更多相关《全自动洗衣机单片机课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
全自动洗衣机单片机课程设计
一、设计目标
1、全自动洗衣机
用51系列单片机89C51控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。
不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在LED显示屏上显示过程代码。
在运行的时候能显示完成整个过程的剩余时间。
2、洗衣机主要功能:
进水、洗涤、脱水、排水
具体功能有浸泡、强力洗、轻柔洗、标准洗、快速洗、单独洗、单独脱水、漂洗脱水
二、设计过程
洗衣机要实现衣服的洗涤、漂洗和脱水,离不开进水、电机正转、电机反转和排水这四个动作。
上述四个动作,是通过单片机的P0端口,做输出端口,去控制双向可控硅通断来实现的,如下图所示。
同时加上输入开关的按钮、数码管显示器、蜂鸣按警器和欠压检测保护电路等,就可以形成完整的单片机控制系统。
通过软件编程达到对整个洗衣过程进行控制、检测以及与用户交互。
水位开关
安全开关
程序选择/启动/暂停可控硅X4个
~220V
洗衣机单片机控制系统方框图
三、设计结果
(1)硬件部分
1、电路图
2、PCB版图
(2)、汇编语言
洗衣机的一次洗衣过程控制过程主要为顺序控制,如先进水、洗涤(电机正转反转)、再排水脱水。
将把脱水、洗涤、进水单独编为一个子程序,由主程序根据过程选择,不断调用,可以减少源程序的长度,不同的洗衣过程,三大动作的时间不同,这可以通过建立数据表格,通过查表的方式获得每个洗衣过程所需时间。
此外,还需编出显示子程序,延时子程序供主程序不断调用。
1、流程图
(1)、洗衣机控制系统主程序流程图
(2)洗涤动作子程序流程图
是
否
否
是
否
是
否
是
是
否
(3)脱水子程序流程图
是
否
否
是
是
否
否
是
是
否
否
是
是
2、程序
ORG0000H
LJMPMAIN
ORG0030H
;延迟10ms程序
;使用R0,R1
DELAY10MS:
MOVR0,#100D;
DELAY10MS02:
MOVR1,#23D
DELAY10MS01:
DJNZR1,DELAY10MS01
DJNZR0,DELAY10MS02
RET
;显示子程序
;20H.0闪烁标志位:
=0不闪烁,=1在1s内亮灭一次
;20H.1程序开始标志:
=1开始,=0选择
;显示缓冲:
50H
;经过的时间:
53H,52H,51H=分钟,秒,20ms的次数
;总时间:
TOTALTIME=40H
TOTALTIMEEQU40H
DISPLAY:
PUSHACC
PUSHPSW
SETBRS0
JNB20H.1,DISPLAY01
MOVA,50H;高位是否为零
CJNEA,#0AH,DISPLAY05
DISPLAY05:
JNCDISPLAY06
XRLA,#0F0H;高位为零不显示
MOV50H,A
DISPLAY06:
JNB20H.0,DISPLAY01;是否需闪烁
MOVA,51H
CJNEA,#25D,DISPLAY02;
DISPLAY02:
JCDISPLAY01
MOV50H,#0FFH;暗显示(不亮)
DISPLAY01:
MOVA,50H;显示低位
ANLA,#0FH;
MOVDPTR,#DISPLAYTAB;
MOVCA,@A+DPTR;
MOVP2,A;
SETBP0.6
CLRP0.7
LCALLDELAY10MS
MOVA,50H;显示高位
SWAPA
ANLA,#0FH;
MOVDPTR,#DISPLAYTAB;
MOVCA,@A+DPTR;
MOVP2,A;
CLRP0.6
SETBP0.7
LCALLDELAY10MS
INC51H;累计时间
MOVA,#50D;
XRLA,51H;
JNZDISPLAY03;50次的20ms未到
MOV51H,A;
INC52H;1s
MOVA,#60D;
XRLA,52H;
JNZDISPLAY03
MOV52H,A;
INC53H;1min
DISPLAY03:
JNB20H.0,DISPLAY04;
MOVA,TOTALTIME;计算剩余时间
CLRC
SUBBA,53H;
MOVB,#10D;16进制转换到10进制
DIVAB
SWAPA
XRLA,B;
MOV50H,A;
DISPLAY04:
POPPSW
POPACC
RET
DISPLAYTAB:
;共阳数码管反向编码
DB03H,9FH,25H,0DH,99H;01234
DB49H,41H,1FH,01H,09H;56789
DB11H,0C1H,63H,85H,61H;ABCDE
DB0FFH;暗
;重算时间
;入口数据:
A=总时间(分)
CALUTIME:
MOVTOTALTIME,A
CLRA
MOV52H,A;秒
MOV53H,A;经过的分钟
RET
;鸣叫一下,时长120ms
PLAY:
SETBP1.6
MOVR0,#12D;
PLAY1:
LCALLDISPLAY
DJNZR0,PLAY1
CLRP1.6
RET
;鸣叫六下,时长240ms*12
ALARM:
SETBP1.6
MOVR1,#11D;
ALARM2:
MOVR0,#12D;
ALARM3:
LCALLDISPLAY
DJNZR0,ALARM3
CPLP1.6
DJNZR1,ALARM2
RET
;;;;;洗涤用子程序
;洗涤时暂停按键
XDPAUSE:
JBP0.0,XDPS01
LCALLDISPLAY
JBP0.0,XDPS01
PUSH52H
PUSH53H
CLR20H.0;不闪烁
MOVA,P1
PUSHACC
MOVP1,#00H
LCALLPLAY
XDPS02:
LCALLDISPLAY
JNBP0.0,XDPS02;等待按键释放
XDPS03:
LCALLDISPLAY
JBP0.0,XDPS03
LCALLDISPLAY
JBP0.0,XDPS03
LCALLPLAY
XDPS04:
LCALLDISPLAY
JNBP0.0,XDPS04;等待按键释放
POPACC
MOVP1,ACC
SETB20H.0
POP53H
POP52H
XDPS01:
RET
;洗涤时延迟0.32s
DELAY320MS:
MOVR2,#14D;
SJMPXDELAY01
;洗涤时延迟0.56s
XDELAY560MS:
MOVR2,#28D
SJMPXDELAY01
;洗涤时延迟1s
XDELAY1S:
MOVR2,#50D
SJMPXDELAY01
;洗涤时延迟1.6s
DELAY1600MS:
MOVR2,#80D
XDELAY01:
LCALLDISPLAY
LCALLXDPAUSE;暂停按键
LCALLIFINWATER;水位开关
DJNZR2,XDELAY01
RET
;洗涤前进水子程序
INWATER:
JNBP0.2,PI1;
SETBP1.2
MOVA,53H;
ADDA,#20D;
MOV59H,A;
PI3:
MOVA,53H;
XRLA,59H;
JNZPI2
LCALLERRORE4
SJMPINWATER
PI2:
JNBP0.2,PI4;
LCALLDISPLAY
LCALLXDPAUSE
SJMPPI3
PI4:
CLRP1.2
PI1:
RET
;洗涤时是否再进水
IFINWATER:
JNBP0.2,IF1;
MOVA,P1;
PUSHACC
MOVP1,#00H;
LCALLINWATER;进水
POPACC
MOVP1,A;
IF1:
RET
;不能进水报警
ERRORE4:
PUSH52H
PUSH53H
CLR20H.0
MOVA,P1;
PUSHACC
MOVP1,#00H;
MOV50H,#0E4H
LCALLALARM
E4PK2:
LCALLDISPLAY
JNBP0.1,E4PK2;
LCALLDISPLAY
JNBP0.1,E4PK2
E4PK3:
LCALLDISPLAY
JBP0.1,E4PK3
LCALLDISPLAY
JBP0.1,E4PK3
SETB20H.0
POPACC
MOVP1,ACC;
POP53H
POP52H
RET
;排水时延迟1s
DELAY1000MS:
MOVR2,#50D;
DLY51:
LCALLDISPLAY
LCALLXDPAUSE;暂停按键
DJNZR2,DLY51;
RET
;排水子程序
OUTWATER:
CLRA
SETBP1.3
JBP0.2,OUTW1
MOVR7,#60D
OUTW2:
LCALLDELAY1000MS
JBP0.2,OUTW4
DJNZR7,OUTW2
LCALLERRORE1
SJMPOUTWATER
OUTW4:
CLRC
MOVA,#60D
SUBBA,R7
OUTW1:
ADDA,#60D
MOVR7,A
OUTW3:
LCALLDELAY1000MS
DJNZR7,OUTW3
RET
;不能排水报警
ERRORE1:
PUSH52H
PUSH53H
CLR20H.0
MOVA,P1;
PUSHACC
MOVP1,#00H;
MOV50H,#0E1H
LCALLALARM
E1PK2:
LCALLDISPLAY
JNBP0.1,E1PK2;
LCALLDISPLAY
JNBP0.1,E1PK2
E1PK3:
LCALLDISPLAY
JBP0.1,E1PK3
LCALLDISPLAY
JBP0.1,E1PK3
SETB20H.0
POPACC
MOVP1,ACC;
POP53H
POP52H
RET
;脱水时暂停按键
TPKEY:
JBP0.0,TPK1;
LCALLDISPLAY
JBP0.0,TPK1;
PUSH52H
PUSH53H
CLR20H.0
LCALLPLAY
MOVA,P1;
PUSHACC
JNBACC.0,TPK6
CLRP1.0
MOVR0,#250;延迟5秒
TPK5:
LCALLDISPLAY
DJNZR0,TPK5
TPK6:
MOVP1,#00H;
TPK2:
LCALLDISPLAY
JNBP0.0,TPK2;
TPK3:
LCALLDISPLAY
JBP0.0,TPK3
LCALLDISPLAY
JBP0.0,TPK3
LCALLPLAY
SETB20H.0
SETBP1.3
MOVR0,#250;延迟5秒
TPK4:
LCALLDISPLAY
DJNZR0,TPK4
POPACC
MOVP1,ACC;
POP53H
POP52H
TPK1:
RET
;脱水时开盖,脱水时安全报警
IFOPEN:
ERRORE2:
JNBP0.1,TTPK1;
LCALLDISPLAY
JNBP0.1,TTPK1;
PUSH52H
PUSH53H
CLR20H.0
MOVA,P1;
PUSHACC
;LCALLALARM
JNBACC.0,TTPK6
CLRP1.0
MOVR0,#250;延迟5秒
TTPK5:
LCALLDISPLAY
DJNZR0,TTPK5
TTPK6:
MOVP1,#00H;
MOV50H,#0E2H
TTPK2:
LCALLDISPLAY
JBP0.1,TTPK2;
TTPK3:
LCALLDISPLAY
JBP0.1,TTPK2
LCALLDISPLAY
;JBP0.1,TTPK3
SETB20H.0
SETBP1.3
MOVR0,#250;延迟5秒
TTPK4:
LCALLDISPLAY
DJNZR0,TPK4
POPACC
MOVP1,ACC;
POP53H
POP52H
TTPK1:
RET
;脱水时延迟4s
DELAY4S:
MOVR2,#200D;
DLY431:
LCALLDISPLAY
LCALLTPKEY;暂停按键
LCALLIFOPEN;安全开关
DJNZR2,DLY431;
RET
;脱水时延迟3s
DELAY3S:
MOVR2,#150D;
DLY321:
LCALLDISPLAY
LCALLTPKEY;暂停按键
LCALLIFOPEN;安全开关
DJNZR2,DLY321;
RET
;主程序开始
;选择程序:
30H,程序开始20H.1=1
MAIN:
MOVSP,#60H;
CLR20H.0
CLR20H.1
MOVA,#00H;
MOVP1,A;
MOV50H,A;
MOV51H,A;
MOV52H,A;
MOV53H,A;
MOV30H,A;
LP1:
;有无按键
LCALLDISPLAY
JBP0.0,LP1;
LCALLDISPLAY;按键去抖动
JBP0.0,LP1;
LP3:
INC30H
MOVA,#0AH;共有九种可选择
XRLA,30H;
JNZLP2
MOV30H,#01H;
LP2:
LCALLPLAY
MOV50H,30H;
LP4:
LCALLDISPLAY
JNBP0.0,LP4;等待按键释放
CLRA
MOV52H,A;
LP5:
LCALLDISPLAY
MOVA,52H;
XRLA,#03H;3秒延迟到否
JZSTART;开始洗衣
JBP0.0,LP5;
SJMPLP3;重选洗衣程序
START:
LCALLALARM
SETB20H.1
CLRA
MOV52H,A;
MOVA,30H;
DECA
MOVB,#03H;
MULAB
MOVDPTR,#PROCTAB;
JMP@A+DPTR
PROCTAB:
LJMPPROC1;洗衣程序1
LJMPPROC2;洗衣程序2
LJMPPROC3;洗衣程序3
LJMPPROC4;洗衣程序4
LJMPPROC5;洗衣程序5
LJMPPROC6;洗衣程序6
LJMPPROC7;洗衣程序7
LJMPPROC8;洗衣程序8
LJMPPROC9;洗衣程序9
PROC1:
MOVA,#59D
LCALLCALUTIME
SETB20H.0
LCALLINWATER;进水
MOVA,#57D
LCALLCALUTIME
;洗涤3分钟
MOVR7,#42D;
XIDI0:
SETBP1.0
LCALLDELAY1600MS
CLRP1.0
LCALLXDELAY560MS
SETBP1.1
LCALLDELAY1600MS
CLRP1.1
LCALLXDELAY560MS
DJNZR7,XIDI0
MOVR6,#01D;共4次*3分钟=12分钟
MOVR7,#30D;停2分钟XIDI01:
LCALLXDELAY1S
DJNZR7,XIDI01
MOVR7,#14D;洗涤1分钟
XIDI03:
SETBP1.0
LCALLDELAY1600MS
CLRP1.0
LCALLXDELAY560MS
SETBP1.1
LCALLDELAY1600MS
CLRP1.1
LCALLXDELAY560MS
DJNZR7,XIDI03
DJNZR6,XIDI02
MOVR7,#30D;停2分钟
XIDI04:
LCALLXDELAY1S
DJNZR7,XIDI04
LJMPPROC3;以下同过程3
PROC2:
;(待完成)
LJMPover
PROC3:
MOVA,#42D
LCALLCALUTIME
SETB20H.0
LCALLINWATER;进水
MOVA,#40D
LCALLCALUTIME
;洗涤15分钟
MOVR7,#8D;XIDI:
SETBP1.0
LCALLDELAY1600MS
CLRP1.0
LCALLXDELAY560MS
SETBP1.1
LCALLDELAY1600MS
CLRP1.1
LCALLXDELAY560MS
DJNZR7,XIDI
;快速洗涤15秒
MOVR7,#11D
QXIDI:
SETBP1.0
LCALLDELAY320MS
CLRP1.0
LCALLDELAY320MS
SETBP1.1
LCALLDELAY320MS
CLRP1.1
LCALLDELAY320MS
DJNZR7,QXIDI
MOVA,#25D
LCALLCALUTIME
;排水
LCALLOUTWATER
MOVA,#23D
LCALLCALUTIME
;第一次脱水
MOVR7,#04D;间隙脱水30秒
TS1:
SETBP1.0
LCALLDELAY4S
CLRP1.0
LCALLDELAY3S
DJNZR7,TS1
SETBP1.0;长脱水90秒
MOVR7,#10D;
TS2:
LCALLDELAY4S
DJNZR7,TS2
CLRP1.0
MOVR7,#250;延迟5秒
TS25:
LCALLDISPLAY
DJNZR7,TS25
CLRP1.3
MOVA,#20D
LCALLCALUTIME
;第一次漂洗
LCALLINWATER
MOVA,#18D
LCALLCALUTIME
;洗涤2分钟
MOVR7,#08D;
XIDI1:
SETBP1.0
LCALLDELAY1600MS
CLRP1.0
LCALLXDELAY560MS
SETBP1.1
LCALLDELAY1600MS
CLRP1.1
LCALLXDELAY560MS
DJNZR7,XIDI1
;快速洗涤15秒
MOVR7,#11D
QXIDI1:
SETBP1.0
LCALLDELAY320MS
CLRP1.0
LCALLDELAY320MS
SETBP1.1
LCALLDELAY320MS
CLRP1.1
LCALLDELAY320MS
DJNZR7,QXIDI1
MOVA,#16D
LCALLCALUTIME
;排水
LCALLOUTWATER
MOVA,#14D
LCALLCALUTIME
;第二次脱水
MOVR7,#04D
TS21:
SETBP1.0
LCALLDELAY4S
CLRP1.0
LCALLDELAY3S
DJNZR7,TS21
SETBP1.0
MOVR7,#10D;TS22:
LCALLDELAY4S
DJNZR7,TS22
CLRP1.0
MOVR7,#250;延迟5秒
TS26:
LCALLDISPLAY
DJNZR7,TS26
CLRP1.3
MOVA,#12D
LCALLCALUTIME
;第二次漂洗
LCALLINWATER
MOVA,#10D
LCALLCALUTIME
;洗涤2分钟
MOVR7,#08D;XIDI2:
SETBP1.0
LCALLDELAY1600MS
CLRP1.0
LCALLXDELAY560MS
SETBP1.1
LCALLDELAY1600MS
CLRP1.1
LCALLXDE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全自动 洗衣机 单片机 课程设计