|
本帖最后由 1dddd 于 2021-7-23 18:20 編輯
首先感謝進(jìn)來看的朋友,表示感謝。 作為一名新手,在寫DHT11發(fā)送串口的時候溫度和濕度顯示出錯,所以特意來向您們請教的
請問 我這個讀取DHT11時序的哪里出錯了嗎?
void Dht11_Star(void)
{
DATE = 0;
Delay20ms();
DATE = 1;
Delay30us();
}
char Dht11_Check(void)
{
uint t = 0;
while(DATE)
{
t++;
_nop_();
if(t>4000)
{
return -1;
}
}
t=0;
while(!DATE)
{
t++;
_nop_();
if(t>100)
return -2;
}
t=0;
while(DATE)
{
t++;
_nop_();
if(t>100)
return -3;
}
return 0;
}
char Dht11_Read(void)
{
uint i,t=0;
uchar temp=0;
for(i=0;i<8;i++)
{
while(!DATE)
{
t++;
_nop_();
if(t>60)
return -1;
}
Delay40us();
temp <<= 1;
if(DATE)
{
t=0;
temp |= 0x80;
while(DATE)
{
t++;
_nop_();
if(t>80)
return -1;
}
}
}
return temp;
}
|
|