DS18B20温度显示的问题

温度显示可以随温度变化,但中间会时不时的出现85°C,I5°C(是大写的英文字母I),还有<7°C,不知道是怎么回事,哪位高手指点一下啊
//1602的驱动程序
void write_com(uchar com,bit i) //是命令写0 数据写1
{
rs=i;
P0=com;
delayms(5);
lcde=1;
delayms(5);
lcde=0;
}
//1602初始化
void lcd1602init(void)
{
rw=0;
write_com(0x01,0);
write_com(0x02,0);
write_com(0x06,0);
write_com(0x0c,0);
write_com(0x38,0);

}
//ds18b20初始化
bit ds18b20_init(void)
{
ds18b20=0;
delay_600us();
ds18b20=1;
delay_60us();
presence=ds18b20; //如果=0则初始化成功 =1则初始化失败
delay_600us();
ds18b20=1 ;
return(presence) ; //返回信号,0=presence,1= no presence
}
读写字节和温度采集函数写不下了,可能是哪里的问题呢?

85度是18b20的默认值,一般没有初始化成功会读出这个温度。
另外18b20的转换时间很长,毫秒级的,这个要注意一下,
最好采用判断DQ信号线的方法看温度是否转换完成。
你的低温度可能跟这个有关。
温馨提示:内容为网友见解,仅供参考
无其他回答

为什么我做的DS18B20数码管显示的温度不准确?
首先,要检查你的程序读出的DS18B20的温度值有没有问题,比如仿真中设定26°C,在程序中判断是不是26°C,若是,编一个简单的程序,让数码管输出1,这样就可以判定你的测温程序有没有问题。其次,最怀疑的地方就是你这个数码管的程序有问题,若你可以保证没有问题,可以排除这一块。最后,注意各个模...

用8051单片机编的DS18B20显示温度程序,是按照书上写的,数码管却显示40...
显示不正常可能是因为:1、硬件问题,ds18b20出现故障,可能性不大!2、软件问题。18b20对时序要求非常严格,我要求学生练习时序的时候,就拿18b20作为实例 18b20对时序要求非常严格,我想问几个问题。你选用的晶振是多少?你严格按照说明书说的时序了吗?我没有测试你的程序,只是结合我以前的程序给你一些...

基于DS18B20的多点温度检测系统显示为什么老是闪烁且显示-0.1
分3步检测那里出了问题。1,去掉多点,改成单点试试。2,如果方法1不行将显示代码去掉,将结果直接输出到端口上,判断驱动是否正常。不正常改正 3,DS18B20数据读出后直接抛弃,换成正确的立即数写入显示代码入口,看看显示程序是否正常。

ds18b20显示温度不正确
只能测试0---15.9度,说明你只读取温度的低八位,也就是a=ds18b20read();从程序上看,你的定义的uint。。。#define uint unsigned char 定义错误,更改成#define uint unsigned int 所以在你temp<<=8; 之后,温度的th位是为0的。temp=temp|a; \/\/合并成一个字节 合成的温度就是温度的低...

DS18B20温度显示的问题
85度是18b20的默认值,一般没有初始化成功会读出这个温度。另外18b20的转换时间很长,毫秒级的,这个要注意一下,最好采用判断DQ信号线的方法看温度是否转换完成。你的低温度可能跟这个有关。

ds18b20负温度显示问题
这有问题。if(temp=dat*0.625){ 应该改为 temp=dat*0.625;if(temp>=32)\/\/ { 华氏度与摄氏度的换算:华氏度比摄影氏度小。一华氏度等于5\/9摄氏度。从华氏度变成摄氏度的公式是:(华氏度-32)× 摄氏度 也可以这样算:(华氏度-32)×5÷9=摄氏度 将摄氏度换算为华氏度的公式是:...

数码管 ds18b20温度显示
ds18b20=1;} date>>=1; \/\/右移一位 } } 应该是if((dat&0x01)==0x01)这里多了一个&号,导致结果错误。3。我增加了用1602显示的模块,删除了用液晶显示的模块。\/ 以下是程序,并附上仿真图一张 \/ include <reg52.h> include <intrins.h> define uchar unsigned char define uint ...

ds18b20数码管显示温度时,显示的正常温度数值总是乱跳成其他数字 不 ...
可能是你刷新的太快,它没有完成一次转换而就被你读数了,以致于读出了错误的数;而下一次读时又是在它完成转换后的值,所以又正确了……你试着把刷新时间弄长一点试试,一般来说弄在2秒为佳

用DS18B20测温度,总显示55.9℃,怎么回事?
你用什么单片机,不同单片机速度不一样,DS18B20要求时序较高,单片机速度不同会使时序对不上,所以延时程序跟单片机有很大关系.

为什么单片机控制18B20测温初始总是显示85度然后显示测量值
*The power-on reset value of the temperature register is +85°C,这个是DS18B20数据手册里的表述,也就是说,DS18B20在上电复位时,其温度寄存器里的初始值是85°C。所以你的问题就出来了。如果你不想显示这个85°C,你可以延迟一段时间,比如0.5S后再提取这个DS18B20转换的温度显示即可。 本回答由网友推荐 举报...

相似回答