找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3142|回复: 4
收起左侧

关于DS18B20正负温度的判断问题

[复制链接]
ID:656393 发表于 2020-5-24 14:37 | 显示全部楼层 |阅读模式
正温度的话直接乘0.625就得到实际温度,而负温度的话要取反加1再乘0.625,这里它是怎么判断正负温度的?
{XLGDQO9(KZ5_V4)[H1JR)U.png
回复

使用道具 举报

ID:70069 发表于 2020-5-24 22:10 | 显示全部楼层
高8位大于7就是负温度,
回复

使用道具 举报

ID:195446 发表于 2020-5-24 22:53 | 显示全部楼层
因为负温度是用补码表示的,所以要取反加1。
回复

使用道具 举报

ID:213173 发表于 2020-5-25 08:01 | 显示全部楼层
temp = (double)t; 在这里t被强制转换成双精度变量,就能以t的最高位判断+/-。
回复

使用道具 举报

ID:282850 发表于 2020-5-25 09:35 | 显示全部楼层
      if(Tempe & 0x800        )          //第12位为1,则温度为负值,取反加一,将补码变成原码
      {
            Tempe= ~Tempe+1;
      }
Tempe=Tempe*0.625+0.5;        //扩大10倍,四舍五入
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表