毕业设计(论文)-基于单片机的全自动洗衣机控制系统.doc_第1页
毕业设计(论文)-基于单片机的全自动洗衣机控制系统.doc_第2页
毕业设计(论文)-基于单片机的全自动洗衣机控制系统.doc_第3页
毕业设计(论文)-基于单片机的全自动洗衣机控制系统.doc_第4页
毕业设计(论文)-基于单片机的全自动洗衣机控制系统.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

36基于单片机的洗衣机控制系统设计摘要单片机是计算机家庭的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛应用。 本洗衣机控制系统,采用目前常用的89C51单片机,用汇编语言的编程方法,完成对洗衣机洗衣全过程的自动控制,并采用LED数码显示洗衣过程代码和洗衣剩余时间,洗衣完成后能自动报警。使全自动洗衣机的使用更加简单、直观和方便。本设计取材容易,结构简洁,易于制作,具有一定的实用价值。关键字:单片机、汇编语言、动态扫描目录第一章 绪论1.1 设计目标 1.2 设计意义第二章 硬件和软件的设计方法 2.1 洗衣机的工作过程 2.2 全自动洗衣机控制系统硬件的选择 2.3 单片机编程软件的选用第二章 全自动洗衣机控制系统的设计原理 3.1 控制系统方框图3.2 控制板电路原理(附整机原理图)3.3 控制功能及过程 第四章 洗衣机控制系统的软件系统4.1 洗衣机控制系统软件的编程思路4.2 主程序及子程序流程图4.2 洗衣机控制系统的源程序参考文献附录 AT89C51技术手册 MCS-51系列单片机指令系统表第一章: 绪论在生产和生活的各个领域中,凡是有自动控制要求的地方都会有单片机的出现。单片机的应用有利于产品的小型化、多功能化和智能化,而且抗干扰能力强,可在各种恶劣的环境下可靠地工作,成本也较低。所以单片机的应用已极为广泛,它在工业自动化、工业测控、智能仪器仪表、家用电器、信息与通信、军事装备等方面都在发挥着“微电脑控制”的作用。11 设计目标用51系列单片机89C51控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在LED显示屏上显示过程代码。在运行的时候能显示完成整个过程的剩余时间。为了节省单片机的IO端口,以及使硬件连接能尽可能的简单,在LED显示过程中我们使用了动态扫描的方法。软件编程使用汇编语言,烧录好单片机后能实现上电运行。还应该具有相当的稳定性,以保证全自动洗衣机的正常工作。以此体会单片机系统的设计、开发过程。12 设计意义l l 进一步了解8051单片机。l l 熟悉单片机控制系统开发流程。l l 深入学习计算机汇编语言的编程方法。l l 对计算机的工作原理有进一步的认识。l l 增强个人动手能力。第二章 硬件和软件的设计方法在进行系统设计前,我们必须知道所设计的项目要完成什么任务,达到什么样的要求,并根据所完成的任务和要求来选择相应的硬件设备和软件编程方法。在设计前我们先了解一下洗衣机的工作过程和单片机的工作原理,确立算法模型,再选择相应的软件编程语言2.1洗衣机的工作过程目前常用的波轮洗衣机分为全自动和双缸洗衣机,它们都是依靠电机拖动波轮带动洗衣筒中的水来回旋转,而使衣物洗干净的。在双缸洗衣机中,电机的正转和反转及洗涤时间控制是由机械定时器开关来完成的,而全自动洗衣机是靠电路来完成,对洗涤来说,效果相同;所不同的是双缸洗衣机在完成洗涤后,需要打开排水开关排水,拿出衣物放到脱水桶中脱水,脱水完成后又要将衣物放回洗衣机桶中洗涤,一次洗衣要进行几次洗涤,就要完成几次这样相同的动作,在完成洗衣的全过程中必须要有人工干预,很不方便,而全自动洗衣机中,洗衣过程中的进水、洗涤、排水、脱水、再进水、洗涤是自动进行的,只在洗衣前需人工放进衣物,洗衣完成后自动报警,再由人工取出衣物,中间过程不需要人工干预,使用要比双缸洗衣机简便的多。完成这样的顺序控制功能,也可以由数字逻辑电路来进行,但实现这样的控制比较困难,电路结构也很复杂,成本高,控制系统不能智能化,如不容易实现单独脱水、单独洗涤这样的功能选择。而使用单片机,采用软件编程的方法可以轻易实现这样的控制,而且电路简单,成本低,洗衣机能够智能化,容易操作。综合考虑,我们选择了价格低廉,容易买到,比较可靠的89C51单片机来设计全自动洗衣机的控制系统。2.2 全自动洗衣机控制系统硬件的选择单片机系统的是一个软硬件结合的系统,不能孤立地只谈一个方向,脱离了硬件来讲软件编程是毫无意义的,同样没有软件,单片机的硬件也无法正常工作。(1) 单片机89C51(2) AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 主要功能特性: l l 兼容MCS51指令系统 4k可反复擦写(1000次)Flash ROM l l 32个双向I/O口 可编程UARL通道 l l 两个16位可编程定时/计数器 全静态操作0-24MHz l l 1个串行中断 128x8bit内部RAM l l 两个外部中断源 共6个中断源 l l 低功耗空闲和掉电模式 l l 软件设置睡眠和唤醒功能(2)可控硅 洗衣机的几个关键动作,如进水、排水、电机正转、电机反转,是通过单片机的IO端口,输出控制信号,控制可控硅的通断来实现的。在这里我们用了4个双向可控硅担任控制系统的执行部件。 (3)LED显示器及各开关 为了显示所选功能及剩余时间,完成良好的人机交互,我们选用了共阳的8段LED显示器做显示输出。为了节省端口,采用了扫描的显示方法(下章具体介绍),采用了三个开关,分别做为安全开关、水位开关(进水是否达到要求的传感器)和控制开关(选择洗衣程序和启动暂停等动作的输入按钮)2.3单片机编程软件的选用 单片机89C51可以用汇编语言和C语言来进行编程,在选用编程语言前,我们先来比较两者之间的特点。l l 汇编语言:汇编语言是用符号(助记符)表示的机器操作指令,它是对机器语言的改进。但是机器语言还是面向机器的低级语言,它仍要求开发人员必须精通所用的单片机硬件系统和指令系统不便于记忆和使用。但是它相比机器语言提供了高一层次的机器操作抽象,更加接近人类语言,这让它成为单片机系统开发中最常用的开发语言之一。l l C语言:C语言正在成为单片机应用系统开发的主流,它既具有高级语言的简洁、便于理解记忆、通用性好、表达能力强等特点,又具有低级语言的对计算机硬件进行操作功能。C语言不是面面俱到的语言,也不是专为某一特殊应用领域设计的语言。它本身不能执行操作(如输入/输出),这些操作都由标准库提供支持。正是因为这些操作都与语言无关,所以C语言可以适用于任何平台。Cx51是专为8051设计,完全符合ANSI C标准1。可以针对8051生成紧凑、高效的代码。 在洗衣机的控制系统中,由于是面向控制的设计,使用汇编语言方便一些,占用单片机内的ROM空间也较小,并且在汇编语言中,我们可以精确地知道每条指令所占用的时钟周期,能够精确定时,所以在本设计中我们采用了汇编语言编程的方法,源程序编好后,由编程软件转换为机器代码,再由编程器输入到单片机的RAM中去。第三章 全自动洗衣机控制系统的设计原理3.1 控制系统图洗衣机要实现衣服的洗涤、漂洗和脱水,离不开进水、电机正转、电机反转和排水这四个动作。上述四个动作,是通过单片机的P0端口,做输出端口,去控制双向可控硅通断来实现的,如下图所示。同时加上输入开关的按钮、数码管显示器、蜂鸣按警器和欠压检测保护电路等,就可以形成完整的单片机控制系统。通过软件编程达到对整个洗衣过程进行控制、检测以及与用户交互。单片机89C51进水电磁阀排水电磁阀电机正转电机反转显示屏蜂鸣器 水位开关 安全开关 程序选择/启动/暂停 可控硅X 4个220V 洗衣机单片机控制系统方框图3.2 控制板电路原理(附控制板整机原理图)参阅洗衣机单片机控制系统原理图,控制板电路使用ATMEL公司的AT89C51芯片,时钟电路采用6MHZ晶振。组成的输入信号有:安全开关(即洗衣机桶盖的打开与闭合)、水位压力开关(即水位的高低)、启动、暂停按钮,低电压检测信号; 输出控制信号包括:两个8位LED数码动态显示(剩余时间)和蜂鸣器鸣叫、进水阀、正反转洗涤电机、排水阀的控制信号。交流220V电压经变压、整流、滤波后,其中一路接至低电压保护电路,另一路经过CW7805进行稳压,提供稳定的5V电压供应给控制板各元件。当低电压保护电路检测到低电压时,将向单片机的INT0引脚产生中断,单片机将响应该中断;关闭各输出端口,以保护执行部件如电机等设备不因欠压而损坏。3.3 控制功能及过程洗衣机动作代码表动作名称进水洗涤排水脱水动作代码ABCD本次动作预设时间2分钟1596或2分钟2分秒30秒(2D+T秒)53或是分钟(包括30秒间隙脱水)洗衣机功能选择代码表过程代码过程名称完成整个过程所需时间(分)所需动作代码及时间01浸泡洗涤59A(B1停2)*5B15CD2AB2CD2AB2CD502强力洗涤42AB15CD2AB2CD2AB2CD203标准洗涤42AB15CD2AB2CD2AB2CD504轻柔洗涤34AB9CD2AB2CD2AB2CD305快速洗涤24AB5CD2AB2CD306单独洗涤17AB1507漂洗脱水25CD2AB2CD2AB2CD508单独脱水8CD509留水停机34AB15CD2AB2CD2AB2(大写字母后的数字为动作所需的时间)洗衣机的三大功能是实现衣服的洗涤、漂洗和脱水,加上进水,我们把这四个洗衣机动作编排成4个代码,而这四个动作的组合可形成9个过程(或更多),见动作代码表。选择哪一个过程来执行洗衣程序是在进入洗衣前由用户通过开始、暂停按钮来选择的,如:单独进行脱水可选择过程08。打开电源开关,洗衣机将进入洗衣过程选择状态,此时数码管显示00,用户按启动、暂停键可以显示不同的过程代码(在0109之间循环显示以指示选择不同的洗衣过程)。3秒内若无按键动作,蜂鸣器开始鸣叫6下(时间长度共3秒)以提醒用户;开始进入相应过程的洗衣程序,此后启动暂停按钮只起暂停或继续洗衣程序执行作用,数码管显示完成本次洗衣的剩余时间。三大功能中的漂洗实际上是由洗涤和脱水功能组成的,如一次标准洗涤过程(过程代码)中,漂洗功能包括了时间均为2分钟的脱水、洗涤、脱水、洗涤。因此,在编写控制程序实现三大功能时只需编写洗涤和脱水功能的代码,然后作为子程序调用即可。完成一次洗衣过程所需的动作有:(1) 进水动作进行洗涤时,盛水桶内的水量必须到水位设定要求。而水位的高低可以通过调节水位开关来实现。洗衣机的进水和水位判断是由水位开关和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单片机程序将控制进水阀闭合,开始注水;当桶内的水位达到设定水位时。水位开关受压闭合;程序就可进入下一步(洗涤)处理。若打开进水阀后20分钟内不能进水,则将出错报警,用户只能关闭洗衣机电源进行相关检查后方能重新开机。(2) 排水动作进入脱水动作前应先排水。为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害,洗衣机能够根据实际水量(由水位开关决定)对排水时间进行动态控制。设排水开始至水位压力开关断开时所需的时间为D,则总的排水时间为2DT(T取60秒,总的排水时间不应大于190秒)。因此,在开始排水时,控制程序将同时启动计时器,在D秒后若收到水位压力开关断开的信号,则再排水DT时间后,就可以结束排水进入脱水动作。若D大于65秒,说明排水系统有故障;洗衣机将停止动作并蜂鸣报警,提醒用户排除故障(安全开关打开又闭合认为是一次故障詯处理)后再继续。需要注意的是:排水结束后排水开关还是打开的。(3)洗涤动作洗涤动作指的是电机周期性的“正转停止反转停止”。不同的洗衣过程,控制电机执行“正转停止反转停止”的时间是不同的,标准洗涤过程可取:正转1.6秒0.56秒反转1.6秒停止0.56秒。对于轻柔洗涤和强力洗涤过程,这个时间要作相应调整。洗涤过程中若遇水位开关断开或用户要求补水(重新选择水位),则要停止洗涤动作并打开进水阀进水直至水位满足要求再继续。此外,洗涤动作的最后15秒,电机还要进行快速的停止正转停止反转停止处理,以避衣服拧成一团。程序流程见洗涤子程序(4)脱水动作排水结束后进入脱水动作,脱水是通过电机的正转来实现的,同时要求排水阀一直打开,也正是由于排水阀的打开,才使脱水时的电机正转速度不同于洗涤时的电机正转速度。(通过机械装置实现)。脱水分间隙脱水和长脱水,间隙脱水时间为30秒,电机按“正转停止”的周期循环动作,时间为“正转4秒停止3秒”。长脱水时电机将一直调整正转,所需时间由用户选择的过程决定,一般有3分钟和5分钟的长脱水时间。进入脱水前若洗衣机桶盖是打开的,则进行鸣叫、显示告警,直至用户合上桶盖后,才继续进行脱水。脱水结束后,再经过30秒延迟后关闭排水阀。脱水时若遇暂停,则重启时需延时5秒后再进行电机动作,目的是用于同步机械动作的滞后。程序流程见脱水子程序流程图。(5)脱水不平衡修正进行脱水处理,电机要进行高速单向正转,若此时衣物偏向于一边,脱水会因为离心力作用,在很短时间内碰撞安全形状装置,使安全形状产生瞬时的关闭和断开,此时要进行脱水不平衡修正。进行脱水不平衡修正,洗衣机将停止脱水,并自动插入“进水洗涤分钟排水”动作。通过这一插入动作,衣服将调整到洗衣桶中心位置。在同一脱水过程中如果连续修正3次仍达不到脱水平衡,则进行报警,待用户人工打开洗衣机将衣物放置均匀再盖上桶盖,方可继续进行脱水(即安全开关打开安全开关闭合动作)。在漂洗功能的第一次脱水动作时不进行脱水不平衡修正,在第二次脱水动作时则要进行脱水不平衡修正。 (6)LED的显示89C51对可以分为静态和动态两种。静态显示的特点是各LED管能稳定地同时显示各自的字形;动态显示是指各LED轮流地一遍一遍显示各自字符,人们由于视觉器官的惰性,从而版的是各LED似乎在同时显示不同字形。为了减少硬件开销,提高系统可靠性,并降低成本,我们在这里采用动态扫描的方法进行代码的显示。在这里由之P2口推动LED的a、b、c、d、e、f、g、SP,称为字形口,由P3.0、P3.1选择所显示的字位,称为字位口,动态显示采用软件法把欲显示的代码符号转换为相应的字形码,故它通常需要在RAM区建立一个显示缓冲区。显示缓冲区内包含的存储单元个数常和系统中LED显示器的个数相等。显示缓冲区的起始地址很重要,它决定了显示缓冲区在RAM中的位置。显示缓冲区中的每个存储单元用于存放相应LED显示管欲显示字符的字形码地址偏移量,故CPU可以根据这个地址偏移量通过查字形码表的方法找出所需显示字符的字形码,以便送到字形口显示。(字形码表见下表)在这里我选用了2位共阳LED数码显示器LED数码显示器的字形(段)码表显示字形字形码(共阳极)字形码(共阴极)0C0H3FH1F9H06H2A4H5BH3B0H4FH499H66H592H6DH682H7DH7F8H07H880H7FH990H6FHA88H77HB83H7CHCC6H39HDA1H5EHE86H79HF8EH71H熄灭FFH00H(7)其它动作为了有更好的人机交互,进行洗衣时数码管要显示剩余时间(单位为分钟),并且以1秒的频率不停地闪烁。此时如果按下暂停按钮,则时间显示不闪烁。随着洗衣过程的进行,显示时间将不断减少直至洗衣程序完成后显示“0”。剩余时间的获得可以通过如下方法:根据用户所选的过程代码可以获得包含这一过程的所有动作(9个过程所包含的动作需要的时间见功能选择代码表),由于相应的动作有预设的时间(动作对应的代码和预设时间见表动作代码表),因此,根据本次过程余下的动作可以通过查表的方式获取剩余时间。洗衣过程中的各种出错报警的显示代码见出错代码表,在显示的同时蜂鸣器将鸣叫6下用以提醒。洗衣过程结束后,蜂鸣器将鸣叫6下用以提醒用户可以取走衣服并关掉洗衣机的电源。故障名称显示值不能排水E1不能进入脱水E2不能平衡修正E3不能进水E4实现一次洗衣过程的控制流程图以标准洗涤(代码03)为例,洗衣机是按以下动作进行的:开始进水洗涤排水脱水进水洗涤排水脱水进水洗涤排水脱水结束。在此过程中,三大功能中的洗涤功能是指:进水洗涤动作;漂洗功能是指排水脱水进水洗涤排水脱水进水洗涤(两次洗涤和两次时间均为2分钟的脱水)动作;脱水功能是指:排水脱水动作。第四章 洗衣机控制系统的软件系统4.1 洗衣机控制系统软件的编程思路汇编语言程序设计并不很难,但要编出质量高,可读性好且执行速度快的优秀程序并不容易,欲达此目的,除应娴熟掌握所依托的指令系统外,还应掌握程序设计的基本方法和技巧,熟悉汇编语言源程序的分类方法和特点。 洗衣机的一次洗衣过程控制过程比较简单,主要为顺序控制,如先进水、洗涤(电机正转反转)、再排水脱水,难点在于过程选择,如不同的衣物所用的洗涤、漂洗、电机正转反转时间不同,如果为每个过程单独编一套指令,则指令系统变得很庞大,效率低,为此,我们把脱水、洗涤、进水单独编为一个子程序,由主程序根据过程选择,不断调用,由些减少源程序的长度,不同的洗衣过程,三大动作的时间不同,这可以通过建立数据表格,通过查表的方式获得每个洗衣过程所需时间。此外,还需编出显示子程序,延时子程序供主程序不断调用。4.2 主程序及子程序流程图(见下图) 洗衣机控制系统主程序流程图开始用户选择洗衣过程是否洗涤结束进水洗涤排水2D7秒进水是否漂洗是否脱水置注水漂洗标志置最后脱水标志间歇脱水最后长脱水是否为最后脱水结束鸣响中间长脱水洗涤是否为注水漂洗置注水漂洗标志洗涤动作子程序流程图开始根据过程代码获取电机正转-停止-反转-停止的时间周期电机动作进水处理是否进水快速洗标志?时间到否?是否暂停重启否设定快速洗时间和电机正转停止反转停止周期清标志暂停处理结束 是 否 否 是 否 是 否 是 是 否脱水子程序流程图延时5秒电机动作暂停处理安全开关是否断开脱水时间到否安全开关断开暂停不平衡修正报警重置修正次数是否暂停是否暂停开始安全开关是否断开延时30秒,关闭排水阀是否瞬间断开不平衡修正3次脱水不平衡修正安全开关是否闭合显示鸣叫报警结束 是否否是是否否是是否否是是4.3全自动洗衣机控制系统汇编语言源程序ORG 0000HLJMP MAINORG 0030H;延迟10ms程序;使用R0, R1DELAY10MS:MOV R0, #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 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 DELAY10MSMOV 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 DISPLAY03MOV 52H, A;INC 53H;1minDISPLAY03:JNB 20H.0, DISPLAY04;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 TOTALTIME, 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, XDPS01LCALL DISPLAYJB P0.0, XDPS01PUSH 52HPUSH 53HCLR 20H.0;不闪烁MOV A, P1PUSH ACCMOV P1, #00HLCALL PLAYXDPS02:LCALL DISPLAYJNB 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 52HXDPS01: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;SETB P1.2MOV A, 53H;ADD A, #20D;MOV 59H, A; PI3:MOV A, 53H;XRL A, 59H;JNZ PI2LCALL ERRORE4SJMP INWATER PI2:JNB P0.2, PI4;LCALL DISPLAYLCALL XDPAUSESJMP PI3 PI4:CLR P1.2 PI1:RET;洗涤时是否再进水IFINWATER:JNB P0.2, IF1;MOV A, P1;PUSH ACCMOV P1, #00H;LCALL INWATER;进水POP ACCMOV P1, A;IF1:RET;不能进水报警ERRORE4:PUSH 52HPUSH 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 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.0MOV A, P1;PUSH 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 53HCLR 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 ACCMOV P1, ACC;POP 53HPOP 52HTPK1:RET;脱水时开盖, 脱水时安全报警IFOPEN:ERRORE2:JNB P0.1, TTPK1;LCALL DISPLAYJNB P0.1, TTPK1;PUSH 52HPUSH 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, 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: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;MOV 30H, A;LP1:;有无按键LCALL DISPLAYJB P0.0, LP1;LCALL DISPLAY;按键去抖动JB P0.0, LP1;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 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;XIDI0:SETB P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI0MOV 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 XDELAY560MSSETB 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 P1.0LCALL DELAY1600MSCLR P1.0LCALL XDELAY560MSSETB P1.1LCALL DELAY1600MSCLR P1.1LCALL XDELAY560MSDJNZ R7, XIDI;快速洗涤15秒MOV R7, #11DQXIDI:SETB P1.0LCALL DELAY320MSCLR P1.0LCALL DELA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论