收藏 分享(赏)

基于单片机的全自动洗衣机控制系统.doc

上传人:hwpkd79526 文档编号:9599988 上传时间:2019-08-17 格式:DOC 页数:36 大小:552.50KB
下载 相关 举报
基于单片机的全自动洗衣机控制系统.doc_第1页
第1页 / 共36页
基于单片机的全自动洗衣机控制系统.doc_第2页
第2页 / 共36页
基于单片机的全自动洗衣机控制系统.doc_第3页
第3页 / 共36页
基于单片机的全自动洗衣机控制系统.doc_第4页
第4页 / 共36页
基于单片机的全自动洗衣机控制系统.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、1基于单片机的洗衣机控制系统设计罗远强 指导老师:吴宇2摘要单片机是计算机家庭的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛应用。本洗衣机控制系统,采用目前常用的 89C51 单片机,用汇编语言的编程方法,完成对洗衣机洗衣全过程的自动控制,并采用LED 数码显示洗衣过程代码和洗衣剩余时间,洗衣完成后能自动报警。使全自动洗衣机的使用更加简单、直观和方便。本设计取材容易,结构简洁,易于制作,具有一定的实用价值。关键字:单片机、汇编语言、动态扫描3目录第一章 绪论1.1 设计目标1.2 设计意义第二章 硬件和软件的设计方

2、法2.1 洗衣机的工作过程2.2 全自动洗衣机控制系统硬件的选择2.3 单片机编程软件的选用第二章 全自动洗衣机控制系统的设计原理3.1 控制系统方框图3.2 控制板电路原理(附整机原理图 )3.3 控制功能及过程第四章 洗衣机控制系统的软件系统4.1 洗衣机控制系统软件的编程思路4.2 主程序及子程序流程图4.2 洗衣机控制系统的源程序参考文献附录 AT89C51 技术手册MCS-51 系列单片机指令系统表4第一章: 绪论在生产和生活的各个领域中,凡是有自动控制要求的地方都会有单片机的出现。单片机的应用有利于产品的小型化、多功能化和智能化,而且抗干扰能力强,可在各种恶劣的环境下可靠地工作,成

3、本也较低。所以单片机的应用已极为广泛,它在工业自动化、工业测控、智能仪器仪表、家用电器、信息与通信、军事装备等方面都在发挥着“微电脑控制”的作用。11 设计目标用 51 系列单片机 89C51 控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在 LED 显示屏上显示过程代码。在运行的时候能显示完成整个过程的剩余时间。为了节省单片机的 IO 端口,以及使硬件连接能尽可能的简单,在 LED 显示过程中我们使用了动态扫描的方法。软件编程使用汇编语言,烧录好单片机后能实现上电运行。还应该具有相

4、当的稳定性,以保证全自动洗衣机的正常工作。以此体会单片机系统的设计、开发过程。12 设计意义 进一步了解 8051 单片机。 熟悉单片机控制系统开发流程。 深入学习计算机汇编语言的编程方法。 对计算机的工作原理有进一步的认识。 增强个人动手能力。5第二章 硬件和软件的设计方法在进行系统设计前,我们必须知道所设计的项目要完成什么任务,达到什么样的要求,并根据所完成的任务和要求来选择相应的硬件设备和软件编程方法。在设计前我们先了解一下洗衣机的工作过程和单片机的工作原理,确立算法模型,再选择相应的软件编程语言2.1 洗衣机的工作过程目前常用的波轮洗衣机分为全自动和双缸洗衣机,它们都是依靠电机拖动波轮

