全自动洗衣机单片机课程设计.docx

上传人:b****8 文档编号:12694770 上传时间:2023-06-07 格式:DOCX 页数:34 大小:249.30KB
下载 相关 举报
全自动洗衣机单片机课程设计.docx_第1页
第1页 / 共34页
全自动洗衣机单片机课程设计.docx_第2页
第2页 / 共34页
全自动洗衣机单片机课程设计.docx_第3页
第3页 / 共34页
全自动洗衣机单片机课程设计.docx_第4页
第4页 / 共34页
全自动洗衣机单片机课程设计.docx_第5页
第5页 / 共34页
全自动洗衣机单片机课程设计.docx_第6页
第6页 / 共34页
全自动洗衣机单片机课程设计.docx_第7页
第7页 / 共34页
全自动洗衣机单片机课程设计.docx_第8页
第8页 / 共34页
全自动洗衣机单片机课程设计.docx_第9页
第9页 / 共34页
全自动洗衣机单片机课程设计.docx_第10页
第10页 / 共34页
全自动洗衣机单片机课程设计.docx_第11页
第11页 / 共34页
全自动洗衣机单片机课程设计.docx_第12页
第12页 / 共34页
全自动洗衣机单片机课程设计.docx_第13页
第13页 / 共34页
全自动洗衣机单片机课程设计.docx_第14页
第14页 / 共34页
全自动洗衣机单片机课程设计.docx_第15页
第15页 / 共34页
全自动洗衣机单片机课程设计.docx_第16页
第16页 / 共34页
全自动洗衣机单片机课程设计.docx_第17页
第17页 / 共34页
全自动洗衣机单片机课程设计.docx_第18页
第18页 / 共34页
全自动洗衣机单片机课程设计.docx_第19页
第19页 / 共34页
全自动洗衣机单片机课程设计.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

全自动洗衣机单片机课程设计.docx

《全自动洗衣机单片机课程设计.docx》由会员分享,可在线阅读,更多相关《全自动洗衣机单片机课程设计.docx(34页珍藏版)》请在冰点文库上搜索。

全自动洗衣机单片机课程设计.docx

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

Documentnumber【980KGB-6898YT-769T8CB-246UT-18GG08】

 

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

 

一、设计目标

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

;显示子程序

;闪烁标志位:

=0不闪烁,=1在1s内亮灭一次

;程序开始标志:

=1开始,=0选择

;显示缓冲:

50H

;经过的时间:

53H,52H,51H=分钟,秒,20ms的次数

;总时间:

TOTALTIME=40H

TOTALTIMEEQU40H

DISPLAY:

PUSHACC

PUSHPSW

SETBRS0

JNB,DISPLAY01

MOVA,50H;高位是否为零

CJNEA,#0AH,DISPLAY05

DISPLAY05:

JNCDISPLAY06

XRLA,#0F0H;高位为零不显示

MOV50H,A

DISPLAY06:

JNB,DISPLAY01;是否需闪烁

MOVA,51H

CJNEA,#25D,DISPLAY02;

DISPLAY02:

JCDISPLAY01

MOV50H,#0FFH;暗显示(不亮)

DISPLAY01:

MOVA,50H;显示低位

ANLA,#0FH;

MOVDPTR,#DISPLAYTAB;

MOVCA,@A+DPTR;

MOVP2,A;

SETB

CLR

LCALLDELAY10MS

MOVA,50H;显示高位

SWAPA

ANLA,#0FH;

MOVDPTR,#DISPLAYTAB;

MOVCA,@A+DPTR;

MOVP2,A;

CLR

SETB

LCALLDELAY10MS

INC51H;累计时间

MOVA,#50D;

XRLA,51H;

JNZDISPLAY03;50次的20ms未到

MOV51H,A;

INC52H;1s

MOVA,#60D;

XRLA,52H;

JNZDISPLAY03

MOV52H,A;

INC53H;1min

DISPLAY03:

JNB,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:

SETB

MOVR0,#12D;

PLAY1:

LCALLDISPLAY

DJNZR0,PLAY1

CLR

RET

;鸣叫六下,时长240ms*12

ALARM:

SETB

MOVR1,#11D;

ALARM2:

MOVR0,#12D;

ALARM3:

LCALLDISPLAY

DJNZR0,ALARM3

CPL

DJNZR1,ALARM2

RET

;;;;;洗涤用子程序

;洗涤时暂停按键

XDPAUSE:

JB,XDPS01

LCALLDISPLAY

JB,XDPS01

PUSH52H

PUSH53H

CLR;不闪烁

MOVA,P1

PUSHACC

MOVP1,#00H

LCALLPLAY

XDPS02:

LCALLDISPLAY

JNB,XDPS02;等待按键释放

XDPS03:

