前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DS18B20温度算法

DS18B20温度算法

作者头像
随心助手
发布2023-09-24 14:44:21
1780
发布2023-09-24 14:44:21
举报
文章被收录于专栏:nginx遇上redisnginx遇上redis

算法一:​

首先程序判断温度是否是零下,如果是,则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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-21 08:23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档