5、带动洗衣筒中的水来回旋转,而使衣物洗干净的。在双缸洗衣机中,电机的正转和反转及洗涤时间控制是由机械定时器开关来完成的,而全自动洗衣机是靠电路来完成,对洗涤来说,效果相同;所不同的是双缸洗衣机在完成洗涤后,需要打开排水开关排水,拿出衣物放到脱水桶中脱水,脱水完成后又要将衣物放回洗衣机桶中洗涤,一次洗衣要进行几次洗涤,就要完成几次这样相同的动作,在完成洗衣的全过程中必须要有人工干预,很不方便,而全自动洗衣机中,洗衣过程中的进水、洗涤、排水、脱水、再进水、洗涤是自动进行的,只在洗衣前需人工放进衣物,洗衣完成后自动报警,再由人工取出衣物,中间过程不需要人工干预,使用要比双缸洗衣机简便的多。完成这样的顺

6、序控制功能,也可以由数字逻辑电路来进行,但实现这样的控制比较困难,电路结构也很复杂,成本高,控制系统不能智能化,如不容易实现单独脱水、单独洗涤这样的功能选择。而使用单片机,采用软件编程的方法可以轻易实现这样的控制,而且电路简单,成本低,洗衣机能够智能化,容易操作。综合考虑,我们选择了价格低廉,容易买到,比较可靠的 89C51 单片机来设计全自动洗衣机的控制系统。2.2 全自动洗衣机控制系统硬件的选择单片机系统的是一个软硬件结合的系统,不能孤立地只谈一个方向,脱离了硬件来讲软件编程是毫无意义的,同样没有软件,单片机的硬件也无法正常工作。(1)单片机 89C51(2) AT89C51 是一个低电压

7、,高性能 CMOS 8 位单片机,片内含 4k bytes 的可反复擦写的 Flash 只读程序存储器和 128 bytes 的随机存取数据存储器(RAM) ,器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用8 位中央处理器和 Flash 存储单元,内置功能强大的微型计算机的 AT89C51 提供了高性价比的解决方案。AT89C51 是一个低功耗高性能单片机,40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外中断口,2 个 16 位可编程定时计数器,2 个全双工串行通信口,AT89C51 可以按照常规方法进行编程,也可

8、以在线编程。其将通用的微处理器和 Flash存储器结合在一起,特别是可反复擦写的 Flash 存储器可有效地降低开发成本。 主要功能特性: 6 兼容 MCS51 指令系统 4k 可反复擦写(1000 次)Flash ROM 32 个双向 I/O 口 可编程 UARL 通道 两个 16 位可编程定时 /计数器 全静态操作 0-24MHz 1 个串行中断 128x8bit 内部 RAM 两个外部中断源 共 6 个中断源 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能(2)可控硅洗衣机的几个关键动作,如进水、排水、电机正转、电机反转,是通过单片机的IO 端口,输出控制信号,控制可控硅的通断来实现的。在

9、这里我们用了 4 个双向可控硅担任控制系统的执行部件。(3)LED 显示器及各开关为了显示所选功能及剩余时间,完成良好的人机交互,我们选用了共阳的 8 段 LED显示器做显示输出。为了节省端口,采用了扫描的显示方法(下章具体介绍),采用了三个开关,分别做为安全开关、水位开关(进水是否达到要求的传感器)和控制开关(选择洗衣程序和启动暂停等动作的输入按钮)2.3 单片机编程软件的选用单片机 89C51 可以用汇编语言和 C 语言来进行编程,在选用编程语言前,我们先来比较两者之间的特点。 汇编语言:汇编语言是用符号(助记符)表示的机器操作指令,它是对机器语言的改进。但是机器语言还是面向机器的低级语言

10、,它仍要求开发人员必须精通所用的单片机硬件系统和指令系统不便于记忆和使用。但是它相比机器语言提供了高一层次的机器操作抽象,更加接近人类语言,这让它成为单片机系统开发中最常用的开发语言之一。 C 语言:C 语言正在成为单片机应用系统开发的主流,它既具有高级语言的简洁、便于理解记忆、通用性好、表达能力强等特点,又具有低级语言的对计算机硬件进行操作功能。C 语言不是面面俱到的语言,也不是专为某一特殊应用领域设计的语言。它本身不能执行操作(如输入/输出) ,这些操作都由标准库提供支持。正是因为这些操作都与语言无关,所以 C 语言可以适用于任何平台。Cx51 是专为 8051 设7计,完全符合 ANSI

