![]() |
發(fā)布時間: 2018-1-18 00:09
正文摘要:DS18B20測溫和超聲波測距程序中的問題 DS18B20測溫中,測得的數(shù)據(jù)需要加0x30 超聲波測距程序中不需要加 用的同一個液晶, 為什么,謝謝 |
+0x30就變成了對應(yīng)數(shù)字的的ASCII碼,也就是數(shù)字9變成了字符'9' |
DS18B20 溫度不太溫度 數(shù)據(jù)精度不行 換其他傳感器吧 |
應(yīng)該還是要加0x30的,要么就是12864顯示函數(shù)里面另有設(shè)置識別數(shù)字然后加0x30,而且感覺這兩個代碼不是同一個程序啊![]() |
qq1105424012 發(fā)表于 2018-1-18 09:56 非常感謝!。! |
有可能直接定義數(shù)組 unsigned char code disbuff[30] = {'0','1','2','3','4','5','6','7','8','9','.','-','M','C','D','I','S','T','A','N','C','E','T','H','E',':'}; 或者在別的地方轉(zhuǎn)換 自己認真看看把 |
需要看看lcd12864_SCharDisplay的函數(shù)。 有可能在其他地方加。 |
ahshmj 發(fā)表于 2018-1-18 10:00 同樣的寫液晶程序,為什么超聲波模塊測得的數(shù)據(jù)就不需要轉(zhuǎn)換呢 |
這個和=與==在程序中和實際中的狀態(tài)不一致時一個道理 |
本帖最后由 ahshmj 于 2018-1-18 10:02 編輯 是將數(shù)值轉(zhuǎn)換成顯示字符的代碼,就是“ASCII”碼。 ACSII碼的從0x30~0x39是0~10 。也可以是 +48(十進制),和+0x30一樣。 你可以網(wǎng)上搜索“ASCII”有詳細的解釋。 因為操作顯示部分時,LCD的內(nèi)部使用的是ACSII碼,所以需要轉(zhuǎn)換,而單片機內(nèi)部處理18b20的數(shù)據(jù)是不需要轉(zhuǎn)換的。 |
1+0X30=0X31 即 ASCII 對應(yīng)的 1 2+0x30=0x32 即 ASCII對應(yīng)的2 在程序里,我們得到的是BYTE 數(shù)組,需要把它轉(zhuǎn)換成十進制,即07D0H轉(zhuǎn)換為+125(℃)。 在LCD中,字庫是ASCII值,因此需要+0x30, 即 125/100=1+0x30 對應(yīng)ASCII 1 LCD顯示百位 ‘1’ 125/10%10=2+0x30 對應(yīng)ASCII 2 LCD顯示百位 ‘2’ 125%10=5+0x30 對應(yīng)ASCII 1 LCD顯示百位 ‘5’ ℃可由° 和字母C兩個字符的ASCII碼來顯示,分別為° (0XDF)和 C(0X43) |
Powered by 單片機教程網(wǎng)