标题: 关于DS18B20正负温度的判断问题 [打印本页]

作者: liyihang    时间: 2020-5-24 14:37
标题: 关于DS18B20正负温度的判断问题
正温度的话直接乘0.625就得到实际温度,而负温度的话要取反加1再乘0.625,这里它是怎么判断正负温度的?

{XLGDQO9(KZ5_V4)[H1JR)U.png (87.26 KB, 下载次数: 15)

{XLGDQO9(KZ5_V4)[H1JR)U.png

作者: benclee    时间: 2020-5-24 22:10
高8位大于7就是负温度,
作者: mffhxa    时间: 2020-5-24 22:53
因为负温度是用补码表示的,所以要取反加1。
作者: wulin    时间: 2020-5-25 08:01
temp = (double)t; 在这里t被强制转换成双精度变量,就能以t的最高位判断+/-。
作者: f556    时间: 2020-5-25 09:35
      if(Tempe & 0x800        )          //第12位为1,则温度为负值,取反加一,将补码变成原码
      {
            Tempe= ~Tempe+1;
      }
Tempe=Tempe*0.625+0.5;        //扩大10倍,四舍五入




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1