11、 C 标准 11。可以针对 8051 生成紧凑、高效的代码。在洗衣机的控制系统中,由于是面向控制的设计,使用汇编语言方便一些,占用单片机内的 ROM 空间也较小,并且在汇编语言中,我们可以精确地知道每条指令所占用的时钟周期,能够精确定时,所以在本设计中我们采用了汇编语言编程的方法,源程序编好后,由编程软件转换为机器代码,再由编程器输入到单片机的 RAM 中去。8第三章 全自动洗衣机控制系统的设计原理3.1 控制系统图洗衣机要实现衣服的洗涤、漂洗和脱水,离不开进水、电机正转、电机反转和排水这四个动作。上述四个动作,是通过单片机的 P0 端口,做输出端口,去控制双向可控硅通断来实现的,如下图所示。

12、同时加上输入开关的按钮、数码管显示器、蜂鸣按警器和欠压检测保护电路等,就可以形成完整的单片机控制系统。通过软件编程达到对整个洗衣过程进行控制、检测以及与用户交互。水位开关安全开关程序选择/启动/暂停 可控硅 X 4 个220V洗衣机单片机控制系统方框图3.2 控制板电路原理(附控制板整机原理图)参阅洗衣机单片机控制系统原理图,控制板电路使用 ATMEL 公司的 AT89C51 芯片,时钟电路采用 6MHZ 晶振。组成的输入信号有:安全开关(即洗衣机桶盖的打开与闭合) 、水位压力开关(即水位的高低) 、启动、暂停按钮,低电压检测信号; 输出控制信号包括:两个 8 位 LED 数码动态显示(剩余时

13、间)和蜂鸣器鸣叫、进水阀、正反转洗涤电机、排水阀的控制信号。交流 220V 电压经变压、整流、滤波后,其中一路接至低电压保护电路,另一路经过 CW7805 进行稳压,提供稳定的5V 电压供应给控制板各元件。当低电压保护电路检测到低电压时,将向单片机的 INT0 引脚产生中断,单片机将响应该中断;关闭各输出端口,以保护执行部件如电机等设备不因欠压而损坏。单片机89C51 进水电磁阀排水电磁阀电机正转电机反转显示屏蜂鸣器9103.3 控制功能及过程洗衣机动作代码表动作名称 进水 洗涤 排水 脱水动作代码 A B C D本次动作预设时间 2 分钟 1596 或 2 分钟 2 分秒 30秒(2D+T

14、秒)53或是分钟 (包括 30 秒间隙脱水)洗衣机功能选择代码表过程代码 过程名称 完成整个过程所需时间(分) 所需动作代码及时间01 浸泡洗涤 59 A(B1 停 2)*5B15CD2AB2CD2AB2CD502 强力洗涤 42 AB15CD2AB2CD2AB2CD203 标准洗涤 42 AB15CD2AB2CD2AB2CD504 轻柔洗涤 34 AB9CD2AB2CD2AB2CD305 快速洗涤 24 AB5CD2AB2CD306 单独洗涤 17 AB1507 漂洗脱水 25 CD2AB2CD2AB2CD508 单独脱水 8 CD509 留水停机 34 AB15CD2AB2CD2AB2(大

15、写字母后的数字为动作所需的时间)洗衣机的三大功能是实现衣服的洗涤、漂洗和脱水,加上进水,我们把这四个洗衣机动作编排成 4 个代码,而这四个动作的组合可形成 9 个过程(或更多) ,见动作代码表。选择哪一个过程来执行洗衣程序是在进入洗衣前由用户通过开始、暂停按钮来选择的,如:单独进行脱水可选择过程 08。打开电源开关,洗衣机将进入洗衣过程选择状态,此时数码管显示 00,用户按启动、暂停键可以显示不同的过程代码(在 0109 之间循环显示以指示选择不同的洗衣过程) 。3 秒内若无按键动作,蜂鸣器开始鸣叫 6 下(时间长度共 3 秒)以提醒用户;开始进入相应过程的洗衣程序,此后启动暂停按钮只起暂停或

