在使用DS18B20进行温度读取的时候,刚上电的时候读取为固定值85度,对于这个问题,在有温度判断的情况下,刚上电判断错误,这个问题经过测试,得到三种解决办法。第一:刚上电读取一次然后延时800ms,经过测试错误的时间在750ms左右。第二种办法刚上电直接读取150次,这样也可以滤掉不正确的值。第三种办法上电后给一个do……while循环直达读的值不是85。我采用的是第三种办法,代码如下(这里我是获得数据在使用的时候处理):
还有在一个问题在读取温度时温度会一段时间跳一下,在这里我采取的办法是连续读取两次温度判断两次温度的差值,如果差值大于5则说明数据有误,不再使用。否则读取正确使用第二次读取的值。代码如下(这里的T为全局变量所以不需要返回值):