| +0x30就变成了对应数字的的ASCII码,也就是数字9变成了字符'9' |
| DS18B20 温度不太温度 数据精度不行 换其他传感器吧 |
应该还是要加0x30的,要么就是12864显示函数里面另有设置识别数字然后加0x30,而且感觉这两个代码不是同一个程序啊![]() |
qq1105424012 发表于 2018-1-18 09:56 非常感谢!!!! |
|
有可能直接定义数组 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',':'}; 或者在别的地方转换 自己认真看看把 |
|
需要看看lcd12864_SCharDisplay的函数。 有可能在其他地方加。 |
ahshmj 发表于 2018-1-18 10:00 同样的写液晶程序,为什么超声波模块测得的数据就不需要转换呢 |
| 这个和=与==在程序中和实际中的状态不一致时一个道理 |
|
本帖最后由 ahshmj 于 2018-1-18 10:02 编辑 是将数值转换成显示字符的代码,就是“ASCII”码。 ACSII码的从0x30~0x39是0~10 。也可以是 +48(十进制),和+0x30一样。 你可以网上搜索“ASCII”有详细的解释。 因为操作显示部分时,LCD的内部使用的是ACSII码,所以需要转换,而单片机内部处理18b20的数据是不需要转换的。 |
|
1+0X30=0X31 即 ASCII 对应的 1 2+0x30=0x32 即 ASCII对应的2 在程序里,我们得到的是BYTE 数组,需要把它转换成十进制,即07D0H转换为+125(℃)。 在LCD中,字库是ASCII值,因此需要+0x30, 即 125/100=1+0x30 对应ASCII 1 LCD显示百位 ‘1’ 125/10%10=2+0x30 对应ASCII 2 LCD显示百位 ‘2’ 125%10=5+0x30 对应ASCII 1 LCD显示百位 ‘5’ ℃可由° 和字母C两个字符的ASCII码来显示,分别为° (0XDF)和 C(0X43) |