算法一:
首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低11位(LS Byte)取反加一变成原码。
算法二:
当五个符号位S=0时,温度为正值,直接将后面的11位二进制转换为十进制,再乘以0.0625(12位分辨率),就可以得到温度值;
当五个符号位S=1时,温度为负值,先将后面的11位二进制补码变为原码(符号位不变,数值位取反后加1),再计算十进制值。再乘以0.0625(12位分辨率),就可以得到温度值;
例如:
+125℃的数字输出07D0(00000111 11010000)
转换成10进制是2000,对应摄氏度:0.0625x2000=125°C
-55℃的数字输出为 FC90。
首先取反,然后+1,转换成原码为:11111011 01101111
数值位转换成10进制是870,对应摄氏度:-0.0625x870=-55°C
本文分享自 nginx遇上redis 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!