本帖最后由 芯圣电子官方QQ 于 2023-7-19 16:28 编辑
接上篇:【芯圣电子HC89S105A测评报告】+记录驱动DHT11的点滴1
如果DHT11是正常的,会拉低总线一段时间,就利用这一点来检测传感器是否正确连接和工作,检测函数如下:
unsigned char DHT11_Check(void)
{
unsigned char retry=0;
P07_DIR_INPUT();
while (P0_7&&retry<10)
{
retry++;
delay10us(1);
};
if(retry>=10)
return 1;
else
retry=0;
while (!P0_7&&retry<10)
{
retry++;
delay10us(1);
};
if(retry>=10)return 1;
return 0;
}
最后就是温湿度的读取了,读取函数如下:
unsigned char DHT11_Read_Bit(void)
{
unsigned char retry=0;
while(P0_7&&retry<10)
{
retry++;
delay10us(1);
}
retry=0;
while(!P0_7&&retry<10)
{
retry++;
delay10us(1);
}
delay10us(4);
if(P0_7)return 1;
else return 0;
}
可以看到温湿度已经被正确地读取出来了:
本次试用过程虽然不是很顺利,也花了我不少的时间,但是最后依然取得了成功,也锻炼了自己的动手能力和调试能力。
最后还是要感谢平台和芯圣官方提供的试用机会。
|