LCALLDISPLAY

JB,XDPS03

LCALLDISPLAY

JB,XDPS03

LCALLPLAY

XDPS04:

LCALLDISPLAY

JNB,XDPS04;等待按键释放

POPACC

MOVP1,ACC

SETB

POP53H

POP52H

XDPS01:

RET

;洗涤时延迟

DELAY320MS:

MOVR2,#14D;

SJMPXDELAY01

;洗涤时延迟

XDELAY560MS:

MOVR2,#28D

SJMPXDELAY01

;洗涤时延迟1s

XDELAY1S:

MOVR2,#50D

SJMPXDELAY01

;洗涤时延迟

DELAY1600MS:

MOVR2,#80D

XDELAY01:

LCALLDISPLAY

LCALLXDPAUSE;暂停按键

LCALLIFINWATER;水位开关

DJNZR2,XDELAY01

RET

;洗涤前进水子程序

INWATER:

JNB,PI1;

SETB

MOVA,53H;

ADDA,#20D;

MOV59H,A;

PI3:

MOVA,53H;

XRLA,59H;

JNZPI2

LCALLERRORE4

SJMPINWATER

PI2:

JNB,PI4;

LCALLDISPLAY

LCALLXDPAUSE

SJMPPI3

PI4:

CLR

PI1:

RET

;洗涤时是否再进水

IFINWATER:

JNB,IF1;

MOVA,P1;

PUSHACC

MOVP1,#00H;

LCALLINWATER;进水

POPACC

MOVP1,A;

IF1:

RET

;不能进水报警

ERRORE4:

PUSH52H

PUSH53H

CLR

MOVA,P1;

PUSHACC

MOVP1,#00H;

MOV50H,#0E4H

LCALLALARM

E4PK2:

LCALLDISPLAY

JNB,E4PK2;

LCALLDISPLAY

JNB,E4PK2

E4PK3:

LCALLDISPLAY

JB,E4PK3

LCALLDISPLAY

JB,E4PK3

SETB

POPACC

MOVP1,ACC;

POP53H

POP52H

RET

;排水时延迟1s

DELAY1000MS:

MOVR2,#50D;

DLY51:

LCALLDISPLAY

LCALLXDPAUSE;暂停按键

DJNZR2,DLY51;

RET

;排水子程序

OUTWATER:

CLRA

SETB

JB,OUTW1

MOVR7,#60D

OUTW2:

LCALLDELAY1000MS

JB,OUTW4

DJNZR7,OUTW2

LCALLERRORE1

SJMPOUTWATER

OUTW4:

CLRC

MOVA,#60D

SUBBA,R7

OUTW1:

ADDA,#60D

MOVR7,A

OUTW3:

LCALLDELAY1000MS

DJNZR7,OUTW3

RET

;不能排水报警

ERRORE1:

PUSH52H

PUSH53H

CLR

MOVA,P1;

PUSHACC

MOVP1,#00H;

MOV50H,#0E1H

LCALLALARM

E1PK2:

LCALLDISPLAY

JNB,E1PK2;

LCALLDISPLAY

JNB,E1PK2

E1PK3:

LCALLDISPLAY

JB,E1PK3

LCALLDISPLAY

JB,E1PK3

SETB

POPACC

MOVP1,ACC;

POP53H

POP52H

RET

;脱水时暂停按键

TPKEY:

JB,TPK1;

LCALLDISPLAY

JB,TPK1;

PUSH52H

PUSH53H

CLR

LCALLPLAY

MOVA,P1;

PUSHACC

JNB,TPK6

CLR

MOVR0,#250;延迟5秒

TPK5:

LCALLDISPLAY

DJNZR0,TPK5

TPK6:

MOVP1,#00H;

TPK2:

LCALLDISPLAY

JNB,TPK2;

TPK3:

LCALLDISPLAY

JB,TPK3

LCALLDISPLAY

JB,TPK3

LCALLPLAY

SETB

SETB

MOVR0,#250;延迟5秒

TPK4:

LCALLDISPLAY

DJNZR0,TPK4

POPACC

MOVP1,ACC;

POP53H

POP52H

TPK1:

RET

;脱水时开盖,脱水时安全报警

IFOPEN:

ERRORE2:

JNB,TTPK1;

LCALLDISPLAY

JNB,TTPK1;

PUSH52H

PUSH53H

CLR

MOVA,P1;

PUSHACC

;LCALLALARM

JNB,TTPK6

CLR

MOVR0,#250;延迟5秒

TTPK5:

LCALLDISPLAY

DJNZR0,TTPK5

TTPK6:

MOVP1,#00H;

MOV50H,#0E2H

TTPK2:

LCALLDISPLAY

JB,TTPK2;

TTPK3:

LCALLDISPLAY

JB,TTPK2

LCALLDISPLAY

;JB,TTPK3

SETB

SETB

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,程序开始=1

MAIN:

MOVSP,#60H;

CLR

CLR

MOVA,#00H;

MOVP1,A;

MOV50H,A;

MOV51H,A;

MOV52H,A;

MOV53H,A;

MOV30H,A;

LP1:

;有无按键

LCALLDISPLAY

JB,LP1;

LCALLDISPLAY;按键去抖动

JB,LP1;

LP3:

INC30H

MOVA,#0AH;共有九种可选择

XRLA,30H;

JNZLP2

MOV30H,#01H;

LP2:

LCALLPLAY

MOV50H,30H;

LP4:

LCALLDISPLAY

JNB,LP4;等待按键释放

CLRA

MOV52H,A;

LP5:

LCALLDISPLAY

MOVA,52H;

XRLA,#03H;3秒延迟到否

JZSTART;开始洗衣

JB,LP5;

SJMPLP3;重选洗衣程序

START:

LCALLALARM

SETB

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

SETB

LCALLINWATER;进水

MOVA,#57D

LCALLCALUTIME

;洗涤3分钟

MOVR7,#42D;

XIDI0:

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

DJNZR7,XIDI0

MOVR6,#01D;共4次*3分钟=12分钟

MOVR7,#30D;停2分钟XIDI01:

LCALLXDELAY1S

DJNZR7,XIDI01

MOVR7,#14D;洗涤1分钟

XIDI03:

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

DJNZR7,XIDI03

DJNZR6,XIDI02

MOVR7,#30D;停2分钟

XIDI04:

LCALLXDELAY1S

DJNZR7,XIDI04

LJMPPROC3;以下同过程3

PROC2:

;(待完成)

LJMPover

PROC3:

MOVA,#42D

LCALLCALUTIME

SETB

LCALLINWATER;进水

MOVA,#40D

LCALLCALUTIME

;洗涤15分钟

MOVR7,#8D;XIDI:

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

DJNZR7,XIDI

;快速洗涤15秒

MOVR7,#11D

QXIDI:

SETB

LCALLDELAY320MS

CLR

LCALLDELAY320MS

SETB

LCALLDELAY320MS

CLR

LCALLDELAY320MS

DJNZR7,QXIDI

MOVA,#25D

LCALLCALUTIME

;排水

LCALLOUTWATER

MOVA,#23D

LCALLCALUTIME

;第一次脱水

MOVR7,#04D;间隙脱水30秒

TS1:

SETB

LCALLDELAY4S

CLR

LCALLDELAY3S

DJNZR7,TS1

SETB;长脱水90秒

MOVR7,#10D;

TS2:

LCALLDELAY4S

DJNZR7,TS2

CLR

MOVR7,#250;延迟5秒

TS25:

LCALLDISPLAY

DJNZR7,TS25

CLR

MOVA,#20D

LCALLCALUTIME

;第一次漂洗

LCALLINWATER

MOVA,#18D

LCALLCALUTIME

;洗涤2分钟

MOVR7,#08D;

XIDI1:

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

DJNZR7,XIDI1

;快速洗涤15秒

MOVR7,#11D

QXIDI1:

SETB

LCALLDELAY320MS

CLR

LCALLDELAY320MS

SETB

LCALLDELAY320MS

CLR

LCALLDELAY320MS

DJNZR7,QXIDI1

MOVA,#16D

LCALLCALUTIME

;排水

LCALLOUTWATER

MOVA,#14D

LCALLCALUTIME

;第二次脱水

MOVR7,#04D

TS21:

SETB

LCALLDELAY4S

CLR

LCALLDELAY3S

DJNZR7,TS21

SETB

MOVR7,#10D;TS22:

LCALLDELAY4S

DJNZR7,TS22

CLR

MOVR7,#250;延迟5秒

TS26:

LCALLDISPLAY

DJNZR7,TS26

CLR

MOVA,#12D

LCALLCALUTIME

;第二次漂洗

LCALLINWATER

MOVA,#10D

LCALLCALUTIME

;洗涤2分钟

MOVR7,#08D;XIDI2:

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

SETB

LCALLDELAY1600MS

CLR

LCALLXDELAY560MS

DJNZR7,XIDI2

;快速洗涤15秒

MOVR7,#11D

QXIDI2:

SETB

LCALLDELAY320MS

CLR

LCALLDELAY320MS

SETB

LCALLDELAY320MS

CLR

LCALLDELAY320MS

DJNZR7,QXIDI2

PROC8:

SETB;过程8需要闪烁

MOVA,#08D

LCALLCALUTIME

;排水

LCALLOUTWATER

MOVA,#06D

LCALLCALUTIME

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2