16、继续洗衣程序执行作用,数码管显示完成本次洗衣的剩余时间。三大功能中的漂洗实际上是由洗涤和脱水功能组成的,如一次标准洗涤过程(过程代码)中,漂洗功能包括了时间均为 2 分钟的脱水、洗涤、脱水、洗涤。因此,在编写控制程序实现三大功能时只需编写洗涤和脱水功能的代码,然后作为子程序调用即可。完成一次洗衣过程所需的动作有:(1) 进水动作 进行洗涤时,盛水桶内的水量必须到水位设定要求。而水位的高低可以通过调节水位开关来实现。洗衣机的进水和水位判断是由水位开关和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单片机程序将控制进水阀闭合,开始注水;当桶内的水位达到设定水位时。水位开关受压闭合;

17、程序就可进入下一步(洗涤)处理。若打开进水阀后 20 分钟内不能进水,则将出错报警,用户只能关闭洗衣机电源11进行相关检查后方能重新开机。(2) 排水动作 进入脱水动作前应先排水。为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害,洗衣机能够根据实际水量(由水位开关决定)对排水时间进行动态控制。设排水开始至水位压力开关断开时所需的时间为 D,则总的排水时间为2DT( T 取 60 秒,总的排水时间不应大于 190 秒) 。因此,在开始排水时,控制程序将同时启动计时器,在 D 秒后若收到水位压力开关断开的信号, ,则再排水 DT 时间后,就可以结束排水进入脱水动作。若 D 大于 6

18、5 秒,说明排水系统有故障;洗衣机将停止动作并蜂鸣报警,提醒用户排除故障(安全开关打开又闭合认为是一次故障詯处理)后再继续。需要注意的是:排水结束后排水开关还是打开的。(3)洗涤动作 洗涤动作指的是电机周期性的“正转停止反转停止 ”。不同的洗衣过程,控制电机执行“正转停止反转停止”的时间是不同的,标准洗涤过程可取:正转 1.6 秒0.56 秒反转 1.6 秒停止 0.56 秒。对于轻柔洗涤和强力洗涤过程,这个时间要作相应调整。洗涤过程中若遇水位开关断开或用户要求补水(重新选择水位) ,则要停止洗涤动作并打开进水阀进水直至水位满足要求再继续。此外,洗涤动作的最后 15 秒,电机还要进行快速的停止

19、正转停止反转停止 处理,以避衣服拧成一团。程序流程见洗涤子程序(4)脱水动作 排水结束后进入脱水动作,脱水是通过电机的正转来实现的,同时要求排水阀一直打开,也正是由于排水阀的打开,才使脱水时的电机正转速度不同于洗涤时的电机正转速度。 (通过机械装置实现) 。脱水分间隙脱水和长脱水,间隙脱水时间为 30秒,电机按“正转停止”的周期循环动作,时间为“正转 4 秒停止 3 秒” 。长脱水时电机将一直调整正转,所需时间由用户选择的过程决定,一般有 3 分钟和 5 分钟的长脱水时间。进入脱水前若洗衣机桶盖是打开的,则进行鸣叫、显示告警,直至用户合上桶盖后,才继续进行脱水。脱水结束后,再经过 30 秒延迟

