第9章单片机应用程序开发9.1单片机应用系统开发的一般方法9.2交通灯模拟控制系统案例实现9.3空调制冷控制系统案例实现学习目标1.掌握应用MCS-51单片机进行系统开发的方法和步骤;2.掌握交通灯模拟控制系统、空调制冷控制系统的设计。重点内容单片机应用系统开发的方法9.1单片机应用系统开发的一般方法单片机应用系统是为完成某项具体任务而研制开发的用户系统,可以分为智能仪器仪表和工业测控系统两大类。虽然每个系统都有很强的针对性,结构和功能也不相同,但它们的开发过程和方法大致相同,1.确定任务开发任何一个应用系统,都必须以市场需求为前提。因此,在系统设计前,首先要进行广泛的市场调查,了解该系统的市场应用概况,分析系统当前存在的问题,研究系统的市场前景,确定系统开发设计的目的和目标。在此基础上,再对系统的具体实现进行规划,包括应该采集的信号的种类、数量、范围,输出信号的匹配和转换,控制算法的选择,技术指标的确定等。2.总体设计在对应用系统进行总体设计时,应根据应用系统提出的各项技术性能指标,拟定出性价比最高的一套方案。首先,应根据任务的繁杂程度和技术指标要求选择机型。选定机型后,再选择系统中要用到的其它外围元器件,如传感器、执行器件等。在选取定单片机机型和器件时,应注意:(1)性能特点要适合所要完成的任务,避免过多的功能闲置。(2)性能价格比要高,以提高整个系统的性能价格比。(3)结构原理要熟悉,以缩短开发周期。(4)货源要稳定,有利于批量的增加和系统的维护。硬件和软件如何分工?用硬件实现速度比较快,节省CPU的时间,但系统的硬件接线复杂、系统成本较高。用软件实现则较为经济,但要更多地占用CPU的时间,原则上,能够由软件实现的任务就尽量用软件来实现,以降低成本,简化硬件结构。如果系统回路多、实时性要求强,则要考虑用硬件完成。同时,还要求大致规定各接口电路的地址、软件的结构和功能、上下位机的通信协议、程序的驻留区域及工作缓冲区等。总体方案一旦确定,系统的大致规模及软件的基本框架就确定了。3.硬件设计硬件的设计是根据总体设计要求,在选择完单片机机型的基础上,具体确定系统中所要使用的元件,并设计出系统的电路原理图,经过必要的实验后完成工艺结构设计、电路板制作和样机的组装。主要硬件设计包括:(1)单片机电路设计:主要完成时钟电路、复位电路、电源电路的设计。(2)扩展电路和输入/输出通道设计:主要完成程序存储器、数据存储器、I/O接口电路、传感器电路、放大电路、多路开关、A/D转换电路、开关量接口电路、驱动及执行机构的设计。(3)控制面板设计:主要完成按键、开关、显示器、报警等电路的设计。硬件设计应注意:1)程序存储器。一般选用容量较大的EPROM芯片,如2764(8KB)、27128(16KB)或27256(32KB)等。2)数据存储器和I/O接口。根据系统功能的要求,如果需要扩展外部RAM或I/O口,那么RAM芯片可选用6116(2KB)、6264(8KB)或62256(32KB)。I/O接口芯片一般选用8255或8155(带有256KB静态RAM)。这类芯片具有口线多、硬件逻辑简单等特点。若口线要求很少,且仅需要简单的输入或输出功能,则可用不可编程的TTL电路或CMOS电路。A/D和D/A电路芯片主要根据精度、速度和价格等来选用,同时还要考虑与系统的连接是否方便。3)地址译码电路。通常采用全译码、部分译码或线选法,应考虑充分利用存储空间和简化硬件逻辑等方面的问题。MCS-51系统有充分的存储空间,包括64KB程序存储器和64KB数据存储器,所以在一般的控制应用系统中,主要是考虑简化硬件逻辑。当存储和I/O芯片较多时,可选用专用译码器74LS138或74LS139等。硬件设计应注意:4)总线驱动能力。MCS-51系统单片机的外部扩展功能很强,但4个8位并行口的负载能力是有限的。P0口能驱动8个TTL电路,P1~P3口只能驱动4个TTL电路。在实际应用中,这些端口的负载不应超过总负载能力的70%,以保留一定的余量。如果驱动较多的TTL电路,则应采用总线驱动电路(目前应用较多的一种是CAN总线),以提高端口的驱动能力和系统的抗干扰能力。数据总线宜采用双向8路三态缓冲器74LS245作为总线驱动器,地址和控制总线可采用单向8路三态缓冲区74LS244作为单向总线驱动器。4.软件设计单片机应用系统的软件设计是研制过程中任务最繁重的一项工作,难度也比较大。单片机应用系统的软件主要包括两大部分:用于管理单片机微机系统工作的监控程序:应尽可能利用现成微机系统的监控程序。许多单片机开发系统的监控软件功能相当强,并附有丰富的实用子程序,可供用户直接调用,例如键盘管理程序、显示程序等,可以直接选用。用于执行实际具体任务的功能程序。要根据应用系统的功能要求来编程序。例如,外部数据采集、控制算法的实现、外设驱动、故障处理及报警程序等等。软件设计通常采用模块化程序设计、自顶向下的程序设计方法。5.系统调试——包括硬件调试和软件调试硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障。软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。程序调试一般是一个模块一个模块地进行,一个子程序一个子程序地调试,最后联起来统调。在调试过程中,要不断调整、修改系统的硬件和软件,直到其正确为止。联机调试运行正常后,将软件固化到EPROM中,脱机运行,并到生产现场投入实际工作,检验其可靠性和抗干扰能力,直到完全满足要求,系统才算研制成功。确定任务任务分析确定功能、性能要求制定总体方案总体设计系统功能分配确定软硬件功能关系拟定调试方案硬件设计绘制硬件原理图绘制印制板图配置元器件硬件功能分调确定算法与数据结构程序模块划分绘制程序流程图程序编写与仿真调试软件设计样机联调在样机中运行软件软硬件修改与完善反复调试以达设计要求样机定型现场运行样机组装定型、软件固化编写技术报告及说明书9.2交通灯模拟控制系统案例实现1.硬件电路设计硬件原理图如图所示。(1)选择单片机:目前MCS-51单片机种类繁多,可以选用AT89C51,配备晶振和复位电路。(2)端口地址:根据原理图所示,8255端口地址分配如下:A口:0FFD8HB口:0FFD9HC口:0FFDAH2.软件设计发光二极管与相应端口取值关系规律PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA0十六进制数北黄北绿北红东黄东绿东红南黄南绿南红西黄西绿西红红灯全亮1101101101100DB6H东西绿灯亮,南北红灯亮1101011101010D75H东西黄灯亮,南北红灯亮1100111100110CF3H南北红灯亮1101111101110DF7H东西红灯亮,南北绿灯亮1011101011100BAEH东西红灯亮,南北黄灯亮011110011110079EH东西红灯亮1111101111100FBEH该案例主要是控制12个发光二极管亮或灭,而发光二极管分别与8255的B口低4位及A口8位相连接,控制亮灭则可以通过向这些端口输出0或1,因此8255主要工作于输出状态,工作于方式0。ORG0BB0HJOD0:MOVSP,#60HMOVDPTR,#0FFDBHMOVA,#88H;A、B口工作于方式0、输出MOVX@DPTR,A;8255初始化MOVDPTR,#0FFD8HMOVA,#0B6HMOVX@DPTR,AINCDPTRMOVA,#0DHMOVX@DPTR,A;点亮4个红灯MOVR2,#32H;延时5sLCALLDELYJOD3:MOVDPTR,#0FFD8HMOVA,#75HMOVX@DPTR,AINCDPTRMOVA,#0DHMOVX@DPTR,A;东西绿灯亮,南北红灯亮MOVR2,#64HLCALLDELY;延时10sMOVR7,#03H;闪烁3次JOD1:MOVDPTR,#0FFD8HMOVA,#0F3HMOVX@DPTR,AINCDPTRMOVA,#0CHMOVX@DPTR,A;东西黄灯亮,南北红灯亮MOVR2,#0AHLCALLDELY;延时MOVDPTR,#0FFD8HMOVA,#0F7HMOVX@DPTR,AINCDPTRMOVA,#0DHMOVX@DPTR,A;南北红灯亮MOVR2,#0AHLCALLDELY;延时DJNZR7,JOD1;闪烁次数未到继续MOVX@DPTR,A;东西红灯亮,南北黄灯亮MOVR2,#0AHLCALLDELY;延时10sMOVDPTR,#0FFD8HMOVA,#0BEHMOVX@DPTR,AINCDPTRMOVA,#0FHMOVX@DPTR,A;东西红灯亮MOVR2,#0AHLCALLDELY;延时DJNZR7,JOD2;闪烁次数未到继续LJMPJOD3;循环MOVDPTR,#0FFD8HMOVA,#0AEHMOVX@DPTR,AINCDPTRMOVA,#0BHMOVX@DPTR,A;东西红灯亮,南北绿灯亮MOVR2,#64HLCALLDELY;延时MOVR7,#03H;闪烁次数JOD2:MOVDPTR,#0FFD8HMOVA,#9EHMOVX@DPTR,AINCDPTRMOVA,#07H;---------------------------------------------DELY:MOVR6,#64H;延时程序,延时R2*100msLOOP1:MOVR5,#0F8HNOPLOOP2:DJNZR5,LOOP2DJNZR6,LOOP1DJNZR2,DELYRET;---------------------------------------------END9.3空调制冷控制系统案例实现1.确定任务设计空调制冷控制系统,要求该系统能够自动控制制冷压缩机的运行和停止(制冷压缩机工作,则将空气热量带走,环境温度下降),使环境温度保持在人们设定的温度上(调温范围为10℃~30℃)。控制系统要控制的是空气温度,是通过压缩机的运行、停止控制的,实际上单片机直接控制的是压缩机的工作状态。该系统要实现以下功能。1)根据环境温度控制压缩机工作。控制参数是温度,被控参数是压缩机电路通、断的工作状态。2)设置希望的环境温度值。由人手动控制。3)显示设定的温度值。2.总体设计(1)信号、参数的转化设计1)利用温度传感器将空气温度转化为电信号。因温度传感器输出的是模拟信号,必须经模/数转换器转换为数字信号。2)单片机通过继电器控制压缩机的工作状态。3)利用二位LED温度显示灯显示预置温度值。4)温度设置方法为:系统启动时,自动设置调节温度为20℃,若调高或调低温度,分别由“升温”和“降温”按钮产生脉冲实现,每个脉冲控制升高或降低1℃。(2)机型选择:选用80C51压缩机电源指示灯~220V单片机温度传感器A/D升温按钮降温按钮LED温度显示灯M压缩机指示灯继电器3.硬件设计(1)该制冷控制系统可由80C51单片机最小系统即可实现。电源由220V市电经直流电源转化为+5V直流电压,采用内部时钟电路。(2)选用热敏电阻式温度传感器和ADC0809转换器。温度传感器产生的模拟信号转换为数字信号后,由P0口输入。ADC0809由P3.0启动转换,由P3.1控制输出。信号传输采用无条件输入方式,启动A/D转换后延时100μs从P0口采集数据。时间延迟由T0实现。(3)温度设置信号由脉冲电路产生,为简化系统,通过导线分别与单片机INT0、INT1引脚相连,以中断方式工作。(4)利用电磁继电器控制制冷压缩工作状态。继电路由P3.7驱动。(5)两位显示温度的共阳LED七段码分别由P1口、P2口驱动。硬件设计电路图4.软件设计(1)主程序模块:主要包括设置、显示默认调节温度为20℃的进行系统初始化工作。流程图如图12-4所示。(2)温度设置模块:包括“升温”和“降温”两段程序,它们的内容相仿。(3)温度显示模块:将2位表示设定温度值的压缩BCD码拆分,查表得到相应的共阳LED码,分别送往P1、P2口。(5)定