《基于单片机多点温度采集系统的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机多点温度采集系统的设计.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、XXX 学 院 单片机技术 课程设计说明书课题名称 基于单片机的多点温度采集设计 系 别 专 业 班 级 学 号 姓 名 X X X 指导教师 2011 年 6 月 30 日31 / 33摘 要本论文介绍的是基于AT89C51单片机数字温度计设计,体现模块化设计思想。论文重点阐述了硬件模块MCU模块、温度的感应模块、控制模块、显示模块的设计。软件同样采用模块化设计,软件模块中断模块、温度转化模块。温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制
2、的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。我们采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55125 C,最高分辨率可达0.0625 C。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。关键字:微控制器;数字控制;温度计;AT89C51;DS18B20。AbstractThis paper introd
3、uces the design based on AT89C51 digital thermometer, reflect the modular design thought. Paper expounds the hardware module-module, temperature sensing MCU module, control module, display module design. The software also modular design, software module-module, fresh-interrupt temperature conversion
4、 module. The temperature is the production process and scientific experiments common and important physical parameter of. In the process of production, to highly efficient production, it needs to main parameters, such as temperature, pressure, and flow rate of effective control. Temperature control
5、in production process occupies a large proportion. Temperature measurement is the foundation of temperature control, technology has more mature. The traditional measuring temperature elements have thermocouple and two resistance. And thermocouple and heat resistance of the measure is commonly voltag
6、e, again converted into the corresponding temperature, these methods relatively complex, need more of the external hardware support. We use a relatively simple way to measure. We adopt the DALLAS semiconductor company following the DS1820 rolls out after an improved version of the intelligent temper
7、ature sensor DS18B20 as the test components, temperature range for-55 to 125 C, the highest resolution time integration can be up to 0.0625 DHS C. DS18B20 can read out directly, and the temperature in north of the three wire and single-chip microcomputer is linked together, reduce the external hardw
8、are circuit, with low cost and easy to use features.Key word: micro controller, digital control, The thermometer, AT89C51, DS18B20.目 录摘 要1Abstract2目 录31绪论42设计任务与要求42.1设计任务42.2设计要求43总体设计方案53.1总体设计方案53.1.1方案一53.1.2方案二53.2方案二的总体设计图63.2.1主控电路设计63.2.2主控制器AT89C51的介绍63.2.3温度传感器DS18B20的介绍93.2.4DS18B20的工作协议1
9、23.2.5显示电路设计153.3DS18B20温度传感器与单片机的接口电路163.4系统整体硬件电路184系统软件设计194.1主程序194.2读出温度子程序194.3温度转换命令子程序204.4显示数据子程序215调试过程226总结与体会23致 谢24参考文献25附录一26附录二331 绪论随着“信息时代”的到来,作为获取信息的手段传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。因此,了解并掌握各类传感器的基本结构、工作原理及特性是非常重要的。由于传感器能将各种物理量、化学量和生物量等信号转变为
10、电信号,使得人们可以利用计算机实现自动测量、信息处理和自动控制,但是它们都不同程度地存在温漂和非线性等影响因素。传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系
11、统不断涌现。温度传感器是其中重要的一类传感器。其发展速度之快,以及其应用之广,并且还有很大潜力。为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合传感器技术而开发设计了这一温度监控系统。2 设计任务与要求2.1 设计任务设计基于单片机控制的多点温度采集数字温度计,该多点温度采集设计属于单线挂接2个DS18B20的两路温度数据采集,并且通过两个4位1体的数码管进行温度显示,同时要显示当前通道号。2.2 设计要求1、控制器使用MCS-51系列单片机。2、DS18B20集成温度传感器的工作原理及其单片机的连接电路识
12、别、程序控制。3、实现DS18B20的温度转换数字采集。4、实现4位1体的数码管进行温度显示,同时要显示当前通道号。5、单线挂接2个DS18B20的两路温度采集。6、软件仿真设计+硬件设计。3 总体设计方案3.1 总体设计方案3.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路感温电路比较麻烦。该方案一的设计流程如图3.1所示:温度传感器A/D转换电路单片机数码管显示图 3.1 流程图在设计时钟电路时,可以用
13、时钟芯片,DS1302是DALLAS 公司推出的涓流充电时钟芯片,内部包含实时时钟/日历和31字节的静态RAM 。它可以与微处理器通过简单的串行接口。实时时钟/日历提供秒,分钟,小时,日期,月份,和一年的信息。本月底日期会自动调整几个月少于31天,包括更正为闰年。时钟运行或者在24小时或12小时格式的上午/下午指标。 接口的DS1302与微处理器简化使用同步串行通信。只有三个电线需要沟通的时钟/内存:I / O(数据线),以及时钟(串行时钟)。数据还可以转到和时钟/ RAM的1字节的时间或在突发的多达31个字节。在DS1302的设计操作非常低的功耗和保存数据和时钟信息不到1W。在DS1302的
14、前身是在DS1202。除了基本的报时功能,DS1202,DS1302具有的附加功能的双电源引脚的主要和备用电源,可编程的涓流充电器VCC1,并增设7个字节的暂存记忆。3.1.2 方案二由于用A/D转换比较麻烦,进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易直接读取温度值,进行转换,就可以满足设计要求。在设计时钟电路时,由于实现的功能比较少,利用单片机内部资源,定时/计数器,中断系统就可以完成,需要在用时钟芯片,而且会增加外围电路。3.2 方案二的总体设计图3.2.1 主控电路设计温度计、时钟电路设计总体设计框图如图3.2.1所示,控制器采用单片机AT89S51
15、,温度传感器采用DS18B20,用4位LED数码管以并行传送数据实现温度、时钟的显示。复位电路时钟电路DS18B20电路AT89C51单片机数码管显示图 3.2.1 总体设计3.2.2 主控制器AT89C51的介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容
16、。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。单片机AT89C51的封装图为图3.2.2,本设计的单片机原理图为图3.2.3。图3.2.2 单片机AT89C51的封装图图3.2.3 单片机原理图1. 单片机AT89C51主要特性有以下几点1MCS-51 兼容 4K字节可编程闪烁存储器。2寿命是1000写/擦循环。3数据保留时间为10年。4全静态工作在0Hz-24Hz。5三级程序存储器锁定。6128*8位内部RAM。732可编程I/O线。
17、8两个16位定时器/计数器。95个中断源。10可编程串行通道。10低功耗的闲置和掉电模式。11片内振荡器和时钟电路。2. 单片机AT89C51的管脚如下说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上
18、拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时
19、接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下说明: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(外部数据存储器读选通)。P3
20、口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR的8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态A
21、LE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输
22、出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系
23、统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.2.3 温度传感器DS18B20的介绍这里我们用到温度芯片DS18B20。使用集成芯片,能够有效的减小外界的干扰,提高测量的精度,简化电路的结构。使用集成芯片,已经慢慢的成为设计电路的一种趋势。本系统使用温度芯片也正是顺应了这一趋势。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:1独特的单线接口仅需要一
24、个端口引脚进行通信;2多个DS18B20可以并联在惟一的三线上,实现多点组网功能;3无须外部器件;4可通过数据线供电,电压范围为3.05.5V;5零待机功耗;6温度以9或12位数字;7用户可定义报警设置;8报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;9负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图3.2.4所示:I/OC64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd图3.2.4 DS18B20内部结构64位RO
25、M的结构开始8位是产品类型的编号 ,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3.2.5所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
26、该字节各位的定义如图3.2.5 所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图3.2.5 DS18B20字节定义由表3.2.6可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保
27、证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表3.2.7 是一部分温度值对应的二进制温度数据。R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750表3.2.6 DS18B20温度转换
28、时间表DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数
29、器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用
30、于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251
31、111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H表3.2.7一部分温度对应值表3.2.4 DS18B20的工作协议由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。1、初始化 单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS1820 在总线上且已准备好操作。初始化过程复位和存在的脉冲如图3.2.8所
32、示:图3.2.8 复位脉冲2、ROM 操作命令 一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令列表如下: Read ROM(读 ROM)33h 此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。Match ROM( 符合 ROM)55h 此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有
33、与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。Skip ROM( 跳过 ROM )CCh在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在Skip ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。Search ROM(搜索 ROM)F0h 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜
34、索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。Alarm Search(告警搜索)ECh 此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH 或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或 TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。 3、存储器操作命令 Write Scratchpad(写暂存存储器)4Eh 这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来
35、写入的两个字节将被存到暂存器中的地址位置2和3。 可以在任何时刻发出复位命令来中止写入。 这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。Copy Scratchpad(复制暂存存储器)48h 这条命令把暂存器的内容拷贝到DS18B20的E2存储器里, 即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0” ,如果拷贝结束的话,DS18B20 则输出“1” 。如果使
36、用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。 Convert T(温度变换)44h 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0” ,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。Recall E2(重新调整 E2)B8h 这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此
37、只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0”=忙,“1”=准备就绪。 Read Power Supply(读电源)B4h 对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0”=寄生电源供电,“1”=外部电源供电。DS18B20读/写时序图如图3.2.9所示:图3.2.9读/写时序图4、处理数据 DS18B20的高速暂存存储器由9个字节组成,其分配如图3.8所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片
38、机可通过单线接口读到该数据,读取时低位在前,高位在后。 DS18B20温度采集转化后得到的12位数据, 存储在DS18B20的两个8比特的 RAM 中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 温度转换计算方法举例: 例如当DS18B20采集到+125的实际温度后,输出为07D0H,则: 实际温度=07D0H*0.0625=2000*0.0625=1250。例如当DS18B20采集到-55的实际温度后,输出为FC90H,则应先将11
39、位数据位取反加1得370H(符号位不变,也不作为计算),则实际温度=370H*0.0625=880*0.0625=550。3.2.5 显示电路设计在数字系统中,经常需要将数字、文字和符号的二进制码翻译成人们习惯的形式直观地显示出来,本实验是将二进制编码用十进制数显示出来。可以用液晶显示屏或数码管来显示,但是考虑到成本问题本实验的器件选用常用的共阴极半导体数码管。LED数码管是目前最常用的数字显示器,本实验采用4位七段共阴极数码管,它的内部电路及图形符号如图3.2.4所示。当有高电平驱动时,相应的笔段会发光。一个LED数码管可用来显示一位0-9十进制数和一个小数点。LED数码管要显示BCD码表示
40、的十进制数字需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。单片机通过P0口向锁存器74HC573发出数据来控制数码管段选,并通过P2口向译码器74HC138发出信号来控制数码管位选。图3.2.5为显示电路。图3.2.4 LED数码管图3.2.5 显示电路共阴数码管使用条件有以下三点:1数码管每段以及小数点上都加上限流电阻。2使用电压段根据发光颜色决定;小数点则根据发光颜色决定。3使用电流,在静态时总电流为80mA(每段10mA);动态时平均电流为4-5mA峰值电流100mA。上面是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。共阳数码管使用注意事项说明
41、有以下三点:1、数码管表面不要用手触摸,不要用手去弄引角。2、焊接温度:260度;焊接时间:5S。3、表面有保护膜的产品,可以在使用前撕下来。3.3 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用外部电源供电方式,单点温度监控如图3.3.1,DS18B20的1脚接地,2脚作为信号线,3脚接电源,外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,坑干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统,如图3.3.2。另一种是寄生电源供电方式,如图3.3.3 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足
42、够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图3.3.1 DS18B20单点测温度电路原理图图3.3.2 DS18B20多点测温度电路原理图图3.3.3 寄生电源强上拉供电方式电路图本实验设计是基于单片机多点温度采集设计,即单线挂接2个DS18B20的两路温度数据采集,并且通过两个4位1体的数码管进行温度显示,同时要显示当前通道号。所以我们选着如图3.3.2多点温测电路原理图。3.4 系统整体硬件电
43、路系统整体硬件电路包括,传感器数据采集电路,温度显示电路复位电路,晶振电路,驱动电路,主板电路等,如附录二图2所示:4 系统软件设计4.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值。主控程序首先进行系统初始化,然后读入DS18B20的测量的当前温度数据,经过温度数据转换后输出相应的温度值,并把第一路显示出来,接着读入第二个DS18B20测量出来的温度数据,经过转换后并显示出来。如下图4.2所示:初始化开始调用读温度子程序 1调用读温度子程序 2显示程序图4.1 主程序流程图4.2 读出温度子程序读出温度子程序的主要功能是首先发DS18B20复位命令
44、,发跳过ROM命令,访问单总线上与该编码相对应的DS18B20,为下一步对该DS18B20的读/写做准备,发读取温度命令,读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图4.3所示:Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY图4.3 读出温度流程图4.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图4.4所示:发DS18
45、B20复位命令发跳过ROM命令发温度转换开始命令 结束图4.4 温度转换命令流程图4.4 显示数据子程序显示数据子程序主要是对显示缓冲器中的显示数据进行刷新操作,当温度数据移入显示程序后,数码管开始显示第一路标号和温度值,接着扫描第二路的温度数据并显示其的标号和温度值。程序流程图如图4.5:温度数据移入显示显示第几路温度显示十位的温度值显示个位的温度值开始结束图4.5 显示数据程序流程图5 调试过程在调试过程中,首先,用万用表来检测实验板上的各个器件的引脚是否接通,是否有虚焊,这个步骤是非常重要的,这关联到整个调试过程是否成功。因为本实验设计的板可以下载程序到单片机上并且用到四位一体的数码管来显示,所以我们设计了一个简单的LED扫描程序来检测数码管工作是否正常和实验板的下载功能是否正常。在用DS18B20传感器前,还需要通过串口读取出它的序列号,然后把它的序列号读取出后编写到主程序上才