如何将数字温度数据转换为十进制度摄氏度值

描述

DS1847和DS1848具有片内直接数字温度传感器。温度存储在地址位置 E2h 和 E3h 中。本应用笔记解释了如何将数字温度数据转换为十进制度摄氏度值。

将温度从十六进制转换为十进制

转换DS1847和DS1848的温度值的过程首先读取以字节E2h(温度的MSB)和E3h(温度的LSB)存储的十六进制值。这两个字节包含最新的温度读数。读取两个字节后,可以将它们转换为二进制。位权重如表1所示。

 

E2h (温度兆字节) E3h (温度LSB)
S 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 0 0 0

 

温度存储在二进制数据的 13 MSB 中。MSB 是符号位,指示 2 的补码二进制数是正数还是负数。如果 MSB 为 0,则该值为正。如果 MSB 为 1,则该值为负数。接下来的 12 位包含温度值,并通过不同的方法转换为正负值的十进制。

正温度转换

以下是如何转换正温度的示例。在此示例中,地址位置 E2h 和 E3h 分别包含 2Ah 和 88h。将这两个字节组合在一起得到 2A88h。接下来,将十六进制数据转换为二进制。2A88h 的二进制等价物是 0010 1010 1000 1000。由于MSB为0,因此温度为正。二进制数据的较低 3 位将被忽略,因此它们被 0 屏蔽。表 2 显示了从十六进制到二进制的转换以及低 3 位的屏蔽。

 

十六进制数据 二进制数据 屏蔽的二进制数据
2A88小时 0010 1010 1000 1000 0010 1010 1000 1000

 

由于温度为正,因此不需要2的补体转化。数据可以使用计算器直接转换为十进制数。二进制数 0010 1010 1000 1000 等于十进制值 10888。由于数据包含分数分量,因此必须除以十进制值才能获得真实温度。十进制值必须除以 128(或乘以 2-7) 以计算正确的十进制温度值。将十进制值 10888 除以 128 得到十进制温度值为 85.0625°C。

负温度转换

转换负温度值 (MSB = 1) 有点复杂。例如,地址 E2h 和 E3h 包含数据 F8h 和 08h。第一步是将十六进制值转换为二进制。同样,较低的 3 位将被忽略,因此它们将被 0 屏蔽。表 3 显示了从十六进制到二进制的转换以及 3 个低位的掩码。

 

十六进制数据 二进制数据 屏蔽的二进制数据
F808h 1111 1000 0000 1000 1111 1000 0000 1000

 

下一步是获取掩码二进制值的 2 补码。这是通过首先反转屏蔽的二进制数,然后向其添加 1 来完成的。反转二进制数 1111 1000 0000 1000 会得到二进制数 0000 0111 1111 0111。将 1 相加得到二进制数 0000 0111 1111 1000。此值等于十进制数 2040。与正温度示例一样,转换后的十进制值除以 128,但也变为负值,因为温度为负,如 MSB 所示。因此,当十进制值 2040 除以 -128 时,结果是十进制温度值为 -15.9375°C。

结论

本应用笔记演示了将地址E2h和E3h中的十六进制数据转换为十进制度温度值的两种方法。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分