基于单片机的洗衣机智能控制系统.pdf
基于单片机的洗衣机智能控制系统摘要基于 MCS-51 单片机的洗衣控制系统,控制面板由按键、指示灯组成.按键选择洗衣机工作方式,指示灯配合按键工作,LED显示器则显示洗衣机洗涤和脱水时间.洗衣机的整体电路模块包括键盘矩阵、指示灯、电动机控制及电源电路.控制程序设计包括定时中断服务程序、外中断服务程序及主程序.关键词:全自动,智能,89C2051 Abstract Based on the MCS-51 microcontroller laundry control system,control panel from the button.Indicator components.button to choose washing machines work,with a key indicator,LED displays show machine washing and dehydration time.washing machines,the overall circuit module including keyboard matrix,lamp,motor control and power supply circuit.control procedures designed timer interrupt service procedures,external interrupt service procedures and the main program.Key Words:automatic,intelligent 89C2051 1 目录摘要.0ABSTRACT.0目录.1第一章绪言.11.1课题背景 .11.2本课题的任务和要求.41.3 系统解决的问题和拟采用的研究手段.81.4 本文的工作.8第二章系统的总体设计.102.1 核心单元电路.102.2 工作控制程序设计.222.3 模拟软件调试.24第三章系统的实现和关键技术.343.1 硬件的选择与说明.343.1.1AT89C2051.343.1.2固态继电器的选用.363.1.374LS05 反相器六非门.373.1.4双 2-4 译码器74LS139.383.1.5 TC4013BP.393.1.6电机 .443.2 汇编程序与模拟软件.453.2.1主程序 .453.2.2KEIL 的使用方法 .61第五章总结.72致谢.73参考文献.741 第一章绪言1.1 课题背景洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,全自动式洗衣机因使用方便得到大家的青睐,全自动即进水、洗涤、漂洗、摔干等一系列过程自动完成,控制器通常设有几种洗涤程序,对不同的衣物可供用户选择。展,洗衣机的性能将会不断完善。全自动洗衣机由于具有对衣物的磨损小、洗涤量大、节水等特点,越来越得到广大家庭的青睐。随着社会的进步和生活水平的提高,人们对全自动洗衣机的功能多样化、操作简单化也提出了更高的要求。为适应这种变化,全自动洗衣机的控制器已由机械式、混合式逐步过渡到全电子控制。单片机又称微控制器,或称嵌入式控制器。而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。它是家用电器实现智能化的心脏和大脑。由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足家用电器的需求。单片机是一个单芯片形态,面向控制对象的嵌入式应用计算机系统。它的出现及发展使计算机技术从通用型数值计算领域进入到智能化的控制领域.从此,计算机技术在两个重要领域通用计算机领域和嵌入式计算机领域都得到了极其重要的发展,并正在深深地改变着我们的社会。单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的,完整的单片微型计算机。6单片机独特的结构决定了它具有如下特点。2(1)高集成度,高可靠性单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的 CPU。单片机程序指令,常数及表格等固化在ROM 中不易破坏,许多信号通道均在一个芯片内,故可靠性高。(2)控制功能强为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。(3)低电压,低功耗为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V3.6V,而工作电流仅为数百微安。(4)优异的性能价格比单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC流水线和 DSP 等技术。单片机的寻址能力也已突破64KB的限制,有的已可达到 1MB和16MB,片内的 ROM 容量可达 62MB,RAM 容量则可达 2MB.由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。3 由于单片机功能的飞速发展,它的应用范围日益广泛,已远远超出了计算机科学的领域.小到玩具,信用卡,大到航天器,机器人,从实现数据采集,过程控制,模糊控制等智能系统到人类的日常生活,到处都离不开单片机.其主要的应用领域如下。(1)在测控系统中的应用单片机可以用于构成各种工业控制系统,自适应控制系统,数据采集系统等。例如,工业上的锅炉控制,电机控制,车辆检测系统,水闸自动控制,数控机床及军事上的雷达,导弹系统等。(2)在智能化仪器仪表中的应用单片机应用于仪器仪表设备中促使仪器仪表向数字化,智能化,多功能化和综合化等方向发展。单片机的软件编程技术使长期以来测量仪表中的误差修正,线性化的处理等难题迎刃而解。(3)在机电一体化中的应用单片机与传统的机械产品结合使传统的机械产品结构简化,控制走向智能化,构成新一代的机电一体化产品。这是机械工业发展的方向。(4)在智能接口中的应用4 计算机系统,特别是较大型的工业测控系统中采用单片机进行接口的控制管理,单片机与主机并行工作,可大大提高系统的运行速度。例如,在大型数据采集系统中,用单片机对模/数转换接口进行控制不仅可提高采集速度,还可以对数据进行预处理。如数字滤波,误差修正,线性化处理等。(5)在人类生活中的应用单片机由于其价格低廉,体积小巧,被广泛应用在人类生活的诸多场合,如洗衣机,电冰箱,空调器,电饭煲,视听音响设备,大屏幕显示系统,电子玩具,信用卡,楼宇防盗系统等.单片机将使人类的生活更加方便舒适,丰富多彩。1.2 本课题的任务和要求单片机又称微控制器,或称嵌入式控制器。而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。它是家用电器实现智能化的心脏和大脑。由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足家用电器的需求。单片机主要用于计算机外设、实时控制、仪器仪表、通信和家用电器等各个领域,是计算机技术和电子技术的综合性应用,在不同应用场合其技术要求各不相同,因此设计方法和研制的步骤不完全一样。单片机应用系统由硬件和软件组成。硬件是指MCU、存储器、I/O 接口和外设等物理器件的有机组合。软件是指系统监控程序的总称。在开发的过程中,它5 们的设计不能完全分开,二者需要互相配合、不断调整才能组成高性能的应用系统。单片机应用系统的开发包括系统总体设计、硬件设计、软件设计、系统调试等几个阶段,它们有时交叉进行。1.2.1 设计任务(1)系统总体设计任务在进行系统设计之前,首先应根据对系统的功能要求及其应用环境等确定合理的、具体的功能和技术指标,对应用系统的可靠性、通用性、先进性、可维护性、以及成本等进行综合考虑,以尽量合理并符合相应的标准。然后根据市场上各种单片机的货源情况和单片机的性能及开发工具等因素选择合适的机型。接下来要根据系统中可能遇到的传感器、模拟电路、I/O 接口、存储器和显示器等器件和设备进行器件选择,使之符合系统在精度、速度和可靠性等方面的要求。最后确定硬件和软件的功能划分。由于在系统设计中某些功能用硬件和软件都能实现,在设计中应综合考虑研制周期和成本等因素具体划分软硬件功能。(2)系统硬件设计任务硬件设计的任务是根据总体要求,在所选的 MCU 和各个元器件型号的基础上设计出系统的电路原理图,做一些必要的不见实验,以及工艺结构的设计加工,印刷电路板的设计制作和样机的组装等。在硬件设计中,需要考虑系统总线的负载能力、系统扩展时的片选方式、模拟电路的速度和精度等,如需扩展存储器则尽量用一片完成,这样既降低了成本,又减小了线路板的面积,同时提高了系统的可靠性。(3)系统软件设计任务单片机应用系统的软件设计是系统设计中最基本而且工作量较大的任务。与系统机上操作系统支持下的纯软件不同,单片机的软件设计是在裸机的条件下进行的,而且随应用系统的不同而不同。在软件中一般需考虑以下几个方面:6 1)根据要求确定软件的具体任务细节,然后确定合理的软件结构。一般系统软件的主程序和若干个子程序及中断服务程序组成,详细划分主程序、子程序和中断服务程序的具体任务,确定各个中断的优先级。主程序是一个顺序执行的无限循环的程序,不停地顺序查询各种软件标志,以完成对事务的处理。在子程序和中断服务程序中,要考虑现场的保护和恢复,以及它们和主程序之间的信息交换方法。2)程序的结构用模块化结构,即把监控程序分解为若干个功能相对独立的较小的程序模块分别设计,以便于调试。具体设计时可采用自底向上或自顶向下的方法。3)在进行程序设计时,先根据问题的定义描述出各个输入变量和输出变量之间的数学关系,即建立数学模型,然后绘制流程图,再根据流程图用汇编语言进行具体程序的编写。4)在程序设计完成后,利用相应的开发工具和软件进行程序的汇编,生成程序的机器码。(4)系统的调试任务在系统样机的组装和软件设计完成以后,就进入系统的调试阶段。应用系统的调试步骤和方法是相同的,但具体细节与采用的开发系统(即仿真器)及选用的单片机型号有关。调试的过程就是软硬件的查错过程,分为硬件调试和软件调试。1.2.2 系统设计要求 AT89C2051单片机是 ATMEL 公司 8 位单片机系列产品之一,是一种20 引脚双列直插式芯片。它内含 2KB可反复烧录的 FLASH 存储器,RAM 字节也有 128 个,15 个 I/O 口,5 个中断,2 个定时,已经可以满足程序的需要,指令也和51 系列兼容,基于上述特点,选择它来设计一台智能洗衣机,完全可以达到以下的功能:1、洗衣工作状态功能:强、弱洗涤;7 2、洗衣程序功能:含 4 种独立程序,即标准洗衣程序、经济洗衣、单次洗衣、脱水功能;3、特殊功能:故障诊断、安全保护、防振、暂停、间歇工作、声光显示功能。洗衣机要完成洗衣工作,除了对一般洗衣过程的人工工作及效能进行模拟之外,还要根据洗衣机的机械电子性质进行有关控制和检测。对于一台全自动洗衣机而言,首先要求能完成洗衣功能;同时还要根据用户的不同要求设置几种不同的洗衣程序;还要考虑水流的情况决定洗涤的弱强情况;另外,还要对洗衣过程出现的故障进行诊断;保证高速运转是脱水的安全性等。所以对全自动洗衣机,一般要求具有如下基本功能:(1)弱强洗涤功能。要求强洗时正反转驱动时间各为4S,间歇时间为 1S;弱洗时正 反转驱动时间各为3S,间歇时间为 2S。(2)4 种洗衣工作程序,即标准程序经济程序单独程序和排水程序。标准程序是进水洗涤漂洗洗涤;脱水,如此循环 3 次,每循环一次洗涤或漂洗环节时间比上一循环同一环节时间减少2min,具体是第一循环为洗涤,时间为6min,第二第三次循环为漂洗,时间分别为4min 和 2min.排水时间采用动态时间法确定,脱水时间为2 min.经济程序与标准程序一样,只是循环次数为二次。单独程序是进水洗涤(6 min)结束(留水不排不脱)。排水程序是排水脱水结束,时间确定与上述程序相应环节相同。(3)进排水系统故障自动诊断功能。洗衣机在进水或排水过程中,若在一定的时间范围内进水或排水未能达到预定的水位,就说明进排水系统有故障,此故障由控制系统测知并通过警告程序发出警告信号,提醒操作者进行人工排除。(4)脱水期间安全保护和防振动功能。洗衣机脱水期间,若打开机盖时,洗衣机就会自动停止脱水操作。脱水期间,如果出现衣物缠绕引起脱水桶重心偏移而不平衡,洗衣机也会自动停止脱水,以免振动过大,待人工处理后恢复工作。8(5)间歇驱动方式。脱水期间采取间歇驱动方式,以便节能。本系统要求驱动5s,间歇 2s,间歇期间靠惯性力使脱水桶保持高速旋转。(6)暂停功能。不管洗衣机工作在什么状态,当按下暂停键时,洗衣机需暂停工作,待启动键按下后洗衣机又能按原来所选择的工作方式继续工作。(7)声光显示功能。洗衣机各种工作方式的选择和各种工作状态均有声光提示和显示。1.3 系统解决的问题和拟采用的研究手段本课题主要是研究基于单片机的全自动洗衣机控制系统软硬件设计。首先要熟悉设计内容,学习掌握单片机的使用方法;精确分析并设计出该控制系统的全部工作流程图,确定输入、输出的名称功能;设计系统软件并在PC机上仿真模拟调试;设计并制作硬件模拟电路盘,接电模拟调试;软硬件联合调试,实现全部功能,完成设计并撰写毕业论文。针对课题采取以下研究方法及步骤:1、各种元器件以及芯片的选择2、硬件电路的设计3、用汇编语言完成软件方面的设计4、结合电路对程序进行调试5、找出程序中的错误,改正这些错误1.4 本文的工作本文的工作就是介绍如何做一个全自动洗衣机,第 2 部分给出相关方案的研9 究为后面程序设计打下基础,第 3 部分给出了系统的总体设计,对程序的模块分析、设计思想第 4 部分给出详细的实现过程和重要的技术实现。最后给出了我对这个设计一个看法,这个系统有些什么特色,还有展望之类的。10 第二章系统的总体设计2.1 核心单元电路洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,全自动式洗衣机因使用方便得到大家的青睐,全自动即进水、洗涤、漂洗、摔干等一系列过程自动完成,控制器通常设有几种洗涤程序,对不同的衣物可供用户选择。那么我们先来说说它的硬件设计。硬件电路框图如图1 所示,在该硬件系统中主要由核心单元电路、进水阀控制电路、排水阀控制电路、电机转动控制电路、状态显示电路、特殊功能电路等单元组成。图 1 CPU(AT892051)状态显示电路排水阀电路进水阀电路电机控制电路特殊功能电路电源电路11 1核心单元电路单芯片微处理器是属于Embedded System(嵌入系统),此系统的是把 CPU 加上一些少量的记忆体和输出入组件(I/O),都嵌入在一颗芯片内,再使用 特定的组译和编译软体编辑程序,利用烧录器把程序储存到单芯片,如此加上一些简单的周边电路,即可变成一个控制系统,所以单芯片又称为微程控器(microcontroller)。8051 是由 INTEL公司发展出来的 8bit MCU(微处理器),目前在工业界的应用相当的普及化,目前已有相当多家的公司也制造与8051兼容的单晶片,除的基本的构造相同外,更增加其周边的控制功能,例如 DALLAS 公司生产的DS87C550,已经内建 A/D 转换和 PWM,如此可减少周边组件和布线的成本,而国内的华邦电子公司也推出了40MHZ W78C51/52/54/58 ATMEL 半导体公司的AT89C51系列的产品,不需紫外线的清除,而是用电子式抹除,比一般的51 系列更为方便,目前在一般的学校实习,大都采用此系列产品。PHILIPS 半导体公司出产的 P87C552家族,除了 51 本身的 UART 外,更增加的I2C(Inter-integrated Circuit)的功能,这是利用 SDA和 SCL两条 传输线,和周边的 IC 互相沟通、传送资料,而且这些IC 都必须有 I2C 的编 号,这使得选购 IC 时,受到一些限制,所一在目前的工业应用上,还不是相当的普及化。由于 51 家族繁多,所以在设计之前,必须针对51 家族功能有相当的认识如此才能选购符合自己所需,而且价格便宜的MCU。INTEL 8051 家族介绍:INTEL公司是第一家出产 8051,其它公司也依照 INTEL所发展出来的 8051 为最基本的架构,再加上自己一些额外的功能以显示出自己的特色,让使用者能依照电路所需,选择最适合的8051去做控制,而且最重要的是,为了方 变设计者能随时更换不同厂牌的8051,其接脚大都是 40Pin,而且每 Pin 的定 亦都相同,但也有 24Pin(87C748、87C751)和 68Pin PLCC 包装(DS87C550),不过这些都是特殊规格的MCS-51。MCS-51单芯片一般分为三个版本:12 1.单芯片内部不包含程序记忆体,称为ROMless。2.单芯片内部已内建 ROM。3.单芯片内部已内建 EPROM。其中(2)和(3)的区别在于(2)的单芯片只可烧录一下,较适合于程序已完成,用 于大量生产,因为其价格较便宜,可节省产品的成本,(3)的单芯片适合用于程序发展阶段,因为需要重复的更改程序,而内含有EPROM 的 MCS-51,只 需要使用紫外线清除器,就可把MCS-51的程序记忆体清为空白,达到重复烧录的特性。INTEL公司出产的各版本MCS-51编号如下:组件编号内部程序内存大小定时器中断个数ROM 容量RAM 容量8031AH None 128*8RAM 2*16Bit 5 8051AH 4K*8ROM 128*8RAM 2*16Bit 5 8051AHP 4K*8ROM 128*8RAM 2*16Bit 5 8751H 4K*8EPROM 128*8RAM 2*16Bit 5 8751H-8 4K*8EPROM 128*8RAM 2*16Bit 5 8751BH 4K*8EPROM 128*8RAM 2*16Bit 5 8032AH None 256*8RAM 3*16Bit 6 8052AH 8K*8ROM 256*8RAM 3*16Bit 6 8752BH 8K*8EPROM 256*8RAM 3*16Bit 6 其特性如下:1.是一个 8 位的 MCU。2.具有布尔代数的运算能力。3.4 个 8 位 Port,共有 32 条双向且可独立被控制的I/O Port。13 4.有 128*8 RAM,可以储存资料记忆体(8052 为 256*8)。5.有 4K*8 ROM的程序记忆体(8052 为 8K*8)。6.有 2 组 16 Bit计时器(8052 有 3 个)。7.具有全双工传输信号UART。8.5 个中断源(8052 有 6 个),具有两层优先权中断架构。9.内部有时脉(CLOCK)振荡器电路(12MHZ)。10.程序记忆体(ROM)可扩充至 64K Byte。11.资料记忆体(RAM)可扩充至 64K Byte。ATMEL 家族介绍:ATMEL 公司所出产的 ATC89C51 可以说是目前一般在实验阶段最时常被用到MCS-51,因为 ATMEL 所出产的 MCS-51 系列其程序记忆体是做成 Flash memory,可以省略使用 EPROM 照紫外线的时间,而且重复烧录的次数多,价格又比价一般的便宜,其烧录的次数可高达1000次,8051 之所以 能如此盛行,ATMEL 公司其功不可没,因为它使学习者的学习方式变的简单价格上也 EPROM 型的 8051 系列便宜的多,虽然目前 DALLAS 公司所推行的高速 8051(HSM)已渐渐威胁到 ATMEL的地位,不过它目前所推出的51 系 列含有更高的速度和增加了更多功能,未来和 DALLAS 公司所推出的 8051 都值得消费者注意。为了方便让读者选购ATMEL14 公司出产的 MCS-51,以下 介绍其 IC 编号所代表的意义:ATMEL 公司生产的各版本MCS-51编号如下:组件编号程序内存(Program Memory)数据存储器容量(Data Memory Bytes)16bit 定时器(16bit timer)AT89C1051 1K Flash 64 RAM 1 AT89C2051 2K Flash 128 RAM 2 AT89C51 4K Flash 128 RAM 2 AT89C32 8K Flash 256 RAM 3 AT89C55 20K Flash 256 RAM 3 AT89S8252 8K Flash 256 RAM 2K EEPROM 3 AT89S53 12K Flash 256 RAM 3 由于 AT89C51/52/55 是一般较为通用的MCU,我们就把它与 8051/8052 做功能上的比较,其所增加功能如下:15 1.具有 4K/8K Bytes 可重复规划的快闪记忆体(Reprogrammable Flash Memory),可写入/抹除 1000次以上,程序可保存10年以上。2.操作频率:0MHz24MHz(AT89C55 为高速可达 33MHz)。3.操作电压:5V。4.AT89C51 具有两层优先权的5 个中断向量结构,AT89C52/55具两层优先权的6 个中断向量结构。5.三个可规划的记忆体上锁位。6.ALE脚可规划为,只在执行MOVC 和 MOVX 时才动作。(可减少 EMI,因为方波的电磁干扰很大)7.AT89C52/55的计数器 2 共有四种操作模式:1)捕获(capture)。2)自动重载(auto-reload)(往上或往下计数)。3)鲍率产生器(baud rate generator)。4)时钟输出(clock-out)。其中第(2)种操作模式增加了可往上或往下计数的功能(一般为上数功能),第(4)种操作模式为新增加的功能,利用P1.0 可以规划出 50%责任周期的时钟输出。而 AT89S53 增加了一个相当令人注意的功能:ISP,这个功能使得程序可经由 ISP(In-System Reprogrammable)接口下载,其具有 12K可可重复规划的快闪记忆体,可写入/抹除 1000次以上,使得使用者更加方便使用。Dallas 家族介绍:16 Dallas 公司所出产的 8051 家族,一般都是用在对高速有严格要求之下才会考虑使用,一般统称为高速微控器(HSM),目前较为常用得有DS80C310 和DS80C320,如果考虑高速动作这两颗是一般常用的微控器,而且价格和其它高速微控器来比是较为便宜的,但唯一的缺点是其内部没有ROM,一般都是外接EPROM,但不能超过 64K 位组,由于在高速动作,所以周边的IC 存取速度就需要相当的注意,以74HC373 来说,就要换成74F373,在 EPROM 的存取速度也要配合微控器的振荡器频率,一般模拟所用的 ICE 是无法做高速模拟的所以必须使用 Dallas 公司自己出产的ICE;以往 Dallas 公司所标榜的是高速微控器,但目前华邦公司也出厂了高速微控器(40MHZ),其速度不输于 Dallas 的产品,如果设计上对速度有严格的要求,倒也可以考虑一下华邦的W78E51/52/54/58,但假设你要整合性强又要高速的话DS87C550 或许可以满足你的要求。以下介绍其IC编号所代表的意义:Dallas 公司出产的各版本 MCS-51编号如下:17 组件编号程序内存(Program Memory)定时器/计数器串联 I/O(Serial I/O)DS80C310 NO 3 1 DS80C323 NO 3+WDT 2 DS87C520 16KB EPROM 3+WDT 2 DS83C530 16KB EPROM 3+WDT 2 DS87C530 16KB EPROM 3+WDT 2 DS87C550 8KB EPROM 3+WDT 2 WDT:看门狗计时器Serial I/O:UART 一般常用的为 DS80C310 和 DS80C320,我们就把它与 80C32做功能上的比较,其所增加功能如下:DS80C310:1.有两组 DPTR,一般只有一组。2.振荡器频率范围:033MHZ,一个机械周期需 4 个振荡周期,一般为12 个振荡周期。3.可变机械周期的 MOVX 指令,用来配合 ROM 或周边组件的读取速度。4.有 6 个外部中断,一般只有/INT0 和/INT1。5.有两层优先权的 10 个中断,因为外部中断多了4 个。DS80C320 除了具有 DS80C310 外,还增加了一些功能:1.有 13 个中断源,其中包含了6 个外部中断。2.有看门狗计时器(Watchdog timer)的功能。18 3.提早警告电源失效中断。4.电源下降自动重置(Rest)功能。目前 Dallas 公司所出产的微控器除了以上介绍的功能外,更添加了其它的功能,而且是百分之百和8051兼容,这使得使用者在设计时更加的方便,现就以 DS87C520 为例:1.有 OTP(只能烧录一次)和 EPROM(可多次烧录)版本,增加使用的弹性。2.可用软体规划特殊功能暂存器(SFR),控制 ALE脚对 EMI干扰。3.可用软体规划特殊功能暂存器(SFR),控制指令周期速度为 64 或是 1024,一般内定 4(8051 为12)。4.可用 MOVX 指令读取内部 1K Bytes 的 SRAM(一般只有 256 Bytes 的资料记忆体)。5.内部的 16K Bytes 的 ROM,可用软体规划特殊功能暂存器(SFR),成为从 0到 16Kbytes 的 ROM 使用。由于 Dallas 的微控器增加了许多的功能,如果使用者有需要使用的话,就必须事先在程序中定义特殊功能暂存器(SFR),否则在组译时会产生错误的讯息,但如果你没有使用到这些特殊功能,就不需去定义,这是在使用Dallas 微控器时必须注意的事情。目前在 8 位微控器的市场,有Microchip 公司出产的 PIC16CXX,其特色为省电、低功率,而且对于周边的电路整合性比8051强,因为其内部有些已内建A/D、PWM、I2C、LCD控制功能,这让使用者有更多选择的空间,如果读者有兴趣也可上网()查看该公司的资料,而且也可向该公司索取资料;另外还有 Motrola 公司所出产 68HC05,该公司所出产的微控器在工业界更是占有一席之地,其使用者和8051相比是不相上下;ATMEL 公司目前也相当积19 极在推动 AVR 微控器,而且它还提供整套发展工具给学校做实验,未来的发展值得注意。综合考虑系统扩展方便性、系统工作可靠性、性价比等因素,系统主机芯片采用 ATMEL 公司所出产的 ATC89C51。全自动洗衣机的控制逻辑电路如图2 所示。它由单片机 AT89C2051 为核心加上有关集成电路及元器件组成。从图中看出,这个全自动洗衣机控制逻辑电路相当简单。全自动洗衣机的工作部件有3 个,这就是电机.进水阀和排水阀。电机是洗衣机的动力源,它的转动带动洗衣桶和波轮的转动,从而时现对衣物的洗涤。进水阀用于控制洗衣机的进水量。排水阀用于控制排水。电机在脱水时还高速旋转带动衣物脱水。电机的状态有 3 种,即正转.反转及停止状态。电机一般工作在这三种状态的不断转换之中,从而实现洗涤。但在脱水时,只工作在正转高速状态。进水阀和派排水阀则只有开.关这两种状态。从图 2 的控制电路中可以看出:AT89C2051 的 P1端口中的 P1.0P1.3 共四条 I/O 线通过 4块 SP111O 新型固态继电器分别直接驱动洗衣机的这些工作部件。SP1110是一种固态继电器,内有发光二极管及光触发双向可控硅,1050mA 输入电流即可使双向可控硅完全导通,输出端通态电流为3A(平均值),浪通电流15A(不重复)。之所以选用这个器件,是因为它一方面可使电路进一部简化,另一方面还可使强.弱两类电完全隔离,保证主板的安全。74LSO5为六反相器,用其作为中间反相器,其中的 4 个反相器可分别驱动4个 SP1110继电器,剩余两反相器用于驱动LED5和 LED6。20 图 2 21 74LS139为双 2-4 线译码器,选用它可解决CPU I/O 线数量的不足。从控制要求可知,洗衣机有4 种不同的显示来加以区别。74LSW139 双 2-4 线译码器仅占用 CPU 的 P3.0 和 P3.1 两口线即可提供 4 种不同显示的驱动,其逻辑关系是:P3.0,P3.1 为“11”时 LED1亮,指示标准程序;为“10”时 LED2亮,指示经济程序;为“01”时 LED3亮,指示单独程序;为“00”时 LED4亮,指示排水程序。洗衣机的暂停功能和安全保护及防震动功能采用中断处理方式。这两个中断分别对应于 CPU 的外部中断“0”和外部中断“1”。中断信号通过TC4013BP 双D触发器 的两个 Q/分别加到 CPU P3.2和 P3.3 口线由触发器锁存直到CPU 响应中断为止。开盖(安全保护)或不平衡(防振动)中断信号通过由BG1,BG2组成的反相器送至TC4013BP 的 11 脚 CP端,经触发器的第12 脚(Q/)加到 P3.3。本系统对开盖和不平衡中断采取相同的处理方法,因此,共享外部中断“1”。为了充分利用(CPU的 I/O 口线,P3.4 和 P3.5 采用分时复用技术,每线具有两个功能。在洗衣机未进入工作状态或洗衣机处于暂停状态期间,P3.4 为输入线,用于监测启动键的状态,当启动键按下时,洗衣机即进入工作状态或从暂停状态恢复到原来的工作状态;在洗衣机暂停中断响应期间,P3.4 为输出线,用于撤消暂停中断请求。在洗衣机进水或排水期间,P3.5 被用作输入线,用于监测水位开关状态,为 CPU 提供洗衣机的水位信息;在洗衣机高速脱水期间,当发生开盖和不平衡中断时,P3.5 为输出线,用于撤消中断请求信号。CPU 的 P3.7 线用于驱动蜂鸣器发出各种告警信号。4,5 脚外接 6MHz 的晶振。1 脚通过 10uF电容接到+5v 电源,可实现上电自动复位。K7 为强制复位键。洗衣机的强.弱洗可通过 K1键进行循环选择。K1还具有第二功能,即当洗衣机发生故障转入报警程序后,按下 K1 键可使洗衣机退出报警状态回到处始待命状态。洗衣机工作程序可通过 K2键循环选择。洗衣机的工作状态可通过LED7LED9 进行显示。脱水期间系统在响应开盖或不平衡终止后,CPU采取软件查询的方式方式通过P1.6 线对盖开关进行监测以确定洗衣机是否继续进行脱水操作。22 2.2 工作控制程序设计由 AT89C2051 控制的全自动洗衣机的工作程序框图如图3 所示。从程序框图可以看出,这个控制程序也较为简单,所以,占用的存储器容量不大。从程序框图中可以看出程序的基本流程,系统上电复位后,首先进行初始化,默认标准洗衣工作程序和强洗方式,然后扫描K1,K2和启动键 K4,这时洗衣机上电复位初始化P3.0,P3.1:1,1 扫描 K1,K2,N Y 判断 57H 相应工作程序工作时间限制Y 结束故障处理程序人工解除23 处于待命状态。通过K1,K2可分别修改强/弱洗方式和洗衣工作程序。扫描过程中当发现启动键K4按下时,洗衣机即从待命状态进入工作状态。洗衣机进入工作程序后,系统首先根据 RAM 中 57H单元的特征字判断洗衣机的洗衣工作程序,若特征字为:01H为标准程序,02H为经济程序。进水操作 P1.0置位驱动进水阀开启。进水期间系统不断检测水位开关K5的状态,当检测到 K5闭合时,说明进水以达到预定水位。若在规定的4min 极限内为检测到K5闭合,说明进水系统发生故障,此时洗衣机退出工作状态,程序跳转到FW 为标号地址的故障处理程序段进行报警,其处理方法是:将P1.0P1.3 位全部置“0”,中止洗衣机的各中操作,然后洗衣机以响1s 停 2s 的规律不断地发出报警信号,直到人工干预即按下K1键后为止(按下 K1后,程序跳转回主程起始地址,洗衣机又回到待命的初始状态)。在正常情况下,进水期间检测到K5闭合时,说明进水以达预定水位,这时洗衣机进入下一程序即洗涤工作。因为电机在洗涤或漂洗工作时有正、反转和间歇三种状态,所以用P1.2,P1.3 两线才能实现对惦记这三种状态的控制。其逻辑关系是:P1.3,P1.2 为“00”时电机间歇,为“01”时正转,为“10”时反转。洗涤时间为 6min.洗涤结束后,系统通过一条判断指令,判断是否排水。由控制要求可知,若不排水则为单独程序,这时程序直接跳到结束,否则进入排水进程。排水时间采用动态时间法确定,其原理是;根据常用的空气压力水位开关的特性(即在进水中当水位达到预定水位时水位开关就接通;在排水中当桶内水位下降 11cm 后,水位开关才断开),在排水过程中若从开始到开关断开所需时间为 D,则整个排水所用时间为2D+50S(经验值)。若在规定的1min 极限时间内,系统检测不到水位开关K5断开,说明排水系统有故障,程序跳转至故障处理程序段发出警告信号,其处理程序段发出告警信号,其处理方法与进水系统故障相同。排水结束后,洗衣机接着执行脱水操作,P1.1 维持置位状态,保持排水阀开启,P1.2 按 5s 置位2s 清 0 的规律连续驱动电机高速旋转2min,然后脱水结24 束。脱水结束后系统通过一条判断指令判断整个洗衣工作是否结束。其原理:是洗衣机在每次洗涤或漂洗工作环节结束之后,洗衣工作程序标志57H单元减 1 一次,在脱水脱水工作结束,洗衣机报警三声后。即返回初始待命状态。若洗衣工作尚未结束,洗衣机再次执行进水操作,进入下一循环。以上是洗衣机工作的大概流程,工作过程中所许的各种计时,均由定时器“0”定时中断服务程序提供。定时器“0”设置为定时方式1,每 100 ms产生一次中断,因此,TL0,TH0装入的常数分别为 0B0H,3CH。定时器“0”中断服务子程序入口地址放在0BH单元中,洗衣机进入工作状态后定时器即被启动/每中断一次,70H单元累加 1 一次,累加到 0AH时,为 1s,因此 71H单元累加 1 一次,该单元累加至 3CH时,为 1 min,这时 72H单元累加 1 一次。系统根据这几个内存单元中的数据就可以确定洗衣机工作各个进程的时间。在暂停中断以及开盖或不平衡中断响应期间,定时中断被禁止,计时各单元内容不变。洗衣机的暂停中断在洗衣机进入工作状态后,中断请求即被设置为允许,中断请求有效;而开盖或不平衡中断只有在洗衣机进入高速脱水的工作进程时,中断请求才被设置为允许,请求信号有效。这两个中断服务程序比较简单。2.3 模拟软件调试单片机的程序设计调试分为两种,一种是使用软件模拟调试,意思就是用开发单片机程序的计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的,但是软件调试存在一些问题,如计算机本身是多任务系统,划分执行时间片是由操作系统本身完成的,无法得到控制,这样就无法时时的模拟单片机的执行时序,也就是说,不可能像真正的单片机运行环境那样执行的指令在同样一个时间能完成(往往要完成的比单片机慢)。为了解决软件调试的问题,第二种是硬件调试,硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者 USB口传输到硬件调试设备中(这个设备叫仿真器),仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出),仿真器可以接入实际的电路中,然后与单片机一样执行。同时,仿真器也会返回单片机内部内存与时序等情况给计算机的辅助软件,这样就可以在软件里看到真实的执行情况。不仅如此,还可以通过计算25 机断的软件实现单步、全速、运行到光标的常规调试手段。总结一下两者的不同与相同:相同点:1:都可以检测单片机执行时序下的片内资源情况(如R0-R7、PC计数器等)2:可以实现断点、全速、单步、运行到光标等常规调试手段。不同点:1:软件调试无法实现直接连接硬件电路的调试,只能通过软件窗口虚拟硬件端口的电平输出情况而仿真器可以实现与单片机一样的功能的硬件连接,从某种