基于ds18b20数字温度温度计的设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于DS18B20数字温度温度计的设计 小组成员: 李红苓 范聪丽 蔡元发 目前,温度测量方法很多,温度传感器也非常普遍。本实验是基于DS18B20芯片的“一线式”温度传感器。该传感器只需占用微处理器(Mega16)的一个普通端口(PC6),并且多个传感器可以并联在一起使用,适用于多点温度检测系统,节约了大量系统资源。 芯片简介 DS18B20是美国Dallas半导体公司生产的数字化温度传感器,支持 “一线总线”接口。全部传感元件及转换电路集成在形如一只三极管的集成电路内。 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非易失的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如下图 : 外形及引脚排列图 内部结构图 测温原理及框图 DS18B20测温原理如图所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。 DS18B20的主要特性    (1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电   (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯   (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温   (4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内   (5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃   (6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温   (7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快   (8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力   (9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 电路原理图 DS18B20的时序 ※ DS18B20的读时序 对于DS18B20的读时序分为读0时序和读1时序两个过程。 主机总线从高拉至低电平时,总线只需保持低电平1us,之后将总线拉高,产生读时间隙。在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。 ※ 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。 DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 简要程序 int main(void) { int i; LCD_init(); cpu_init(); LCD_clear(); LCD_write_english_string(1,0, Temprature:); sei(); //允许全局中断 while (1) { ds1820_start(); /*启动一次转换*/ delay_nms(10); /*等待转换结束*/ i=ds1820_read_temp(); /*读取温度数值*/ LCD_set_XY(0,3); LCD_write_char((0x30+(zhengshu/100))); LCD_write_char((0x30+(zhengshu%100/10))); LCD_write_char((0x30+(zhengshu-(zhengshu/10)*10))); LCD_write_char(0x2e); LCD_write_char(0x30+xiaoshu_a); } return 0; } 试验结果

文档评论(0)

158****9376 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档