1、目 录摘 要IAbstractI1 前 言11.1高精度温控系统发展与应用11.2 温控系统的方案11.2.1 模拟温度传感器方案11.2.2 数字温度传感器方案21.3 本温度控制系统的初步思想32高精度温控系统的基本原理42.1单片机基本原理概述42.2 STC89C52单片机引脚排列及功能介绍42.2 DS18B20温度传感器检测技术原理62.2.1 DS18B20的性能特点:72.2.2 DS18B20的测温原理72.2.3 DS18B20与单片机的接口电路93 系统的硬件组成电路设计103.1 时钟电路103.2 STC89C52的复位电路113.3 LED显示模块113.4 单总线
2、数字温度传感器DS18B20检测电路123.5 驱动电路123.6 系统总硬件设计134、软件设计144.1主程序流程图144.2主程序设计154.3 DS18B20温度传感器初始化214.3.1读出温度子程序214.3.2 DS18B20的写读时序224.4 DS18B20数据采集程序的设计234.5调试25结束语26致 谢27参考文献28I摘 要随着嵌入式技术、计算机技术、通信技术的不断发展与成熟。控制系统以其直观、方便、准确、适用广泛而被越来越广泛地应用于工业过程、空调系统、智能楼宇等。恒温控制系统,控制对象是温度。温度控制在日常生活及工作领域应用的相当广泛,比如温室、水池、发酵缸、电源
3、等场所的温度控制,而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。本项目设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:被控温度范围可以调整,初始范围5=T=38。如果被测温度在5度到38度之间,则既不加热,又不报警;如果被测温度小于5度,则既加热,又报警;如果被测温度大于38度,则报警,降温。 数码管显示温度,温度精确一位小数。关键词:数字温度计、单片机、温度传感器 AbstractWith the embedded technology, computer technology, communication technolo
4、gy continues to evolve and mature. Control system with its intuitive, convenient, accurate, widely applicable and is more widely used in industrial processes, air-conditioning systems, intelligent buildings. Constant temperature control system, control temperature. Temperature control in daily life
5、and work applications in the field of a wide range of temperature control such as the greenhouse, pond, fermentation tank, power supply and other places, the past, temperature control is done by hand and not enough attention, in fact, in many places the temperature need to be monitored prevent accid
6、ents. The project design is the temperature real-time monitoring and control, temperature control system designed to achieve basic temperature control functions: charged with the temperature range can be adjusted, the initial range 5 =T = 38. If the measured temperature of 5 degrees to 38 degrees, n
7、either heating nor alarm; if the measured temperature is less than 5 degrees, both the heating and alarm; if the measured temperature is greater than 38 degrees, then the alarm cooling. Digital display of temperature, temperature accurate to one decimal.Key words: digital thermometer, microcontrolle
8、r, temperature sensor 1 前 言1.1高精度温控系统发展与应用随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至
9、出现控制不稳定、失控现象。国内外度计算机控制技术的发展善计算机的发展最早可以追溯到上个世纪的40年代,但将计算机用于环境控制则开始于20世纪60年代。20世纪80年代初诞生了第一批温室控制计算机,此后温度计算机控制及管理技术便函先在发达国家得到广泛应用,后来各发展中国家也都纷纷引进,开发出适合自己的系统。数字式温湿度传感器:就是能把温度物理量和湿度物理量,通过温、湿度敏感元件和相应电路转换成方便计算机、PLC、智能仪表等数据采集设备直接读取得数字量的传感器。我国南方温度严热而漫长,只有大力推广大棚蔬菜的种植来满足人们日常生活对蔬菜的需要。随着人们生活水平的日益增长,对蔬菜的要求也较高,对大棚蔬
10、菜的温度控制就是一个重要因素。温度过高,蔬菜就会停止生长或者糜烂。应用自动控制和电子计算机实现农业生产和管理的自动化,是农业现代化的重要标志之一。在信息化程度越来越高的今天,担当信息处理与交换重任的机房是整个信息网络工程的数据传输中心、数据处理中心和数据交换中心。为保证机房设备正常运行及工作人员有一个良好的工作环境,对机房温湿度的监测是必不可少的,合理正常的温湿度环境是机房设备正常运行的重要保障。温湿度监测除用于机房监测外,还可以广泛应用于如生物制药、无菌室、洁净厂房、电信银行、图书馆、档案馆、文物馆、智能楼宇等各行各业需要温湿监测的场所和领域。随着我国经济的高速发展,我国在科技和生产各领域都
11、取得了飞速的发展和进步,发展以温度传感器为载体的温度测量技术具有重大意义。发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行。炼油过程中,原油必须在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境,很多工业生产根本无从谈起。可见研究温度的测量具有重要的理论意义和推广价1.2 温控系统的方案1.2.1 模拟温度传感器方案该案由单片机、模拟温度传感器AD590、运算放大器、AD转换器、LCD显示电路、集成功率放大器、报警器组成。该方案采用模拟温度传感器AD590作为测用运算放大器交给信号进行适当的放大,最后通过模数转换器将
12、模拟模拟信号转换成数据信号,传给单片机,单片机将温度值进行处理之后用LCD显示,当温度值超过设定值时开始报警。如图1-1所示:图1-1 温度测量系统方案框图数字温度传感器方案论证:采用模拟温度传感器,转换结果需要经过运算放大器传给处理器。它控制虽然简单,但电路复杂,不容易实现对多点温度测量和监控。由于采用了多个分立元件和模数转换器,不容易出现误差,测量结果不是很准确。1.2.2 数字温度传感器方案该方案使用了STC89C51单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,通过键盘模块对温度上、下限设置。显示电路采用LED模块,如图1-2所示:图1-2 温度测量系统方案框图数字
13、温度传感器方案的论证:采用智能温度传感器DS18B20,它直接输入数字量,精度高,电路简单,只需要模拟DS18B20的读写时序,根据DS18B20的协议读取转换的温度。DS18B20 可以直接读出被测温度值,支持多点测温。而且采用3 线制与单片机相连,减少了外部硬件电路,具有低成本和易使用的特点。 DS18B20 是Dallas 半导体公司的数字化温度传感器,它是一种支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。一线总线将独特的电源和信号复合在一起,并仅使用一条线,每个芯片都有唯一的编码,支持联网寻址,简单的网络化的
14、温度感知,零功耗等待等特点。综上所述数字温度传感器方案最适合本实验。1.3 本温度控制系统的初步思想本系统控制核心芯片选用STC89C52单片机;测温电路选用了美国DALLAS公司生产的单线总线数字式温度传感器DS18B20;数字显示电路采用4位LED共阳极数码管实现。电源部分采用5V电压供系统使用。单片机由外接11.0592MHz标准晶振提供时钟电路。选用89S52单片机为中央处理器,通过温度传感器DS18B20对室内的温度进行实时精确测量,将采集到的温度信号传输给单片机,再由单片机控制LED显示器,并比较采集温度与设定温度是否一致,然后驱动继电器加热或降温对温度进行处理,从而实现对温度温度
15、在某一范围内进行控制。温度的设定部分,采用3个键盘设计,键盘包括状态选择键、温度加、温度减,。三个独立按键,分别设置,加温和降温三个功能,以实现对各种环境温度的调整。加热模块工作以后通过电暖器,热得快,空调等方式实现温度的升高,降温模块工作以后通过电扇,空调,制冷设备等方式实现温度降低,以达到对温度进行控制的目的。对于温度控制,采用单片机STC89C52组成的自动控制系统,其系统硬件总体方框图如1-3图所示:图1-3 硬件总体方框图2高精度温控系统的基本原理2.1单片机基本原理概述STC89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,STC89C52 提供以下功能标准:8
16、K字节Flash闪速存储器,256字节内部RAM,32个I/O 线个16位定时器/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路2。同时,STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中段系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它部件工作直到下一个硬件复位。2.2 STC89C52单片机引脚排列及功能介绍 STC89C52单片机有3种不同的封装,即PDIP、PLCC和TQFP,其有效引脚为40条,现以PDIP(双列直插式,见图2-1)封装为例简
17、述各引脚功能。 图2-1 单片机引脚排列图1 主电源引脚Vcc(40脚):直流电源供电电压45。Vss(20脚):电源接地端。2 振荡器电路外接晶振引脚XTAL1(19脚)、XTAL2(18脚):当使用片内振荡器的时钟电路方式时,电路接法如图2-2所示,C1、C2为微调电容,通常取2030pF,以保证振荡器电路的稳定性及快速性,同时要求在设计电路板时,晶振和电容应尽量靠近单片机芯片,以减小分布电容所引起对振荡电路的影响。图2-3为使用外部振荡器的时钟电路方式,使用该时钟电路方式时,高低脉冲电平持续时间应不短于20ns,否则工作不稳定。 图2-2 内振荡器的时钟电路 图2-3 外振荡器的时钟电路
18、3 多功能I/O接口引脚P0口(3239脚):P0口是一个8位漏极开路并行双向I/O端口。当它作为通用I/O接口时每个引脚须外接上拉电阻。当作输出口时,每个引脚能以吸收电流的方式驱动8个LSTTL负载;当作为输入口时,须首先将引脚内的输出锁存器置1。P0口在系统需要功能外扩展时,可用作访问外部程序存储器和数据存储器时的低8位地址线/数据总线的分时复用线,在该模式工作下,引脚不用外接上拉电阻。P1口(18脚):P1口是一个内接上拉电阻的8位并行双向I/O端口。它可作为通用I/O口,当作输出口时,每个引脚可驱动4个LSTTL负载;当作输入口时,须首先将引脚内的输出锁存器置1。在FLASH并行编程和
19、校验时,P1口可输入低字节地址信息。在串行编程和校验时:P1.5(6脚):MOSI(串行指令输入);P1.6(7脚):MISO(串行数据输出);P1.7(8脚):SCK(串行移位脉冲控制端)。P2口(2128脚):P2口是一个内接上拉电阻的8位并行I/O端口,它可作为通用I/O口,作输出口时,每个引脚可驱动4个LSTTL负载,用作输入口时,须首先将引脚内的输出锁存器置。P2口在系统外扩展时,可以用作访问外部程序存储器和数据存储器的高8位地址总线。在FLASH存储器并行编程和校验时,P2口可输入高字节地址信息,P2.6、P2.7作控制位。P3口(1017脚):P3口具有内部上拉电阻的8位双向并行
20、端口,它可以作为通用I/O口,作输出口时,每个引脚可驱动4个LSTTL负载,用作输入口时,须首先将引脚内的输出锁存器置1。在FLASH存储器编程和校验时,P3.3、P3.6、P3.7可作控制位。P3口还具有第二种功能,如下所示。P3.0:RXD(串行口输入端);P3.1:TXD(串行口输出端);P3.2:INT0(外部中断0信号输入端);P3.3:INT1(外部中断1信号输入端);P3.4:T0(定时器/计数器0外部计数脉冲输入端);P3.5:T1(定时器/计数器1外部计数脉冲输入端);P3.6:WR(外部数据存储器的写选通);P3.7:RD(外部数据存储器的读选通);4 复位、控制和选通引脚
21、RST(9脚):单片机复位输入端,高电平有效。在单片机上电后,振荡器稳定有效运行的情况下,若RST端脚能维持两个机器周期(24个振荡周期)以上的高电平,则可使单片机系统复位有效(复位有效时,片内各特殊功能寄存器状态参见表4.1)。当看门狗定时器WDT溢出输出时,RST端脚将输出长达98个振荡周期的高电平。EA/VPP(31脚):双功能引脚,EA为访问内部或外部程序存储器的选择信号端,当EA接地(低电平)时,CPU只执行片外程序存储器中的程序;当EA接VCC(高电平)时,CPU首先执行片内程序存储器中的程序(地址单元从00000FFF),然后自动转向执行片外程序存储器中的程序(地址单元从1000
22、FFFF)。VPP为片内FLASH存储器并行编程时的编程电压,一般用DC12加入该引脚。ALE/PROG(30脚):地址锁存允许/编程脉冲信号端,双功能引脚。当CPU访问外部程序存储器或外部数据存储器时,该引脚提供一个ALE地址允许信号(由正向负跳变),将低8位地址信息锁存在片外的地址锁存器中。在单片机的FLADH存储器并行编程时,该引脚作为编程负脉冲PROG的输入端。除上述两种情况外,在正常操作状态下,该引脚端输出恒定频率的脉冲,其频率为晶振频率的1/6,可用做外部定时或其他触发信号。应当注意的是,CPU每次访问外部RAM时,即执行MOVX类指令,都要丢失一个ALE脉冲。如果需要,可对特殊功
23、能寄存器区的地址为8EH单元的第0位置1,则可以禁止ALE操作输出,但在使用MOVC或MOVX指令时,ALE仍然有效,禁止位不影响对外部存储器的访问。PSEN(29脚):该引脚为外部程序存储器读选通信号,低电平有效。当单片机访问外部程序存储器读取及执行指令代码时,在每个机器周期均产生两次有效的PSEN信号,但在执行片内程序存储器读取指令码时不产生PSEN信号。在读写内部RAM单元的数据时,亦不产生PSEN信号18,19。2.2 DS18B20温度传感器检测技术原理DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。可以在三根
24、线上同时并联多个温度传感器,每台分机上可以连接多根电缆,每根电缆上可以并联几十个点,构成串行总线工作方式。由于18B20芯片送出的温度信号是数字信号,因此简化了A/D转换的设计,提高了测量效率和精度;并且芯片的ROM中存有其唯一标识码,即不存在相同标识码的DS18B20,特别适合与微处理芯片构成多点温度测控系统。2.2.1 DS18B20的性能特点: 适用电压范围:3.05.5V; (1) 测温范围:-55+125,精度为0.5;(2) 无须外部器件,独特的单线接口仅需要一个端口引脚进行通信; (3) 多个DS18B20可以并联在唯一的三线上,实现多点组网功能;(4) 零待机功耗;(5) 用户
25、可定义的EEPROM,设定的报警温度存在非易失存储器中;(6) 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(7) 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625;(8) 负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 图2-4 DS18B20引脚分布图引脚定义:1DQ为数字信号输入/输出端; 2GND为电源地; 3VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2.2.2 DS18B20的测温原理DS18B20的测温原理如图2-5所示。用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一
26、个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于55的一个值。如果计数器在门周期结束前到达0,则温度寄存器的值增加,表明温度大于55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期未结束,将重复这一过程。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器达到被测温度值。图2-5 DS18B20测温原理图应该注意的是:由于DS18B20单线通信功能是时分完成的,它严格的时隙概念,因此读写时序很重要。系统对
27、DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待1660us左右,后发出60240us的低脉冲,主CPU收到此信号表示复位成功。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单
28、片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625/LSB形式表示。对应的温度计算:当符号位S=0时,表示测得的温度值为正值,可直接将二进制位转换为十进制;当S=1时,表示测得的温度值为负值,要先将补码变为原码,再计算十进制值。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。DS18B20温度值格式表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 000
29、1 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H2.2.3 DS18B20与单片机的接口电路DS18B20可以采用电源供电方式(如图2-6),此时DS18B20的1脚接地,2脚作为信号线,3脚接+5V电源。图2-
30、6 DS18B20采用电源供电方式当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。3 系统的硬件组成电路设计系统的硬件组成部分包括:主控制器STC89C52单片机、温度传感器DS18B20、四位LED显示电路、加热、降温、报警装置等构成。STC89C52连接各模块的主控制端口,初步选定将要运用到的电子元器件,再用Protues绘制原理图,再根据原理图焊接电路板。3.1 时钟电路STC89C52芯片内部有一个高增益反向放大器,用于构成震荡器。反向放大器的输
31、入端为XTAL1,输出端为XTAL2。在TXAL1和XTAL2两端跨接由石英晶体及两个电容构成的自激震荡器,如图3-1所示。电容器C1和C2取30pF,选用不同的电容量对震荡频率有微调作用。但石英晶体本身的标定频率才是单片机震荡频率的决定因素。图 3-1 时钟电路 时钟电路中,两个电容都选择30pF的电容,电容各一端接与晶振相连,各一端接地。选择的晶振是频率为12MHZ。此模块就是产生像时钟一样准确的振荡电路。3.2 STC89C52的复位电路STC89C52单片机通常采用上电自动复位和开关手动复位两种方式。本系统采用上电复位电路,如图3-2所示,所谓上电复位,是指单片机只要一上电,便自动地进
32、入复位状态。在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用以复位。图 3-2 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。RC复位电路可以实现上述基本功能,但解决不了电源毛刺和电源缓慢下降等问题,而其调整 RC 常数改变延时会令驱动能力变差。3.3 LED显示模块用STC89C52的P0口作为数据线,用P2.1、P2.2、P2.3分别作为LCD的RS 、R/W、E。其中E是下降沿触发的片选信号,连接P2.3,R/W是读写信号,连接P
33、2.2,RS是寄存器选择信号,连接P2.1。如图3-3。图3-3 LED显示模块VEE用连接一阻值为10K的电阻,主要用于调节对比度的调整。接高电源时对比度最低,接低电源时,对比度最高。对比度过高时,会产生“鬼影”。因此连接一10K的电阻用以调整。当P0口作为I/O用时需要上拉电阻,如图3.5接一排阻,用于上拉。3.4 单总线数字温度传感器DS18B20检测电路DQ 为数据输入/输出引脚,连接P3.6。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源,GND为地信号;VCC为电源信号。图3-4为DS18B20检测电路。图3-4 检测电路3.5 驱动电路系统使用的是直流马达,包含周
34、围磁场、电刷、整流子等元件,电刷和整流子將外部所供应的直流电源,持续地供应给转子的线圈,並适时地改变电流的方向,使转子能以同一方向持续旋转。直流马达的优点有速度调整容易,启动转矩较大等,但是电刷与整流子保养维修不易。直流马达广泛的用在消费电子产品及玩具,如电动刮胡刀、录音机、CD唱机等,而大输出功率的直流电动机则是用在电车,快速电梯,工作母机等。图3-5 驱动电路3.6系统总硬件设计 首先对硬件系统18B20定义端口为P3.6和P1口控制液晶LED的显示,定义端口P1.5为马达控制端口,P1.7为喇叭控制端口。首先对温度采集,将采集到的温度转换数字,采集到的温度由LCM液晶显示屏显示。再将采集
35、到的温度所属软件设置的哪个范围,而控制P1.5的电平输出。电路原理图用Protues7.7电路仿真软件绘制而成。用Protues7.7电路仿真软件软件绘制电路原理图方便,快捷。Protues7.7电路仿真软件有丰富的元件库,智能的器件搜索,智能化的连线,可输出高质量的图纸。电路原理图3-6清晰明了。图3-6 总电路原理图4、软件设计4.1主程序流程图 DS18B20是可编程器件,在是使用时必须经过以下三个步骤:初始化、写操作、读操作。每一次读写操作之前都要先将DS18B20初始化复位,复位成功后才能对DS18B20进行预定的操作,三个步骤缺一不可。在编写相应的应用程序时,必须先掌握DS18B2
36、0的通信协议和时序控制要求。 由于DS18B20是利用一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议由几种单线上信号类别型组成:复位脉冲,存在脉冲,写0,写1,读0和读1。主程序流程图如图4-1所示:图4-1 主程序流程图4.2主程序设计#include #includeDS18B20.h #define uint unsigned int #define uchar unsigned char #define SET P3_1 #define DEC P3_2 #define ADD P3_3 #def
37、ine BEEP P3_7 bit shanshuo_st; bit beep_st; sbit DIAN=P17; uchar x=0; signed char m; uchar n; uchar set_st=0; signed char shangxian=38; signed char xiaxian=5; uchar LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;void Delay(uint num) while(-num); void InitTimer(void) TMOD=0x1; TH0=0x3
38、c; TL0=0xb0; void timer0(void) interrupt 1 TH0=0x3c; TL0=0xb0; x+; void int0(void) interrupt 0 EX0=0; if(DEC=0&set_st=1) shangxian-; if(shangxianxiaxian) shangxian=xiaxian; else if(DEC=0&set_st=2) xiaxian-; if(xiaxian99) shangxian=99; else if(ADD=0&set_st=2) xiaxian+; if(xiaxianshangxian) xiaxian=sh
39、angxian; void check_wendu(void) uint a,b,c; c=ReadTemperature()-5; a=c/100; b=c/10-a*10; m=c/10; n=c-a*100-b*10; if(m99)m=99;n=9; Disp_init() P1=0xbf; P2=0xf7; Delay(200); P2=0xfb; Delay(200); P2=0xfd; Delay(200); P2=0xfe; Delay(200); P2=0xff; Disp_Temperature() P1=0xc6; P2=0xf7; Delay(300); P1=LEDD
40、atan; P2=0xfb; Delay(300); P1=LEDDatam%10; DIAN=0; P2=0xfd; Delay(300); P1=LEDDatam/10; P2=0xfe; Delay(300); P2=0xff; Disp_alarm(uchar baojing) P1=0xc6; P2=0xf7; Delay(200); P1=LEDDatabaojing%10; P2=0xfb; Delay(200); P1=LEDDatabaojing/10; P2=0xfd; Delay(200); if(set_st=1) P1=0x89; else if(set_st=2)
41、P1=0xc7; P2=0xfe; Delay(200); P2=0xff; void Alarm() if(x=10)beep_st=beep_st;x=0; if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1) BEEP=0; else BEEP=1; void main(void) uint z; InitTimer(); EA=1; TR0=1; ET0=1; IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z2) set_st=0; if(set_st=0) EX0=0; EX1=0; c
42、heck_wendu(); Disp_Temperature(); Alarm(); else if(set_st=1) BEEP=1; EX0=1; EX1=1; if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st)Disp_alarm(shangxian); else if(set_st=2) BEEP=1; EX0=1; EX1=1; if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st)Disp_alarm(xiaxian); 4.3 DS18B20温度传感器初始化主机总线 to 时刻应先向DS18B20送出