《基于单片机得温度控制器毕业设计说明书(共55页).doc》由会员分享,可在线阅读,更多相关《基于单片机得温度控制器毕业设计说明书(共55页).doc(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目 录引 言随着生产生活的需要,自动化控制越来越起到至关重要的作用。温度控制是工业生产过程中很普遍的过程控制,人们需要对各种加热炉,热处理炉,反应炉等锅炉中温度进行测量与控制。特别是冶金,化工、建材、食品、机械、石油等工业中,具有举足轻重的作用,其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的,工业生产中温度控制具有单向性、时滞性、大惯性和时变性的特征,同时要实现温度控制的快速性和准确性,对于对于提高产品质量具有很重要的意义。对于不同的场所、不同的工艺、不同的产品所需要的温度范围不同、精度也不同,则采用的温度测量元件以及温度测量方
2、法和控制方法都有所不同;产品工艺不同、温度控制的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同。因此对温度的控制方法要多种多样。随着电子技术和微型计算的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。利用微机对温度进行测控的技术也随之而产生。现有的温度传感器大多为(热电偶)体积大,应用复杂,多为模拟信号,已经不在适合现代工业的灵活性要求了。本设计是基于单片机的温度控制系统,为闭环系统,工作的可靠性高、精度高。本设计主要围绕单片机进行设计,从实际应用出发,选取了体积小、精度相对较高的数字式温度传感器件DS18B20作为温度采集装置,以单片机89C51作为主控芯片,160
3、2作为显示输出,实现了对温度的实时测量,当温度超出设定范围系统将会自动调节加热或者降温系统,从而实现了实时恒温控制。第一章 系统方案论证关于温度的检测问题,通常是通过温度敏感元件(热敏电阻)通过模数转换器(A/D),将模拟量转换成数字量,利用此种方法无法可靠的保证采样的精度,所以我们选择DS18B20直接从温度信号得到数字信号,大大提高了采样的精准度。1.1 方案设计温度的控制方法多种多样,诸如PLC控制,模拟PID调节和数字PID调节等等。从经济性和操作的可行性,本设计选择单片机控制与PLC控制进行对比选择。方案一:利用单片机实现温度控制此方案以89S51单片机为CPU进行控制,系统主要包括
4、现场温度采集(DS18B20)、实时温度显示(LCD1602)、报警电路提示、核心(89S51)单片机。DS18B20直接采集数据并以数字的形式传到处理器,处理器会检查现场温度并将其与用户设定的温度进行比对,采取相应的措施(LED发光二极管闪烁),以提示用户温度和所需温度不同,需采取相应的措施,直至温度达到设定的范围内,LED发光二极管不再闪烁,从而实现温度的控制。方案二:利用PLC实现温度控制利用PLC实现恒温控制,采用PLC控制实现电热丝加热全通、间断导通和全断加热的自控方式,来保持温度的恒定。智能型电偶温度表将置于被测对象中,热电偶的传感信号与恒定温度的给定电压进行比较,生成温差,自适应
5、恒温控制电路根据差值大小控制电路的通断。1.2方案的对比论证 方案一采用单片机实现温度调节,成本低,而且具有较高的可靠性,对于系统动态性能与稳定要求不是很高的场合非常的合适,采用DS18B20作为温度传感器,直接得到数字信号,通过单片机对偏差进行运算,若温度不在所调节的温度范围之内会以单灯闪烁的形式提醒用户,用户采取措施达到控制温度目的。方案二采用PLC进行控制,PLC的成本比单片机高出太多,而且还要提供良好的工作环境,对周边设备的要求也很高。综合各种因素,本设计将采用单片机来实现恒温控制。第二章 系统硬件电路的设计2.1电路总体原理框图温度传感器AT89S51通信部分LCD显示按键设置电源部
6、分声光报警本系统以89S51为核心,系统启动,首先通过DS18B20检测温度,将信号传至单片机,在LCD 1602上显示,并且将其数值与设定值进行比对,温度高于设定值或者温度低于设定值的时候,单片机会输出信号使报警指示灯闪烁,从而提醒用户温度异常采取措施 使温度上升或者下降到用户所调节的范围之内,达到温度的控制。2.2单片机的选择AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)Flash存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了
7、通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。AT89S51在空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存
8、RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式。功能有所提升加了.89S51相对于89C51增加了新功能包括: 1. ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离.是一个强大易用的功能. 2.最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度. 3.具有双工UART串行通道. 4.内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路. 5. 双数据指示器. 6.电源关闭标识. 7. 全新的加
9、密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯. 8. 兼容性方面:向下完全兼容51全部字系列产品.比如8051,89C51等等早期MCS-51兼容产品。89S51单片机性能稳定,价格便宜,能够满足恒温控制的需求,还可以装载用户程序,所以本设计选用该单片机。2.3单片机得管脚说明VCC: 供电电压。GND: 接地。P0口: P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入
10、口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外
11、部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:各口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中
12、断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储
13、器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程
14、期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反 向振荡器的输出。2.4单片机的时钟电路MCS-51系列单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,单要形成时钟,外部还需附加电路,本设计采用内部时钟方式,即利用内部的振荡电路在XTAL1和XTAL2引线上外接定时原件,内部振荡电路便产生自己振荡,用示波器可以观察到XTAL2输出的时钟信号,最常用的是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激振荡器,晶体可在1.2-12
15、MHz之间选择。MCS-51单片机在通常应用情况下,使用振荡频率为6MHz的石英晶体,而12MHz频率的晶体通常是在高速下载串行通信情况下才使用。对电容值无严格要求,但他的取值范围对振荡频率输出的稳定、大小及振荡电路振速有少许影响,C1、C2可在20-40pF之间选取,一般取30pF,电路图如下图:2.5复位电路及其复位状态MCS-51单片机是高电平复位,所以先看给单片机加5V电源(上电)启动时的情况:这时电容充电相当于短路,你可以认为RST上的电压就是VCC,这是单片机就是复位状态。随着时间推移电容两端电压升高,即造成RST上的电压降低,当低至阈值电压时,即完成复位过程。如果按下SW,的确就
16、是按钮把C短路了,这时电容放电,两端电压都是VCC,即RST引脚电压为VCC,如果超过规定的复位时间,单片机就复位了。当按钮弹起后,RST引脚的电压为0,单片机处于运行状态。51单片机复位要求是:RST上加高电平时间大于2个机器周期,你用的12MHz晶振,所以一个机器周期就是1us,要复位就加2us的高电平即可。2.5.1 复位电路MCS-51单片机通常采用自动复位和按键复位两种方式,设计采用的的复位电路如下图,上电后电容充电,按下复位按钮后,电容放电保证RST端保持10ms以上的高电平,这样就能够使单片机有效的复位。复位电路2.5.2 复位状态 复位电路的作用是使单片机实行位操作,复位主要操
17、作是把PC初始化为0000H,使单片机从程序存储器的0000H单元开始执行程序。程序存储器的0003H单元即MCS-51单片机的外部中断0的中断处理程序的入口地址留出的0000H00002H三个单元地址,仅能够放置一条转移指令,因此,MCS-51单片机的主程序的第一条指令通常情况下是一条转移指令。出PC之外,复位还对其他一些特殊功能的寄存器也有影响,他们的复位状态如下表所示。利用他们的复位状态,可以减少应该用程序中的初始化编程,如表所示,SP=07H,P0-P4的锁存器均为FFH外,其他所有的寄存器均为0。单片机的复位状态不影响片内RAM的状态。寄存器复位状态寄存器复位状态PC0000HTMO
18、D00HACC00HTCON00HPSW00HTL000HSP07HTH000HDPTR0000HTL100HP0P3FFHTH100HIP 0xx00000BSCON00HIE0xx00000BPCON0xx00000B2.6温度采集电路的设计选择温度传感器,首先应该考虑温度传感器的测量精度和测量范围,精度符合使用要球,所以我们直接选择数字,避免在收到模拟信号后再将其转化成数字信号,那样会扩大测量误差,影响精确度。DS18B20包含一个10位AD转换器,是一个以0.25的分辨力将温度数字化的温度传感器,测量范围是-55摄氏度到125摄氏度,考虑其精确度与范围故选择DS18B20为测量元件。D
19、S18B20内部结构图低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。2.6.1 DS18B20特点介绍(1)独特的单线接口方式,与单片机通信只需一个引脚,DS
20、18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (2)在使用中不需要任何外围元件。 (3)可用数据线供电,电压范围:+3.0+5.5 V。 (4)测温范围为-55 +125 。在-10+85范围内误差为0.5 。 (5)通过编程可实现912位的数字读数方式。 (6)用户可自设定非易失性的报警上下限值。 (7)支持多点组网功能,通过识别芯片各自唯一的产品序列号从而实现单线多挂接,多个DS18B20可以并联在唯一的线上,简化了分布式温度检测的应用,实现多点测温。 (8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。(9)告警寻找命令可以识别
21、和寻址那些温度超出预设告警界限的器DS18B20的内部测温电路框图2.7键盘接口电路的设计本设计的键盘采用独立式键盘,独立式按键是指用IO口线构成的单个按键电路,每个独立式按键单独占有一根IO口线,每根IO口线上按键的工作状态不会影响其他IO口线的工作状态,即一个按键对应着个端口输入,每一个按键都有一个按键电路来判断其是否按下。 上拉电阻确保按键松开时,IO口线有确定的高电平。当IO口线内部有上接电阻时,外电路可以不配置上拉电阻,本设计采用采用查询方式读取按键,独立式按键电路如图所按键功能按 键 键 名 功 能RESET复位键使系统复位S1位选/设置键确定S2加一键温度上下线加一S3减一键温度
22、上下线减一2.8显示接口和报警电路的设计TC1602是字符型液晶显示模块是一类专门用于显示字母。数字。符号等的点阵型液晶显示模块,它是由若干个57或511等点阵字符组成。每一个点阵字符位都可以显示一个字符,点阵字符位之间的一个点距的间隔起字符间距和行距的作用。目前市面上常用的有16字1行。16字2行。20字2行和40字2行等字符模型,这些LCD虽然显示的字数各不相同,但是都具有相同的输入输出界面。本文介绍的TC1602是一种16字2行的字符型液晶显示模块,其接口引脚的说明如下:编号符号引脚说明编号符号引脚1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示
23、偏压信号11D4Data I/O4RS数据/命令选择端12D5Data I/O5R/W读/写选择端13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极各引脚作用如下:1脚VSS:接地;2脚Vdd:接5V电源;3脚VO:对比度调整端,LCD驱动电压范围为VddVO。当VO接地时,对比度最强;4脚RS:寄存器选择端,RS为0时,选择命令寄存器IR;RS为1时,选择数据寄存器DR;5脚:读写控制端,为1时,选择读出;为0时,则选择写入;6脚Enable:使能控制端,Enable为1时,使能;Enable为0,
24、禁止;7脚14脚D0D7:数据总线;15脚LED:背景光源,接5V;16脚LED:背景光源,接地。显示接口电路的设计 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3-7是1602的内部显示地址。1602的内部显示地址在本系统中我设计了越线报警装置,控制目标温度范围。当设定的目标温度线达到时,需用声音的形式提醒使用者,此时报警器开始发出报警声。在本系统中,当温度高于或者低于设置的温度时报警指示灯闪烁。当单片机P1.1输出高电平时,二极管导通,报警灯闪烁报警。P1.1
25、为低电平时二极管关断,报警灯不工作。电源指示灯和报警指示灯电路2.9通信接口电路设计2.9.1max232原理MAX232芯片是专门为电脑的RS-232标准串口设计的接口电使用+5v单电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)
26、、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。2.9.2 MAX232与单片机的接口电路一般常用的电平转换器件有MAX232、MC1488、MC1489及等,但MC1488、MC1489需要12V电源,这对于8051单片机系统是非常不便的,其中我所选用的是双路RS-232收发器MAX232,它需要+5V电源。本系统采用的是PHILIP
27、S系列的单片机,它本身具有串口通信的功能。MCU与PC机进行通讯,由于PC机的逻辑电平与MCU 的逻辑电平完全不一样。PC机的逻辑电平:-(315)V为逻辑1,+(315)V为逻辑0。而本系统采用的STC系列的单片机的逻辑电平:逻辑“1”为+5V,逻辑“0”为0V。为了达到电平的匹配,采用了MAX232电平转换芯片。在MAX232电平转换芯片的外围使用了4个电容作为电荷泵升压及电压反转部分电路,产生V+、V-电源供电平转换使用。理论上还需要在VCC上接一个104的电容作为对地的去耦电容,而在本系统中直接采用了5个104的电容就能够完成电平转换的功能。如图13所示图13 MAX232电平转换图M
28、AX232产品是由德州仪器公司(TI)推出的一款兼容RS-232标准的芯片。并且可以完全兼容目前市场上使用的RS-232接口芯片该器件,它包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。 MAX232产品的特性有:(1)满足或超过TIA/EIA-232-F 规范要求,符合ITU v.28标准。(2)单5-V电源供电和4个1.0uF充电泵电容。(3)包含2个驱动器和2个接收器。
29、(4)低工作电流典型值为8mA。(5)2000-V ESD保护。 RS232接口芯片MAX232与单片机的接口电路设计第三章 软件系统的设计系统的软件由三大模块组成:主程序模块、功能实现模块和运算模块。3.1 主程序模块主程序主要完成各部件的初始化和实现各功能子程序的调用,以及实际测量中各个功能模块的协调,单片机通过循环对外部温度进行实时显示,以便能对数字按键进行相应处理。主程序流程图如下:3.2温度报警模块 本模块主要是通过LED灯的闪烁来报警,以提醒用户温度异常,采取相应的措施降温或者升温,报警模块流程图如报警子程序温度是否在设定值之外是否允许报警返回开启报警灯报警模块流程图3.3参考程序
30、/* 实验名称: DS18B20温度传感器+LCD+报警 实现说明:DS18B20采集的温度范围是-55+125度,有三个按键来设置其上线温度TH和下限温度值TL xuanze键来选择设置TH还是TL; up键每按一次TH或TL加1; down键每按一次TH或TL减1;实验现象:当DS18B20测得的温度值=上限温度值(TH)或者=下限温度值(TL)时,发光二极管亮,报警; */#include#include #include#define uint unsigned int#define uchar unsigned char#define LCD P0sbit LED=P34;/位定义报
31、警显示灯sbit xuanze=P22;/位定义选择按键sbit up=P21;/位定义极限加sbit down=P20;/位定义极限减int th=10,tl=2,thh=0,tll=0;/初始上限值和下限值uchar i,num=0;/定义变量/* 延时函数*/void delay(uint z) uint x,y; for (x=z;x0;x-) for(y=110;y0;y-);/* LCD部分*/sbit rs=P25;sbit rw=P26;sbit E=P27;uchar tmp5=Temp:;uchar tmp6=C;uchar code tab1=TH:;uchar code
32、 tab2=TL:;write_com(uchar com)/LCD写地址函数 rs=0; rw=0; E=1; LCD=com; delay(5); E=0; write_data(uchar dat)/LCD写数据函数 rs=1; rw=0; E=1; LCD=dat; delay(5); E=0;init_lcd()/LCD初始化函数 write_com(0x38);/16*2显示,5*7点阵,8位数据 write_com(0x0c);/设置为显示开,关光标,不闪烁 write_com(0x06);/写操作后,AC自动加1 write_com(0x01); /LCD清屏 write_co
33、m(0x80+0x01);/LCD第一行第二个位置起显示TH: for(i=0;i3;i+) write_data(tab1i); write_com(0x80+9);/LCD第一行第10个位置起显示TL: for(i=0;i3;i+) write_data(tab2i); write_com(0x80+0X40+0x00);/LCD第二行开始出显示Temp: for(i=0;i5;i+) write_data(tmp5i); write_com(0x80+0X40+10);/显示温度的单位 for(i=0;i0;i-)/循环8次 DQ=0;/总线拉低 DQ=cmd&0x01;/将发送字节的最
34、低位送到总线 delay1(5);/延时(30us),等待DS18B20取走总线数据 DQ=1;/总线拉高 cmd=1;/将待发送的字节右移后,继续发送 uchar readdat()/DS18B20的读字节函数 uchar i=0;/定义位循环变量 uchar temp=0;/定义暂存变量 for(i=8;i0;i-)/循环8次 DQ=0;/总线为低电平 temp=1;/暂存变量右移 DQ=1;/总线拉高,执行如下的读操作 if(DQ)/如果DS18B20输出高电平 temp|=0x80;/将暂存变量的最高位置1 delay1(4);/延时一段时间 return temp;/程序结束后,将暂
35、存变量返回调用程序/* 按键设置上线温度和下限温度值函数 */void key() / key0=0; if(xuanze=0)/如果选择键按下delay(10);/延时消抖if(xuanze=0)/如果按键还处于按下状态 num+;/次数加1 while(!xuanze);/等待按键抬起if(num=1)/如果按下选择键的次数为1 TR0=0;/关闭中断 write_com(0x80+0x00+5);/光标移到第一行第七个位置 write_com(0x0f);/设置为显示开,开光标,闪烁 if(num=2)/如果按下选择键的次数为2 write_com(0x80+0x00+13);/光标移到
36、第一行第十五个位置if(num=3)/如果按下选择键的次数为3 num=0;/次数清零 write_com(0x0c);/设置为显示开,关光标,不闪烁 TR0=1;/开中断 if(num!=0)/在选择键按下时 if(up=0)/如果极限加按键按下 delay(10);/延时消抖 if(up=0)/如果极限加按键仍处于按下状态 while(!up);/等待按键抬起 if(num=1)/如果选择键按了一次 th+;/上线值加1 if(th=0)/如果上线值为正thh=0;/计数清零 write_com(0x80+0x00+4); write_data(+);/显示正号 write_com(0x8
37、0+0x00+5); write_data(th/10+0x30);/显示上限温度值的十位 write_data(th%10+0x30);/显示上限温度值的个位 if(th=0)/如果下限温度值为正 tll=0;/计数清零 write_com(0x80+0x00+12); / 显示正号 write_data(+);/ write_com(0x80+0x00+13); write_data(tl/10+0x30);/显示下限温度值的十位 write_data(tl%10+0x30);/显示下限温度值的个位 if(tl0) tll-; write_com(0x80+0x00+12); write_data(-);/显示正号 write_com(0x80+0x00+13); write_data(tll/10+0x30);/显示上限温度值的十位 write_data(tll%10+0x30);/显示上限温度值的个位 if(down=0)/如果极限减按键按下 del