单片机测温芯片18B20是一款常用的IC.doc_第1页
单片机测温芯片18B20是一款常用的IC.doc_第2页
单片机测温芯片18B20是一款常用的IC.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机 测温芯片 18B20 是一款常用的IC,优势特点不多说,这里主要讨论温度值的处理,尤其是负温度。18B20片内有一个9Byte的 SRAM 和一个3Byte的 EEPROM。如下图:其中我们需要使用的就是SRAM中的前两个字节,这里储存的就是我们要的温度值。这两个字节的结构如下: 我们可以看到,LS(低字节)的高四位 和 MS(高字节)的低四位共8个字节构成了实际的一个带符号位的字节数据可以表示(-128127)足够表示18B20的温度范围。MS的高四位为符号为的扩展,当温度值为正时MS高5位(图中S的五位)全为0,温度值为负时全为1。LS的低四位为小数部分,不是要求太高的话可以忽略。我们这里暂不套路小数部分的处理方法。下面我们就来讨论整数部分的数据处理方法。 整数部分我们实际只要高字节的低四位和低字节的高四位。首先通过移位求或后生成一个无符号位的字节。然后判断这个无符号的值是否大于127,如果大于128说明是个负温度需要处理,否则就可以直接返回。18B20的负温度使用补码形式输出,我们只需要对这个字节进行取反加1后就是这个负温度的绝对值,这时候我们需要一个符号标记告诉输出函数这是个负温度需要显示负号即可。下面贴出数据处理部分的代码: uchar readtemp() /读取温度 uchar temp = 0; uchar tmp2 reset(); writebyte(0xCC); / 跳过序列号 writebyte(0x44); / 启动温度转换 delayms(1000); reset(); writebyte(0xCC); writebyte(0xBE); /读9个寄存器,前两个为温度 tmp0=readbyte(); /低位 tmp1=readbyte(); /高位 temp = (tmp14)&0x0F); if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论