这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » DS18B20 DS18B20读取高8位和低8位后,怎么转化为实际温度???

共4条 1/1 1 跳转至

DS18B20 DS18B20读取高8位和低8位后,怎么转化为实际温度???

院士
2006-09-17 18:14:16     打赏
DS18B20 DS18B20读取高8位和低8位后,怎么转化为实际温度???



关键词: DS18B20     读取     怎么     化为     实际     温度    

院士
2006-12-22 22:43:00     打赏
2楼



DS18B20读取高8位和低8位后,怎么转化为实际温度???

    Init_DS18B20();
    WriteOneChar(0XCC); // 跳过读序号列号的操作
    WriteOneChar(0X44); // 启动温度转换
    Init_DS18B20();
    WriteOneChar(0XCC); //跳过读序号列号的操作
    WriteOneChar(0XBE); //读取温度寄存器
    a=ReadOneChar();   //读取温度低8位
    b=ReadOneChar();   //读取温度高8位



。。。。


之后怎么处理????

1: 一看你就没有仔细阅读18b20得资料。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
2: 这样    int i;
    folat f;
    Init_DS18B20();
    WriteOneChar(0XCC); // 跳过读序号列号的操作
    WriteOneChar(0X44); // 启动温度转换
    Init_DS18B20();
    WriteOneChar(0XCC); //跳过读序号列号的操作
    WriteOneChar(0XBE); //读取温度寄存器
    a=ReadOneChar();   //读取温度低8位
    b=ReadOneChar();   //读取温度高8位
    i = b;
    i <<= 8;
    i |= a;
    f = i*0.0625;

菜鸟
2013-05-14 20:14:48     打赏
3楼
我想问一下你上面的这条语句什么意思  i = b;
    i <<= 8;
    i |= a;为什么要折磨1做???

菜鸟
2018-08-31 22:41:26     打赏
4楼

你怎么没有学判断


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]