熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2018-1-18 00:09
正文摘要:DS18B20測溫和超聲波測距程序中的問題 DS18B20測溫中,測得的數(shù)據(jù)需要加0x30 超聲波測距程序中不需要加 用的同一個(gè)液晶, 為什么,謝謝 |
| +0x30就變成了對(duì)應(yīng)數(shù)字的的ASCII碼,也就是數(shù)字9變成了字符'9' |
| DS18B20 溫度不太溫度 數(shù)據(jù)精度不行 換其他傳感器吧 |
應(yīng)該還是要加0x30的,要么就是12864顯示函數(shù)里面另有設(shè)置識(shí)別數(shù)字然后加0x30,而且感覺這兩個(gè)代碼不是同一個(gè)程序啊![]() |
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)換 自己認(rèn)真看看把 |
|
需要看看lcd12864_SCharDisplay的函數(shù)。 有可能在其他地方加。 |
ahshmj 發(fā)表于 2018-1-18 10:00 同樣的寫液晶程序,為什么超聲波模塊測得的數(shù)據(jù)就不需要轉(zhuǎn)換呢 |
| 這個(gè)和=與==在程序中和實(shí)際中的狀態(tài)不一致時(shí)一個(gè)道理 |
|
本帖最后由 ahshmj 于 2018-1-18 10:02 編輯 是將數(shù)值轉(zhuǎn)換成顯示字符的代碼,就是“ASCII”碼。 ACSII碼的從0x30~0x39是0~10 。也可以是 +48(十進(jìn)制),和+0x30一樣。 你可以網(wǎng)上搜索“ASCII”有詳細(xì)的解釋。 因?yàn)椴僮黠@示部分時(shí),LCD的內(nèi)部使用的是ACSII碼,所以需要轉(zhuǎn)換,而單片機(jī)內(nèi)部處理18b20的數(shù)據(jù)是不需要轉(zhuǎn)換的。 |
|
1+0X30=0X31 即 ASCII 對(duì)應(yīng)的 1 2+0x30=0x32 即 ASCII對(duì)應(yīng)的2 在程序里,我們得到的是BYTE 數(shù)組,需要把它轉(zhuǎn)換成十進(jìn)制,即07D0H轉(zhuǎn)換為+125(℃)。 在LCD中,字庫是ASCII值,因此需要+0x30, 即 125/100=1+0x30 對(duì)應(yīng)ASCII 1 LCD顯示百位 ‘1’ 125/10%10=2+0x30 對(duì)應(yīng)ASCII 2 LCD顯示百位 ‘2’ 125%10=5+0x30 對(duì)應(yīng)ASCII 1 LCD顯示百位 ‘5’ ℃可由° 和字母C兩個(gè)字符的ASCII碼來顯示,分別為° (0XDF)和 C(0X43) |
Powered by 單片機(jī)教程網(wǎng)