20、后关闭排水阀。脱水时若遇暂停,则重启时需延时 5 秒后再进行电机动作,目的是用于同步机械动作的滞后。程序流程见脱水子程序流程图。(5)脱水不平衡修正 进行脱水处理,电机要进行高速单向正转,若此时衣物偏向于一边,脱水会因为离心力作用,在很短时间内碰撞安全形状装置,使安全形状产生瞬时的关闭和断开,此时要进行脱水不平衡修正。进行脱水不平衡修正,洗衣机将停止脱水,并自动插入“进水洗涤分钟排水”动作。通过这一插入动作,衣服将调整到洗衣桶中心位置。在同一脱水过程中如果连续修正 3 次仍达不到脱水平衡,则进行报警,待用户人工打开洗衣机将衣物放置均匀再盖上桶盖,方可继续进行脱水(即安全开关打开安全开关闭合动作

21、) 。在漂洗功能的第一次脱水动作时不进行脱水不平衡修正,在第二次脱水动作时则要进行脱水不平衡修正。(6)LED 的显示89C51 对可以分为静态和动态两种。静态显示的特点是各 LED 管能稳定地同时显示各自的字形;动态显示是指各 LED 轮流地一遍一遍显示各自字符,人们由于视觉器官的惰性,从而版的是各 LED 似乎在同时显示不同字形。为了减少硬件开销,提高系统可靠性,并降低成本,我们在这里采用动态扫描的方法进行代码的显示。在这里由之 P2 口推动 LED 的 a、b、c、d、e、f 、g、SP ,称为字形口,由 P3.0、P3.1 选择所显示的字位,称为字位口,12动态显示采用软件法把欲显示的

22、代码符号转换为相应的字形码,故它通常需要在RAM 区建立一个显示缓冲区。显示缓冲区内包含的存储单元个数常和系统中 LED 显示器的个数相等。显示缓冲区的起始地址很重要,它决定了显示缓冲区在 RAM 中的位置。显示缓冲区中的每个存储单元用于存放相应 LED 显示管欲显示字符的字形码地址偏移量,故 CPU 可以根据这个地址偏移量通过查字形码表的方法找出所需显示字符的字形码,以便送到字形口显示。 (字形码表见下表)在这里我选用了 2 位共阳 LED 数码显示器LED 数码显示器的字形(段)码表显示字形 字形码(共阳极) 字形码(共阴极)0 C0H 3FH1 F9H 06H2 A4H 5BH3 B0H

23、 4FH4 99H 66H5 92H 6DH6 82H 7DH7 F8H 07H8 80H 7FH9 90H 6FHA 88H 77HB 83H 7CHC C6H 39HD A1H 5EHE 86H 79HF 8EH 71H熄灭 FFH 00H(7)其它动作 为了有更好的人机交互,进行洗衣时数码管要显示剩余时间(单位为分钟) ,并且以 1 秒的频率不停地闪烁。此时如果按下暂停按钮,则时间显示不闪烁。随着洗衣过程的进行,显示时间将不断减少直至洗衣程序完成后显示“0” 。剩余时间的获得可以通过如下方法:根据用户所选的过程代码可以获得包含这一过程的所有动作(9 个过程所包含的动作需要的时间见功能选择

24、代码表) ,由于相应的动作有预设的时间(动作对应的代码和预设时间见表动作代码表) ,因此,根据本次过程余下的动作可以通过查表的方式获取剩余时间。洗衣过程中的各种出错报警的显示代码见出错代码表,在显示的同时蜂鸣器将鸣叫 6下用以提醒。洗衣过程结束后,蜂鸣器将鸣叫 6 下用以提醒用户可以取走衣服并关掉洗衣机的电源。故障名称 显示值不能排水 E1不能进入脱水 E2不能平衡修正 E3不能进水 E413实现一次洗衣过程的控制流程图以标准洗涤(代码 03)为例,洗衣机是按以下动作进行的:开始进水洗涤排水脱水进水洗涤排水脱水进水洗涤排水脱水结束。在此过程中,三大功能中的洗涤功能是指:进水洗涤动作;漂洗功能是

25、指排水脱水进水洗涤排水脱水进水洗涤(两次洗涤和两次时间均为 2 分钟的脱水)动作;脱水功能是指:排水脱水动作。 14第四章 洗衣机控制系统的软件系统4.1 洗衣机控制系统软件的编程思路汇编语言程序设计并不很难,但要编出质量高,可读性好且执行速度快的优秀程序并不容易,欲达此目的,除应娴熟掌握所依托的指令系统外,还应掌握程序设计的基本方法和技巧,熟悉汇编语言源程序的分类方法和特点。洗衣机的一次洗衣过程控制过程比较简单,主要为顺序控制,如先进水、洗涤(电机正转反转)、再排水脱水,难点在于过程选择,如不同的衣物所用的洗涤、漂洗、电机正转反转时间不同,如果为每个过程单独编一套指令,则指令系统变得很庞大,

