基于DS18B20的多点智能温测系统中国矿业大学本科毕业设计(论文)答辩本系统设计的背景在工农业生产和日常生活中,对温度的测量及控制占据着极其重要地位。在分布式测温系统中,传统的测温方法是利用模拟器件将模拟量信号远距离传送至采样卡进行A/D转换,而为了获得精高的测温精度,就必须采取措施解决由长线传输、多点测量切换及放大电路零点漂移等造成的误差补偿问题。单线数字式温度传感器DS18B20的出现妥善解决了上述技术问题,此外,它可将温度信号直接转换成串行数字信号以供微处理器处理,并且在单总线接口上可挂接多个DS18B20芯片组成多点温度检测系统而无需任何外围硬件。本系统设计的各部分组成一、硬件部分:1.单片机主控电路2.温度采集电路及报警电路3.电源电路4.键盘输入电路5.液晶显示电路6.串口通信电路二、软件部分1.单片机统一处理主程序2.温度测量及报警程序3.按键处理程序4.液晶显示程序5.串口通讯程序6.上位机显示程序硬件系统组成框图:软件系统框图组成单片机主控电路的原理框图本系统设计采用51系列单片机,从硬件电路和软件设计两方面考虑,无论从处理速度和存储容量来说都能大大满足设计的需要,而且操作方便。51系列的I/O口的设置和使用非常简单,当该管脚作输入脚使用时,只须将管脚设置为高电平(复位时,各I/O口均置高电平)。当该管脚作输出脚使用时,则为高电平或低电平均可。Atmel公司生产的单片机存储器为可改写的闪速存储器(Flash),容许改写1000次以上,这给编程和调试带来极大的便利,所以采用AT89S52作为主控器件。温度采集电路及按键输入电路原理图DQ2GND1VCC3U2DS1820DQ2GND1VCC3U3DS1820DQ2GND1VCC3U4DS1820VCC4K7R4S2S3S45KR105KR95KR8VCCOKADDSUB本设计中示例性的用了三个DS18B20测温芯片,多芯片单总线进行操作时,必须要有上拉电阻,经测试4.7K的上拉电阻最好。三个独立按键分别是确认键,温度上下限设定键。这两部分的组合就能组成温度数据的采集和控制这一块。液晶显示电路及串口通讯电路GND1VCC2VO3RS4R/W5E6DB07DB18DB29DB310DB411DB512DB613DB714A15K16LCD160223456789Com1R1VCCVCC11221KR7VCCC1+1VDD2C1-3C2+4C2-5VEE6T2OUT7R2IN8R2OUT9T2IN10T1IN11R1OUT12R1IN13T1OUT14GND15VCC16U6MAX2321uFC71uFC91uFC101uFC81uFC6RXDTXD1234567891110J1显示部分电路采用的是LCD1602液晶,串口通信的电平转换芯片用的是MAX232。设计电路原理图:系统设计PCB版图软件系统调试:数字温度传感器DS18B20内部结构DS18B20存储器映像图温度低位温度高位THTL配置保留保留保留8位CRCLSBMSB暂存存贮器是按8位字节存储器来组织的:头两个字节包含测得温度信息;第三和第四个字节是TH和TL的易失性拷贝,在每一次上电复位时被刷新;接着的一个字节是芯片配置字节;第六到第八个字节是保留字节;第九个字节它可用ReadScratchpad(读暂存存贮器命令读出),该字节包含一个循环冗余校验CRC字节,它是前面所有8个字节的CRC值。总线CRC可以使用一个移位寄存器和异或(XOR)门组成的多项式产生器来产生。DS18B20中SEARCHROM命令的搜索算法一、ROM搜索原理根据单线总线协议,当主机发出搜索ROM命令后,从机应答时从64位ROM码的最低位开始,先发送原码,然后发送该位的补码,之后主机写入1位数据,ROM码最低位与此数据相同的DS18B20继续应答,反之则不再应答,如此循环“读2位、写1位”的过程,直至读到一个完整ROM码为止,然后复位总线,进行下一次搜索。下面对读、写进行具体分析。二、ROM搜索策略根据上述ROM搜索原理的描述,树形搜索策略图如下图,其中圆形节点内所示即为对应位的ROM码。由图可知,只有遇到读两位为“00”才会出现分叉,这也是搜索的关键所在。每一次搜索由根(即开始节点)沿树的一条路径进行,直到叶子(最后一位ROM码),读回一个ROM码,为了确保每次搜索所选路径不同,必须对所经过的分叉进行记录。具体流程规则:开始001110/01011/00010/01110010/01110010/01110001111/01/01/0起始发搜索命令读两位写一位读两位写一位(1)复位总线,发送ROM搜索命令;(2)按读两位、写一位的方式进行,寻找“00”读码。在读到“00”之前若为“10”或“01”,直接记录对应位ROM码,并写入该码;若为“11”退出搜索。(3)第一次搜索中读到“00”时,先全部写“0”,选择ROM码为“0”的路径,将最高“00”读码(即图中最接近叶子)位置记录并保存下来为“最高00位”。(4)之后每次搜索中,遇到“00”读码后,比较此位与“最高00位”的位置,若在“最高00位”之前,则一律写上一次搜索在此位置写入的值;若位置相同,则写“1”;若在之后则写“0”。在每一次搜索完成后,要将“最高00位”更新为本次搜索中写“0”的最高“00”读码位置,这也是最为重要的一步。(5)当“最高00位”更新为0,即已到树的根部,则表明已搜索完全部ROM码,过程结束。开始初始化DS18B20发搜索ROM命令读并存储当前DS18B20的序列号存在一个DS18B20?初始化DS18B20跳过ROM命令温度转换命令初始化DS18B20匹配ROM命令等待1ms转换结束发一个DS18B20序列号读当前DS18B20序列号所有DS18B20都访问完毕?YYNNDS18B20测温部分软件流程图本系统设计的创新点:本系统相对于以往的温测系统,具有以下优点:1.测温精度高,可达0.01摄氏度;2.温度采样点可动态增加,因为采用了SearchROM(搜索ROM)算法,每次上电都会查询所接DS18B20从机数目,并且保存各ROM码到字符数组中。总结本设计达到了多点温测并且在液晶上实时显示的目的,并且具有温度实时预警功能,通过串口通信送到上位机上显示在实验板上运行通过,完成了设计要求的任务。由于时间仓促、条件有限,设计成果并不是很完美,还存在下面问题:未对温度数值存储。所以在以后我还会完善这部分的设计,并且利用外部扩展存储器存储温度数据,实现在彩屏或者PC机上显示温度数据变化曲线。另外在版图的绘制上我还要加强,争取以后能把PCB板实物做出来。谢谢各位老师!