对于DHT22相对与DHT11相比,虽然价格较贵,但它拥有更高的精度,在工业场合更为合适,本程序由众想科技刘洋师傅的DHT11代码为基础进行编写而成,主要差别在于系统的初始化,以及温湿度计算的方法与DHT11有所差别。
PS:下面的程序是DHT读取数据的部分。在软件校验的时候,有的时候校验可能有问题,导致暂时不能显示温度和湿度,目前原因未知。测试下来如果出问题,一般在2分钟左右会恢复正常,并开始读取实时温度和湿度,若有发现问题的朋友欢迎随时讨论,谢谢
stm32源码如下:
- u8 DHT22_Read_Data(float *sd,float *wd)
- {
- u8 buf[5];
- u8 i;
- u16 wdtemp,sdtemp;
- DHT22_RST();
- if(DHT22_Check()==0)
- {
- for(i=0;i<5;i++)
- {
- buf[i]=DHT22_Read_Byte();
-
- }
- if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
- {
- sdtemp = buf[0];
- sdtemp = (sdtemp<<8)|buf[1];
- wdtemp = buf[2];
- wdtemp = (wdtemp<<8)|buf[3];
- *sd=sdtemp/10.0;
- *wd=wdtemp/10.0;
- return 0;
- }
- else
- {
- return 1;
- }
- }
- else
- {
- return 1;
- }
- }
复制代码
Keil代码下载::
DHT22.7z
(184.06 KB, 下载次数: 128)
|