26、效率低,为此,我们把脱水、洗涤、进水单独编为一个子程序,由主程序根据过程选择,不断调用,由些减少源程序的长度,不同的洗衣过程,三大动作的时间不同,这可以通过建立数据表格,通过查表的方式获得每个洗衣过程所需时间。此外,还需编出显示子程序,延时子程序供主程序不断调用。4.2 主程序及子程序流程图(见下图)15洗衣机控制系统主程序流程图开始用户选择洗衣过程是否洗涤结束进水洗涤排水 2D7 秒进水是否漂洗是否脱水置注水漂洗标志置最后脱水标志间歇脱水最后长脱水是否为最后脱水结束鸣响中间长脱水洗涤是否为注水漂洗置注水漂洗标志16洗涤动作子程序流程图是否否是否是否是是否开始根据过程代码获取电机正转-停止-反

27、转- 停止的时间周期电机动作 进水处理是否进水快速洗标志?时间到否?是否暂停 重启否设定快速洗时间和电机正转停止反转停止周期清标志暂停处理结束17脱水子程序流程图是否 否是是否否是是否否是是延时 5秒电机动作暂停处理安全开关是否断开脱水时间到否安全开关断开暂停不平衡修正报警重置修正次数是否暂停是否暂停开始安全开关是否断开延时 30 秒,关闭排水阀是否瞬间断开不平衡修正3 次脱水不平衡修正安全开关是否闭合显示鸣叫报警结束184.3 全自动洗衣机控制系统汇编语言源程序ORG 0000HLJMP MAINORG 0030H;延迟 10ms 程序;使用 R0, R1DELAY10MS:MOV R0,

28、#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 40HDISPLAY:PUSH ACCPUSH PSWSETB RS0JNB 20H.1, DISPLAY01MOV A, 50H ;高位是否为零CJNE

29、 A, #0AH, DISPLAY05DISPLAY05: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 DEL

30、AY10MSMOV 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 DISPLAY0319MOV 52H, A ;INC 53H ;1minDISPLAY03:JNB 20H.0, DISPLAY

31、04;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 ;暗;重算时间;入口数据:总时间(分)CALUTIME:MOV TOTAL

32、TIME, ACLR AMOV 52H, A ;秒MOV 53H, A ;经过的分钟RET;鸣叫一下, 时长 120msPLAY:SETB P1.6MOV R0, #12D;PLAY1:LCALL DISPLAYDJNZ R0, PLAY1CLR P1.6RET;鸣叫六下, 时长 240ms*12ALARM:SETB P1.6MOV R1, #11D;ALARM2:MOV R0, #12D;ALARM3:LCALL DISPLAYDJNZ R0, ALARM3CPL P1.6DJNZ R1, ALARM2RET;洗涤用子程序;洗涤时暂停按键XDPAUSE:JB P0.0, XDPS01LCAL

33、L DISPLAYJB P0.0, XDPS01PUSH 52HPUSH 53HCLR 20H.0 ;不闪烁MOV A, P1PUSH ACCMOV P1, #00HLCALL PLAYXDPS02:LCALL DISPLAY20JNB 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 52HXD

34、PS01: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;SET

35、B 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 ACC21MOV P1, A;IF1:RET;不能进水报警ERRORE4:PUSH 52HP

36、USH 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

37、XDPAUSE ;暂停按键DJNZ R2, DLY51;RET;排水子程序OUTWATER:CLR ASETB P1.3JB P0.2, OUTW1MOV R7, #60DOUTW2:LCALL DELAY1000MSJB P0.2, OUTW4DJNZ R7, OUTW2LCALL ERRORE1SJMP OUTWATEROUTW4:CLR CMOV A, #60DSUBB A, R7OUTW1:ADD A, #60DMOV R7, AOUTW3:LCALL DELAY1000MSDJNZ R7, OUTW3RET;不能排水报警ERRORE1:PUSH 52HPUSH 53HCLR 20H.

