STC11F32XE-51单片机读取DS18B20温度传感器,为何有时读到温度字节是FFH FFH ?

STC11F32单片机,读取DS18B20温度传感器做温度显示,有时(尤其温度超过50度时)读取的温度数据是FF FF 是什么原因?
晶振11.0592. C语言程序
//读一个字节
unsigned char ReadOneChar1(void)
{

unsigned char i=0;
unsigned char dat = 0;
EA=0;
for (i=8;i>0;i--)
{
DQ1 = 0; // 给脉冲信号,在15US内完成信号采样
delay_18B20(1); //15us
dat>>=1;
DQ1 = 1; // 给脉冲信号
delay_18B20(4);
if(DQ1==1)
{
dat|=0x80;
}
delay_18B20(36); //45us
DQ1 = 1; // 释放
}
EA=1;
return(dat);
}//
/************************************************************************************************/
//写一个字节
void WriteOneChar1(unsigned char dat)
{
unsigned char i=0;
EA=0;
for (i=8; i>0; i--)
{
DQ1 = 0;
delay_18B20(7); //15us
DQ1 = dat&0x01;
delay_18B20(32); //45us
DQ1 = 1;
delay_18B20(1);
dat>>=1;
}
EA=1;
}

第1个回答  2013-08-14
可能是延迟时间不合适,没有允许读造成的。追问

能否说的具体点

第2个回答  2013-08-15

这是STC官网 1T 单片机读写 DS18B20的 程序,应该在晶振11.0592时没有问题,

只要参考一下这个改一下 就可以了。

本回答被提问者采纳

...温度传感器,为何有时读到温度字节是FFH FFH ?
可能是延迟时间不合适,没有允许读造成的。

相似回答