標題: 關(guān)于一段ds18b20單片機程序的理解 [打印本頁]

作者: wifen    時間: 2022-10-10 11:21
標題: 關(guān)于一段ds18b20單片機程序的理解
  1. if (res) //讀取成功時,刷新當前溫度顯示
  2. {
  3. intT = temp >> 4; //分離出溫度值整數(shù)部分
  4. decT = temp & 0xF; //分離出溫度值小數(shù)部分
  5. len = IntToString(str, intT); //整數(shù)部分轉(zhuǎn)換為字符串
  6. str[len++] = '.'; //添加小數(shù)點
  7. decT = (decT*10) / 16; //二進制的小數(shù)部分轉(zhuǎn)換為 1 位十進制位
  8. str[len++] = decT + '0'; //十進制小數(shù)位再轉(zhuǎn)換為 ASCII 字符
  9. while (len < 6) //用空格補齊到 6 個字符長度
  10. {
  11. str[len++] = ' ';
  12. }
  13. str[len] = '\0'; //添加字符串結(jié)束符
  14. LcdShowStr(0, 0, str); //顯示到液晶屏上
  15. }
復制代碼
decT = (decT*10) / 16; //二進制的小數(shù)部分轉(zhuǎn)換為 1 位十進制位
這段程序的話為啥要把dect *10,這里干嗎要乘以10啊?不是很理解

作者: 188610329    時間: 2022-10-10 13:28
除以1.6,規(guī)避浮點運算就是先乘以10再除以16。
作者: wifen    時間: 2022-10-10 13:30
188610329 發(fā)表于 2022-10-10 13:28
除以1.6,規(guī)避浮點運算就是先乘以10再除以16。

為什么是除以1.6
作者: 188610329    時間: 2022-10-10 13:45
wifen 發(fā)表于 2022-10-10 13:30
為什么是除以1.6

用0-f,即0-15表示小數(shù)部分,除以1.6可以得到十分位,除以0.16可以得到十分位和百分位,你隨便代入幾個數(shù)字就能理解了。
作者: wifen    時間: 2022-10-10 14:10
188610329 發(fā)表于 2022-10-10 13:45
用0-f,即0-15表示小數(shù)部分,除以1.6可以得到十分位,除以0.16可以得到十分位和百分位,你隨便代入幾個數(shù) ...

decT = temp & 0xF; //分離出溫度值小數(shù)部分
這個地方分離出來的不是4個16進制數(shù)嗎?decT = (decT*10) / 16這樣的話不是只得到一位?
作者: coody_sz    時間: 2022-10-10 14:21
看我的:
t = (adc * 5) >> 3;        // adc * (0.0625 * 10) = adc * 0.625 = dat * 5 / 8,  1位小數(shù)
作者: 188610329    時間: 2022-10-10 15:13
wifen 發(fā)表于 2022-10-10 14:10
decT = temp & 0xF; //分離出溫度值小數(shù)部分
這個地方分離出來的不是4個16進制數(shù)嗎?decT = (decT*10) / ...

你搞錯了,
decT = temp & 0xF; //分離出溫度值小數(shù)部分
這個地方分離出來的不是4個16進制數(shù)嗎?

這個地方是分離出4個2進制,即一個16進制,他的取值范圍只有0-15,他每增加減少1,代表溫度上升下降0.0625度, 即十六分之一度,你要用十進制表示,也就了不起是,計算到百分位而已了,10分位基本也夠了。
作者: wifen    時間: 2022-10-10 16:18
188610329 發(fā)表于 2022-10-10 15:13
你搞錯了,
decT = temp & 0xF; //分離出溫度值小數(shù)部分
這個地方分離出來的不是4個16進制數(shù)嗎?

明白了,十分感謝
作者: 人人學會單片機    時間: 2022-10-11 12:16
51單片機+DS1302+DS18B20+74HC595的LED16x32點陣溫度萬年歷源代碼分享 http://www.torrancerestoration.com/bbs/dpj-200968-1.html
作者: wifen    時間: 2022-10-11 15:09
人人學會單片機 發(fā)表于 2022-10-11 12:16
51單片機+DS1302+DS18B20+74HC595的LED16x32點陣溫度萬年歷源代碼分享 http://www.torrancerestoration.com/bbs/dpj-20096 ...

感謝,哈哈,晚點去下載來膜拜




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1