毕设求助:单片机始终读不到温湿度传感器DHT22的数据,一直显示00.0

/*----数据判断----*/
void COM(void) //数据0 1确认
{ U8 i;
for(i=0;i<8;i++)
{
FLAG=2;
while((!dht_dat)&&FLAG++); //1bit开始 50us延迟
LCM1602_Delay(40);
temp=0;// 26us~28us 表示为0
if(dht_dat){temp=1;} // 超过28us依然为高电平 表示为1 // 如果高电平高过预定0高电平值则数据位为 1
FLAG=2;
while((dht_dat)&&FLAG++); //条件2是FLAG++,也就是FLAG不等于0(条件判断完成后FLAG加1)
if(FLAG==1)break;//FLAG溢出超时则跳出for循环
comdata<<=1;//等价于comdata乘以2的n次方 //左移操作的规则为,高b位舍去,其它依次向高位(左侧)移动b位,低b位添加0
comdata|=temp; //a|=b;等效于a=a|b;即a与b执行按位或操作,结果赋值给a

}

先检查原理图,看看硬件设计有没有问题。
再用示波器测量一下DHT22的输出管脚,看看到底有没有输出的波形。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-23
DHT22 数据脚要加上拉电阻的
第2个回答  2016-05-23
核对下时序吧追问

/*-------------us延时函数-------------------*/
void LCM1602_Delay(uint time)
{
while(time--){;}
}
这是延迟。DHT22的时序核对过,按理应该是没错的

本回答被提问者采纳