如何用51单片机读取ds18b20的取负温度?求教.

问题描述:

如何用51单片机读取ds18b20的取负温度?求教.
18b20的ram中,前两个字节放的是温度信息.其中第二个字节的高五位是符号位,当温度为正的时候,高五位的字节是0,当温度为负的时候,高五位字节为一.当温度为正的时候,只需要将两个字节的数合到一个字节,然后乘以0.0625就是实际的温度.
那么,当温度为负的时候,该怎么读取温度呢?是将两个字节合为一个字节,然后先取反,再加一,最后再和0.0625相乘吗?这样得出的结果就是实际的负温度值吗?
如果我说的问题一中的答案是对的,那么如果用液晶或者数码管显示负号.
是不是要自己在程序里判断18b20的第二个字节的高五位是不是为一.然后再
写出一个显示符号的程序啊?上面那个最后得出的结果,应该没有符号吧?
1个回答 分类:数学 2014-10-12

问题解答:

我来补答
判断是否是负,就是取高几位的读取值采用与的方式判断,比如(000) 11111 00001000,那么高5位可以这样弄,tempH&0x1f,如果这个值=1;说明是负的,否则就是正的啊,不过有一点,取反是对的,还要加1啊,记得哦.
至于在LCD中显示的,确实是按你说的那样,直接写上一个符号即可.
 
 
展开全文阅读
剩余:2000
上一页:dc2inr3qec3r2
下一页:这样怎么写