STC11F32XE-51单片机读取DS18B20温度传感器,为何有时读到温度字节是FFH FFH ?
STC11F32单片机,读取DS18B20温度传感器做温度显示,有时(尤其温度超过50度时)读取的温度数据是FFFF是什么原因?晶振11.0592.C语言程序//读一个字...
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;
} 展开
晶振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;
} 展开
2013-08-14
展开全部
可能是延迟时间不合适,没有允许读造成的。
追问
能否说的具体点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询