DS1847和DS1848具有片內(nèi)直接數(shù)字溫度傳感器。溫度存儲(chǔ)在地址位置 E2h 和 E3h 中。本應(yīng)用筆記解釋了如何將數(shù)字溫度數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制度攝氏度值。
將溫度從十六進(jìn)制轉(zhuǎn)換為十進(jìn)制
轉(zhuǎn)換DS1847和DS1848的溫度值的過程首先讀取以字節(jié)E2h(溫度的MSB)和E3h(溫度的LSB)存儲(chǔ)的十六進(jìn)制值。這兩個(gè)字節(jié)包含最新的溫度讀數(shù)。讀取兩個(gè)字節(jié)后,可以將它們轉(zhuǎn)換為二進(jìn)制。位權(quán)重如表1所示。
E2h (溫度兆字節(jié)) | E3h (溫度LSB) | ||||||||||||||
S | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | 2-4 | 0 | 0 | 0 |
溫度存儲(chǔ)在二進(jìn)制數(shù)據(jù)的 13 MSB 中。MSB 是符號(hào)位,指示 2 的補(bǔ)碼二進(jìn)制數(shù)是正數(shù)還是負(fù)數(shù)。如果 MSB 為 0,則該值為正。如果 MSB 為 1,則該值為負(fù)數(shù)。接下來的 12 位包含溫度值,并通過不同的方法轉(zhuǎn)換為正負(fù)值的十進(jìn)制。
正溫度轉(zhuǎn)換
以下是如何轉(zhuǎn)換正溫度的示例。在此示例中,地址位置 E2h 和 E3h 分別包含 2Ah 和 88h。將這兩個(gè)字節(jié)組合在一起得到 2A88h。接下來,將十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制。2A88h 的二進(jìn)制等價(jià)物是 0010 1010 1000 1000。由于MSB為0,因此溫度為正。二進(jìn)制數(shù)據(jù)的較低 3 位將被忽略,因此它們被 0 屏蔽。表 2 顯示了從十六進(jìn)制到二進(jìn)制的轉(zhuǎn)換以及低 3 位的屏蔽。
十六進(jìn)制數(shù)據(jù) | 二進(jìn)制數(shù)據(jù) | 屏蔽的二進(jìn)制數(shù)據(jù) |
2A88小時(shí) | 0010 1010 1000 1000 | 0010 1010 1000 1000 |
由于溫度為正,因此不需要2的補(bǔ)體轉(zhuǎn)化。數(shù)據(jù)可以使用計(jì)算器直接轉(zhuǎn)換為十進(jìn)制數(shù)。二進(jìn)制數(shù) 0010 1010 1000 1000 等于十進(jìn)制值 10888。由于數(shù)據(jù)包含分?jǐn)?shù)分量,因此必須除以十進(jìn)制值才能獲得真實(shí)溫度。十進(jìn)制值必須除以 128(或乘以 2-7) 以計(jì)算正確的十進(jìn)制溫度值。將十進(jìn)制值 10888 除以 128 得到十進(jìn)制溫度值為 85.0625°C。
負(fù)溫度轉(zhuǎn)換
轉(zhuǎn)換負(fù)溫度值 (MSB = 1) 有點(diǎn)復(fù)雜。例如,地址 E2h 和 E3h 包含數(shù)據(jù) F8h 和 08h。第一步是將十六進(jìn)制值轉(zhuǎn)換為二進(jìn)制。同樣,較低的 3 位將被忽略,因此它們將被 0 屏蔽。表 3 顯示了從十六進(jìn)制到二進(jìn)制的轉(zhuǎn)換以及 3 個(gè)低位的掩碼。
十六進(jìn)制數(shù)據(jù) | 二進(jìn)制數(shù)據(jù) | 屏蔽的二進(jìn)制數(shù)據(jù) |
F808h | 1111 1000 0000 1000 | 1111 1000 0000 1000 |
下一步是獲取掩碼二進(jìn)制值的 2 補(bǔ)碼。這是通過首先反轉(zhuǎn)屏蔽的二進(jìn)制數(shù),然后向其添加 1 來完成的。反轉(zhuǎn)二進(jìn)制數(shù) 1111 1000 0000 1000 會(huì)得到二進(jìn)制數(shù) 0000 0111 1111 0111。將 1 相加得到二進(jìn)制數(shù) 0000 0111 1111 1000。此值等于十進(jìn)制數(shù) 2040。與正溫度示例一樣,轉(zhuǎn)換后的十進(jìn)制值除以 128,但也變?yōu)樨?fù)值,因?yàn)闇囟葹樨?fù),如 MSB 所示。因此,當(dāng)十進(jìn)制值 2040 除以 -128 時(shí),結(jié)果是十進(jìn)制溫度值為 -15.9375°C。
結(jié)論
本應(yīng)用筆記演示了將地址E2h和E3h中的十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制度溫度值的兩種方法。
審核編輯:郭婷
-
溫度傳感器
+關(guān)注
關(guān)注
48文章
2993瀏覽量
156803 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4411瀏覽量
86465
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何將算得的數(shù)據(jù)(10進(jìn)制)轉(zhuǎn)換為16進(jìn)制通過串口發(fā)送出?
如何將二進(jìn)制數(shù)轉(zhuǎn)換十進(jìn)制并顯示
如何將串口讀取的十六進(jìn)制字符串轉(zhuǎn)換成十進(jìn)制數(shù)值
labview中如何將一個(gè)3字節(jié)的十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制
怎么將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制或ASCII?
如何將IEEE754雙字符串轉(zhuǎn)換成十進(jìn)制字符串
如何將ascii字符轉(zhuǎn)換為十進(jìn)制值
如何將SPI Master轉(zhuǎn)換為十六進(jìn)制數(shù)?
LM5066如何將數(shù)據(jù)轉(zhuǎn)換為負(fù)溫度?
華氏度與攝氏度的換算在線計(jì)算 溫度轉(zhuǎn)換公式大全
二進(jìn)制如何轉(zhuǎn)換為十進(jìn)制?
c語言攝氏度與華氏溫度如何轉(zhuǎn)換
如何將十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)

評(píng)論