标题: DS18B20测温代码问题 [打印本页]

作者: tyyhmtyyhm    时间: 2018-1-18 00:09
标题: DS18B20测温代码问题
DS18B20测温和超声波测距程序中的问题
DS18B20测温中,测得的数据需要加0x30
超声波测距程序中不需要加
用的同一个液晶,
为什么,谢谢

4610b912c8fcc3ce6effeeea9945d688d43f202f.jpg (25.61 KB, 下载次数: 59)

4610b912c8fcc3ce6effeeea9945d688d43f202f.jpg

e824b899a9014c086f2b0f7c017b02087af4f4d2.jpg (27.16 KB, 下载次数: 71)

e824b899a9014c086f2b0f7c017b02087af4f4d2.jpg

作者: qq1105424012    时间: 2018-1-18 09:56
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)
作者: ahshmj    时间: 2018-1-18 10:00
本帖最后由 ahshmj 于 2018-1-18 10:02 编辑

是将数值转换成显示字符的代码,就是“ASCII”码。
ACSII码的从0x30~0x39是0~10 。也可以是 +48(十进制),和+0x30一样。
你可以网上搜索“ASCII”有详细的解释。
因为操作显示部分时,LCD的内部使用的是ACSII码,所以需要转换,而单片机内部处理18b20的数据是不需要转换的。

作者: bioger    时间: 2018-1-18 10:02
这个和=与==在程序中和实际中的状态不一致时一个道理
作者: tyyhmtyyhm    时间: 2018-1-18 10:41
ahshmj 发表于 2018-1-18 10:00
是将数值转换成显示字符的代码,就是“ASCII”码。
ACSII码的从0x30~0x39是0~10 。也可以是 +48(十进制) ...

同样的写液晶程序,为什么超声波模块测得的数据就不需要转换呢
作者: cccc888    时间: 2018-1-18 11:12
需要看看lcd12864_SCharDisplay的函数。
有可能在其他地方加。
作者: qq1105424012    时间: 2018-1-18 11:28
有可能直接定义数组   
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',':'};
或者在别的地方转换  
自己认真看看把

作者: tyyhmtyyhm    时间: 2018-1-19 20:32
qq1105424012 发表于 2018-1-18 09:56
1+0X30=0X31  即 ASCII 对应的 1
2+0x30=0x32  即 ASCII对应的2
在程序里,我们得到的是BYTE 数组,需要 ...

非常感谢!!!!
作者: a1137607932    时间: 2018-1-20 03:55
应该还是要加0x30的,要么就是12864显示函数里面另有设置识别数字然后加0x30,而且感觉这两个代码不是同一个程序啊
作者: zhengguangxi    时间: 2018-1-20 11:17
DS18B20 温度不太温度 数据精度不行 换其他传感器吧
作者: 白鹤859    时间: 2018-1-25 11:52
+0x30就变成了对应数字的的ASCII码,也就是数字9变成了字符'9'




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1