资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第7章章 MCS-51单片机应用系统设计单片机应用系统设计 主要内容: 从总体设计、硬件设计、软件设计、可靠性设计、系统调试与测试等几个方面介绍了单片机应用系统设计的方法及基本过程,并给出了典型设计实例,同时还简单介绍了C51编程方法和Keil C51开发系统。重点在于单片机应用系统开发的方法与实际应用,难点在于将单片机应用系统开发的方法应用于实际工程中,设计出最优的单片机应用系统。 7.1 7.1 概述概述 由于单片机具有体积小、功耗低、功能强、可靠性高、实时性强、简单易学、使用方便灵巧、易于维护和操作、性能价格比高、易于推广应用、可实现网络通信等技术特点。因此,单片机在自动化装置、智能仪表、家用电器,乃至数据采集、工业控制、计算机通信、汽车电子、机器人等领域得到了日益广泛的应用。 单片机应用系统设计应当考虑其主要技术性能(速度 精度 功耗 可靠性 驱动能力等),还应当考虑功能需求,应用需求,开发条件,市场情况,可靠性需求,成本需求,尽量以软件代替硬件等。下页图描述了单片机应用系统设计的一般过程。 7.2 MCS-517.2 MCS-51单片机应用系统设计单片机应用系统设计 7.2.1 7.2.1 总体设计总体设计1 1明确设计任务明确设计任务 认真进行目标分析,根据应用场合、工作环境、具体用途,考虑系统的可靠性、通用性、可维护性、先进性,以及成本等,提出合理的、详尽的功能技术指标。 2 2器件选择器件选择(1)单片机选择 主要从性能指标如字长、主频、寻址能力、指令系统、内部寄存器状况、存储器容量、有无A/D、D/A通道、功耗、价能比等方面进行选择。对于一般的测控系统,选择8位机即能满足要求。www.06305.comwww.06305.com整理发布整理发布(2)外围器件的选择 外围器件应符合系统的精度、速度和可靠性、功耗、抗干扰等方面的要求。应考虑功耗、电压、温度、价格、封装形式等其他方面的指标,应尽可能选择标准化、模块化、功能强、集成度高的典型电路。3 3总体设计总体设计 总体设计就是根据设计任务、指标要求和给定条件,设计出符合现场条件的软、硬件方案。并进行方案优化。应划分硬件、软件任务,画出系统结构框图。要合理分配系统内部的硬件、软件资源。包括以下几个方面: (1)从系统功能需求出发设计功能模块。包括显示器、键盘、数据采集、检测、通信、控制、驱动、供电方式等 (2)从系统应用需求分配元器件资源。包括定时器/计数器、中断系统、串行口、I/O接口、A/D、D/A、信号调理、时钟发生器等。 (3)从开发条件与市场情况出发选择元器件。包括仿真器、编程器、元器件、语言、程序设计的简易等。 (4)从系统可靠性需求确定系统设计工艺。包括去耦、光隔、屏蔽、印制板、低功耗、散热、传输距离/速度、节电方式、掉电保护、软件措施等。7.2.2 7.2.2 硬件设计硬件设计 由总体设计所给出的硬件框图所规定的硬件功能,在确定单片机类型的基础上进行硬件设计、实验。进行必要的工艺结构设计,制作出印刷电路板,组装后即完成了硬件设计。 一个单片机应用系统的硬件设计包含系统扩展和系统的配置(按照系统功能要求配置外围设备)两部分。1 1硬件电路设计的一般原则硬件电路设计的一般原则 (1)采用新技术,注意通用性,选择典型电路。 (2)向片上系统(SOC)方向发展。扩展接口尽可能采用PSD等器件。 (3)注重标准化、模块化。 (4)满足应用系统的功能要求,并留有适当余地,以便进行二次开发。 (5)工艺设计时要考虑安装、调试、维修的方便。2 2硬件电路各模块设计的原则硬件电路各模块设计的原则 单片机应用系统的一般结构 如下图所示。各模块电路设计时应考虑以下几个方面:各模块电路设计时应考虑以下几个方面: (1)存储器扩展:类型、容量、速度和接口,尽量减少芯片的数量。 (2)I/O接口的扩展:体积、价格、负载能力、功能,合适的地址译码方法。 (3)输入通道的设计:开关量(接口形式、电压等级、隔离方式、扩展接口等),模拟输入通道(信号检测、信号传输、隔离、信号处理、 A/D、扩展接口、速度、精度和价格等)。 (4)输出通道的设计:开关量(功率、控制方式等),模拟量输出通道(输出信号的形式、 D/A 、隔离方式、扩展接口等) (5)人机界面的设计:键盘、开关、拨码盘、启/停操作、复位、显示器、打印、指示、报警、扩展接口等。 (6)通信电路的设计:根据需要选择RS-232C、RS-485、红外收发等通信标准。 (7)印刷电路板的设计与制作:专业设计软件( Protel,OrCAD等)、设计、专业化制作厂家、安装元件、调试等。 (8)负载容限:总线驱动。 (9)信号逻辑电平兼容性:电平兼容和转换。 (10)电源系统的配置:电源的组数、输出功率、抗干扰。 (11)抗干扰的实施:芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。 7.2.3 7.2.3 软件设计软件设计 软件设计流程图如右图所示。可分为以下几个方面。1 1总体规划总体规划 结合硬件结构,明确软件任务,确定具体实施的方法,合理分配资源。定义输入/输出、确定信息交换的方式(数据速率、数据格式、校验方法、状态信号等)、时间要求,检查与纠正错误。2 2程序设计技术程序设计技术 软件结构实现结构化,各功能程序实行模块化、子程序化。一般有以下两种设计方法: (1)模块程序设计:优点是单个功能明确的程序模块的设计和调试比较方便,容易完成,一个模块可以为多个程序所共享。其缺点是各个模块的连接有时有一定难度。 (2)自顶向下的程序设计:优点是比较符合于人们的日常思维,设计、调试和连接同时按一个线索进行,程序错误可以较早的发现。缺点是上一级的程序错误将对整个程序产生影响,一处修改可能引起对整个程序的全面修改。3 3程序设计程序设计 (1)建立数学模型:描述出各输入变量和各输出变量之间的数学关系。 (2)绘制程序流程图:以简明直观的方式对任务进行描述。 (3)程序的编制:选择语数据结构、控制算法、存储空间分配,系统硬件资源的合理分配与使用,子程序的入/出口参数的设置与传递。 4 4软件装配软件装配 各程序模块编辑之后,需进行汇编或编译、调试,当满足设计要求后,将各程序模块按照软件结构设计的要求连接起来,即为软件装配。在软件装配时,应注意软件接口。7.2.4 7.2.4 可靠性设计可靠性设计 可可靠靠性性:通常是指在规定的条件(环境条件如温度、湿度、振动,供电条件等)下,在规定的时间内(平均无故障时间)完成规定功能的能力。 提提高高单单片片机机本本身身的的可可靠靠性性措措施施:降低外时钟频率,采用时钟监测电路与看门狗技术、低电压复位、EFT抗干扰技术、指令设计上的软件抗干扰等几方面。 单单片片机机应应用用系系统统的的主主要要干干扰扰渠渠道道:空间干扰、过程通道干扰、供电系统干扰。应用于工业生产过程中的单片机应用系统中,应重点防止供电系统与过程通道的干扰。 1 1供电系统干扰与抑制供电系统干扰与抑制 干扰源:干扰源:电源及输电线路的内阻、分布电容和电感等。 抗抗干干扰扰措措施施:采用交流稳压器、电源低通滤波器、带屏蔽层的隔离变压器、独立的(或专业的)直流稳压模块,交流引线应尽量短,主要集成芯片的电源采用去耦电路,增大输入/输出滤波电容等措施 。 2 2过程通道的干扰与抑制过程通道的干扰与抑制 干干扰扰源源:长线传输。单片机应用系统中,从现场信号输出的开关信号或从传感器输出的微弱模拟信号,经传输线送入单片机,信号在传输线上传输时,会产生延时、畸变、衰减及通道干扰。 抗干扰措施:抗干扰措施: (1)采用隔离技术:光电隔离、变压器隔离、继电器隔离和布线隔离等。典型的信号隔离是光电隔离。其优点是能有效地抑制尖峰脉冲及各种噪声干扰,从而使过程通道上的信噪比大大提高。 (2)采用屏蔽措施:金属盒罩、金属网状屏蔽线。但金属屏蔽本身必须接真正的地(保护地)。 (3)采用双绞线传输:双绞线能使各个小环路的电磁感应干抗相互抵消。其特点是波阻抗高、抗共模噪声能力强,但频带较差。 (4)采用长线传输的阻抗匹配:有四种形式,如下图所示。 终端并联阻抗匹配:如上页图(a)所示, RP= R1/R2 ,其特点是终端阻值低,降低了高电平的抗干扰能力。 始端串联匹配:如上页图(b)所示,匹配电阻R的取值为RP与A门输出低电平的输出阻抗ROUT(约20)之差值,其特点是终端的低电平抬高,降低了低电平的抗干扰能力。 终端并联隔直流匹配:如图上页(c)所示,R=Rp,其特点是增加了对高电平的抗干扰能力。 终端接钳位二极管匹配:如图上页(d)所示,利用二极管D把B门输入端低电平钳位在0.3V以下。其特点是减少波的反射和振荡,提高动态抗干扰能力。注注意意:长线传输时,用电流传输代替电压传输,可获得较好的抗干扰能力。3 3其他硬件抗干扰措施其他硬件抗干扰措施 (1)对信号整形 可采用斯密特电路整形。 (2)组件空闲输入端的处理 组件空闲输入端的处理方法如下图所示。其中,图(a)所示的方法最简单,但增加了前级门的负担。图(b)所示的方法适用于慢速、多干扰的场合。图(c)利用印刷电路板上多余的反相器,让其输入端接地,使其输出去控制工作门不用的输入端。 (3)机械触点,接触器、可控硅的噪声抑制 开关、按钮、继电器触点等在操作时应采取去抖处理。 在输入/输出通道中使用接触器、继电器时,应在线圈两端并接噪声抑制器,继电器线圈处要加装放电二极管。 可控硅两端并接RC抑制电路,可减小可控硅产生的噪声。 (4)印刷电路板(PCB)设计中的抗干扰问题 合理选择PCB板的层数,大小要适中,布局、分区应合理,把相互有关的元件尽量放得靠近一些。印刷导线的布设应尽量短而宽,尽量减少回路环的面积,以降低感应噪声。导线的布局应当是均匀的、分开的平行直线,以得到一条具有均匀波阻抗的传输通路。应尽可能地减少过孔的数量。在PCB板的各个关键部位应配置去耦电容。要将强、弱电路严格分开,尽量不要把它们设计在一块印刷电路板上。电源线的走向应尽量与数据传递方向一致,电源线、地线应尽量加粗,以减小阻抗。(5)地线设计 地线结构大致有保护地、系统地、机壳地(屏蔽地)、数字地、模拟地等。 在设计时,数字地和模拟地要分开,分别与电源端地线相连;屏蔽线根据工作频率可采用单点接地或多点接地;保护地的接地是指接大地。不能把接地线与动力线的零线混淆。 此外,应提高元器件的可靠性,注意各电路之间的电平匹配,总线驱动能力要符合要求,单片机的空闲端要接地或接电源,或者定义成输出。室外使用的单片机系统或从室外架空引入室内的电源线、信号线,要防止雷击,常用的防雷击器件有:气体放电管,TVS(瞬态电压抑制器)等。4 4软件的抗干扰设计软件的抗干扰设计 常用的软件抗干扰技术有软件陷阱、时间冗余、指令冗余、空间冗余、容错技术、设置特征标志和软件数字滤波等 (1)实时数据采集系统的软件抗干扰 采用软件数字滤波。常用的方法有以下几种: 算术平均值法:对一点数据连续采样多次(可取35次),以平均值作为该点的采样结果。这种方法可以减少系统的随机干扰对采集结果的影响。 比较舍取法:对每个采样点连续采样几次,根据所采样数据的变化规律,确定取舍办法来剔除偏差数据。例如,“采三取二”,即对每个采样点连续采样三次,取两次相同数据作为采样结果。 中值法:对一个采样点连续采集多个信号,并对这些采样值进行比较,取中值作为该点的采样结果。 一阶递推数字滤波法:利用软件完成RC低通滤波器的算法。 其公式为:其公式为:Yn=QXn+(1Q)Yn1 其中:其中:Q 数字滤波器时间常数; Xn第n次采样时的滤波器的输入; Yn1第n1次采样时的滤波器的输出。 Yn第n次采样时的滤波器的输出。 注意:注意:选取何种方法必须根据信号的变化规律予以确定。(2)开关量控制系统的软件抗干扰 可采取软件冗余、设置当前输出状态寄存单元、设置自检程序等软件抗干扰措施。5 5程序运行失常的软件对策程序运行失常的软件对策 程程序序运运行行失失常常:当系统受到干扰侵害,致使程序计数器PC值改变,造成程序的无序运行,甚至进入死循环。 程程序序运运行行失失常常的的软软件件对对策策:发现失常状态后,及时引导系统恢复原始状态。可采用以下方法: (1)程序监视定时器(Watchdag,WDT)技术 程程序序监监视视定定时时器器(也也称称为为“看看门门狗狗” ” )的的作作用用:通过不断监视程序每周期的运行事件是否超过正常状态下所需要的时间,从而判断程序是否进入了“死循环”,并对进入“死循环”的程序作出系统复位处理。 “ “看门狗看门狗”技术:技术:可由硬件、软件或软硬结合实现。 硬件“看门狗”可以很好地解决主程序陷入死循环的故障,但是,严重的干扰有时会出现中断关闭故障使系统无法定时“喂狗”,无法探测到这种故障,硬件“看门狗”电路失效。 89S5189S51看门狗功能的使用方法看门狗功能的使用方法 在在ATMELATMEL的的89S5189S51系列的系列的89S5189S51与与89C5189C51功能相同。功能相同。指令兼容。指令兼容。HEXHEX程序无需任何转换可以直接使用。程序无需任何转换可以直接使用。89S5189S51只只比比89C5189C51增加了一个看门狗功能。增加了一个看门狗功能。89S5189S51的其它功能可以参的其它功能可以参见见89C5189C51的资料。的资料。 看门狗具体使用方法如下:看门狗具体使用方法如下: 在程序初始化中向看门狗寄存器(在程序初始化中向看门狗寄存器(WDTRSTWDTRST地址地址是是0A6H0A6H)中先写入)中先写入01EH01EH,再写入,再写入0E1H0E1H。即可激活看门狗。即可激活看门狗。 Org 0000 Org 0000 LjmpLjmp begin begin Begin: Begin: MovMov 0A6H,#01EH ; 0A6H,#01EH ;先送先送1E 1E MovMov 0A6H,#0E1H ; 0A6H,#0E1H ;后送后送E1 E1 ;在程序初始化中激活看门狗。;在程序初始化中激活看门狗。 For: Mov 0A6H,#01EH ;先送1E Mov 0A6H,#0E1H ;后送E1 ;喂狗指令 Ljmp for 注意事项:注意事项: 1 1 89S5189S51的看门狗必须由程序激活后才开始的看门狗必须由程序激活后才开始工作。所以必须保证工作。所以必须保证CPUCPU有可靠的上电复位。否则看门狗有可靠的上电复位。否则看门狗也无法工作。也无法工作。 2 2 看门狗使用的是看门狗使用的是CPUCPU的晶振。在晶振停振的晶振。在晶振停振的时候看门狗也无效。的时候看门狗也无效。 3 3 89S5189S51只有只有1414位计数器。在位计数器。在1638316383个机器个机器周期内必须至少喂狗一次。而且这个时间是固定的,无周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为法更改。当晶振为12M12M时每时每1616个毫秒需喂狗一次。还可以个毫秒需喂狗一次。还可以利用定时器把看门狗的喂狗时间延长几秒至几分钟。利用定时器把看门狗的喂狗时间延长几秒至几分钟。 表2-5 工作寄存器组选择控制表 软件“看门狗” 可以保证对中断关闭故障的发现和处理,但若单片机的死循环发生在某个高优先级的中断服务程序中,软件“看门狗”也无法完成其作用。 利用软硬结合的“看门狗”组合可以克服单一“看门狗”功能的缺陷,从而实现对故障的全方位监控。 (2)设置软件陷阱 软软件件陷陷阱阱:指将捕获的“跑飞”程序引向复位入口地址0000H的指令。 设置方法:设置方法: 在EPROM中,非程序区设置软件陷阱,软件陷阱一般1KB空间有23个就可以进行有效拦截。指令如下: NOP NOP LJMP 0000H 在未使用的中断服务程序中设置软件陷阱,能及时捕获错误的中断。指令如下: NOP NOP RETI(3)指令冗余技术指指令令冗冗余余:在程序的关键地方人为插入一些单字节指令,或将有效单字节指令重写,称为指令冗余。作用:作用:可将“跑飞”程序纳入正轨。 设设置置方方法法:通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使程序“跑飞”到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当做操作数执行,程序自动纳入正轨。此外,对系统流向起重要作用的指令(如RET,RETI,LCALL,LJMP,JC等指令)之前也可插入两条NOP指令,确保这些重要指令的执行。 单片机应用系统的软、硬件制作完成后,必须反复进行调试、修改,直至完全正常工作,经过测试,功能完全符合系统性能指标要求,应用系统设计才算完成。 1 1硬件调试硬件调试 (1)静态检查 根据硬件电路图核对元器件的型号、极性、安装是否正确,检查硬件电路连线是否与电路图一致,有无短路、虚焊等现象。 (2)通电检查 通电检查时,可以模拟各种输入信号分别送入电路的各有关部分,观察I/O口的动作情况,查看电路板上有无元件过热、冒烟、异味等现象,各相关设备的动作是否符合要求,整个系统的功能是否符合要求。7.2.5 7.2.5 单片机应用系统的调试、测试单片机应用系统的调试、测试 2 2软件调试软件调试 程序模块编写完成后,通过汇编或编译后,在开发系统上进行调试。调试时应先分别调试各模块子程序,调试通过后,再调试中断服务子程序,最后调试主程序,并将各部分进行联调。3 3系统调试系统调试 当硬件和软件调试完成之后,就可以进行全系统软、硬件调试,对于有电气控制负载的系统,应先试验空载,空载正常后再试验负载情况。系统调试的任务是排除软、硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的性能指标。4 4程序固化程序固化 系统调试成功之后,就可以将程序通过专用程序固化器固化到ROM中。5 5脱机运行调试脱机运行调试 将固化好程序的ROM插回到应用系统电路板的相应位置,即可脱机运行。系统试运行要连续运行相当长的时间(也称为考机),以考验其稳定性。并要进一步进行修改和完善处理。6 6测试单片机系统的可靠性测试单片机系统的可靠性 单片机系统设计完成时,一般需进行单片机软件功能的测试,上电、掉电测试,老化测试,静电放电(ElectroStatic Discharge,ESD)抗扰度和电快进瞬变脉冲群(Electrical Fast Transient,EFT)抗扰度等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性,还可以模拟人为使用中可能发生的破坏情况。 经过调试、测试后,若系统完全正常工作,功能完全符合系统性能指标要求,则一个单片机应用系统的研制过程全部结束。 7.4 7.4 单片机应用系统举例单片机应用系统举例 7.4.1 7.4.1 单片机在控制系统中的应用单片机在控制系统中的应用 单片机的一个广泛应用领域就是控制系统。 1 1设计思想设计思想 通过传感电路不断循环检测室内温度、湿度、有害气体(如煤气)浓度等环境参数,然后与由控制键盘预置的参数临界值相比较,从而作出开/关窗、启/停换气扇、升/降温(湿)等判断,再结合窗状态检测电路所检测到的窗状态,发出一系列的控制命令,完成下雨则自动关窗、室内有害气体超标则自动开窗、开/启换气扇、恒温(湿)等自动控制功能。用户还可通过控制键盘,直接控制窗户的开/关、换气扇的启/停、温(湿)度的升/降,选择所显示参数的种类等。 2 2系统组成和部分电路设计系统组成和部分电路设计 控制系统主要由控制器、数据检测传感电路、A/D转换器、窗驱动控制接口电路、窗驱动电路等组成。其系统原理图如下页图所示。 控制器采用美国Atmel公司的AT89C51单片机。利用89C51的P0口采集数据,完成控制信息的采集和控制功能。利用P1.0P1.3作为窗状态检测端口,完成对窗状态(即窗是否移到边框)的检测。 数据检测传感电路由温度传感电路、湿度传感电路、有害气体传感电路、红外防盗传感器四个部分组成。在此只以温度传感电路为例进行设计。 根据温度检测的要求,温度的检测选用集成温度传感器AD590(测温范围为55+150)。测量电路如图右所示。 传感器的采集信号经过数据处理电路,必须通过A/D转换器才能与单片机连接,本系统中有4路模拟输入, A/D转换器选用了ADC0809,89C51通过中断方式读取A/D转换的数据。通过A/D转换实现的数据采集电路如下图所示。 A/D转换器的口地址为7FFFH。 根据驱动信号与所控对象的关系,将系统的驱动电路分解为移窗驱动电路、换窗驱动电路、锁窗驱动电路、温度调节驱动电路、湿度调节驱动电路、换气扇驱动电路和报警驱动电路等,分别用它们去控制1个对象。 窗状态检测电路采用4个开关型磁敏器件。在外窗、内窗的左、右边上,与磁敏器件相对应的地方,各贴上一小片磁铁,当小磁铁随窗户的移动而移近相对应的磁敏器件时,该磁敏器件的输出信号从高电平变为低电平,表示窗户已移到相应边上。 键盘输入及显示电路采用Intel公司生产的8279通用可编程键盘、显示器接口芯片。可实现对键盘和显示器的自动扫描,并识别键盘上闭合键的键号。 对于控制键盘,采用微动开关制作,并安装在窗户的固定边框上。通过控制键盘,用户可设置各环境参数的临界值、随意选择所显示参数的种类、直接控制窗户的开/关、换气扇的启/停、温(湿)度的升/降等。 3软件设计软件设计 控制系统的软件主要由一个主程序和两个中断服务程序等组成。 主程序的主要作用是在系统复位后对系统进行初始化,设置8279,ADC0809等的工作方式和初始状态,设置各中断的优先级别并开中断,首次启动A/D转换等,然后向8279循环送显示字符,进行显示。程序框图如右上图所示。 键中断服务程序的主要作用是在AT89 C51响应中断(有键按下,则产生该中断)后,读出键值,并根据键值依序发出相应的控制命令字,完成相应的控制功能。该中断应设为高优先级。程序框图如右下图所示。 循环检测中断服务程序的主要作用是在89C51响应中断后,将A/D转换结果送相应缓冲区,然后判断该转换结果是否在上、下限值之间,并根据判断结果按序发出相应的控制命令字,完成相应的控制、报警功能。然后重新选择被转换量,再次启动A/D转换后,返回主程序。该中断应设为低优先级,并设为电平触发方式。程序流程图如右图所示。7.4.2 单片机在家用电器中的应用单片机在家用电器中的应用 单片机在家电行业具有广泛的应用。下面以单片机在电冰箱控制系统中的应用为例加以介绍。1 1总体方案设计总体方案设计直直冷冷式式电电冰冰箱箱的的控控制制原原理理:根据蒸发器的温度控制制冷压缩机的启动、停止,使冰箱内的温度保持在设定温度范围内。 采用单片机控制压缩机的启动和停止,可以使控制更准确、更灵活。电冰箱采用单片机控制的性能指标如下:电冰箱采用单片机控制的性能指标如下: 设定3个测温点,测量范围在26+26之间,精度为0.5。 利用功能键分别控制温度设定、速冻设定、冷藏室及冷冻室温度设定等。 利用数码管显示冷冻室、冷藏室温度,压缩机启动、停止和速冻、报警状态。 制冷压缩机停机后,自动延时3分钟才能再启动。 电冰箱具有自动除霜功能,当霜的厚度达3cm时自动除霜。 开门延时超过2分钟发出声音报警。 连续速冻时间设定范围为18小时。 工作电压在180240V之间,当欠压或过压时,禁止启动压缩机,并用指示灯显示。 根据上面所列出的控制系统要求,可估算出所需要的程序存储器的容量不会超过4KB,因此可以采用Philips公司生产的80C51单片机(片内有4KB的ROM, 128字节的RAM ),不用进行外部扩展存储器,可以大大简化系统的硬件电路。此外,80C51单片机在市场上的货源充足,技术比较成熟,同时也具有较好的开发环境。 2 2硬件设计硬件设计(1)主电路设计 主电路采用80C51单片机,扩展一片A/D转换芯片ADC0809,构成基本的系统。由于本系统无通信要求,可以通过串行口扩展四片74LS164作为四位LED显示器接口和一片74LS164来实现键盘功能。本系统还有一些附加的电路,如除霜电路、电压检测电路和开关报警电路等。电冰箱控制系统的电路原理图如下页图所示。(2)A/D转换电路 A/D转换电路采用ADC0809。ADC0809共有8路模拟输入通道(本系统只用到其中的4路IN0IN3 )。其中,IN0作为冷冻室温度检测通道,IN1作为冷藏室温度检测通道,IN2作为除霜检测通道,IN3作为电源电压检测通道。ADC0809与单片机接口电路见电路原理图如下页图所示。 上页图中,ADC0809的A,B,C三个引脚直接和80C51单片机的P0.0P0.2三个引脚相连,用于选择不同的模拟通道信号。P1.6与读写控制信号端和经过或非门连接到ADC0809的START,ALE,OE端,分别控制ADC0809的启动、地址锁存、读操作和写操作。ADC0809的EOC端悬空,A/D转换后利用软件延时一段时间来读取转换后的数据。(3)功能键和显示电路 功能键和显示电路如上页图所示。采用6个功能键控制冷冻室、冷藏室及速冻温度设定,4位LED显示器用于显示冷冻、冷藏室温度,以及压缩机启动、停止和报警等状态。 LED显示及功能键都是通过80C51的串行口扩展的。显示输出通道和键盘输入通道的选择由端口线P3.2和与门完成。当P3.2为“1”时,数据输出到显示器。当P3.2为“0”时,80C51王诚对键盘的扫描。(4)除霜电路 选用MF53-1型热敏电阻作为温度传感器(Rt),它具有负温度系数,灵敏度较高。把热敏电阻安装在距蒸发器3mm的某个合适的位置上,当霜厚大于3mm时,热敏电阻Rt接触到霜从而感受到较低的温度,其电阻值变大,A点温度降低,运算放大器输出信号有变化,经A/D转换后送入CPU,经单片机分析、判断,给出除霜命令。除霜电路如下图所示。热敏电阻热敏电阻RtRt的阻值和温度的关系为:的阻值和温度的关系为:(k)A A点电压与温度的关系为:点电压与温度的关系为:(5)制冷压缩机和除霜电热丝启动、停止控制电路 其电路如下页图所示,加热丝和压缩机的工作原理如下: 80C51单片机控制信号经P1.3和P1.4端口输出,并通过P1.7的控制,将信号锁存在74LS273中,74LS273的输出经过达林顿驱动器DS2003后,驱动固态继电器RELAY1和RELAY2。当DS2003的16脚有高电平输出时,RELAY1的3,4脚接通,使加热丝接通电源,开始除霜。当DS2003的15脚输出高电平时,RELAY2的3,4脚接通,使压缩机绕组接通电源而启动,开始制冷。74LS273的锁存控制信号,一方面增加输出功率,另一方面也防止单片机复位时引起控制的误动作。 电冰箱控制程序主要分为三大部分:主程序、定时器T0中断服务程序和定时器T1中断服务程序。(1)主程序 主程序是整个电冰箱的总控制程序,主要实现控制各单元初始化、控制中断、定时、显示、键盘程序的启动与重复等功能。主程序的程序流程图如右图所示。3 3软件设计软件设计 T0中断服务程序主要完成电源欠压、过压处理,开门状态检查,以及处理等功能。其程序流程图如右图所示。(2)T0中断服务程序(3)Tl中断服务程序 Tl工作于计数方式,用于制冷压缩机停机后自动延时3分钟才能再启动的时间延时。Tl的中断服务程序主要完成3分钟定时,以及温度、除霜、速冻等各种检测,根据检测结果,比较、分析得出执行元器件工作的状态,并控制对应的元器件工作。Tl中断服务程序流程图如右图所示。7.4.3 单片机在里程、速度计量中的应用 设设计计要要求求:利用单片机实现的自行车里程/速度计能自动显示自行车行驶的总里程数及自行车行驶速度,具有超速信号提醒功能,里程数据自动记忆。也可应用于电动自行车、摩托车、汽车等机动车仪表上。1. 1. 总体设计总体设计 控制器采用AT89C52单片机,速度及里程传感器采用霍尔元件,显示器通过AT89C52的P0口和P2口扩展。外部存储器采用E2PROM存储器AT24C01,用于存储里程和速度等数据。并用控制器来控制里程/速度指示灯,里程指示灯亮时,显示里程;速度指示灯亮时,显示速度。超速报警采用扬声器,用一个发光二极管来配合扬声器,扬声器响时,二极管亮,表明超速。 2. 2. 硬件电路设计硬件电路设计 电路原理图如下页图所示。P0口和P2口用于七段LED显示器的段码及扫描输出。在显示里程时,第三位小数点用P3.7口()控制点亮。P1.0口和P1.1口分别用于显示里程状态和速度状态。P1.2,P1.3,P1.6和P1.7口分别用于设置轮圈的大小。P3.0口的开关用于确定显示的方式。当开关闭合时,显示速度;断开时,显示里程。外中断用于对轮子圈数的计数输入,轮子每转一圈,霍尔传感器输出一个低电平脉冲。外中断用于控制定时器T1的启停,当输入为0时关闭定时器。此控制信号是将轮子圈数的计数脉冲经二分频后形成,这样,每次定时器T1的开启时间正好为轮子转一圈的时间,根据轮子的周长就可以计算出自动车的速度。P1.4口和P1.5口用于E2PROM存储器24C01的存取控制。11脚(TXD)输出用于速度超速时的报警。 3. 3. 软件设计软件设计软软件件主主要要包包括括:主程序、初始化程序、里程计数子程序、数据处理子程序、计数器中断服务程序、E2PROM存取程序、显示子程序。 (1)主程序 根据P0口的开关状态切换显示状态,即选择里程显示和速度显示。其流程图如右图所示。 程序如下:程序如下: ORG 0000H LJMP START ; 跳至主程序 ORG 0003H ; 外中断0中断程序入口 LJMP INTEX0 ; 跳至INTEX0中断服务程序 ORG 000BH ; 定时器T0中断程序入口 RETT1 ; 中断返回 ORG 0013H ; 外中断1中断入口 LJMP INTEX1 ; 跳至INTEX1中断服务程序 ORG 001BH ; 定时器T1中断程序入口 LJMP INTT1 ; 跳至INTT1中断服务程序 ORG 0023H ; 串口中断入口地址 RET1 ; 中断返回 ORG 002BH ; 定时器T2中断入口地址 RET1 ; 中断返回 ORG 0050H START: LCALL CLEARMEN ; 上电初始化 START1: JB P0.4, DISPLAYS ; P0.4=1,则显示里程 LCALL DISPLAYV ; P0.4=0,显示速度 START2: SJMP START ; 转START循环(2)初始化程序 初始化程序主要功能是将T1设为外部控制定时器方式,外中断 及 设为边沿触发方式,将部分内存单元清0,设置车轮周长值,开中断、启动定时器,将AT24C01中的数据调入内存中,设置车轮圈出错处理程序。 程序如下:程序如下:CLEARMEN:MOV TMOD, #90 ; T1为16位外部控制定时器 MOV SP, #75H ; 堆栈在75H开始 SETB PX0 ; 外中断0优先级为1 SETB IT0 ; 外中断0用边沿触发 SETB IT1 ; 外中断1用边沿触发 MOV A, #00H ; 清A MOV 20H, A ; 清内存中特定单元 MOV 6CH, A MOV 6DH, A MOV 70H, A MOV 71H, A MOV 72H, A MOV 73H, A MOV 60H, A MOV 61H, A MOV 62H, A MOV 63H, A ; 清内存中特定单元 DEC A ; A为#0FFH MOV 68H,A ; 内存置数据#0FFH MOV 69H,A ; 内存置数据#0FFH MOV 6AH,A ; 内存置数据#0FFH MOV 6BH,A ; 内存置数据#0FFH MOV P1, A ; P1口置1 CLEAR1:JB P1.2, KEY1 ; 根据P1.2, P1.3, P1.6, P1.7设置状态 在21H地址单元设置自行车周长值 MOV 21H,#0FH ; 22英寸自行车周长系数 LJMP CLEAR2 ; 转CLEAR2 KEY1:JB P1.3, KEY2 MOV 21H, #12H ; 24英寸自行车周长系数LJMP CLEAR2 ; 转CLEAR2 KEY2:JB P1.6,KEY3 MOV 21H,#14H ; 26英寸自行车周长系数LJMP CLEAR2 ; 转CLEAR2 KEY3:JB P1.7,ERR MOV 21H,#19H ; 28英寸自行车周长系数 CLEAR2:SETB TR1 ; 开定时器开关T1 SETB EA ; 开中断允许 SETB EX0 ; 开外中断SETB ET1 ; 开定时中断T1SETB P3.1 ; 关报警器LCALL VIICREAD ; 将E2PROM中原里程数据调入内存RET ; 子程序返回 ERR:CLP P3.1 ; 轮周长设置出错,LED灯闪烁提醒LCALL DLSS5 ; 延时LJMP CLEAR1 ; 重新初始化,等待轮周长设置开关合上 (3)里程计数子程序 外中断 服务程序用于对输入的车轮圈数脉冲进行计数,为十六进制计数,用片内RAM的60H单元存储计数值的低位,62H存储高位,计数一次后,对里程数据进行一次存储。程序如下:程序如下: INTEX0:PUSH ACC ; 累加器堆栈保护PUSH PSW ; 状态字堆栈保护INC 60H ; 圈加1MOV A, #00H ; 清A CJNE A, 60H,INTEX0OUT ; 计数没溢出转IN0OUT INC 61H ; 溢出进位(61H加1) CJNE A, 61H, INTEX0OUT ; 计数没溢出转IN0OUT INC 62H ; 溢出进位(62H加1) IN0OUT:LCALL VIICWRITE ; 里程数据存入E2PROM SETB EX1 ; 开外中断1 POP PSW ; 状态字恢复 POP ACC ; 累加器恢复RET1 ;(4)数据处理子程序 外中断服务程序用于处理轮子转动一圈后的计时数据,当标志位(00H)为1时,说明计数器溢出,放入最大值0FFH;当标志位为0时,将计数单元(TL1,TH1,6CH, 60H)的值放入68H6BH单元。程序如下:程序如下: INTEX1:PUSH ACC ; 累加器堆栈保护PUSH PSW ; 状态字堆栈保护 CLR EX1 ; 关外中断1 JNB 00H, INTEX11 ; 溢出标志为0转INTEX11 MOV TL1, #0FFH ; 溢出时,计时单元赋#FFH(显示速度为0) MOV TH1, #0FFH MOV 6CH, #0FFH MOV 6DH, #0FFH INTEX11:MOV 68H, TL1 ; 将时间计数值存入暂存单元68H6BH MOV 69H, TH1 MOV 6AH, 6CH MOV 6BH, 6DH MOV A, #00H ; 清AMOV TL1, A ; 计时单元置0MOV TH1, A MOV 6CH, A MOV 6DH, A CLR 00H ; 清溢出标志POP PSW ; 状态字恢复POP ACC ; 累加器恢复RET1 ; 中断返回(5)计数器中断服务程序 T1计数单元由外中断进行控制,当计数器溢出时置溢出标志,不溢出时,使计时单元计数,存入存储器。程序略。(6)E2PROM存取程序 将外部信息写入AT24C01存储器,存入从50H起的单元中;把外部信息从AT24C01存储器中读出,送CPU进行处理。程序略。(7)显示子程序 当显示里程时,先要将计数器中的数据进行运算,求出总里程,并送入里程显示缓冲区;当要显示速度时,要将轮子的周长和转一圈的时间相除,然后换算成km/h(千米/小时),存入70H73H单元,进行数据显示。程序略。 作业与练习:7.1 7.27.4 7.77.9
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号