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

18b20的ram中,前两个字节放的是温度信息。其中第二个字节的高五位是符号位,当温度为正的时候,高五位的字节是0,当温度为负的时候,高五位字节为一。当温度为正的时候,只... 18b20的ram中, 前两个字节放的是温度信息。其中第二个字节的高五位是符号位,当温度为正的时候,高五位的字节是0,当温度为负的时候,高五位字节为一。当温度为正的时候,只需要将两个字节的数合到一个字节,然后乘以0.0625就是实际的温度。

问题1:那么,当温度为负的时候,该怎么读取温度呢?是将两个字节合为一个字节,然后先取反,再加一,最后再和0.0625相乘吗?这样得出的结果就是实际的负温度值吗?
问题2:如果我说的问题一中的答案是对的,那么如果用液晶或者数码管显示负号。
是不是要自己在程序里判断18b20的第二个字节的高五位是不是为一。然后再
写出一个显示符号的程序啊?上面那个最后得出的结果,应该没有符号吧?

问题3:如果我上两个问题理解的不对,还请大神帮忙解答一下。谢谢!
展开
 我来答
百度网友ec35c0b5a
2012-06-13 · TA获得超过1691个赞
知道大有可为答主
回答量:2508
采纳率:73%
帮助的人:1182万
展开全部
判断是否是负,就是取高几位的读取值采用与的方式判断,比如(000) 11111 00001000,那么高5位可以这样弄,tempH&0x1f,如果这个值=1;说明是负的,否则就是正的啊,不过有一点,取反是对的,还要加1啊,记得哦。
至于在LCD中显示的,确实是按你说的那样,直接写上一个符号即可。
做而论道
高能答主

2012-06-13 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
搜索:
做而论道 DS18B20与数字温度计
百度一下,即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式