摘 要
基于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
目录
摘 要 .................................................................................................................................................... 0 ABSTRACT .................................................................................................................................................. 0 目录 .......................................................................................................................................................... 1 第一章 绪言 ............................................................................................................................................ 1 1.1 课题背景 ...................................................................................................................................... 1 1.2 本课题的任务和要求 .................................................................................................................. 4 1.3系统解决的问题和拟采用的研究手段 ....................................................................................... 8 1.4本文的工作 ................................................................................................................................... 8 第二章 系统的总体设计 ...................................................................................................................... 10 2.1核心单元电路 ............................................................................................................................. 10 2.2工作控制程序设计 ..................................................................................................................... 22 2.3模拟软件调试 ............................................................................................................................. 24 第三章系统的实现和关键技术 ............................................................................................................ 34 3.1硬件的选择与说明 ..................................................................................................................... 34 3.1.1 AT89C2051 .......................................................................................................................... 34 3.1.2 固态继电器的选用 ............................................................................................................ 36 3.1.3 74LS05反相器六非门 ....................................................................................................... 37 3.1.4 双2-4译码器 74LS139 ..................................................................................................... 38 3.1.5 TC4013BP ........................................................................................................................... 39 3.1.6 电机 .................................................................................................................................... 44 3.2汇编程序与模拟软件 ................................................................................................................. 45 3.2.1 主程序 ................................................................................................................................ 45 3.2.2 KEIL的使用方法 ................................................................................................................ 61 第五章 总结 .......................................................................................................................................... 72 致谢 ........................................................................................................................................................ 73 参考文献 ................................................................................................................................................ 74
1
第一章 绪言
1.1 课题背景
洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,全自动式洗衣机因使用方便得到大家的青睐,全自动即进水、洗涤、漂洗、摔干等一系列过程自动完成,控制器通常设有几种洗涤程序,对不同的衣物可供用户选择。展, 洗衣机的性能将会不断完善。
全自动洗衣机由于具有对衣物的磨损小、洗涤量大、节水等特点,越来越得到广大家庭的青睐。随着社会的进步和生活水平的提高,人们对全自动洗衣机的功能多样化、操作简单化也提出了更高的要求。为适应这种变化,全自动洗衣机的控制器已由机械式、混合式逐步过渡到全电子控制。
单片机又称微控制器,或称嵌入式控制器。而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。它是家用电器实现智能化的心脏和大脑。
由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足家用电器的需求。
单片机是一个单芯片形态,面向控制对象的嵌入式应用计算机系统。它的出现及发展使计算机技术从通用型数值计算领域进入到智能化的控制领域.从此,计算机技术在两个重要领域——通用计算机领域和嵌入式计算机领域都得到了极其重要的发展,并正在深深地改变着我们的社会。
单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的,完整的单片微型计算机。[6]
单片机独特的结构决定了它具有如下特点。
1
(1)高集成度,高可靠性
单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。
(2)控制功能强
为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。
(3)低电压,低功耗
为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。
(4)优异的性能价格比
单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC流水线和DSP等技术。单片机的寻址能力也已突破64KB的限制,有的已可达到1MB和16MB,片内的ROM容量可达62MB,RAM容量则可达2MB.由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。
2
由于单片机功能的飞速发展,它的应用范围日益广泛,已远远超出了计算机科学的领域.小到玩具,信用卡,大到航天器,机器人,从实现数据采集,过程控制,模糊控制等智能系统到人类的日常生活,到处都离不开单片机.其主要的应用领域如下。
(1)在测控系统中的应用
单片机可以用于构成各种工业控制系统,自适应控制系统,数据采集系统等。例如,工业上的锅炉控制,电机控制,车辆检测系统,水闸自动控制,数控机床及军事上的雷达,导弹系统等。
(2)在智能化仪器仪表中的应用
单片机应用于仪器仪表设备中促使仪器仪表向数字化,智能化,多功能化和综合化等方向发展。单片机的软件编程技术使长期以来测量仪表中的误差修正,线性化的处理等难题迎刃而解。
(3)在机电一体化中的应用
单片机与传统的机械产品结合使传统的机械产品结构简化,控制走向智能化,构成新一代的机电一体化产品。这是机械工业发展的方向。
(4)在智能接口中的应用
3
计算机系统,特别是较大型的工业测控系统中采用单片机进行接口的控制管理,单片机与主机并行工作,可大大提高系统的运行速度。例如,在大型数据采集系统中,用单片机对模/数转换接口进行控制不仅可提高采集速度,还可以对数据进行预处理。如数字滤波,误差修正,线性化处理等。
(5)在人类生活中的应用
单片机由于其价格低廉,体积小巧,被广泛应用在人类生活的诸多场合,如洗衣机,电冰箱,空调器,电饭煲,视听音响设备,大屏幕显示系统,电子玩具,信用卡,楼宇防盗系统等.单片机将使人类的生活更加方便舒适,丰富多彩。
1.2 本课题的任务和要求
单片机又称微控制器,或称嵌入式控制器。而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。它是家用电器实现智能化的心脏和大脑。
由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足家用电器的需求。
单片机主要用于计算机外设、实时控制、仪器仪表、通信和家用电器等各个领域,是计算机技术和电子技术的综合性应用,在不同应用场合其技术要求各不相同,因此设计方法和研制的步骤不完全一样。
单片机应用系统由硬件和软件组成。硬件是指MCU、存储器、I/O接口和外设等物理器件的有机组合。软件是指系统监控程序的总称。在开发的过程中,它
4
们的设计不能完全分开,二者需要互相配合、不断调整才能组成高性能的应用系统。单片机应用系统的开发包括系统总体设计、硬件设计、软件设计、系统调试等几个阶段,它们有时交叉进行。 1.2.1设计任务 (1)系统总体设计任务
在进行系统设计之前,首先应根据对系统的功能要求及其应用环境等确定合理的、具体的功能和技术指标,对应用系统的可靠性、通用性、先进性、可维护性、以及成本等进行综合考虑,以尽量合理并符合相应的标准。然后根据市场上各种单片机的货源情况和单片机的性能及开发工具等因素选择合适的机型。接下来要根据系统中可能遇到的传感器、模拟电路、I/O接口、存储器和显示器等器件和设备进行器件选择,使之符合系统在精度、速度和可靠性等方面的要求。最后确定硬件和软件的功能划分。由于在系统设计中某些功能用硬件和软件都能实现,在设计中应综合考虑研制周期和成本等因素具体划分软硬件功能。 (2)系统硬件设计任务
硬件设计的任务是根据总体要求,在所选的MCU和各个元器件型号的基础上设计出系统的电路原理图,做一些必要的不见实验,以及工艺结构的设计加工,印刷电路板的设计制作和样机的组装等。在硬件设计中,需要考虑系统总线的负载能力、系统扩展时的片选方式、模拟电路的速度和精度等,如需扩展存储器则尽量用一片完成,这样既降低了成本,又减小了线路板的面积,同时提高了系统的可靠性。
(3)系统软件设计任务
单片机应用系统的软件设计是系统设计中最基本而且工作量较大的任务。与系统机上操作系统支持下的纯软件不同,单片机的软件设计是在裸机的条件下进行的,而且随应用系统的不同而不同。在软件中一般需考虑以下几个方面:
5
1)根据要求确定软件的具体任务细节,然后确定合理的软件结构。一般系统软件的主程序和若干个子程序及中断服务程序组成,详细划分主程序、子程序和中断服务程序的具体任务,确定各个中断的优先级。主程序是一个顺序执行的无限循环的程序,不停地顺序查询各种软件标志,以完成对事务的处理。在子程序和中断服务程序中,要考虑现场的保护和恢复,以及它们和主程序之间的信息交换方法。
2)程序的结构用模块化结构,即把监控程序分解为若干个功能相对独立的较小的程序模块分别设计,以便于调试。具体设计时可采用自底向上或自顶向下的方法。
3)在进行程序设计时,先根据问题的定义描述出各个输入变量和输出变量之间的数学关系,即建立数学模型,然后绘制流程图,再根据流程图用汇编语言进行具体程序的编写。
4)在程序设计完成后,利用相应的开发工具和软件进行程序的汇编,生成程序的机器码。 (4)系统的调试任务
在系统样机的组装和软件设计完成以后,就进入系统的调试阶段。应用系统的调试步骤和方法是相同的,但具体细节与采用的开发系统(即仿真器)及选用的单片机型号有关。调试的过程就是软硬件的查错过程,分为硬件调试和软件调试。。
1.2.2系统设计要求
AT89C2051单片机是ATMEL公司8位单片机系列产品之一,是一种20引脚双列直插式芯片。它内含2KB可反复烧录的FLASH存储器,RAM字节也有128个,15个I/O口,5个中断,2个定时,已经可以满足程序的需要,指令也和51系列兼容,基于上述特点,选择它来设计一台智能洗衣机,完全可以达到以下的功能:
1、洗衣工作状态功能:强、弱洗涤;
6
2、洗衣程序功能:含4种独立程序,即标准洗衣程序、经济洗衣、单次洗衣、脱水功能;
3、特殊功能:故障诊断、安全保护、防振、暂停、间歇工作、声光显示功能。
洗衣机要完成洗衣工作,除了对一般洗衣过程的人工工作及效能进行模拟之外,还要根据洗衣机的机械电子性质进行有关控制和检测。
对于一台全自动洗衣机而言,首先要求能完成洗衣功能;同时还要根据用户的不同要求设置几种不同的洗衣程序;还要考虑水流的情况决定洗涤的弱强情况;另外,还要对洗衣过程出现的故障进行诊断;保证高速运转是脱水的安全性等。所以对全自动洗衣机,一般要求具有如下基本功能:
(1)弱强洗涤功能。要求强洗时正反转驱动时间各为4S,间歇时间为1S;弱洗时正 反转驱动时间各为3S,间歇时间为2S。
(2)4种洗衣工作程序,即标准程序 经济程序 单独程序和排水程序。标准程序是进水—洗涤—漂洗—洗涤—;脱水,如此循环3次,每循环一次洗涤或漂洗环节时间比上一循环同一环节时间减少2min,具体是第一循环为洗涤,时间为6min,第二第三次循环为漂洗,时间分别为4min和2min.排水时间采用动态时间法确定,脱水时间为2 min.经济程序与标准程序一样,只是循环次数为二次。单独程序是进水—洗涤(6 min)—结束(留水不排不脱)。排水程序是排水—脱水—结束,时间确定与上述程序相应环节相同。
(3)进排水系统故障自动诊断功能。洗衣机在进水或排水过程中,若在一定的时间范围内进水或排水未能达到预定的水位,就说明进排水系统有故障,此故障由控制系统测知并通过警告程序发出警告信号,提醒操作者进行人工排除。 (4)脱水期间安全保护和防振动功能。洗衣机脱水期间,若打开机盖时,洗衣机就会自动停止脱水操作。脱水期间,如果出现衣物缠绕引起脱水桶重心偏移而不平衡,洗衣机也会自动停止脱水,以免振动过大,待人工处理后恢复工作。
7
(5)间歇驱动方式。脱水期间采取间歇驱动方式,以便节能。本系统要求驱动5s,间歇2s,间歇期间靠惯性力使脱水桶保持高速旋转。
(6)暂停功能 。不管洗衣机工作在什么状态,当按下暂停键时,洗衣机需暂停工作,待启动键按下后洗衣机又能按原来所选择的工作方式继续工作。 (7)声光显示功能。洗衣机各种工作方式的选择和各种工作状态均有声光提示和显示。
1.3系统解决的问题和拟采用的研究手段
本课题主要是研究基于单片机的全自动洗衣机控制系统软硬件设计。首先要熟悉设计内容,学习掌握单片机的使用方法;精确分析并设计出该控制系统的全部工作流程图,确定输入、输出的名称功能;设计系统软件并在PC机上仿真模拟调试;设计并制作硬件模拟电路盘,接电模拟调试;软硬件联合调试,实现全部功能,完成设计并撰写毕业论文。
针对课题采取以下研究方法及步骤: 1、各种元器件以及芯片的选择 2、硬件电路的设计
3、用汇编语言完成软件方面的设计 4、结合电路对程序进行调试
5、找出程序中的错误,改正这些错误
1.4本文的工作
本文的工作就是介绍如何做一个全自动洗衣机,第2部分给出相关方案的研
8
究为后面程序设计打下基础,第3部分给出了系统的总体设计,对程序的模块分析、设计思想第4部分给出详细的实现过程和重要的技术实现。最后给出了我对这个设计一个看法,这个系统有些什么特色,还有展望之类的。
9
第二章 系统的总体设计
2.1核心单元电路
洗衣机是一种在家庭中不可缺少的家用电器,发展非常快,全自动式洗衣机因使用方便得到大家的青睐,全自动即进水、洗涤、漂洗、摔干等一系列过程自动完成,控制器通常设有几种洗涤程序,对不同的衣物可供用户选择。那么我们先来说说它的硬件设计。
硬件电路框图如图1所示,在该硬件系统中主要由核心单元电路、进水阀控制电路、排水阀控制电路、电机转动控制电路、状态显示电路、特殊功能电路等单元组成。
状态显示电路 CPU 特殊功能电路 (AT892051) 电源电路 排水阀电路 进水阀电路 电机控制电路
图1
10
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单芯片一般分为三个版本:
11
1. 单芯片内部不包含程序记忆体,称为ROMless。 2. 单芯片内部已内建ROM。 3. 单芯片内部已内建EPROM。
其中(2)和(3)的区别在于(2)的单芯片只可烧录一下,较适合于程序已完成,用 于大量生产,因为其价格较便宜,可节省产品的成本,(3)的单芯片适合用于 程序发展阶段,因为需要重复的更改程序,而内含有EPROM的MCS-51,只 需要使用紫外线清除器,就可把MCS-51的程序记忆体清为空白,达到重复烧录的特性。
INTEL公司出产的各版本MCS-51编号如下:
内部程序内存大小 ROM容量 None 4K*8ROM 4K*8ROM 4K*8EPROM 4K*8EPROM 4K*8EPROM None 8K*8ROM 8K*8EPROM RAM容量 128*8RAM 128*8RAM 128*8RAM 128*8RAM 128*8RAM 128*8RAM 256*8RAM 256*8RAM 256*8RAM 组件编号 8031AH 8051AH 8051AHP 8751H 8751H-8 8751BH 8032AH 8052AH 8752BH 其特性如下:
定时器 2*16Bit 2*16Bit 2*16Bit 2*16Bit 2*16Bit 2*16Bit 3*16Bit 3*16Bit 3*16Bit 中断个数 5 5 5 5 5 5 6 6 6 1. 是一个8位的MCU。 2. 具有布尔代数的运算能力。
3. 4个8位Port,共有32条双向且可独立被控制的I/O Port。
12
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 都值得消费者注意。为了方便让读者选购ATMEL
13
公司出产的MCS-51,以下 介绍其IC编号所代表的意义:
ATMEL公司生产的各版本MCS-51编号如下:
数据存储器容量(Data Memory Bytes) 64 RAM 128 RAM 128 RAM 256 RAM 256 RAM 256 RAM 2K EEPROM 256 RAM 组件编号 程序内存(Program Memory) 1K Flash 2K Flash 4K Flash 8K Flash 20K Flash 8K Flash 12K Flash 16bit定时器(16bit timer) 1 2 2 3 3 3 3 AT89C1051 AT89C2051 AT89C51 AT89C32 AT89C55 AT89S8252 AT89S53 由于AT89C51/52/55是一般较为通用的MCU,我们就把它与8051/8052做功能上的比较,其所增加功能如下 :
14
1. 具有4K/8K Bytes可重复规划的快闪记忆体(Reprogrammable Flash Memory),可写入/抹除1000次以上,程序可保存10年以上。 2. 操作频率:0MHz~24MHz(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家族介绍:
15
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编号如下:
16
组件编号 DS80C310 DS80C323 DS87C520 DS83C530 DS87C530 DS87C550 程序内存(Program Memory) NO NO 16KB EPROM 16KB EPROM 16KB EPROM 8KB EPROM 定时器/计数器 3 3+WDT 3+WDT 3+WDT 3+WDT 3+WDT 串联I/O (Serial I/O) 1 2 2 2 2 2 WDT:看门狗计时器 Serial I/O:UART
一般常用的为DS80C310和DS80C320,我们就把它与80C32做功能上的比较,其所增加功能如下 : DS80C310:
1. 有两组DPTR,一般只有一组。
2. 振荡器频率范围:0~33MHZ,一个机械周期需4个振荡周期,一般为12个振荡周期。
3. 可变机械周期的MOVX指令,用来配合ROM或周边组件的读取速度。 4. 有6个外部中断,一般只有/INT0和/INT1。
5. 有两层优先权的10个中断,因为外部中断多了4个。 DS80C320除了具有DS80C310外,还增加了一些功能: 1. 有13个中断源,其中包含了6个外部中断。 2. 有看门狗计时器(Watchdog timer)的功能。
17
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控制功能,这让使用者有更多选择的空间,如果读者有兴趣也可上网(www.microchip.com)查看该公司的资料,而且也可向该公司索取资料;另外还有Motrola公司所出产68HC05,该公司所出产的微控器在工业界更是占有一席之地,其使用者和8051相比是不相上下;ATMEL公司目前也相当积
18
极在推动AVR微控器,而且它还提供整套发展工具给学校做实验,未来的发展值得注意。
综合考虑系统扩展方便性、系统工作可靠性、性价比等因素,系统主机芯片采用ATMEL公司所出产的ATC89C51。
全自动洗衣机的控制逻辑电路如图2所示。它由单片机AT89C2051为核心加上有关集成电路及元器件组成。从图中看出,这个全自动洗衣机控制逻辑电路相当简单。
全自动洗衣机的工作部件有3个,这就是电机.进水阀和排水阀。电机是洗衣机的动力源,它的转动带动洗衣桶和波轮的转动,从而时现对衣物的洗涤。进水阀用于控制洗衣机的进水量。排水阀用于控制排水。电机在脱水时还高速旋转带动衣物脱水。
电机的状态有3种,即正转.反转及停止状态。电机一般工作在这三种状态的不断转换之中,从而实现洗涤。但在脱水时,只工作在正转高速状态。 进水阀和派排水阀则只有开.关这两种状态。
从图2的控制电路中可以看出:AT89C2051的P1端口中的P1.0~P1.3共四条I/O线通过4块SP111O新型固态继电器分别直接驱动洗衣机的这些工作部件。SP1110是一种固态继电器,内有发光二极管及光触发双向可控硅,10~50mA输入电流即可使双向可控硅完全导通,输出端通态电流为3A(平均值),浪通电流15A(不重复)。之所以选用这个器件,是因为它一方面可使电路进一部简化,另一方面还可使强.弱两类电完全隔离,保证主板的安全。
74LSO5为六反相器,用其作为中间反相器,其中的4个反相器可分别驱动4个SP1110继电器,剩余两反相器用于驱动LED5和LED6。
19
图2
20
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键循环选择。洗衣机的工作状态可通过LED7~LED9进行显示。脱水期间系统在响应开盖或不平衡终止后,CPU采取软件查询的方式方式通过P1.6线对盖开关进行监测以确定洗衣机是否继续进行脱水操作。
21
2.2工作控制程序设计
由AT89C2051控制的全自动洗衣机的工作程序框图如图3所示。从程序框图可以看出,这个控制程序也较为简单,所以,占用的存储器容量不大。
上电复位 初始化 P3.0,P3.1:1,1 扫描K1,K2,N Y 判断57H 相应工作程序工作时间限制Y 结束 故障处理程序 人工解除
从程序框图中可以看出程序的基本流程,系统上电复位后,首先进行初始化,默认标准洗衣工作程序和强洗方式,然后扫描K1,K2和启动键K4,这时洗衣机
22
处于待命状态。通过K1,K2可分别修改强/弱洗方式和洗衣工作程序。扫描过程中当发现启动键K4按下时,洗衣机即从待命状态进入工作状态。
洗衣机进入工作程序后,系统首先根据RAM中57H单元的特征字判断洗衣机的洗衣工作程序,若特征字为:01H为标准程序,02H为经济程序。进水操作P1.0置位驱动进水阀开启。进水期间系统不断检测水位开关K5的状态,当检测到K5闭合时,说明进水以达到预定水位。若在规定的4min极限内为检测到K5闭合,说明进水系统发生故障,此时洗衣机退出工作状态,程序跳转到FW为标号地址的故障处理程序段进行报警,其处理方法是:将P1.0~P1.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,然后脱水结
23
束。脱水结束后系统通过一条判断指令判断整个洗衣工作是否结束。其原理:是洗衣机在每次洗涤或漂洗工作环节结束之后,洗衣工作程序标志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口传输到硬件调试设备中(这个设备叫仿真器),仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出),仿真器可以接入实际的电路中,然后与单片机一样执行。同时,仿真器也会返回单片机内部内存与时序等情况给计算机的辅助软件,这样 就可以在软件里看到真实的执行情况。不仅如此,还可以通过计算
24
机断的软件实现单步、全速、运行到光标的常规调试手段。总结一下两者的不同与相同: 相同点:
1:都可以检测单片机执行时序下的片内资源情况(如R0-R7 、PC计数器等) 2:可以实现断点、全速、单步、运行到光标等常规调试手段。 不同点:
1:软件调试无法实现直接连接硬件电路的调试,只能通过软件窗口虚拟硬件端口的电平输出情况而仿真器可以实现与单片机一样的功能的硬件连接,从某种意义上说这个时候仿真器就是一个单片机。
2:软件调试执行单片机指令的时间无法与真实的单片机执行时间画上等号,也就是说如果一个程序在单片机中要执行300us,可能在计算机中执行的时间可能会比这个长很多,而且无法预料。仿真器则是完全与单片机相同。
3:软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成,如果是一个协调系统,可能还需要借助几个单片机仿真器和相关的仪器才能解决。
4:软件仿真不需要额外花钱,而硬件需要,一个仿真器一般都上千元,同时可以仿真许多种单片机的工作。
Keil uVision2是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言。
这里我们仅仅介绍 Keil uVision2 的简单使用,更详细的使用方法见本光盘\\单片机软件\\Keil c51\\Keil书籍与资料目录中的内容。 下面将具体介绍如何使用Keil uVision 来软件调试单片机程序。
25
首先:打开一个已经编译通过的单片机项目(如何新建与编译单片机程序项目这
里省略)
选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试
26
接下来看到的窗口就是调试窗口了:
下面具体说说相关子窗口的功能: 1:左侧的ProjectWorkspace
Regs是片内内存的相关情况值,Sys是系统一些累加器、计数器等。Regs很简单就不多说。具体介绍一下Sys
a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。
b 寄存器B ,主要用于乘法和除法操作
Sp sp_max
27
dptr 数据指针DPTR PC $
states 执行指令的数量
sec 执行指令的时间累计(单位 秒)
psw 程序状态标志寄存器PSW,八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。
p 奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。 f1
ov 溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。 rs f0
ac 辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。
cy 进位标志CY(PSW7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0 由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)
根据指令执行的不同上述值会有相应的变化,也正是为了监测这些在单片机中看不到的值而达到调试的目的。
28
虽然软件调试无法实现硬件调试那样的信号输出,但是可以通过软件窗口的模拟监测输出信号的高低电平以及单片机相关端口的变化。
上图所示,Port0,Port1,Port2,Port3就对应于单片机的四个P0,P1,P2,P3 口,共32个针脚。
这是全部打开后的效果。
有了输出,就应该有输入的设置:
29
这个按钮可以打开输入预设窗口,输入值窗口如下:
选择不同的Int Source 会有不同的 Selected Interrupt的变化,通过选择与赋值达到模拟输入的目的。 接下来是串口的设置:
30
这是设置串口的窗口 监测窗口数据还有一个窗口:
点击:将会出现,这个窗口可以监测从串口输出的ASCII代码。
关于串口的问题,以后我会有专门的文章介绍,这里就这样大致介绍一下。 最下面还有一个定时器的设置:
3个定时器与一个看门狗,设置定时器的数量与工程选择的单片机种类有关系,如果是8051就只有2个定时器,如果是选择8052 就有3个定时器了。 定时器的设置很简单:
31
下面再介绍一下一些常用的调试按钮:
就是Reset ,相当于单片机最简系统的复位按
钮,按下后,所有的系统状态将变成初始状态
这是全速运行,相当于单片机的通电执行。
这个就是停止全速运行的按钮。
step into 逐语句;进入并单步执行;单步执行
step over 逐过程 step out 跳出 执行到断点处 可以在代码所在窗口的最左边右击按钮插入一个断点,如下图所示:
32
有了这个功能,你就可以控制监控要执行到某位置时系统的状态。
总之利用KEIL丰富的调试功能可以看到洗衣机执行程序的全部操作。
33
第三章系统的实现和关键技术
3.1硬件的选择与说明
3.1.1 AT89C2051
AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读Flash程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。
AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。 同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。
AT89C2051是ATMEL公司生产的带2K字节闪速可编程可擦除只读存储器(EEPROM)的8位单片机,它具有如下主要特性: ·和MCS-51产品的兼容 ·2K字节可重编程闪速存储器 ·耐久性:1,000写/擦除周期 ·2.7V~6V的操作范围 ·全静态操作:0Hz~24MHz
34
·两级加密程序存储器 ·128×8位内部RAM ·15根可编程I/O引线 ·两个16位定时器/计数器 ·六个中断源
·可编程串行UART通道 ·直接LED驱动输出 ·片内模拟比较器 ·低功耗空载和掉电保护
图4
AT89C2051的结构框图
AT89C2051是一带有2K字节闪速可编程可擦除只读存储体(EEPROM)的低电压,高性能8位CMOS微型计算机。如图5所示。它采用ATMEL的高密非易失存储技术制造并和工业标准MCS—51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和闪速存储器,ATMEL AT89C2051是一强劲的微型计算机,它对许多嵌入式控制应用提供一高度灵活和成本低的解决办法。
35
图5 AT89C2051内部结构图
此外,从AT89C2051内部结构图也可看出,其内部结构与8051内部结构基本一致(除模拟比较器外),引脚RST、XTAL1、XTAL2的特性和外部连接电路也完
36
全与51系列单片机相应引脚一致,但P1口、P3口有其独特之处。 AT89C2051的引脚说明
AT89C2051是一个有20个引脚的芯片,引脚如图4所示,与8051内部结构进行对比可发现,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚,因而芯片尺寸有所减少。 AT89C2051芯片的20个引脚功能为: 1. Vcc:电源电压。 2. GND:地。
3. P1口:P1口是一8位双向I/O口。口引脚P1.2~P1.7提供内部上拉电阻。 P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。当P1口引脚写入“1”时,其可用作输入端。当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流(IIL)。P1口还在闪速编程和程序校验期间接收代码数据。
4. P3口:P3口的P3.0~P3.5、P3.7是带有内部上拉电阻的七个双向I/0引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。P3口缓冲器可吸收20mA电流。当P3口引脚写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口引脚将用上拉电阻而流出电流(IIL)。 P3口还用于实现AT89C2051的各种功能,如下表所示。P3口还接收一些用于闪速存储器编程和程序校验的控制信号。
5. RST:复位输入。RST一旦变成高电平,所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。
6. XTAL1:作为振荡器反相放大器的输入和内部时钟发生器的输入。 7. XTAL2:作为振荡器反相放大器的输出。 P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5
功能 RXD(串行输入端口) TXD(串行输出端口) INT0(外中断0) INT1(外中断1) TO(定时器0外部输T1(定时器1外部输
37
从上述引脚说明可看出,AT89C2051没有提供外部扩展存储器与I/O设备所需的地址、数据、控制信号,因此利用AT89C2051构成的单片机应用系统不能在AT89C2051之外扩展存储器或I/O设备,也即AT89C2051本身即构成了最小单片机系统。
(2)固态继电器的技术参数及选用 1)技术参数
1、输入电压范围:在环境温度25'c下,固态继电器能够工作的输入电压范围。 2、输入电流:在输入电压范围内某一特定电压对应的输入电流值。 3、接通电压:在输入端加该电压或大于该电压值时,输出端确保导通。 4、关断电压:在输入端加该电压或小于该电压值时,输出端确保导通。 5、反极性电压:能够加在继电器输入端上,而不应起永久性破坏的最大允许反向电压。
6、额定输出电流:环境25'C时的最大稳态工作电流。 7、额定输出电压:能够承受的最大负载工作电压。
8、输出电压降:当继电器处于导通时,在额定输出电流下测得的输出端电压。 9、输出漏电流:当继电器处于关断状态施加额定输出电压时,流经负载的电流值。
10、接通时间:当继电器接通时,加输入电压到接通电压开始至输出达到其电压最终变化的90%为止之间的时间间隔。
11、关断时间:当继电器关断时,切除输入电压到关断电压开始至输出达到其电压最终变化的10%为止之间的时间间隔。
12、过零电压:对交流过零型固态继电器,输入端加入额定电压,能使继电器输出端导通的最大起始电压。
13、最大浪涌电压:继电器能承受的而不致造成永久性损坏的非重复浪涌(或过载)电流。
14、电器系统峰值:在继电器工作状态继电器输出端能够承受的最大迭加的瞬时峰值击穿电压。
15、电压指数上升率dv/dt:继电器的输出元件能够承受的不使其导通的电压上升率。
16、工作温度:继电器安规范安装或不安装散热板时,其正常工作的环境温度范
38
围。
3.1.2 固态继电器的选用 1、输入特性
为了保证固态继电器的正常工作,必须考虑输入条件,通常输入电压为阶跃函数,然而,如果输入电压是斜坡,就会出现半周循环现象,出现这种现象是由于开关半导体器件在正,反触发时不完全对称,因此,如果输入电压斜坡上升,这种开关在负载为某一极性时就可能处罚,而当负载电压为反极性时就可能不处罚,而出现半周导通现象,这种现象将持续到输入量足以使输出完全导通为止。输入端出现的瞬态,可以使继电器误动,尤其是当继电器响应时间等于或小于噪声脉冲持续时间时,继电器就会导通,对输入信号进行滤波有助于减少这种现象。当反极性(反向输入)电压适用时,继电器输入端可以承受最大输入电压值或其它规定值的反极性电压,超过该值,可能造成SSR的永久性破坏,当反极性电压不适用时,或继电器规定不能反向施加输入电压时,使用时一定注意,不能使输入电压反向。 2 输出特性
SSR给出的最大额定输出电流一般指常温下或常温到高温下的最大额定输出电流而且对大于10A的继电器还指带有规定散热器时的最大额定输出电流。对功率SSR,当工作温度上升或不带散热器时,最大输出电流相应下降。当负载很轻即负载电阻或阻抗很大时,接通时的输出电流下降,该电流与关断状态下的漏电流之间的比值下降。对交流SSR,这时的漏电流可能会使接触器嗡嗡作响,或使电机继续运转;当输出电流小于最小额定电流时,SSR的直流失调电压和波形失真都会超过规定值,输出电流过小,也会使输出可控硅不能在规定的零电压范围内导通。为了改善这种状况,可以在负载两端并联一定的电阻,RC或灯泡。SSR的许多负载如灯负载,电动机负载,感性和容性负载,在接通时的过渡过程会形成浪涌电流,由于散热不及,浪涌电流是使固态继电器损坏的最常见的原因。为了适应这种情况,SSR根据其内部电路结构和输出器件特性,一般均给出了过负载(或浪涌电流)参数倡议额定输出电流(最大值)的倍数,脉冲(浪涌)持续时间,循环周期和次数来表示。一般,直流SSR的过负载(浪涌)额定值远小于同功率的交流SSR。另外,SSR的性质还与接通时的电流上升率di/dt密切相关。di/dt超过某一值会使SSR的可控硅输出器件损坏。为避免上述浪涌电流对SSR的损坏,
39
可不同程度的降额使用SSR,必要时,可在负载电路中串联电阻,将浪涌电流和可能发生的短路电流限制在SSR所允许的过负载范围内,也可利用快速熔断的保险丝来保护SSR。对于SSR,特别对交流SSR,电压指数上升率是一个重要参数。这是因为当SSR关断时,若输出端电压上升率超过SSR规定的dv/dt,可能使SSR误接通,严重时会造成SSR的损坏一般SSR规定的dv/dt为100v/us,也有的达200v/us。交流SSR多在电流过零时判断,对感性和容性负载,在电流达零并关断时,线电压并不为零。功率因数cosψ越小,这个电压越大,在关断时,这一较大的电压将以较大的上升率加在SSR的输出端。另外,SSR关断时,感性负载上会产生反电势,该反电势同电压一起形成的过电压将加在SSR的输出端。在使用SSR反转电容分相电机和反接未停转的三相电机时,都可能在SSR的输出端产生二倍于线电压的过压效应。dv/dt和过电压是使SSR失效的重要模式,因此要认真对待。一般,在可能产生二倍线电压效应的场合应选择最大额定输出电压高于二倍线电压的SSR。 在dv/dt和过电压严重的线路中,一般也应使SSR的最大额定输出电压高于二倍线电压。对一般的感性负载,SSR的最大额定输出电压也应为线电压的1。5倍。另外,可以在SSR输出端并联RC吸收回路或其它瞬态抑制回路。
3.1.3 74LS05反相器六非门(OC门):
3.1.4 双2-4译码器 74LS139
40
输入 输出 使能 E 1 0 0 0 0
3.1.5 TC4013BP
选择 B A X X 0 0 0 1 1 0 1 1 输入 C 1 1 0 × × × D 0 1 R 0 0 S 0 0 0 0 1 1 Y0 Y1 Y2 Y3 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 输出 Q 0 1 Q 0 1 1 ˉQ 1 0 ˉQ 1 0 1 × 0 × 1 × 0 × 1
3.1.6 电机 1)步进电机
步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
上个世纪就出现了步进电动机,它是一种可以自由回转的电磁铁,动作原理和今天的反应式步进电动机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展很快,同时也使得步进电动机的技术得到了长足的进步。到了80年代后,由于廉价的微型计算机以
41
多功能的姿态出现,步进电动机的控制方式更加灵活多样。原来的步进电机控制系统采用分立元件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。步进电机靠一种叫环形分配器的电子开关器件,通过功率放大器使励磁绕组按照顺序轮流接通直流电源。由于励磁绕组在空间中按一定的规律排列,轮流和直流电源接通后,就会在空间形成一种阶跃变化的旋转磁场,使转子步进式的转动,随着脉冲频率的增高,转速就会增大。步进电机的旋转同时与相数、分配数、转子齿轮数有关。
现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。
1)常用单相交流感应电动机种类
在家用电器设备中,常配有小型单相交流感应电动机。交流感应电动机因应用类别的差异,一般可分为分相式电动机、电容启动式电动机、永久分相式电容电动机、罩极式电动机、永磁直流电动机及交直流电动机等类型。
一般的三相交流感应电动机在接通三相交流电后,电机定子绕组通过交变电流后产生旋转磁场并感应转子,从而使转子产生电动势,并相互作用而形成转矩,使转子转动。但单相交流感应电动机,只能产生极性和强度交替变化的磁场,不能产生旋转磁场,因此单相交流电动机必须另外设计使它产生旋转磁场,转子才能转动, 所以常见单相交流电机有分相启动式、罩极式、电容启动式等种类。 1、分相启动式电动机
分相式电动机广泛应用于电冰箱、洗衣机、空调等家用电器中。该电机有一个鼠笼式转子和主、副两个定子绕组。两个绕组相差一个很大的相位角,使副绕组中的电流和磁通达到最大值的时间比主绕组早一些,因而能产生一个环绕定子旋转的磁通。这个旋转磁通切割转子上的导体,使转子导体感应一个较大的电流,电流所产生的磁通与定子磁通相互作用,转子便产生启动转矩。当电机一旦启动,转速上升至额定转速70%时,离心开关脱开副绕组即断电,电机即可正常运转。
42
2、罩极式电动机
罩极式单相交流电动机,它的结构简单,其电气性能略差于其他单相电机,但由于制作成本低,运行噪声较小,对电器设备干扰小,所以被广泛应用在电风扇、电吹风、吸尘器等小型家用电器中。罩极式电动机只有主绕组,没有副绕级(启动绕组),它在电机定子的两极处各设有一副短路环,也称为电极罩极圈。当电动机通电后,主磁极部分的磁场产生的脉动磁场感应短路而产生二次电流,从而使磁极上被罩部分的磁场,比未罩住部分的磁场滞后些,因而磁极构成旋转磁场,电动机转子便旋转启动工作。罩极式单相电动机还有一个特点,即可以很方便地转换成二极或四极转速,以适应不同转速电器配套使用。 3、电容式启动电动机
该类电动机可分为电容分相启动电机和永久分相电容电机。这种电机结构简单,启动快速,转速稳定,被广泛应用在电风扇、排风扇、抽油烟机等家用电器中。电容分相式电动机在定子绕组上设有主绕组和副绕组(启动绕组),并在启动绕组中串联大容量启动电容器,使通电后主、副绕组的电相角成90°,从而能产生较大的启动转矩,使转子启动运转。
对于永久分相电容电动机来说,均与启动绕组串接。由于永久分相电机其启动的转矩较小,因此很适于排风机、抽风机等要求启动力矩低的电器设备中应用。电容式启动电动机,由于其运行绕组分正、反相绕制设定,所以只要切换运行绕组和启动绕组的串接方向,即可方便实现电机逆、顺方向运转。 4、交、直流两用电动机
一般常用单相交流电动机,在交流50Hz电源中运行时,电动机转速较高的也只能达每分钟3000转。而交直流两用电动机在交流或直流供电下,其电机转速可高达20000转,同时其电机的输出启动力矩也大,所以尽管电机体积小,但由于转速高输出功率大,因此交直流两用电动机在洗衣机、吸尘器、排风扇等家用电器中得以应用。
交、直流两用电动机的内在结构与单纯直流电机无大差异,均由电机电刷经换向器将电流输入电枢绕组,其磁场绕组与电枢绕组构成串联形式。为了充分减少转子高速运行时电刷与换向器间产生的电火花干扰,而将电机的磁场线圈制成左右两只,分别串联在电枢两侧。两用电机的转向切换很方便,只要切换开关将磁场线圈反接,即能实现电机转子的逆转或顺转。
43
在家用电器电机类中还有一种直流微型电动机。该电机在录音机、随身听、录像机、打印机、传真机等家用电器中广泛应用。直流微型电机由于定子绕组和转子绕组之间的串接形式不同,又可分为并激、串激、复激等几种类别。
应用在家用电器中的电机,其定子绕组的转子,绕组之间的串接一般采用并激形式,即电机的定子磁场线圈与电枢绕组线圈并联后接到电源上。当通电后电机可保持磁场恒定,并利用电枢电路控制电机转速。这种直流电机的最大特点是当负载产生波动变化时,电机的转速保持定速状态。
此外,在直流电动机中还有一种结构更为简单、用在玩具上的电机,这种电机是用永久磁铁作固定磁场的电动机,在电子玩具、电动剃须刀、微型按摩器等日用小电器中得以广泛应用。
44
3.2汇编程序与模拟软件
上电复位 初始化 P3.0,P3.1:1,1 扫描K1,K2,N Y 判断57H 相应工作程序工作时间限制Y 结束 故障处理程序 人工解除 3.2.1 主程序:
根据上图我们得到程序源代码如下:
P3.0,P3.1为“11”时LED1亮,指示标准程序;为“10”时LED2亮,指示经济程序;为“01”时LED3亮,指示单独程序;为“00”时LED4亮,指示排水程序。CPU的P3.7线用于驱动蜂鸣器发出各种告警信号。系统首先根据RAM中57H单元的特征字判断洗衣机的洗衣工作程序,若特征字为:01H为标准程序,02H为经济程序。进水操作P1.0置位驱动进水阀开启。进水期间系统不断检测水位
45
开关K5的状态,当检测到K5闭合时,说明进水以达到预定水位。若在规定的4min极限内为检测到K5闭合,说明进水系统发生故障,此时洗衣机退出工作状态,程序跳转到FW为标号地址的故障处理程序段进行报警,其处理方法是:将P1.0~P1.3位全部置“0”,中止洗衣机的各中操作,然后洗衣机以响1s`停2s的规律不断地发出报警信号,直到人工干预即按下K1键后为止(按下K1后,程序跳转回主程起始地址,洗衣机又回到待命的初始状态)。P1.3,P1.2为“00”时电机间歇,为“01”时正转,为“10”时反转。洗涤时间为6min.洗涤结束后,系统通过一条判断指令,判断是否排水。排水结束后,洗衣机接着执行脱水操作,P1.1维持置位状态,保持排水阀开启,P1.2按5s置位`2s 清0的规律连续驱动电机高速旋转2min,然后脱水结束.
ORG 0000H; 初始化 LJMP MAIN; ORG 000BH; LJMP DS0; ORG 0003H; LJMP ZD0; ORG 0013H; LJMP ZD1;
MAIN: MOV 57H,#01H; 主程序 MOV 58H,#01H; MOV IP,#0FH; MOV TCON,#0FH; MOV IE,#83H; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H;
LOOP1:MOV A,P1; 扫描键盘 MOV R0,A; ANL A,#10H;
46
JZ K1; MOV A,R0;
ANL A,#20H;
JZ K2; SJMP K2; LOOP2:MOV C,P3.5; ANL C,P3.5; JNC K4; SJMP LOOP1; K1:INC 58H; MOV R3,58H; CJNE R3,#03H,LOOP3; MOV 58H,#01H; LOOP3:SJMP LOOP1; K2:INC 57H; MOV R4,57H; CJNE R4,#05H,LOOP4; MOV 57H,#01H; LOOP4:SJMP LOOP1; K4:MOV A,58H; SWAP A; ORL A,57H; MOV R1,A;
CJNE R1,#11H,LOOP05;
SJMP LOOP00;
LOOP05:LJMP LOOP5;
LOOP00:SETB P1.7; 强洗 SETB P3.0; 标准程序
SETB P3.1;
SETB P1.0; 进水
47
MOV TMOD,#01H; MOV TH0,#0B0H; MOV TL0,#3CH; MOV IE,#83H; SETB TR0;
LOOP13:MOV C,P3.5; 是否启动 ANL C,P3.5; JNC JSWB; MOV R4,72H;
CJNE R4,#04H,LOOP13; LJMP FW; JSWB: CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0;
CLR P1.0; 进水结束 LOOP14:CLR P1.3; 洗涤 SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; SETB P1.3; LJMP YS1S;
48
LJMP YS1S; LJMP YS1S; LJMP YS1S; MOV R4,72H;
CJNE R4,#06H,LOOP14; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR1; SETB P1.0; LOOP15:MOV R4,72H;
CJNE R4,#04H,LOOP15; CLR P1.0; CLR P1.2; CLR P1.3; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; SETB P1.1; LOOP16:MOV R4,72H;
CJNE R4,#02H,LOOP16;
49
TS:CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#87H; SETB TR0;
LOOP17:SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; LJMP YS1S; MOV R4,72H;
CJNE R4,#02H,LOOP17; CLR P1.2;
LJMP MAIN;
LOOP5:CJNE R1,#12H,LOOP06; SJMP LOOP04;
LOOP06:LJMP LOOP6;
LOOP04:SETB P1.7; SETB P3.0;
CLR P3.1;
SETB P1.0; MOV TMOD,#01H; MOV TH0,#0B0H;
50
MOV TL0,#03CH; MOV IE,#83H; SETB TR0; LOOP18:MOV C,P3.5; ANL C,P3.5; JNC JSWB1; MOV R4,72H;
CJNE R4,#04H,LOOP18; LJMP FW; JSWB1: CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; CLR P1.0; LOOP19:CLR P1.3; SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; SETB P1.3; LJMP YS1S; LJMP YS1S; LJMP YS1S;
51
LJMP YS1S; MOV R4,72H;
CJNE R4,#06H,LOOP19; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; SETB P1.0; LOOP20:MOV R4,72H;
CJNE R4,#04H,LOOP20; CLR P1.0; CLR P1.2; CLR P1.3; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; LJMP MAIN;
LOOP6:CJNE R1,#13H,LOOP7; SETB P1.7; SETB P3.0;
CLR P3.1;
SETB P1.0; MOV TMOD,#01H; MOV TH0,#0B0H; MOV TL0,#03CH;
52
MOV IE,#83H; SETB TR0; LOOP21:MOV C,P3.5; ANL C,P3.5; JNC JSWB2; MOV R4,72H;
CJNE R4,#04H,LOOP21; LJMP FW; JSWB2: CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; CLR P1.0; LOOP22:CLR P1.3; SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; SETB P1.3; LJMP YS1S; LJMP YS1S; LJMP YS1S; LJMP YS1S;
53
MOV R4,72H;
CJNE R4,#06H,LOOP22; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H;
LJMP MAIN
LOOP7:CJNE R1,#14H,LOOP8; LJMP TS;
LOOP8:CJNE R1,#21H,LOOP09; SJMP LOOP02; LOOP09:LJMP LOOP9; LOOP02: SETB P1.7; SETB P3.0;
SETB P3.1;
SETB P1.0; MOV TMOD,#01H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; LOOP23:MOV C,P3.5; ANL C,P3.5; JNC JSWB3; MOV R4,72H;
CJNE R4,#04H,LOOP23; LJMP FW; JSWB3: CLR TR0; MOV 70H,#00H; MOV 71H,#00H;
54
MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; CLR P1.0; LOOP24:CLR P1.3; SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; LJMP YS1S; SETB P1.3; LJMP YS1S; LJMP YS1S; LJMP YS1S; MOV R4,72H;
CJNE R4,#06H,LOOP24; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; SETB P1.0; LOOP25:MOV R4,72H;
55
CJNE R4,#04H,LOOP25; CLR P1.0; 排水 CLR P1.2; CLR P1.3; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; SETB P1.1; LOOP26:MOV R4,72H;
CJNE R4,#02H,LOOP26;
LJMP TS;
LOOP9:CJNE R1,#22H,LOOP010; SJMP LOOP03; LOOP010:LJMP LOOP10; LOOP03:SETB P1.7; SETB P3.0;
CLR P3.1;
SETB P1.0; MOV TMOD,#01H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; LOOP27:MOV C,P3.5; ANL C,P3.5;
56
JNC JSWB4; MOV R4,72H;
CJNE R4,#04H,LOOP27; LJMP FW; JSWB4: CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; CLR P1.0; LOOP28:CLR P1.3; SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; LJMP YS1S; SETB P1.3; LJMP YS1S; LJMP YS1S; LJMP YS1S; MOV R4,72H; CJNE R4,#06H,LOOP28; CLR TR0; MOV 70H,#00H; MOV 71H,#00H;
57
MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; SETB P1.0; LOOP29:MOV R4,72H;
CJNE R4,#04H,LOOP29; CLR P1.0; CLR P1.2; CLR P1.3; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; LJMP MAIN;
LOOP10:CJNE R1,#23H,LOOP11; SETB P1.7; SETB P3.0;
CLR P3.1;
SETB P1.0; MOV TMOD,#01H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; LOOP30:MOV C,P3.5; ANL C,P3.5; JNC JSWB5; MOV R4,72H;
58
CJNE R4,#04H,LOOP30; LJMP FW; JSWB5: CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; MOV IE,#83H; SETB TR0; CLR P1.0; LOOP31:CLR P1.3; SETB P1.2; LJMP YS1S; LJMP YS1S; LJMP YS1S; CLR P1.2; LJMP YS1S; LJMP YS1S; SETB P1.3; LJMP YS1S; LJMP YS1S; LJMP YS1S; MOV R4,72H; CJNE R4,#06H,LOOP31; CLR TR0; MOV 70H,#00H; MOV 71H,#00H; MOV 72H,#00H;
LJMP MAIN
59
LOOP11:CJNE R1,#24H,LOOP12; LJMP TS; LOOP12:LJMP LOOP1; FW:MOV C,P1.4; ANL C,P1.4; JNC TZ00;
ANL P1,#0F0H;
SETB P3.7; 报警 LJMP YS1S; CLR P3.7;
LJMP YS1S;
LJMP YS1S;
SJMP FW;
TZ00:LJMP LOOP1;
YS1S:MOV 62H,#64H; 延时1S YS10MS:MOV 61H,#0FAH; YS10MS02:MOV 60H,#14H; DJNZ 60H,YS10MS02; DJNZ 61H,YS10MS; DJNZ 62H,YS1S;
RET
ZD0: MOV C,P3.5; ANL C,P3.5; JNC LOOP;
SJMP ZD0;
LOOP:RETI; ZD1: CLR P1.2; RETI; DS0: INC 70H; MOV R2,70H;
60
CJNE R2,#0AH,SJ1; INC 71H; MOV 70H,#00H; MOV R2,71H; CJNE R2,#3CH,SJ2; INC 72H; MOV 71H,#00H; MOV TH0,#0B0H; MOV TL0,#03CH; RETI
SJ1:MOV TH0,#0B0H;
MOV TL0,#03CH;
RETI
SJ2:MOV TH0,#0B0H; MOV TL0,#03CH;
RETI
END
3.2.2 KEIL的使用方法 keil C51 v6.12 的安装:
先运行光盘中单片机软件\\setup\\setup.exe 安装程序,选择安装“Eval Version”版进行安装。一直点击“Yes”或“Next”,直到“Finish”完成。 之后运行同目录中的 Keil uv2 汉化安装.exe 安装汉化程序。 安装好后,在桌
面上会产生快捷图标,如右图: keil C51 v6.12 的使用:
61
点击桌面快捷图标,可以直接进入主画面:
现在,我们来做个实际程序,实际体验一下从编辑源程序到程序调试的全过程。 这里让我们做一个 让单片机 P0 口所驱动的 LED 灯隔一个亮隔一个灭 的程序在Keil系统中,每做个独立的程序,都视为工程(或者叫项目)。首先
62
从菜但的“工程”中“新建工程...”,建立我们将要做的工程项目:
新建的工程要起个与工程项目意义一致的名字,可以是中文名;我们这里的程序是实验测试程序,所以起的名字为 Test ,并将 Test 工程“保存”到
C:\\Keil 下:
接下来,Keil环境要求我们为 Test 工程选择一个单片机型号;我们选择 Atmel 公司的 89C51(虽然我们使用的是89S51,但由于89S51与89C51内、外
63
部结构完全一样,所以这里依然选择“89C51”)。“确定”后工程项目就算建
立了。
建立了工程项目,肯定要实施这个工程,现在就为工程添加程序;点击“文件”中的“新建”,新建一个空白文档;这个空白文档就是让我们编写单片机程序的场所。在这里你可以进行编辑、修改等操作。
根据题意,在文档中写入下列代码:
64
mov p0,#01010101B ;将01010101二进制代码送P0口 ajmp $ ;程序在此原地踏步 end ;程序结束标志
写完后再检查一下,并保存文件,保存文件时,其文件名最好与前面建立的工程名相同(当然这里为 Test 了),其扩展名必须为 .Asm !“文件名”中一定要写全,如:Test.Asm ;保存后的文档彩色语法会起作用,将关键字实行彩色显示:
保存了Asm文件后,还要将其添加到工程中。具体做法如下:(见下图) 鼠标右键点击 “Source Group 1”,在弹出的菜单中选“增加文件到组 Source Group 1”:
65
在接下来出现的窗口中,选择“文件类型”为“Asm源文件(*.a*,*.src)”(由于我们使用的是汇编语言,所以选择Asm源文件),选中刚才保存的 Test.Asm,按“Add”,再按“关闭”,文件就添加到了工程中。
66
向工程添加了源文件后,鼠标右键点击 “TarGet 1” ,在弹出的菜单中选“目标 Target 1 属性”,如下图:
在打开的话框中,选择“输出”选项卡,在这个选项卡中,“E生成HEX文件”选项前要打勾,按“确定”退出。
67
最后,从菜单的“工程”中执行“R重新构造所有目标”(或者按下图红圈中的按钮),汇编、连接、创建Hex文件一气呵成;在工程文件的目录下就会生成与工程名相同的一些文件,其中大部分文件我们并不必关心,而生成的 Hex 文件是我们需要的!它是要烧写到单片机中的最终代码,也就是单片机可以执行的程序。
这里生成的是 Test.HEX ,稍后就写入。
若在下面的状态窗中有错误提示,就需要再次编辑、修改源程序(如语法、字符有错等)、保存、构造所有。直至没有错误。
在没有语法错误的情况下,按下图红圈中的按钮就可以进行模拟调试:
68
下面是调试窗。由于我们的程序是让 P0 口8个脚隔一个输出0,隔一个输出1,所以要从菜单的“外围设备”中打开“Prot 0” P0口窗:
单击“单步运行”,在P0窗中就可以看到我们原先设想的效果:
69
到此,这个程序暂告一段落。 接下来,我们启动 51编程器,将刚刚生成的 Test.Hex 烧写到单片机芯片,在实验板上实际验证一下。 连接51编程器,启动其程序;在51编程程序的菜单“文件”中,“打开HEX文件...” 打开 Text.hex 文件: 执行写入操作:
70
执行写入操作完成后,编程器程序就会显示:“......,编程成功!”若写入出错,请先“擦除”后再“写入”。若在实验板上实际验证的并不是我们预期的效果,那么,就需要再次返回到编辑、修改源程序那一步,修改后再构造所有,再次将生成的Hex文件在51ISP中烧写、实验,直至成功!
到此,单片机的整个开发过程就结束了!
71
第五章 总结
计算机时代的已经到来,给人类带来的冲击是前所未有的,同时它也为人们的生活提供了实现飞跃的机遇。我们的家用电器要面向现代化、面向世界、面向未来。我的这个系统就本着这种方向去实现。
这个设计洗衣机要完成洗衣工作,除了对一般洗衣过程的人工工作及效能进行模拟之外,还要根据洗衣机的机械电子性质进行有关控制和检测。对于一台全自动洗衣机而言,首先要求能完成洗衣功能;同时还要根据用户的不同要求设置几种不同的洗衣程序;还要考虑水流的情况决定洗涤的弱强情况;另外,还要对洗衣过程出现的故障进行诊断;保证高速运转是脱水的安全性等实现的功能。
在进行系统设计之前,根据对系统的功能要求及其应用环境等确定合理的、具体的功能和技术指标,对应用系统的可靠性、通用性、先进性、可维护性、以及成本等进行综合考虑,以尽量合理并符合相应的标准。然后根据市场上各种单片机的货源情况和单片机的性能及开发工具等因素选择合适的机型。接下来要根据系统中可能遇到的传感器、模拟电路、I/O接口、存储器和显示器等器件和设备进行器件选择,使之符合系统在精度、速度和可靠性等方面的要求。最后确定硬件和软件的功能划分。由于在系统设计中某些功能用硬件和软件都能实现,在设计中综合考虑研制周期和成本等因素具体划分软硬件功能。
由于本人学习单片机不长时间,程序的设计方面存在有缺点,有些简单的想法却用了很长的代码来实现造成了代码冗余,还有部分想法没有实现。我将在今后的学习中不断完善自己。
72
致谢
通过这次毕业设计,我学会了综合的运用大学四年学的东西,学会了用严谨的软件工程学来做设计,为我走向社会打下了一个不错的基础,从一开始的比较迷茫,到最后能成功完成了这次设计,这里面有老师同学的帮助,也有自己努力。在这里我要感谢左琼老师,他在这次毕业设计中给了我很大的帮助。
73
参考文献
[1]南建辉等.MCS-51单片机原理及应用实例[M].北京:清华大学出版社,2004.3 [2]王幸之等.单片机应用系统抗干扰技术[M].北京:北京航空航天大学出版社,2000
[3]童诗白,等. 仿真电子技术基础[M] . 北京:高等教育出版社,2001. [4]李永东. 交流电机数字控制系统[ M] . 北京: 机械工业出版社,2002. [5]王幸之,等. 单片机应用系统抗干扰技术[M] . 北京:北京航空航天大学出版社,2001.
[6]张毅刚.单片机原理及应用 .北京:高等教育出版社,2004. [7]蔡惟铮.集成电子技术.哈尔滨︰哈尔滨工业大学出版社,2003. [8]蔡惟铮.基础电子技术.哈尔滨︰哈尔滨工业大学出版社,2003. [9]季振州.计算器组成技术. 哈尔滨︰哈尔滨工业大学出版社,2003. [10]王化祥.传感器原理及应用[M] . 天津︰天津大学出版社,2002 [11]李秉操.单片机接口技术及在工业控制中的应用[M].陕西:陕西电子出版社,1992.
[12]杨仲耆.大学物理学[M].北京:人民教育出版社,1981
[13]丁元杰. 单片微机原理及应用(第二版). 北京:机械工业出版社,2002
[14]林全新,苏丽娟. 单片机原理与接口技术.北京:人民邮政出版社,2002
[15]秀菊等. 单片微机与测控技术.南京:东南大学出版社1996
74
[16]周航慈. 单片机应用程序设计技术. 北京:北京航空航天大学出版社,2002
75
因篇幅问题不能全部显示,请点此查看更多更全内容