DS18B20数字温度计的设计1.doc

上传人:scccc 文档编号:14376908 上传时间:2022-02-04 格式:DOC 页数:15 大小:317.50KB
返回 下载 相关 举报
DS18B20数字温度计的设计1.doc_第1页
第1页 / 共15页
DS18B20数字温度计的设计1.doc_第2页
第2页 / 共15页
DS18B20数字温度计的设计1.doc_第3页
第3页 / 共15页
DS18B20数字温度计的设计1.doc_第4页
第4页 / 共15页
DS18B20数字温度计的设计1.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《DS18B20数字温度计的设计1.doc》由会员分享,可在线阅读,更多相关《DS18B20数字温度计的设计1.doc(15页珍藏版)》请在三一文库上搜索。

1、单片机课程设计报告设计课题:DS18B20数字温度计的设计专业班级: 09 通信工程 小组成员:金双凤066谭晓平153朱传毅指导教师: 田茂 设计时间: 2011-11-202011-12-25DS18B20数字温度计的设计1、 功能要求数字温度计测温范围在-55+125,误差在0.5以内,采用四位一体七段数码显示管直接显示。2、 方案论证在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。其缺点如下:硬件电路复杂;软件调试复杂;制作成本高。 本数字温度计设计采用温度传感器DS

2、18B20作为检测元件,测温范围55125,最高分辨率可达0.0625。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。数字温度计总体结构框图如图1所示。图1 数字温度计总体结构框图三、系统硬件电路的设计温度计电路的设计原理图如图2所示,控制器使用单片机AT89C2051,温度传感器使用DS18B20,用4位共阳七段数码显示管以动态扫描法实现温度显示。图2 设计原理图(1) 主控制器单片机AT89C2051具有低电压供电和小体积等特点,两个端口刚好满

3、足电路系统的设计需要,很适合便携手持式产品的设计使用。系统可用两节电池供电。(2) 显示电路显示电路采用4位共阳七段数码显示管,从P1口输出段码,列扫描用P3.0P3.3口来实现,列驱动用9012三极管。(3) 温度传感器工作原理a.DS18B20的性能特点DS18B20温度传感器是一种改进型智能温度传感器。与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际需要通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;不需要外部器件;可通过数据线供电,电压范围

4、为3.05.5V;零待机功耗;温度以912位数字量读出;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度的器件;负电压特性,电源电压接反时,温度计不会因发热而烧毁,只是不能正常工作。b.DS18B20的内部结构 DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图3所示。图3 DS18B20内部结构框图 64位ROM的位结构如图4所示。开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位的前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限数

5、据。图4 DS18B20的64位ROM的位结构 DS18B20温度传感器的内部存储器还包括一个高速暂缓RAM和一个非易失性的可电擦除的EEPROM。高速暂缓RAM的结构为9字节的存储器,其结构如图5所示。前2字节包含测得的温度信息。第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。图5 DS18B20高速暂缓RAM的结构图该字节各位的定义如图6所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20

6、出厂时,该位被设置成0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见下表。图6 高速暂缓RAM各位字节的定义由表可见,DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM是第6、7、8字节保留未用,表现为全逻辑1。第9字节是前面所以8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接受到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式储存在高速暂缓RAM的第1、2字节中。单片机可以通过单线接口读出该

7、数据,读数据时,低位在先,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如图7所示。图7 DS18B20温度值格式图中,S表示符号位。当S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当S=1时,表示测得的温度值为负值,要先将补码变为原码,再计算十进制值。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若TTH或T0;t-);/*显示扫描函数*/scan()char k; for(k=0;k0; i-) /DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();

8、_nop_();/5usDQ = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ = 1;delay(1); /*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=

9、0x80;delay(6); /66usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令/*温度数据处理函数*/work_temp()uchar n=0; /if(temp_d

10、ata1127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码display4=temp_data0&0x0f;display0=ditabdisplay4;display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if(!display3)display3=0x0A;if(!display2)

11、display2=0x0A;/最高位为0时都不显示if(n)display3=0x0B;/负温度时最高位显示-/ /*主函数*/main()Disdata=0xff; /初始化端口discan=0xff;for(h=0;h4;h+)displayh=8;/开机显示8888ow_reset(); / 开机先转换一次write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令for(h=0;h500;h+) scan(); /开机显示88882秒while(1) read_temp(); /读出18B20温度数据 work_temp(); /处理温度数

12、据 for(h=0;h500;h+) scan(); /显示温度值2秒 六、调试及性能分析系统调试以程序调试为主。硬件检查比较简单,首先检测电路的焊接是否正确,然后可以用万用表检测或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检测,然后分别进行主程序,读出温度子程序,温度转换命令主程序,计算温度子程序还有显示数据刷子程序等的编程和调试。由于DS18B20与单片机采用串口数据传输,因此,对DS18B20进行读/写编程时必须严格的保证读写时序,否则将无法读取测量结果。本程序采用c语言编写,用Keil c51编译器编译测试。软件测试到能显示温度值,而且是在用温度变化时有(例如用手去接触)显

13、示温度改变,就基本完成。性能测试可以制作的温度计和已有的成品温度计同时进行检测比较,由于DS18B20精度很高,所以误差指标可以限制在0.5以内。另外-55+125的测温范围是的该温度计完全适合一般的应用场合,其低电压供电的特性可做成用电池供电的手持式电子温度计。DS18B20温度计还可以在高低温时报警、远距离多点测温控制等方面进行应用开发,但是在实际应用中应注意一下几个方面:l DS18B20工作是电流高达1.5mA,总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可以用单片机端口在温度转换时导通一个MOSFET供电。l 连接DS18B20的总线电缆是有长度限制的,因此在用DS18B2

14、0进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。l 在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号。一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。七、结束语学习了一个学期的单片机,起初学习的时候,觉得单片机很难学,好多的指令要掌握,什么定时器.计数器,什么中断系统,还有一些协议不同的通信方式。这些都让我感觉到单片机的复杂与难懂,即使有一些程序可以弄明白,但是轮到自己去编写,去设计时,无论怎么做都达不到所要求的那样,经常是掉了一些东西。等到学习单片机实验的时候,可能是资料太过详细,依着原理图连接好硬件,改变程序中对应的接口,调试,下载,一切就变得理所当然了。通过单片机的设计,我才把书本上呆板的指令化为有用的,可以显示的实物。让我们学习起来,又有了兴趣,学习的热情又提高了。也学到了以前不曾留意和没弄懂的知识。14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1