前言
今天主要讲到DHT11温湿度传感器的应用,该传感器适用于多个场景,用途比较广泛,主要用来测量温度和湿度,其实对于单纯测量温度我们可以直接采用dsb18b20温度传感器,但是注意引脚接法,之前我不注意接反了,结果烧的······一碰手都直接起泡哈哈,好了,废话不讲,进入主题
一、DHT11温湿度传感器
DHT11传感器有四个接口,即VCC、GND、DATA、NC,那么首先要怎么接呢?其实这里面我们主要的就是接DATA这个口就行了,VCC、GND就不用多说了,NC端不接,悬空NC端即可,正常模块也是只有3个引脚引出来,所以只需要设定一个端口来与DATA互联就可以了
我们发现实际上也就是如我上面所说的,它的四个引脚只需要利用三个就行了,而且该模块还有一块电源指示灯,当工作时会亮起。下面为原理图:
那么在这里DATA只要随意连上STM32上一端口(下面我用到了PA11),设置为推挽输出即可,就可以实现数据互联。
下面这里主要是对输出的流程的讲解,实际上如果看不懂也没事,后面可以通过代码加深对这几段话的理解
二、实现测量主程序
DHT11函数(wenshi.c)
主函数(main.c)
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "wenshi.h"
- u8 temp;
- u8 humi;
- u8 tem;
- u8 hum;
- int main(void)
- {
- delay_init();
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- uart_init(115200);
- LED_Init(); //LED初始化
- LCD_Init(); //LCD初始化
- POINT_COLOR=RED;
- while(DHT11_Init())
- {
- printf("DHT11 Error \r\n");
- LCD_ShowString(20,20,210,16,16,"DHT11 Error");
- delay_ms(1000);
- }
-
- while (1)
- {
- DHT11_Read_Data(&temp,&humi,&tem,&hum);//取地址
- LCD_ShowString(20,40,210,16,16,"temp:"); //分别显示所要显示的温度、湿度
- LCD_ShowString(20,70,200,16,16,"humi:");
- LCD_ShowString(90,40,110,8,16,".");
- LCD_ShowString(90,70,100,8,16,".");
- LCD_ShowNum(70,40,temp,2,16);
- LCD_ShowNum(70,70,humi,2,16);
- LCD_ShowNum(95,40,tem,2,16);
- LCD_ShowNum(95,70,hum,2,16);
- LED0=!LED0;
- delay_ms(1000);
- }
- }<i style="background-color: rgb(255, 255, 255);"> </i>
复制代码
LCD的代码就不列出来了,主要函数以及注释基本上已经到位了,希望对大家有所帮助!
三、测试结果
下图 为测试结果:
四、总结
写到这里就接近尾声了,老规矩肯定不能忘哈哈,于晏老哥的话后面依旧续上,那么这里总结就再啰里啰嗦几句吧,DHT11是一款比较入门级且又十分耐用的温湿度检测模块,咱们要用到基本上学习期间也是在单片机上的运用学习
|