1、1 微机原理与接口技术课程设计设计题目: 洗衣机控制系统设计 设 计 者 : 专 业 : 电 气 工 程 及 其 自 动 化班 级 : 学 号 : 2 一 课程设计的意义1.1 洗衣机的发展状况概述 1洗衣机的发展史 洗衣服是每个家庭都无法逃避的家庭劳动。洗衣机的出现给人们的生活带来了相当大的方便,它的普及大大降低了大多数家庭的体力劳作。 1858 年,美国人汉密尔顿史密斯制成了第一台洗衣机。1874 年, 美国人比尔布莱克斯发明了第一台人工搅动式洗衣机,使得“手洗时代”受到了挑战。1910 年美国人研制出了第一台电动式洗衣机。1922 年美国玛塔依格公司生产出了第一台搅拌式洗衣机。1932
2、年美德克斯航空公司研制成功了第一台前装式滚筒式洗衣机,这台机衣机能够使洗涤、漂洗、脱水三个步骤在同一个滚中操作。与此同时,世界各地也相继出现了洗衣机。洗衣机工业快速迅猛地发展起来。 1937 年第一台自动洗衣机问世。1955 年日本研制出波轮式洗衣机。60 年代日本出现了半自动洗衣机。70 年代生产出了波轮式套桶全自动洗衣机。70 年代后期以电脑控制的全自动洗衣机在日本问世。80 年代“模糊控制”开始应用于洗衣机中,使得洗衣机能够通过模糊控制使洗衣机操作更加简单,实现智能化。近半个多世纪里,在工业发达国家,全自动洗衣机技术得到广范的应用,其年总产量及社会普及率均以达到相当高的水平。2我国洗衣机
3、的发展现状 洗衣机在中国起步较晚,1978 年才开始正式生产家用洗衣机。 随着改革开放的不断深入,经济的持续增长,人民生活水平的普遍提高,人们对于洗衣机的认识也在不断发展,进入 80 年代后,中国洗衣机行业一直保持着旺盛的发展形势。目前,洗衣机在我国城市甚至广大农村已得到大范围的普及。中国洗衣机市场正处于快速更新换代阶段,市场潜力巨大,随着家用电器的自动化、智能化发展,人们对于洗衣机的期望也越来越高。1983 年,中国洗衣机产量由1978 年的 400 台增至 365 万台。此后全国各处都大规模的引进国外先进洗衣机技术。中国的洗衣机发展突飞猛进,先进技术的引进、吸收和创新,极大地促进了中国洗衣
4、机的生产能力和产业质量。经过三十年的发展,我国的洗衣机年产量已位于世界第一,将近为世界总年产量的四分之一。1.2 课程设计的意义课程设计进一步锻炼同学们在微机原理应用方面的实际工作能力。计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际:掌握这方面的知识更要强调解决实际问题的能力。学会面对一个实际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决问题的方案并通过实践不断地去分析和解决前进道路上的问题。 微机原理与接口技术课程是我们电气工程及其自动化专业本科生必修的一门技术基础课程。通过该课程的学习使学生对微机系统有一个全面的了解、掌握常规芯片的使用方法、掌
5、握简单微型计算机应用系统软硬的设计方法。3 二 洗衣机控制系统的设计2.1 设计内容系统设计并建立一个由微机控制的洗衣机控制系统,并完成:1给水和排水的自动控制。2用户定时时间的设定。3电机的正反转。4各种定时和故障报警电路。5定时开、关机的控制。6三分钟延时启动的保护。7设计相应的 A/D、D/A、键盘、显示接口和传感器测量水位电路,可在线键盘参数设置、定时检测、显示、报警,其中控制输出部分采用模拟量或开关量进行控制。8,写出相应工作原理,编写程序及程序流程图。希望实现的功能:智能检测待洗衣物的智能检测是智能洗衣机能够实现智能的关键技术之一。智能检测利用了模糊控制原理,根据各类传感器提供的洗
6、涤物状态和洗衣机运行参数进行模糊推理。通过各类传感器对布量、布质、温度、浊度的检测来确定洗涤过程中的洗涤水位,洗涤时间,漂洗次数,排水时间,脱水时间等等。4 三 总体设计方案3.1 洗衣机系统原理与设计思想图 1 洗衣机示意图洗衣机的系统 (1) 涤脱水系统 它主要有盛水桶,洗涤桶和波轮组成。盛水桶又称为外桶,主要用来盛放洗涤液。盛水桶固定在钢制底板上,通过 4 根吊杆悬挂在洗衣机箱体上。电动机,离合器,排水阀等部件都装在桶底下面。洗涤桶又称为脱水桶或者离心桶,也称为内桶,它的主要功能是用来盛放衣物,在洗涤或漂洗时配合波轮完成洗涤或漂洗功能,在脱水时便成为离心式的脱水桶。波轮是全自动洗衣机中对
7、衣物产生机械作用的主要部件。按波轮的形状来分,基本上有小波轮(直径在160mm 左右)的涡卷式水流和大波轮(直径在 300mm 左右)新水流两类。 (2) 进水系统 波轮式全自动洗衣机的进排水系统都采用了电磁阀控制。为了对桶内的水位进行检测和控制,洗衣机上都安装有水位控制器(水位开关) 。波轮式全自动套桶洗衣机使用最多的水位开关是空气压力式开关,主要有气压传感器装置,控制装置及电触点开关 3 部分组成,用来监视水位的高低。此外电磁阀分进水和排水电磁阀,进水电磁阀是洗衣机上的自动进水开关,它受水位开关动断触点的控制。而排水电磁阀是全自动洗衣机上的自动排水装置,同时还起改变离合器工作状态。进水、排
8、水电磁阀是采用电流流过线圈形成磁场的原理,洗衣机电磁阀在进,排水时使用,220V 交流电压与电磁阀线圈接通,形成磁场,电5 磁线圈吸合。自动打开香蕉阀门,洗衣机里的水就顺着管道流出去了。断电后,电磁阀线圈失去电流,磁场消失,电磁铁松开,橡胶阀门自动关闭,洗衣机里的水就流不出去了。 (3)动机及传动系统 波轮式全自动套桶洗衣机的电动机及传动系统主要由电动机和离合器组成,离合器又有普通离合器和减速离合器两种。其中普通离合器用在采用小波轮的套桶洗衣机上,这种洗衣机在洗涤或者漂洗时波轮的转速和脱水时离心桶的转速相同,目前各种大波轮新水流套桶洗衣机普遍采用减速离合器,它在洗涤,漂洗时波轮的转速较慢,而脱
9、水时离心桶的转速较快。电动机同时作为洗涤和脱水时的动力源,普遍采用主,副绕组完全对称的电容式电动机。洗衣机的基本工作原理 洗衣机的洗涤原理是由模拟人工洗涤衣物发展而来的,即通过翻滚、摩擦、水的冲刷等机械作用以及洗涤剂的表面活化作用,将附着在衣物上的污垢除掉,以达到洗净衣物的目的。现今,大多数的全自动洗衣机都使用以单片机为核心的控制电路来控制电动机、数码显示管、进水阀、排水阀及蜂鸣器的电压输出,使洗衣机根据程序运转。而在设计全自动洗衣机的控制系统时,要把握好洗涤、漂洗和脱水的时间: (1).洗涤时间 有人认为,洗涤时间越长,衣物就洗得越干净。其实不然,如果洗涤时间超过一定的限度,衣物不但不会随洗
10、涤时间的延长而提高洗净度,反而会加速衣物的磨损,还会造成能源的浪费。实验证明,洗衣机(波轮式洗衣机)的最佳洗涤时间为 510 分钟,最长也不应超过 15 分钟。 (2).漂洗时间 在漂洗刚开始的 3 分钟时间内,残留在衣物上的表面活性剂脱落最快。此后,活性剂脱落趋缓,漂洗 10 分钟后活性剂几乎不再脱落。一般采用贮水方式漂洗,每次 3 分钟,漂洗 23 次就可以了。 (3).脱水时间 电动机高速地转动洗涤桶,水份就会由于离心力而脱离衣物被甩出去。脱水时间一般为 23 分钟,时间太短会造成脱水不够彻底,太长又可能会损坏衣物。总体设计思想首先构思系统的总体结构,根据设计要求确定好系统大致的硬件组成
11、及其结构,其次根据系统的各个功能把软件分为几个不同的模块。依次实现各个模块的功能,最后把各个模块组合起来已完成整个系统的功能。6 3.2 洗衣过程流程图3.3 设计流程图弄清系统的需求根据系统的需求设计出相应的硬件电路在确定系统硬件结构的基础上 , 把软件划分为各个模块调试各个模块 , 并组成一个完整的系统7 四 硬件设计4.1 硬件设计概要用 Intel 的 8086 作为控制芯片,配合其他接口电路及配套的芯片组成洗衣机的控制电路。主要用到 8255 串行通行芯片,74LS137 三线八线译码器发出片选信号,AD0809 以及 DA0832 模数、数模转换芯片。用一个电位计和AD0809 模
12、拟水量信号,DA0832 和 LM324 运放最和来控制直流电机的正反转和停止。此外还用到了 4*4 扫描键盘作为输入设备,两个共阴数码管作为显示设备。详情见各个芯片的介绍。4.2 所用到的芯片及其各自功能说明4.2.1 芯片列表8086,8284,74LS138,8255,AD0809,DA0832,74LS02,LM3244.2.2 8086 的功能简介Intel 8086 是一个由 Intel 于 1978 年所设计的 16 位微处理器芯片,是x86 架构的鼻祖。不久,Intel 8088 就推出了,拥有一个外部的 8 位数据总线,允许便宜的芯片用途。它是以 8080 和 8085(它与
13、 8080 有组合语言上的原始码兼容性)的设计为基础,拥有类似的寄存器组,但是数据总线扩充为 16 位。总线界面单元(Bus Interface Unit)透过 6 字节预存(prefecth) 的队列(queue)喂指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086 CPU 有 20 条地址线,可直接寻址 1MB 的存储空间,每一个存储单元可以存放一个字节(8 位)二进制信息。为了便于对存储器进行存取操作,每一个存储单元都有一个惟一的地址与之对应,其地址范围用十进制表示为 01048575,用十六进制表示为00000HFFFFFH 。Intel 8086 拥有
14、四个 16 位的通用寄存器,也能够当作八个 8 位寄存器来存取,以及四个 16 位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供 64K 8 位元的输出输入(或 32K 16 位元),以及固定的向量中断。大部分的指令只能够存取一个内存位8 址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。 Intel 8086 有四个 内存区段 (segment) 寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取 1 MB 内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很
15、不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有用) ,可以完全地控制分段, ,使在编程中使用指针 (如 C 编程语言) 变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而 8086 的寻址方式改变让内存扩充较有效率。在这个系统中,8086 作为整个系统的主控芯片,用来控制协调整个系统的工作。4.2.3 8284 的功能简介向 8086CPU 提供外部的基准时钟信号,并把时钟信号进行功率放大。4.2.3 74LS138 的功能简介74LS138 为
16、 3 线8 线译码器,共有 54/74S138 和 54/74LS138 两种线路结构型式,其工作原理如下:当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将地址端(A、B、C )的二进制编码在一个对应的输出端以低电译出。 利用 E1、E2 和 E3 可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74LS138 还可作数据分配器,在该系统中,74LS138 用来产生各芯片的片选信号。4.2.4 8255 的功能简介8255 特性(1)一个并行输入 /输出的 LSI 芯片,多功能的 I/O 器件,
17、可作为 CPU 总线与外围的接口.(2)具有 24 个可编程设置的 I/O 口,即使 3 组 8 位的 I/O 口为 PA 口,PB 口和PC 口.它们又可分为两组 12 位的 I/O 口,A 组包括 A 口及 C 口(高 4 位,PC4PC7),B组包括 B 口及 C 口( 低 4 位,PC0PC3).A 组可设置为基本的 I/O 口,闪控(STROBE)的 I/O 闪控式,双向 I/O3 种模式;B 组只能设置为基本 I/O 或闪控式 I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.8255 引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器
18、)均被清除,所有 I/O 口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0 时,表示芯片被9 选中,允许 8255 与 CPU 进行通讯;/CS=1 时,8255 无法与 CPU 做数据传输. RD: 读信号线,当这个输入引脚为低电平时,即/RD=0 且/CS=0 时,允许 8255通过数据总线向 CPU 发送数据或状态信息,即 CPU 从 8255 读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,即/WR=0 且/CS=0 时,允许 CPU将数据或控制字写入 8255。 D0D7:三态双向数据总线,8255 与 CPU 数据传送的通道,当 CPU
19、 执行输入输出指令时,通过它实现 8 位数据的读/写操作,控制字和状态信息也通过数据总线传送。 PA0PA7:端口 A 输入输出线,一个 8 位的数据输出锁存器/缓冲器, 一个 8 位的数据输入锁存器。 PB0PB7:端口 B 输入输出线,一个 8 位的 I/O 锁存器, 一个 8 位的输入输出缓冲器。 PC0PC7:端口 C 输入输出线,一个 8 位的数据输出锁存器/缓冲器, 一个 8 位的数据输入缓冲器。端口 C 可以通过工作方式设定而分成 2 个 4 位的端口, 每个 4 位的端口包含一个 4 位的锁存器,分别与端口 A 和端口 B 配合使用,可作为控制信号输出或状态信号输入端口。A0,
20、A1:地址选择线,用来选择 8255 的 PA 口,PB 口,PC 口和控制寄存器.当 A0=0,A1=0 时,PA 口被选择;当 A0=0,A1=1 时,PB 口被选择;当 A0=1,A1=0 时,PC 口被选择;当 A0=1.A1=1 时,控制寄存器被选择4.2.5 AD0809 的功能简介1、ADC0809 是 8 位逐次逼近型 A/D 转换器。它由一个 8 路模拟开关、一个地址锁存译码器、一个 A/D 转换器和一个三态输出锁存器组成(见图 1) 。多路开关可选通 8 个模拟通道,允许 8 路模拟量分时输入,共用 A/D 转换器进行转换。三态输出锁器用于锁存 A/D 转换完的数字量,当
21、OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。2、AD0809 的工作原理IN0 IN7:8 条模拟量输入通道ADC0809 对输入模拟量要求:信号单极性,电压范围是 05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4 条ALE 为地址锁存允许输入线,高电平有效。当 ALE 线为高电平时,地址锁存与译码器将 A, B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B 和 C 为地址输入线,用于选通IN0IN7 上的一路模拟量输入。通道选择表如下表所示。
22、C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN310 1 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7数字量输出及控制线:11 条ST 为转换启动信号。当 ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行 A/D 转换;在转换期间,ST 应保持低电平。 EOC 为转换结束信号。当 EOC 为高电平时,表明转换结束;否则,表明正在进行 A/D 转换。OE 为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1 ,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7 D0 为数字量输出线。CLK 为时钟
23、输入信号线。因 ADC0809 的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为 500KHZ,VREF() ,VREF()为参考电压输入。4.2.6 DA0832 芯片的功能简介DAC0832 是 8 分辨率的 D/A 转换集成芯片。与微处理器完全兼容。这个DA 芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A 转换器由 8 位输入锁存器、 8 位 DAC 寄存器、8 位D/A 转换电路及转换控制电路构成。DAC0832 的主要特性参数如下:分辨率为 8 位;电流稳定时间 1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度
24、;单一电源供电(+5V+15V ) ;低功耗,200mW。DAC0832 结构:D0D7:8 位数据输入线,TTL 电平,有效时间应大于 90ns(否则锁存器的数据会出错);ILE:数据锁存允许控制信号输入线,高电平有效;CS:片选信号输入线(选通数据锁存器) ,低电平有效;WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于 500ns)有效。由ILE、CS、WR1 的逻辑组合产生 LE1,当 LE1 为高电平时,数据锁存器状态随输入数据线变换,LE1 的负跳变时将输入数据锁存;XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:DAC 寄存器选通输入线,
25、负脉冲(脉宽应大于 500ns)有效。由WR1、XFER 的逻辑组合产生 LE2,当 LE2 为高电平时,DAC 寄存器的输出随寄存器的输入而变化,LE2 的负跳变时将数据锁存器的内容打入 DAC 寄存器并开始 D/A 转换。IOUT1:电流输出端 1,其值随 DAC 寄存器的内容线性变化;IOUT2:电流输出端 2,其值与 IOUT1 值之和为一常数;11 Rfb:反馈信号输入线,改变 Rfb 端外接电阻值可调整转换满量程精度;Vcc:电源输入端,Vcc 的范围为+5V+15V;VREF:基准电压输入线,VREF 的范围为-10V+10V;AGND:模拟信号地DGND:数字信号地DAC083
26、2 的工作方式:根据对 DAC0832 的数据锁存器和 DAC 寄存器的不同的控制方式,DAC0832 有三种工作方式:直通方式、单缓冲方式和双缓冲方式。4.2.7 LM324 芯片功能简介LM324 系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到 3.0 伏或者高到 32 伏的电源下,静态电流为 MC1741 的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。每一组运算放大器可用图 1 所示的符号来表示,它有 5 个引出脚,其中“+ ”、 “-”为两个信号输入
27、端, “V+”、 “V-”为正、负电源端, “Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端 Vo 的信号与该输入端的位相反;Vi+(+ )为同相输入端,表示运放输出端 Vo 的信号与该输入端的相位相同。LM324 的引脚排列图LM324 的特点:1.短跑保护输出2.真差动输入级3.可单电源工作:3V-32V4.低偏置电流:最大 100nA5.每封装含四个运算放大器。6.具有内部补偿的功能。7.共模范围扩展到负电源8.行业标准的引脚排列9.输入端具有静电保护功能12 4.3 硬件电路设计系统原理图及其说明微机总线扩展I R Q iD BI R Q jI R Q k译
28、码电路键盘并行接口定时器A / D功放电路电机驱动电路排水闸驱动电路进水闸驱动电路门开关时钟电路水位传感器启动按钮及电路D BA B图 4.3-1 系统总体框架。13 GND0A143259687MITRCLKESY(Q)/OWHXBVU?P*F+-Jotradbhemnlwisyp_.,cfgjkquvxz#三图 4.3-2 系统硬件电路14 五 软件设计5.1 流程图及其说明开始判断按下启动键设置洗衣方式设置洗衣时间设置定时洗衣时间判断到达定时时间正传 w a s h y t p e秒并刷新数码管停转 5 秒秒并刷新数码管从键盘读一个数据W a s h t y p e =1 0W a s
29、h t y p e =1 512反转 w a s h t y p e秒秒并刷新数码管停转 5 秒秒并刷新数码管修改显示参数更新剩余时间进水打开并显示当前水量判断水满判断到达洗衣时间排水并显示当前水量判断水排干甩干 , 电机加速正传 2 分钟漂洗若干次并甩干 , 流程同上结束 , 电机停转 , 三分钟开机保护T u r eT u r eF a l s eF a l s eT u r eF a l s eF a l s eT u r eT u r eF a l s e有故障标志吗 ?F a l s e故障 服务中断程序其他15 说明:软件可以分为 10 大块,分别为主程序、键盘扫描子程序、参数设置
30、子程序、延时子程序、显示子程序、进水子程序、排水子程序、甩干子程序、停止及开机延时保护子程序组成。其中,进水、洗衣、排水为一次洗衣的三个不同状态,由相应的子程序来控制电机的运动和进水排水。它们的关系如图 5.1-2.主程序键盘扫描延时进水 排水 甩干洗衣参数设置显示停止及开机保护图 5.1-25.2 源程序及其说明CODE SEGMENTASSUME CS:CODEWASHTIME DW 20HWASHTYPE DW 08HONTIME DW 00HTIME DW 0ADPORT EQU 0010HORG 1000HIOCONPT EQU 0FF2BHIOAPT EQU 0FF28HIOBPT
31、 EQU 0FF29HIOCPT EQU 0FF2AHORG 10E0HDAPORT EQU 0020HORG 10A0HMAIN PROC ;键盘参数设置MOV AL,01HCALL CONVERSCALL DISP ;显示 01,提示输入洗衣时间CALL KEY16 MOV DL,10MUL DLMOV WASHTIME,AXCALL KEYCBWADD WASHTIME,AXK1: MOV AL,02 ;显示 02;提示选择洗衣方式CALL CONVERSCALL DISPCALL KEYCMP AL,2JA K1CMP AL,1JB K1CMP AL,1JE RUOXICMP AL,2
32、JE QIANGXIRUOXI: MOV WASHTYPE,08HJMP NEXTQIANGXI: MOV WASHTYPE,0FHNEXT: MOV AL,03 ;显示 3,提示输入定时时间CALL CONVERSCALL DISPCALL KEYMOV DL,10MUL DLMOV ONTIME,AXCALL KEYCBWADD ONTIME,AXMOV CX,ONTIMELOOP K2K2: CALL DELAY;ADD AX,WASHTIMEADD AX,WASHTIMEADD AX,WASHTIMEMOV TIME,AXCALL STEP1 ;洗衣MOV CX,WASHTIMELOO
33、P WASHCALL STEP317 CALL SHUAIGANCALL STEP1 ;漂洗MOV CX,WASHTIMELOOP WASHCALL STEP3CALL SHUAIGANCALL STEP1 ;漂洗MOV CX,WASHTIMELOOP WASHCALL STEP3CALL SHUAIGANCALL STOP ;洗衣完成,三分钟启动保护JMP MAINMAIN ENDP;WASH;WASH PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV DX,DAPORTDACON1: MOV AL,0FFHOUT DX,ALMOV CX,WASHTYPELOOP W1
34、W1: CALL DELAYDACON2: MOV AL,80HOUT DX,ALMOV CX,8HLOOP W2W2: CALL DELAYDACON3:MOV AL,00HOUT DX,ALMOV CX,WASHTYPELOOP W3W3: CALL DELAY18 MOV AL,80HOUT DX,ALMOV CX,8HLOOP W4W4: CALL DELAYDEC TIMEMOV AX,TIMECALL CONVERSCALL DISPPOP DXPOP CXPOP BXPOP AXRETWASH ENDP;STEP1;STEP1 PROC ;判断水位PUSH AXPUSH BXPU
35、SH CXPUSH DXADCONTORL: CALL FORMATADCON: MOV AX,00MOV DX,ADPORTOUT DX,ALDELAYS: LOOP DELAYSMOV DX,ADPORTMOV DX,ADPORTIN AL,DXPUSH AXCALL CONVERSCALL DISPPOP AXCMP AL,0EEHJAE LACALL JINSHULA: MOV DX,IOCONPT ;水满,关水MOV AL,89HOUT DX,ALMOV DX,IOCPT19 IN AL,DXAND AL,0FEHPUSH AXMOV DX,IOCONPTMOV AL,80HOUT
36、DX,ALMOV DX,IOCPTPOP AXOUT DX,ALPOP DXPOP CXPOP BXPOP AXRETSTEP1 ENDP;JINSHU;JINSHU PROC ;控制进水PUSH AXPUSH BXPUSH CXPUSH DXMOV DX,IOCONPTMOV AL,89HOUT DX,ALMOV DX,IOCPTIN AL,DXOR AL,01HPUSH AXMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOCPTPOP AXOUT DX,ALPOP DXPOP CXPOP BXPOP AXJMP ADCONJINSHU ENDP;20 ;
37、XIANSHI;CONVERS: ;字符转换PUSH AXPUSH BXPUSH CXPUSH DXMOV AH,ALAND AL,0FHMOV BX,077AHMOV DS:BX,ALINC BXMOV AL,AHAND AL,0F0HMOV CL,04HSHR AL,CLMOV DS:BX,ALPOP DXPOP CXPOP BXPOP AXRETDISP: ;显示PUSH AXPUSH BXPUSH CXPUSH DXMOV DX,077FHMOV AH,20HDISP0:MOV CX,00FFHMOV BX,DXMOV BL,DS:BXMOV BH,0HPUSH DXMOV DX,0F
38、F22HMOV AL,CS:BX+1060HOUT DX,ALMOV DX,0FF21HMOV AL,AHOUT DX,ALDISP1:LOOP DISP1POP DX21 DEC DXSHR AH,01HJNZ DISP0MOV DX,0FF22HMOV AL,0FFHOUT DX,ALPOP DXPOP CXPOP BXPOP AXRETDATA1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0AHDB 86H,8EH,0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFHFORMAT: ;显
39、示初始化PUSH AXPUSH BXPUSH CXPUSH DXMOV BX,0MOV WORD PTR DS:BX+077AH,0000HADD BX,2MOV WORD PTR DS:BX+077AH,0009HADD BX,2MOV WORD PTR DS:BX+077AH,0008HPOP DXPOP CXPOP BXPOP AXRET;STEP3;STEP3 PROC ;判断水是否排干?PUSH AXPUSH BXPUSH CXPUSH DXADCON1TORL: CALL FORMATADCON1: MOV AX,00MOV DX,ADPORTOUT DX,ALMOV CX,050
40、0H22 DELAYSS: LOOP DELAYSSMOV DX,ADPORTIN AL,DXPUSH AXCALL CONVERSCALL DISPPOP AXCMP AL,08HJBE LAACALL PAISHULAA: MOV DX,IOCONPT ;排干,停止排水MOV AL,89HOUT DX,ALMOV DX,IOCPTIN AL,DXAND AL,0FDHPUSH AXMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOCPTPOP AXOUT DX,ALPOP DXPOP CXPOP BXPOP AXRETSTEP3 ENDP;PAISHU;P
41、AISHU PROC ;控制进水PUSH AXPUSH BXPUSH CXPUSH DXMOV DX,IOCONPTMOV AL,89HOUT DX,ALMOV DX,IOCPT23 IN AL,DXOR AL,02HPUSH AXMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOCPTPOP AXOUT DX,ALPOP DXPOP CXPOP BXPOP AXJMP ADCON1PAISHU ENDP;SHUAIGAN;SHUAIGAN PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV DX,DAPORTMOV AL,0FFHOUT
42、DX,ALMOV CX,80HLOOP SHUA1SHUA1: CALL DELAYMOV AL,80HOUT DX,ALPOP DXPOP CXPOP BXPOP AXRETSHUAIGAN ENDP;DELAY;DELAY:POP DXPOP CX24 POP BXPOP AXMOV CX,0FFFFHDELAY1: LOOP DELAY1PUSH AXPUSH BXPUSH CXPUSH DXRET; ;STOP;STOP PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,0FFFFHLOOP DEDE: CALL DELAYPOP DXPOP CXPOP BXPOP AXRETSTOP ENDP;键盘扫描;KEY: PUSH AXPUSH BXPUSH CXPUSH DXMOV AL,0FFHMOV DX,0FF