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文章
2940瀏覽量
156078 -
存儲
+關注
關注
13文章
4314瀏覽量
85851
發布評論請先 登錄
相關推薦
評論