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

  • 格式: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;