毕业设计(论文)基于单片机的恒温箱控制器的软件设计.doc
摘 要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度信号的控制水平。能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计论述了一种以AT89S52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括AT89S52单片机最小系统,测温电路、实时时钟电路、LED数码管显示电路等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、按键处理程序、LED显示程序以及数据存储程序等。关键词:AT89S52单片机 DS18B20 显示电路 AbstractAlong with the computer measurement and control technology is developed rapidly and widely used, microcontroller as the core temperature acquisition and control system development and application has greatly improved the production life of the temperature signal to the control level. Able to work independently of the temperature detection and display system for use in many areas. The traditional temperature measurement using thermistor as a temperature sensitive element. The thermistor is low in cost, but the subsequent signal processing circuit, and relatively poor reliability, measurement accuracy is low, also have certain error detection system. Compared with the traditional thermometer, the digital thermometer with reading convenience, a wide range of temperature measurement, accurate temperature measurement, digital display, wide application range etc.This design presents a AT89S52 microcontroller as the main control unit, taking DS18B20as the temperature sensor temperature control system. The control system can real time storage temperature related data and recording the current time. The system design of the hardware circuit and the related applications. The hardware circuit including AT89S52MCU minimum system, a temperature measurement circuit, clock circuit, the LED digital tube display circuit. System program, including the main program, the read-out temperature subroutine, the calculated temperature subroutine, key processing program, LED display program and data storage program.Key words: AT89S52 microcontroller DS18B20 display circuit目 录摘要IAbstractII绪论11 恒温箱控制器系统组成及工作原理21.1 恒温箱系统的组成21.2 恒温箱系统的工作原理22 芯片介绍42.1 AT89S52单片机介绍42.1.1 AT89S52单片机简介42.1.2 AT89S52单片机时序42.1.3 AT89S52单片机引脚介绍52.2 温度传感器DS18B20介绍72.2.1 温度传感器DS18B20简介72.2.2 温度传感器DS18B20的主要性能特点82.2.3 DS18B20的引脚及功能介绍82.3 七段LED数码管介绍93 硬件电路设计103.1 硬件电路框图103.2 硬件电路图103.2.1 系统硬件电路图103.2.2 DS18B20温度传感器电路113.2.3 加热模块电路114 系统软件设计124.1 系统程序流程124.2 读温度子程序124.2.1 读温度流程图124.2.2 读温度子程序134.3 计算温度度子程序144.3.1 计算温度流程图144.3.2 计算温度子程序154.4 按键处理子程序164.4.1 按键程序流程图164.4.2 按键子程序175 系统软件调试21结论23致谢25参考文献26附录27绪 论二十一世纪是科技高速发展的信息时代,电子技术、微型单片机技术的应用更是空前广泛,是随着超大规模集成电路技术的发展而诞生的。由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化。智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。它迅猛的发展到了各个领域,人们也越来越感到应用单片机技术的优越性,因而单片机也得到了广泛的应用。同时,它也不断地完善和发展1。智能恒温箱的温度是医疗、工业生产和食品加工等领域的关键,因此对温度的测量及控制始终占据着重要的地位。市场上常见的温度传感器以电压输出为主要形式,不同的的传感器其非线性曲线也各不相同,缺乏一个产品应具备的通用性和互换性。温度传感器应用范围很广、使用数量很大,但是在常规的环境参数中由于温度受其它因素影响较大,而且难以校准,因此,温度也是最难准确测量的一个参数。常规方法测量温度误差大、准确度低、测量滞后的时间长。今年来,国内传感器正向着集成化、智能化、网络化和单片机的方向发展,为开发新一代温度测量系统创造了有利条件。在智能恒温箱控制系统的设计中,用数字传感器将温度信号以数字信号的方式传送给单片机,经单片机处理后的温度数值,一方面送数码管显示;另一方面与给定值进行比较,判断温度高低,从而采取相应的措施:加热或者制冷。使温度达到设定值。智能恒温箱主要是用来控制温度,它为农业研究、生物技术、测试提供所需的各种环境模拟条件,因此可广泛适用于药物、纺织、食品加工等无菌试验、稳定性检查以及工业产品的原料性能、产品包装、产品寿命等测试。随着单片机技术的飞速发展,通过单片机对被控制对象控制日益广泛,具有体积小、功能强、性价比高等特点,把单片机应用于温度控制系统中可以起到更好的控温作用,智能恒温箱是使用单片机进行温度控制的典型应用,采用单片机做主控单元可完成对温度的采集和控制等要求。1 恒温箱控制器系统组成及工作原理1.1 恒温箱系统的组成本系统主要由控制器、显示电路、温度检测传感器、加热控制电路、按键电路等组成。硬件结构图如图1-1所示:图1-1 恒温箱控制器硬件框图各部分功能为:(1) 传感器:本次设计所使用的传感器是指的温度传感器,即DS18B20数字温度传感器。用于对恒温箱内的空气温度信号进行收集,并传送至单片机进行处理;(2) 加热:设计所采用的加热电路为AC220V加热电路,光电开关的开通和关断来对恒温箱内的空气进行加热和停止,使恒温箱内达到我们所需要的温度值;(3) 按键:这部分由三个按键来完成相应的功能,分别实现温度设定上调、温度设定下调、温度设定确认的功能;(4) 显示:实现当前温度数值的显示;(5) 单片机:处理传感器和按键传传送过来的信号,控制显示、测温和加热电路的运行。1.2 恒温箱系统的工作原理本系统是借用单片机采用模块化设计的智能恒温箱,包括温度设定按钮,温度显示,温度调节,实时温度显示和预定温度显示转换按钮,温度采集等(根据需要也可另设或者多设相关功能)。显示系统除了显示实时的温度还能显示设定的温度,也就是人们想要保持的温度。系统上电使用时可以自行根据需要来调节预期的恒温温度,调节温度范围为099。调节好后系统会开始自动运行。系统会将采集来的实时温度与设定的预期温度进行比较,并且如果实时温度比设定温度要高的话会就断开加热设备,停止对恒温箱内的空气进行加热,直到恒温箱内的温度下降到与设定温度值相等;如果实时温度比预期温度要低的话就开启加热设备,开始对恒温箱内的空气进行加热,直到恒温箱内的温度升高到与设定温度值相等。如果温度一样则不开启加热或制冷设备。在显示电路上通常显示的是实时的温度,即传感器采集来的恒温箱控制器内的即时温度,如果想要显示人们设定的预期温度可以按显示切换键,这时显示器上就会显示预期温度,几秒钟后跳回,显示实时温度。显示实时温度时,表示显示的是实时温度的发光二极管点亮。而显示预期温度的时候,表示显示的是预期温度的发光二极管点亮。单片机是整个恒温箱的核心,硬件电路平台搭建好以后的软件设计用汇编语言编写。它完成了温度参数设定,温度采集计算,温度显示,温度比较,温度调节等功能。2 芯片介绍 21 AT89S52单片机介绍2.1.1 AT89S52单片机简介目前,51系列单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。AT89S52单片机在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个8位的微型处理器CPU;一个512K的片内数据存储器RAM;4K片内程序存储器;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHz。以上各个部分通过内部总线相连接2。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案3。2.1.2 AT89S52单片机时序AT89S52单片机的一个执器周期由6个状态(s1s6)组成,每个状态又持续2个震荡周期,分为P1和P2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为16us;在一般情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的传输发生在P2期间。对于单周期指令,当指令操作码读入指令寄存器时,使从s1P2开始执行指令。如果是双字节指令,则在同一机器周期的s4读入第二字节。若为单字节指令,则在s1期间仍进行读操作,但所读入的字节操作码被忽略,且程序计数器也不加1。在加结束时完成指令操作4。多数AT89S52指令周期为12个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。 对于双字节单机器指令,通常是在一个机器周期内从程序存储器中读入两个字节,但Movx指令例外,Movx指令是访问外部数据存储器的单字节双机器周期指令,在执行Movx指令期间,外部数据存储器被访问且被选通时跳过两次取指操作5。2.1.3 AT89S52单片机引脚介绍AT89S52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚6。引脚图如图2-1所示。 图2-1 AT89S52引脚图下面按引脚功能分为4个部分叙述个引脚的功能。(1) 电源引脚Vcc和接地引脚GND/Vss:Vcc(40脚):接+5V电源正端;GND(20脚):接地。 (2) 外接晶振引脚XTAL1和XTAL2:XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。XTAL2(18脚):接外部石英晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接7。(3) 控制信号或其他电源复用引脚: 控制信号或与其它电源复用引脚有RST/ VPD、ALE/P、PSEN和EA/ Vpp4种形式:RST/VPD(9脚):RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失;ALE/ P (30脚):当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低电平;PSEN(29脚):片外程序存储器读选通输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN信号将不出现;EA/Vpp(31脚):EA为访问外部程序存储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片内程序存储器4KB(MS52子系列为8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp8。(4) 输入/输出(I/O)引脚P0口、P1口、P2口及P3口P0口(39脚22脚):P0.0P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节;P1口(1脚8脚):P1.0P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址;P2口(21脚28脚):P2.0P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址;P3口(10脚17脚):P3.0P3.7统称为P3口。它可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表9。表2-1 单片机P3.0管脚含义图引脚第2功能P3.0RXD(串行口输入端)P3.1TXD(串行口输出端)P3.2INT0(外部中断0请求输入端,低电平有效)P3.3INT1(外部中断1请求输入端,低电平有效)P3.4T0(定时器/计数器0计数脉冲端)P3.5T1(定时器/计数器1计数脉冲端)P3.6WR(外部数据存储器写选通信号输出端,低电平有效)P3.7RD(外部数据存储器读选通信号输出端,低电平有效)综上所述,MCS51系列单片机的引脚作用可归纳为以下两点:(a)单片机功能多,引脚数少,因而许多引脚具有第2功能;(b)单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线10。2.2 温度传感器DS18B20介绍 2.2.1 温度传感器DS18B20简介 DS18B20数字温度计是Dallas公司生产的1Wire器件,即单总线器件。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。因此用它来组成一个测温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。目前已被众多行业进行广泛的运用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。通过编程,DS18B20可以实现912位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。每片DS18B20在出厂时都设有唯一的产品序列号,因此多个DS18B20可以挂接于同一条单线总线上,这允许在许多不同的地方放置温度传感器,特别适合于构成多点温度测控系统。2.2.2 温度传感器DS18B20的主要性能特点(1) 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;(2) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(3) 测温范围 55+125,固有测温分辨率0.5; (4) 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定;(5) 工作电源为35V/DC; (6) 在使用中不需要任何外围元件; (7) 测量结果以912位数字量方式串行传送;(8) 负压特性,电源极性接反时,温度计不会烧毁,但不能正常工作.2.2.3 DS28B20的引脚及功能介绍DS18B20数字温度传感器的引脚图如图2-2所示,DS18B20数字温度传感器引脚的功能描述见表2-2。 图2-2 DS18B20引脚图表2-2 DS18B20详细引脚功能描述图序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。23 七段LED数码管介绍LED数码管显示器由8个发光二极管中的7个长条发光二极管(称七笔段)按a、b、c、d、e、f、g顺序组成“8”字形,另一个点形的发光二极管放在右下方,用来显示小数点。数码管按内部连接方式又分为共阳极数码管和共阴极数码管两种。若内部8个发光二极管的阳极连在一起接电源正极,就成为共阳极数码管;若8个发光二极管的阴极连在一起接地,则称为共阴极数码管,本次设计所用到的四位数码管的引脚如图2-3所示,外部有12个引脚。 LED显示器工作在动态显示方式时,段选码端口I/O1用来输出显示字符的段选码,I/O2输出位选码。 I/O1不断送待显示字符的段选码,I/O2不断送出不同的位扫描码,并使每位显示字符显示一段时间,一般为15mS。利用眼睛的视觉惯性,从显示器上便可以见到相当稳定的数字显示。段选(a,b,c,d,e,f,g,p):对应8个发光二极管,接I/O口,共阴(或共阳)时接地(或+5V),根据条件控制发光二极管的亮或灭。位选(A,B,C,D):共阴(或共阳)时接地(或+5V)分别用选中对应位的LED11。图2-3 四位LED数码管引脚图3 硬件电路设计3.1 硬件电路框图 本课题设计的是一种以AT89S52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度采集模块、按键处理模块、实时时钟模块、数据存储模块、LED显示模块以及单片机最小系统12。系统硬件框图如图3-1所示。 图3-1 系统硬件图3.2 硬件电路图 3.2.1 系统硬件电路图恒温箱硬件平台采用AT89S52作为电路系统的控制核心。按键将设置好的温度值传给单片机,通过温度显示模块显示出来。初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到的温度值实时的显示出来,当加热到设定温度值时关闭加热器。当自然冷却到设定温度3以下时,单片机再次启动加热器,如此循环往复,以达到恒温控制的目的13。系统硬件电路图如图3-2所示。在本系统中,DP1DP3用于七段码显示;P1.0用于接收DS18B20采集到的数字温度信号;FUZAI控制光电开关,决定电加热器是否工作;K1K3用于按键控制;串行口用于输出显示段码;P2.0,P2.1用于对数码管进行动态扫描14。图3-2 系统硬件电路图3.2.2 DS18B20温度传感器电路DS18B20温度传感器电路如图3-3所示:图3-3 温度传感器硬件电路图3.2.3 加热模块电路加热电路如图3-4所示: 图3-4 加热模块电路图4 系统软件设计4.1 系统程序流程系统的软件主要是采用汇编语言,对单片机写入程序以实现预期功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘等模块。用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值并负责调用各子程序15。其程序流程如图4-1所示。 图4-1 系统程序流程图4.2 读温度子程序4.2.1 读温度流程图读出温度子程序的主要功能包括初始化,判断DS18B20是否存在,若存在则进行一系列的读操作,若不存在则返回。其程序流程图如图4-2所示。图4-2 读温度流程图4.2.2 读温度子程序 读取DS18B20中的温度数据,由于是串行通信,每次读取1个,循环8次读取,入口参数为TEMPER_L,将温度的高位和低位从DS18B20中读出,低位存入31H,高位存入30H,由于令R2为8,自减1不为0跳转,直至为0,从而循环8次。;*;读DS18B20的程序,从DS18B20中读出两个字节的温度数据;*READ_18200:MOV R4,#2 ; 将温度高位和低位从DS18B20中读出MOV R1,#TEMPER_L ; 低位存入31H(TEMPER_L),高位存入30H(TEMPER_H)RE00: MOV R2,#8RE01:CLR CSETB DQ NOPNOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET4.3 计算温度度子程序4.3.1 计算温度流程图计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4-3所示。图4-3 计算温度流程图4.3.2 计算温度子程序 取温度值低位的整数部分,通过“逻辑与”得到十位单个数值,再通过半字节交换指令得到真正的个位;同理,对温度的高位再通过“逻辑与”命令和半字节交换指令得到十位真正的十位,两数值相加之和,再通过数据转换,将十六进制温度转换为压缩BCD码,从而得出用十进制的温度值。;*;将从DS18B20中读出的温度数据进行转换;*TEMPER_COV: MOV A,#0F0H ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值 SWAP A MOV TEMPER_NUM,A ;得到低四位 MOV A,TEMPER_L JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值 INC TEMPER_NUMTEMPER_COV1: MOV A,TEMPER_H ANL A,#07H SWAP A ORL A,TEMPER_NUM ;得到高四位,再与低四位相或得到值 MOV TEMPER_NUM,A ; 保存变换后的温度数据 LCALL BIN_BCD RET;*;将16进制的温度数据转换成压缩BCD码;*BIN_BCD: MOV A,TEMPER_NUM MOV B,#10 DIV AB MOV TEMPER_SHI,A MOV TEMPER_GE,B MOV A,TEMPER_SAVE CJNE A,TEMPER_GE,ZWFHRET: MOV TEMPER_SAVE,TEMPER_GE RETZW: AJMP FHRET4.4 按键处理子程序4.4.1 按键程序流程图按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫描,判断是否有输入键按下则进行一系列的按键输入操作。其程序流程框图如图4-4所示。图4-4 按键程序流程图4.4.2 按键子程序系统启动,开始扫描键盘,当有输入数据确认按钮(K_ENTER,P1.3口)键入,则开始键盘输入,并且通过访问K_DELAY延时子程序对接键盘进行按钮延时抖动处理。每次进入键盘输入都赋值输入标志ENTER_FLAG为0。当确认已输入完毕后,则ENTER_FLAG为1,退出键盘程序,温度设定完成。;程序名称:SCAN_KEY;功能:扫描键盘;入口参数:TEMPER_GE,TEMPER_SHI;出口参数:KEY_BUF_G,KEY_BUF_SSCAN_KEY:JB K_ENTER,QUIT ;如果又Enter键入,则开始键盘输入LCALL K_DELAYJB K_ENTER,QUITCLR ENTER_FLAG ;每次进来都赋值输入标志,设置为0MOV KEY_BUF_G,TEMPER_GE ;将当前的温度赋值给KEY_BUFMOV KEY_BUF_S,TEMPER_SHIK_LOOP:JB ENTER_FLAG,QUIT ;如果输入完成,ENTER_FLAG则为1,退出键盘程序JB K_ENTER,KUPCALL PRO_ENTERKUP: JB K_UP,KDOWNCALL PRO_UPKDOWN: JB K_DOWN,LOOPACALL PRO_DOWNLOOPA: LCALL DISPLAYSJMP K_LOOPQUIT: RET;程序名称:PRO_ENTER;功能:确认键盘输入和退出键盘输入;入口参数:ENTER_FLAG;出口参数:ENTER_FLAGPRO_ENTER:CALL K_DELAYJB K_ENTER,K_LOOP ;按钮抖动处理SETB ENTER_FLAGCALL K_DELAYRET;程序名称:PRO_UP;功能:数值上调处理;入口参数:KEY_BUF_G,KEY_BUF_S;出口参数:TEMPER_GE,TEMPER_SHIPRO_UP:CALL K_DELAYJB K_UP,K_LOOP ;按钮抖动处理INC KEY_BUF_G ;个位增一MOV A,KEY_BUF_GCJNE A,#0AH,UPNEXT ;个位增加到10,回0MOV KEY_BUF_G,#00HINC KEY_BUF_S ;十位加一MOV A,KEY_BUF_SCJNE A,#0AH,UPNEXT ;十位超过99,溢出了MOV R0,#200UPNEXT:MOV TEMPER_GE,KEY_BUF_GMOV TEMPER_SHI,KEY_BUF_SCALL K_DELAYRET;程序名称:PRO_DOWN;功能:数值下调处理;入口参数:KEY_BUF_G,KEY_BUF_S;出口参数:TEMPER_GE,TEMPER_SHIPRO_DOWN:CALL K_DELAYJB K_DOWN,K_LOOP ;按钮抖动处理DEC KEY_BUF_G ;个位减一MOV A,KEY_BUF_GCJNE A,#0FFH,DOWNNEXT ;个位减到0,回到9MOV KEY_BUF_G,#09HDEC KEY_BUF_S ;十位减一MOV A,KEY_BUF_SCJNE A,#0FFH,DOWNNEXT;十位低于0,溢出了MOV R0,#200DOWNNEXT:MOV TEMPER_GE,KEY_BUF_G ;增加完后,赋值退出,然后DISPLAY显示MOV TEMPER_SHI,KEY_BUF_SCALL K_DELAYRETK_DELAY: ;键盘抖动延时子程序MOV R6,#250DL20MS_1:MOV R7,#200DJNZ R7,$DJNZ R6, DL20MS_1RET5 系统软件调试本设计使用的是南京伟福SP51型MCS51专用USB仿真器,仿真器系统由仿真机与仿真头组成,本仿真器主机型号为S51,仿真头型号为POD-S8X5X(可仿真51系列8X5X单片机)。本系统使用的软件开发工具是伟福V系列仿真软件。由于采用汇编语言编程,程序比较长,可用模块化的调试方式逐一进行调试。该工具可实现单步、连续单步、断点、停止/运行,支持寄存器/存储器的观察和修改等功能。本系统在软件部分,由于程序比较复杂,所以需要注意的部分也很多。调试时应分开进行。各段程序分开调试才能完整找到错误。在调试时,时有遇到提示错误与真正错误不是同一地方,所以分段提示很重要。在实验室电脑上安装有伟福软件,操作步骤如下:(1) 双击桌面上的WAVE图标进入开发环境;(2) 使用时要设置好仿真器、仿真头以及CPU类型,并注意是否“使用伟福软件模拟器”,若使用硬件仿真,应去掉“使用伟福软件模拟器”前的选择;(3) 在文件窗口下进行新建、打开、保存等文件操作,并在此窗口下可将源文件编译成目标文件,可全速、跟踪、断点等各种方式运行;(4) 源程序编译通过,表明语法正确,却不能保证该程序能够正确进行,就需要对逻辑功能进行调试;(5) 在调试程序时可以选择单步运行,连续运行,设置断点等各种调试方法来快速找到错误。在硬件平台构建好以后,我便用伟福仿真器将事先写好的程序载入仿真器中进行仿真,仿真也不是一帆风顺的,不是一次就