单片机测温芯片18B20是一款常用的IC

单片机测温芯片18B20是一款常用的IC

ID:40819122

大小:118.50 KB

页数:3页

时间:2019-08-08

单片机测温芯片18B20是一款常用的IC_第1页
单片机测温芯片18B20是一款常用的IC_第2页
单片机测温芯片18B20是一款常用的IC_第3页
资源描述:

《单片机测温芯片18B20是一款常用的IC》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、单片机测温芯片18B20是一款常用的IC,优势特点不多说,这里主要讨论温度值的处理,尤其是负温度。18B20片内有一个9Byte的SRAM和一个3Byte的EEPROM。如下图:其中我们需要使用的就是SRAM中的前两个字节,这里储存的就是我们要的温度值。这两个字节的结构如下:  我们可以看到,LS(低字节)的高四位和MS(高字节)的低四位共8个字节构成了实际的一个带符号位的字节数据可以表示(-128~127)足够表示18B20的温度范围。MS的高四位为符号为的扩展,当温度值为正时MS高5位(图中S的五位)全为0,温度值为负时全为

2、1。LS的低四位为小数部分,不是要求太高的话可以忽略。我们这里暂不套路小数部分的处理方法。下面我们就来讨论整数部分的数据处理方法。  整数部分我们实际只要高字节的低四位和低字节的高四位。首先通过移位求或后生成一个无符号位的字节。然后判断这个无符号的值是否大于127,如果大于128说明是个负温度需要处理,否则就可以直接返回。18B20的负温度使用补码形式输出,我们只需要对这个字节进行取反加1后就是这个负温度的绝对值,这时候我们需要一个符号标记告诉输出函数这是个负温度需要显示负号即可。下面贴出数据处理部分的代码:   ucharre

3、adtemp()//读取温度{ uchartemp=0; uchartmp[2] reset(); writebyte(0xCC);//跳过序列号 writebyte(0x44);//启动温度转换 delayms(1000); reset(); writebyte(0xCC); writebyte(0xBE);//读9个寄存器,前两个为温度 tmp[0]=readbyte(); //低位 tmp[1]=readbyte(); //高位   temp=((tmp[1]<<4)&0xF0)

4、((tmp[0]>>4)&0x0F); i

5、f(temp>127) {temp=~temp+1; }   return(temp);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。