摘要: DS1847和DS1848具有片上直接数字温度传感器。温度存储在地址位置E2h和E3h。本应用说明说明如何将数字温度数据转换为十进制摄氏度值。
转换DS1847和DS1848的温度值的过程从重新生成存储在字节E2h(温度的MSB)和E3h(温度的LSB)中的十六进制值开始。这两个字节包含最近的温度值。一旦这两个字节被读取,它们就可以被转换成二进制。位权重如表1所示。
E2h(温度MSB) | E3h(温度LSB) | ||||||||||||||
年代 | 2 (7) | 2 (6) | 2 (5) | 2 (4) | 2 (3) | 2(2) | 2 (1) | 2 (0) | 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位的屏蔽。
HEXIDECIMAL数据 | 二进制数据 | 掩码二进制数据 |
2 a88h | 0010 1010 1000 1000 | 0010 1010 1000000 |
因为温度是正的,所以需要2的补变换。数据可以用计算器直接转换成十进制数。二进制数0010 1010 1000 1000等于十进制数10888。由于数据包含小数部分,因此必须将小数值除以以获得真实温度。十进制数值必须除以128(或乘以2(-7)),才能计算出正确的十进制温度值。十进制数值10888除以128得到的十进制温度值为85.0625°C。
转换负温度值(MSB = 1)有点复杂。例如,地址E2h和E3h包含数据F8h和08h。第一步是将十六进制值转换为二进制。同样,低3位被忽略,因此它们将被0掩盖。表3显示了从十六进制到二进制的转换以及3个较低位的屏蔽。
HEXIDECIMAL数据 | 二进制数据 | 掩码二进制数据 |
F808h | 1111 1000 0000 1000 | 1111 1000 0000000 |
下一步是取掩码二进制值的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中的十六进制数据转换为十进制摄氏度温度值的两种方法。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308