使用DHT11温湿度传感器与MQ-2烟雾传感器
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "hmi.h"
- #include "adc.h"
- #include "stdio.h"
- #include "string.h"
- #include "dht11.h"
- #include "stdlib.h"
- #include "math.h"
- #include "lcd.h"
-
- u8 table1[20];
- u8 table2[20];
- u8 table3[20];
- u8 table4[20];
- u8 table5[20];
- u8 table6[20];
- DHT11_Data_TypeDef DHT11_Data;
- int main(void)
- {
- u16 adcx;
- float temp;
- float value=2.5;
- float ppm;
- delay_init(); //延时函数初始化
- uart_init(9600); //串口初始化为9600
- LED_Init(); //初始化与LED连接的硬件接口
- Adc_Init(); //ADC初始化
- LCD_Init();
- DHT11_GPIO_Config();
- HMISendstart();
- while(1)
- {
- adcx=Get_Adc_Average(ADC_Channel_1,10);
- sprintf((char*)table1,"%d",adcx);
- HMISends("t3.txt=\""); //向串口屏发送电压值
- HMISends(table1);
- HMISends("\"");
- HMISendb(0xff);
- temp=(float)adcx*(3.3/4096);
- ppm=pow((0.1/temp)-0.02,-1.52695067);
- sprintf((char*)table5,"%f",ppm);
- sprintf((char*)table2,"%f",temp);
- HMISends("t4.txt=\""); //向串口屏发送电压值
- HMISends(table2);
- HMISends("\"");
- HMISendb(0xff);
- HMISends("t11.txt=\""); //向串口屏发送电压值
- HMISends(table5);
- HMISends("\"");
- HMISendb(0xff);
- if( Read_DHT11(&DHT11_Data)==SUCCESS)
- {
- LED0=!LED0;
- sprintf((char*)table3,"%d",DHT11_Data.humi_int);
- HMISends("t6.txt=\""); //向串口屏发送电压值
- HMISends(table3);
- HMISends("\"");
- HMISendb(0xff);
- sprintf((char*)table4,"%d",DHT11_Data.temp_int);
- HMISends("t8.txt=\""); //向串口屏发送电压值
- HMISends(table4);
- HMISends("\"");
- HMISendb(0xff);
- }
- if(USART_RX_STA&0x8000)
- {
- if(strcmp((char*)USART_RX_BUF,"moist")==0)
- {
- JDQ=0;
- delay_ms(1000);
- }
- else
- {
- value=atof((char*)USART_RX_BUF);
- }
- memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));
- USART_RX_STA=0;
- }
- if((temp>value)||(temp>2.5))
- {
- JDQ=0;
- BEEP=0;
- }
- else
- {
- JDQ=1;
- BEEP=1;
- }
- delay_ms(250);
- }
- }
复制代码
所有资料51hei提供下载:
烟雾报警器.7z
(3.08 MB, 下载次数: 114)
|