基于DS18b20温度传感器的可报警数字温度计.doc

基于DS18b20温度传感器的可报警数字温度计.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于DS1DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0—100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输。该系统利用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。 4: 系统器件选择 DS18B20 的性能特点如下: ●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电温范围-55~+125,在-10~+85时精度为±0.5可编程的分辨率为9~12位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温DS18B20 虽然具有测温系统简单、测温精度高等优点,但在实际应用中也应注意以下几方面的问题: ●DS18B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。 ●较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。 DS18B20 超过8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 5:硬件电路设计 本设计由DS18B20温度传感器芯片测量当前的温度并将转换后的结果送入单片机。然后通过A89C51单片机驱动LCD显示测量温度值,当达到温度上限或下限时报警。如附录中本设计硬件电路图所示,本电路主要有DS18B20温度传感器芯片,LCD1602液晶显示器,AT89C51单片机及相应外围电路组成。 5.1、温度检测电路 DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据I/O 均由同一条线来完成。本设计采用外部供电方式。如下图所示: 显示电路 本实验是采用LCD作为显示的,LCD具有显示清晰,且耗电低的特点。 5.3 温度报警电路 6:系统软件设计总流程图 6.3.C语言程序 #include<reg51.h> #include<intrins.h> unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字 unsigned char code Str[]={"DS18B20 max:33"}; //说明显示的是温度和温度上限 unsigned char code Error[]={"Error!"}; //说明没有检测到DS18B20 unsigned char code Temp[]={"T:"}; //说明显示的是温度 unsigned char code Cent[]={"C min:20"}; //温度单位和温度下限 sbit feng=P1^7; //蜂鸣器报警变量 /// 以下是对液晶模块的操作程序 sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; // 函数功能:延时1ms void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++); } // 函数功能:延时若干毫秒 void delaynms(unsigned char n) { unsigned char i; for(i=0;i<n;i++) delay1ms(); } // 函数功能:判断液晶模块的忙碌状态 bit BusyTest(void) { bit result; RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result=BF; //将忙碌标志电平赋给result E=0; return result; } // 函数功能:将模式设置指令或显示地址写入液晶模块 void WriteInstruction (unsigned char dictate) { while(BusyTest()==1)

文档评论(0)

mx597651661 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档