今天介绍使用DHT22温湿度传感器获取温湿度数值,并显示在OLED上。
DHT22 DAT引脚连接到C8T6开发板PA4引脚。
OLED SCL------PA6 , SDA------PA7。
传感器放在室外,温度可检测零下。
/*DHT22获取正负温度*/
u8 DHT22_Read_Data(float *temperature,float *humidity)
{
u8 buf[5];
u8 i;
u8 sum;
u16 temp;
u8 p;
//*humidity=0;
//*temperature=0;
DHT22_Rst();
if(DHT22_Check()==0)
{
for(i=0;i<5;i++)
{
buf[i]=DHT22_Read_Byte();
}
sum = buf[0]+buf[1]+buf[2]+buf[3];
/*buf[2] = 00000001;
buf[3] = 00001101;*/
temp = (float)((buf[2]<<8)+buf[3]);
p = ((temp & 0x8000)>>15);
if(sum == buf[4])
{
if (1== p)
{
*humidity=(float)((buf[0]<<8)+buf[1])/10;
*temperature = - ((float)(((buf[2]<<8)+buf[3]) & 0x7fff))/10;
}
else
{
*humidity=(float)((buf[0]<<8)+buf[1])/10;
*temperature = ((float)(((buf[2]<<8)+buf[3]) & 0x7fff))/10;
}
}
}
else
{
return 1;
}
return 0;
}
2022/11/27 更新 增加百分比和摄氏度符号显示。
程序(13条消息) STM32F103C8T6使用DHT22获取温湿度并通过OLED显示正负浮点四位数温度数值-单片机文档类资源-CSDN文库