电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2564|回复: 2
收起左侧

温湿度传感器DHT11驱动问题~

[复制链接]

604

主题

970

帖子

5115

积分

四级会员

Rank: 4

积分
5115
发表于 2022-11-27 18:43:47 | 显示全部楼层 |阅读模式
这是dht11读一个字节的函数。
   第一个是可以读到数据。但是数据是错的,延时函数是isp生成的。
   第二个读一字节函数读到的全是0。。想了半天没想明白
温湿度传感器DHT11驱动问题~-1.png
unsigned char DHT11_Read_Byte(void)
{
  unsigned char i,t = 0,dat = 0;
for(i = 0;i < 8;i++)//高位先出
   {
   while(!DHT11_IO)
{
  t++;
Delay1us();
   if(t>80) return 1;
}
Delay40us();

dat <<= 1;
if(DHT11_IO == 1)
{
dat |= 0x01;                                                                                                                          

t = 0;

while(DHT11_IO)
  {
  t++;
Delay1us();
   if(t>80) return 2;
  }

  }

  }
return dat;
}


222222222222222222222222222——


unsigned char DHT11_Read_Byte(void)
{
unsigned char i,t = 0,dat = 0;
  for(i = 0;i < 8;i++)//高位先出
  {
while(!DHT11_IO)//总线低电平检测(高于50us超时退出)
  {
Delay1us();
t++;
if(t > 150) {return 3;}
  }

t = 0;

while(DHT11_IO)
{
Delay1us();//1us延时计时
t++;
if(t > 150) { return 4; }//超时检测
}

dat <<= 1;

if(t > 50)
{
dat |= 0x01;//低位置1
}

t = 0;//时间清零  
  }

return dat;

}
回复

使用道具 举报

657

主题

1025

帖子

5598

积分

四级会员

Rank: 4

积分
5598
发表于 2022-11-27 18:44:33 | 显示全部楼层
不明白第一个数据出错原因。。
第二个函数读到的为什么全是0啊
温湿度传感器DHT11驱动问题~-1.png
回复 支持 反对

使用道具 举报

578

主题

936

帖子

4943

积分

四级会员

Rank: 4

积分
4943
发表于 2022-11-27 18:44:49 | 显示全部楼层
我之前正好写过,需要就找我
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表