赞
踩
目录
1 可以检测周围环境的湿度和温度
2 传感器采用DHT11
3 湿度测量范围:20%-95%(0 度-50 度范围)湿度测量误差:+-5%
4 温度测量范围:0 度-50 度温度测量误差:+-2 度 4 工作电压3.3V-5V
5 输出形式:数字输出
6 设有固定螺栓孔,方便安装
7 小板PCB 尺寸:3.2cm * 1.4cm
8 电源指示灯(红色)
1 VCC 外接3.3V-5V
2 GND 外接GND
3 DATA 小板开关数字量输出接口接单片机IO 口
4 蜂鸣器VCC 外接3.3V,GND外接GND,I/O接PA7
编译环境:keil5
测试单片机: STM32F103C8T6
DHT11 模块与单片机连接: VCC-VCC GND-GND DATA-PA11
温湿度超过设定的阈值就会触发蜂鸣器报警!!!
FMQ.c文件编写蜂鸣器驱动代码如下:
- #include "FMQ.h"
- #include "stm32f10x.h"
- void mfq_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- }
-
- void fmq(float temp,float humi)
- {
- if(temp>15 || humi>95)//温度大于15度 或者 湿度大于95度 蜂鸣器报警
- {
- GPIO_ResetBits(GPIOB, GPIO_Pin_0);
- }
- else
- {
- GPIO_SetBits(GPIOB, GPIO_Pin_0);
- }
- }
DHT11.c文件,对温湿度传感器驱动经行了封装
- #include "dht11.h"
- #include "Delay.h"
-
- void DHT11_Rst(void)
- {
- DHT11_IO_OUT();
- DHT11_DQ_OUT=0;
- Delay_ms(20);
- DHT11_DQ_OUT=1;
- Delay_us(30);
- }
-
- u8 DHT11_Check(void)
- {
- u8 retry=0;
- DHT11_IO_IN();//SET INPUT
- while (DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- };
- if(retry>=100)return 1;
- else retry=0;
- while (!DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- };
- if(retry>=100)return 1;
- return 0;
- }
-
- u8 DHT11_Read_Bit(void)
- {
- u8 retry=0;
- while(DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- }
- retry=0;
- while(!DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- }
- Delay_us(40);//µÈ´ý40us
- if(DHT11_DQ_IN)return 1;
- else return 0;
- }
-
- u8 DHT11_Read_Byte(void)
- {
- u8 i,dat;
- dat=0;
- for (i=0;i<8;i++)
- {
- dat<<=1;
- dat|=DHT11_Read_Bit();
- }
- return dat;
- }
-
- u8 DHT11_Read_Data(u8 *temp,u8 *humi)
- {
- u8 buf[5];
- u8 i;
- DHT11_Rst();
- if(DHT11_Check()==0)
- {
- for(i=0;i<5;i++)//¶ÁÈ¡40λÊý¾Ý
- {
- buf[i]=DHT11_Read_Byte();
- }
- if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
- {
- *humi=buf[0];
- *temp=buf[2];
- }
- }else return 1;
- return 0;
- }
-
- u8 DHT11_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPG¶Ë¿ÚʱÖÓ
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- GPIO_SetBits(GPIOA,GPIO_Pin_11);
-
- DHT11_Rst();
- return DHT11_Check();
- }
-
-
-
-
-
-
-
-
DHT11.h文件,对温湿度传感器驱动函数经行了声明
- #ifndef __DHT11_H
- #define __DHT11_H
- #include "sys.h"
-
- #define DHT11_IO_IN() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}
- #define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=3<<12;}
- IO²Ù×÷º¯Êý
- #define DHT11_DQ_OUT PAout(11) //Êý¾Ý¶Ë¿Ú PA0
- #define DHT11_DQ_IN PAin(11) //Êý¾Ý¶Ë¿Ú PA0
-
-
- u8 DHT11_Init(void);
- u8 DHT11_Read_Data(u8 *temp,u8 *humi);
- u8 DHT11_Read_Byte(void);
- u8 DHT11_Read_Bit(void);
- u8 DHT11_Check(void);
- void DHT11_Rst(void);
- #endif
printf("temp=%d humi=%d\r\n",temp,humi);
《STM32单片机+DHT11温湿度传感器+OLED屏幕+蜂鸣器报警+温湿度数据发送到串口调试助手》源代码资源-CSDN文库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。