38、0MOV A, P1;22PUSH ACCMOV P1, #00H;MOV 50H, #0E1HLCALL ALARME1PK2:LCALL DISPLAYJNB P0.1, E1PK2;LCALL DISPLAYJNB P0.1, E1PK2E1PK3: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 53HC

39、LR 20H.0LCALL PLAYMOV A, P1;PUSH ACCJNB ACC.0, TPK6CLR P1.0MOV R0, #250 ;延迟秒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 ;延迟秒TPK4:LCALL DISPLAYDJNZ R0, TPK4POP ACCM

40、OV P1, ACC;POP 53HPOP 52HTPK1:RET;脱水时开盖, 脱水时安全报警IFOPEN:ERRORE2:JNB P0.1, TTPK1;LCALL DISPLAYJNB P0.1, TTPK1;PUSH 52H23PUSH 53HCLR 20H.0MOV A, P1;PUSH ACC; LCALL ALARMJNB ACC.0, TTPK6CLR P1.0MOV R0, #250 ;延迟秒TTPK5:LCALL DISPLAYDJNZ R0, TTPK5TTPK6:MOV P1, #00H;MOV 50H, #0E2HTTPK2:LCALL DISPLAYJB P0.1,

41、 TTPK2;TTPK3:LCALL DISPLAYJB P0.1, TTPK2LCALL DISPLAY; JB P0.1, TTPK3SETB 20H.0SETB P1.3MOV R0, #250 ;延迟秒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

42、:MOV R2, #150D;DLY321:LCALL DISPLAYLCALL TPKEY ;暂停按键LCALL IFOPEN ;安全开关DJNZ R2, DLY321;RET;主程序开始;选择程序:30H, 程序开始 20H.1=1MAIN: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;24MOV 30H, A;LP1: ;有无按键LCALL DISPLAYJB P0.0, LP1;LCALL DISPLAY ;按键去抖动JB P0.0, LP

43、1;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

44、 B, #03H;MUL ABMOV DPTR, #PROCTAB;JMP A+DPTRPROCTAB:LJMP PROC1 ;洗衣程序LJMP PROC2 ;洗衣程序LJMP PROC3 ;洗衣程序LJMP PROC4 ;洗衣程序LJMP PROC5 ;洗衣程序LJMP PROC6 ;洗衣程序LJMP PROC7 ;洗衣程序LJMP PROC8 ;洗衣程序LJMP PROC9 ;洗衣程序PROC1:MOV A, #59DLCALL CALUTIMESETB 20H.0LCALL INWATER ;进水MOV A, #57DLCALL CALUTIME;洗涤 3 分钟MOV R7, #42D;

45、XIDI0:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI025MOV R6, #01D ;共 4 次*3 分钟=12 分钟?4XIDI02:MOV R7, #30D ;停 2 分钟?120XIDI01:LCALL XDELAY1SDJNZ R7, XIDI01MOV R7, #14D ;洗涤 1 分钟XIDI03:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560

46、MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI03DJNZ R6, XIDI02MOV R7, #30D ;停 2 分钟?120XIDI04:LCALL XDELAY1SDJNZ R7, XIDI04LJMP PROC3 ;以下同过程PROC2:;(待完成)LJMP over;PROC3:MOV A, #42DLCALL CALUTIMESETB 20H.0LCALL INWATER ;进水MOV A, #40DLCALL CALUTIME;洗涤 15 分钟MOV R7, #8D;?208XIDI:SETB

47、P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI;快速洗涤 15 秒MOV R7, #11DQXIDI: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 DELAY4S26CLR P1.0LCALL DELAY3SDJNZ R7, TS1SETB P1.0 ;长脱水秒MOV R7, #10D ;?

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报