综合课程设计论文实训课题:数字温度测量系统专业班级:应用电子技术(1)班学生姓名:陈丛学号:2013010608指导老师:莫钊摘要随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。本课题以AT89C51单片机系统为核心,能对多点的温度进行实时巡检。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。关键词:温度测量;单总线;数字温度传感器;单片机目录一、引言二、数字温度计的结构及功能介绍1.单片机STC80C52RC2.DS18B20数字温度传感器3.显示器的选择三、设计原理及原理图四、设计程序流程图五、总结六、附录1.程序代码2.仿真一、引言本系统利用DS18B20进行测温,基于单片机AT89S52进行温度控制,具有硬件电路简单,控温精度高、功能强,体积小,简单灵活等优点,可以应用于控制温度在-55℃到+125℃之间的各种场合,可以实现温度的实时采集、显示功能。温度是一种最基本的环境参数之一,日常生活和工农业生产中经常要检测温度。传统的方式是采用热电偶或热电阻,但是由于模拟温度传感器输出为模拟信号,必须经过A/D转换环节获得数字信号后才能与单片机等微处理器接口,使得硬件电路结果复杂,制作成本较高。美国DALLAS公司生产的DS18B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓库管理、工农业生产制造、气象观测、科学研究以及日常生活中。本文提出用DALLAS公司生产的DS18B20数字温度传感器和89S52单片机构成的多路测温系统,采用单总线的方式(一根数据线,在一个I/O口上),可以在单总线上挂接多个18B20,在单片机控制下巡回检测多点温度,并可以设置高、低温度超限报警等功能。二、结构及功能介绍1、单片机STC80C52RCa、该系统采用MCS-51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。MCS-51单片机特点如下:可靠性好单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以烧写在ROM上,因此可靠性高。易扩充单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统控制功能强单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。b、单片机主机系统电路AT89C51单片机是属于51系列单片机里的。它的内部自带2K字节可编程FLASH存储器的低电压、高性能COMS8位微处理器。AT89C51单片机还与IntelMCS-51系列单片机的输出管脚和指令相互兼容。由于AT89C51将多功能8位CPU和闪速存储器结合在单个的芯片里,所以,AT89C51构成的单片机系统是所有系统里结构最简便,价格最便宜,使用效率最高的控制系统,它还节省了外部的RAM与ROM和接口器件,削减了硬件方便的开销。节省了制造成本,提高了系统的性价比。c.主要芯片的介绍本课题采用单片机AT89C51控制的数字温度测量与显示系统,其功能的实现主要通过软件编程来完成,采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。且AT89C51的使用寿命很长,数据保留时间也较长,可以达到十年的时间。就是因为这一些类的特性,与优点。所以本次设计我才会选择使用这一类的单片机来作为我实现此系统的工具。单片机主机系统图根据设计的要求,要利用温度传感器实时温度。当温度高于设定的温度时(60℃),当温度高于设置报警的上限值时风扇转同时红色led亮,当低于时继电器以留出接口。同时要求能设定温度。毕业设计的主要任务是能对温度进行自动的检测和控制。设计中采用单片机来控制温度,因此要有温度的显示电路,温控电路,报警电路等几个部分。要实现系统的设计要用到的知识点有单片机的原理及其应用,温度传感器的原理和应用,及显示电路的设计等。2、DS18B20数字温度传感器2.1DS18B20简介新的“一线器件”DS18B20体积更小,适用电压更宽、更经济,做为一线总线数字化温度床感器,支持“一线总线”接口,测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17XTAL218XTAL119GND20(A8)P2.021(A9)P2.122(A10)P2.223(A11)P2.324(A12)P2.425(A13)P2.526(A14)P2.627(A15)P2.728PSEN29ALE/PROG30EA/VPP31(AD7)P0.732(AD6)P0.633(AD5)P0.534(AD4)P0.435(AD3)P0.336(AD2)P0.237(AD1)P0.138(AD0)P0.039VCC40U4AT89C52/S52VCC精度为±0.5℃。独特的电源和信号复合在一起,仅适用一条口线,每个芯片唯一编码,支持联网寻址,简单的网络化的温度感知,零功能等待。2.2DS18B20特性DS18B20可以由程序设定9~12位的分辨率,精度为±0.5℃。①独特的单线接口仅需一个端口引脚进行通讯②简单的多点分布应用③无需外部器件④可通过数据线供电⑤零待机功耗⑥测温范围-55~+125℃,以0.5℃递增华氏器件-67~+257℉,以0.9℉递增⑦温度以9位数字量读出⑧温度数字量转换时间200ms(典型值)⑨用户可定义的非易失性温度报警设置⑩报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件○11应用包括温度控制、工业系统、消费品、温度计或任何感测系统。2.3说明:DS18B20有三个主要数字部件:1)64位激光ROM2)温度传感器3)非易失性温度报警触发器TH和TL4)器件用如下方式从单线通讯线上汲取能量,在信号线处于高电平期间把能量存储在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,知道高电平到来再给寄生电源(电容)充电。DS18B20也可用外部5V电源供电。DS18B20依靠一个单线端口通讯。在单线端口条件下,必须先建立ROM操作协议,才能进行存储器和控制操作。因此,控制器必须首先提供下面5个ROM操作命令之一:1)读ROM,2)匹配ROM,3)搜索ROM,4)跳过ROM,5)报警搜索。这些命令对每个器件的激光ROM部分进行操作,在单总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指明有多少器件或是什么型号的器件。成功执行完一条ROM操作序列后,即可进行存储器可控制操作,控制器可以提供6条存储器和控制操作指令中的任一条。一条控制操作命令指示DS18B20完成一次温度测量,测量结果放在内部暂存器中暂存,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。2.4DS18B20测温原理:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来的到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数知道0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期测温时获得比较高的分辨力,这是通过改变计数器对温度每增加一度所需计数的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。DS18B20内部对此计算的结果可提供0.5℃的分辨力。温度以16bit带符号位扩展的二进制补码形式读出,表一给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。DS18B20测温范围-55℃~+125℃,以0.5℃递增。如用于华氏温度,必须要用一个转换因子查找表。表一注意DS18B20内温度表示值为1/2℃LSB,如下所示9bit格式:表二最高有效(符号)位被复制充满存储器中两字节温度存储器的高MSB位,由这种“符号位扩展”产生出了表一的16bit温度读数。2.5DS18B20测温原理图:图二DS18B20测温原理框图可用下述方法获得更高的分辨力。首先,读取温度值,将0.5℃位(LSB)从读取的值中截去,这个值叫做TEMP_READ。然后读取计数器中剩余的值,这个值是门周期结束后保留下来的值(COUNT_REMAIN)。最后,我们用到在这个温度下每度的计数值(COUNT_PER_C)。用户可以用下面的公式计算实际温度值:CPERCOUNTREMAINCOUNTCPERCOUNTREADTEMPETEMPERATUR__)___25.0_2.664位激光刻ROM每只18B20都有一个唯一的长达64位的编码。最前面8位是单线系列编码。后面48为是一个唯一的序列号。最后8为是以上56位的CRC码。表三2.7CRC发生器DS18B20中有8位CRC存储在64位ROM的最高有效字节中。总线控制器可以用64位ROM中的前56位计算出一个CRC值,再用这个和存储在DS18B20中的值进行比较,以确定ROM数据是否被总线控制器接受无误。CRC计算等式如下:XCRC8+X5+X4+1。单总线CRC可以有一个由移位寄存器和XOR门构成的多项式发生器来产生,如下图所示:图三单总线CRC的结构原理图2.8单总线系统单总线系统包括一个总线控制器和一个或多个从机。DS18B20充当从机,当只有一只从机挂接在总线上时,系统被称为“单点”系统;如果由多只从机挂接在总线上,系统被称为“多点”。所有的数据和指令的传递都是从最低有效位开始通过单总线进行传送的。2.9DS18B20指令控制执行序列通过单线总线端口访问DS18B20的协议如下:步骤一:初始化;步骤二:ROM操作指令;步骤三:DS18B20功能指令。每一次DS18B20的操作都必须满足以上步骤,若是缺少步骤或是顺序混乱,器件将不会返回值。例如这样的顺序:发起ROM搜索指令[F0H]和报警搜索指令[ECH]之后,总线控制器必须返回步骤一。2.10ROM时序指令控制通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道DS18B20在总线上且已准备好操作。一旦总线控制器探测到一个存在脉冲,它就发出一条ROM指令。如果总线上挂有多只DS18B20,这些指令将基于器件独有的64位ROM片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少只,什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。⑴SearchROM[F0H](搜索ROM指令)当系统上电初始化的时候,总线控制器必须通过识别总线上所有ROM片序列码去得到从机的数目和型号。总线控制器通过搜索ROM指令多次循环搜索ROM编码,以确认所有从机器件。如果总线上只有一只从机,那么可以用较为简