0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

星星科技指导员 来源:ADI 作者:ADI 2023-01-14 11:13 次阅读

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中的十六进制数据转换为十进制度温度值的两种方法。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 温度传感器
    +关注

    关注

    48

    文章

    2888

    浏览量

    155743
  • 存储
    +关注

    关注

    13

    文章

    4211

    浏览量

    85554
收藏 人收藏

    评论

    相关推荐

    如何将算得的数据(10进制转换为16进制通过串口发送出?

    我用公式节点算得一组数据,好比是1212,1313,1414等,这些数据转为16进制就是04BC,0521,0586,如何将十进制
    发表于 01-30 14:05

    如何将进制转换十进制并显示

    如何用汇编将如何将进制转换十进制在数码管中显示
    发表于 07-06 16:20

    如何将串口读取的十六进制字符串转换十进制数值

    在串口通信中,读取到的是四位的十六进制字符串,如何将转换为十进制的数值。
    发表于 05-27 10:42

    labview中如何将一个3字节的十六进制转换为十进制

    求教大神,如何用labview实现将一个3字节的十六进制转换为十进制,如7D8B79转换为对应的十进
    发表于 07-22 16:39

    怎么进制数据转换为十进制或ASCII?

    亲爱的,我在端口上有二进制数据。我用ADC转换温度数据并将其显示在端口上。我的问题是下面的最佳方法是什么?1)。
    发表于 05-21 13:02

    如何将IEEE754双字符串转换十进制字符串

    微芯片XC32包括几个数学函数,这些函数在IEEE754双精度(微芯片称它们为长双精度的)上运行,但是在标准工作室中不提供打印它们的支持。双精度数字转换为十进制字符串表示的精确功能迄
    发表于 07-23 11:39

    如何将ascii字符转换为十进制

    只显示一行小方框,可能暗示有损坏/空数据。如果有人能给我指出正确的方向,如何最好地ascii字符转换为十进制,那就太好了……注意,我想把
    发表于 09-05 14:19

    如何将SPI Master转换为十六进制数?

    大家好,我需要通过SPI Master发送十进制数,但是SpimgWruteXDATA()只能发送十六进制数。如何发送小数?如何将它们转换为十六进制
    发表于 09-30 11:15

    LM5066如何将数据转换为温度

    晶体管 MMBT3904LT1G 的集电极和基极连接到 lm5066 的二极管引脚。发射器接地。电路板被放置在 -20 摄氏度的热室中。在读取本地温度寄存器 0x​​8Dh 时,我们收到的数据为 0xF0Ah。
    发表于 05-11 07:54

    -40至+125摄氏度数字温度计电路

    -40至+125摄氏度数字温度计电路
    发表于 02-06 00:20 1014次阅读
    -40至+125<b class='flag-5'>摄氏度数字</b><b class='flag-5'>温度</b>计电路

    华氏摄氏度的换算在线计算 温度转换公式大全

    本文提供华氏摄氏度的换算,华氏温度摄氏温度的在线转换与换算工具,各种不同温度计量单位的
    发表于 09-13 15:36 1.5w次阅读

    进制如何转换为十进制?

    进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制
    的头像 发表于 06-22 10:21 2.4w次阅读

    c语言摄氏度与华氏温度如何转换

    摄氏度与华氏转换公式为C=(F-32)*5/9。不少人看到这样的转换公式就会将摄氏度C和华氏
    的头像 发表于 11-24 11:16 2.4w次阅读

    如何将十进制转换为进制

    电子发烧友网站提供《如何将十进制转换为进制数.zip》资料免费下载
    发表于 02-02 14:59 0次下载
    <b class='flag-5'>如何将</b><b class='flag-5'>十进制</b>数<b class='flag-5'>转换为</b>八<b class='flag-5'>进制</b>数

    你知道十进制转二进制如何进行转换吗?

    你知道十进制转二进制如何进行转换吗? 当我们提到数字系统时,最常见的是十进制系统和二进制系统。
    的头像 发表于 12-20 17:05 1380次阅读