里面包括DTH11温湿度采集、PM2.5浓度采集等模块,程序详细
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "key.h"
- #include "sram.h"
- #include "malloc.h"
- #include "sdio_sdcard.h"
- #include "malloc.h"
- #include "w25qxx.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "fontupd.h"
- #include "text.h"
- #include "string.h"
- #include "math.h"
- #include "gp2y1014au.h"
- #include "dht11.h"
- #include "beep.h"
- #include "blu.h"
- #include "fan.h"
- #include "rtc.h"
- #include "sound.h"
- #include "adc.h"
- void Home_page_masage(void)
- {
- Show_Str(35,1,240,24,"Based on STM32",24,0);
- Show_Str(30,26,240,24,"Site environmen",24,0);
- Show_Str(12,51,240,24,"monitorting system",24,0);
- Show_Str(60,130,240,16,"TEMP:",16,0);
- Show_Str(150,130,240,16,"C",16,0);
-
- Show_Str(60,170,240,16,"HUMI:",16,0);
- Show_Str(150,170,240,16,"RH",16,0);
-
- Show_Str(60,210,240,16,"PM2.5:",16,0);
- Show_Str(150,210,240,16,"um",16,0);
-
- Show_Str(60,250,240,16,"NOISE:",16,0);
-
- Show_Str(60,290,240,16,"FAN:",16,0);
- }
- int main(void)
- {
- u8 key; //键值
- u32 temp;
- u32 humi;
- u16 PM_data;
- char temp_data[64] = {0};
- char humi_data[64] = {0};
- char pm_data[64] = {0};
- char zs_data[64] = {0};
- char fs_data[64] = {0};
-
- u8 timbuf[40];
- u8 daybuf[40];
- u8 weekbuf[40];
- u8 tbuf[40];
- RTC_TimeTypeDef RTC_TimeStruct;
- RTC_DateTypeDef RTC_DateStruct;
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOA时钟
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
-
-
- delay_init(168); //初始化延时函数
- uart_init(115200); //初始化串口波特率为115200
- LED_Init(); //初始化LED
-
- LCD_Init(); //LCD初始化
- KEY_Init(); //按键初始化
- W25QXX_Init(); //初始化W25Q128
- my_mem_init(SRAMIN); //初始化内部内存池
- my_mem_init(SRAMCCM); //初始化CCM内存池
- exfuns_init(); //为fatfs相关变量申请内存
- f_mount(fs[0],"0:",1); //挂载SD卡
- f_mount(fs[1],"1:",1); //挂载FLASH.
- POINT_COLOR=BLUE;
-
- init_dht11(); //温湿度初始化
- Adc_Init(); //PM2.5初始化
- USART3_Init(9600); //初始化蓝牙
- Fan_Init(); //风扇初始化
- Adc_Sound_Init(); //噪声传感器初始化
- My_RTC_Init(); //初始化RTC
- RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0); //配置WAKE UP中断,1秒钟中断一次
- /*
- //注意事项:
- //第一次请将时间改为当前的正常时间,编译后下载到开发板上,下次修改代码时必须将这两句屏蔽掉,以后开发板即使断电后也会自动同步时间
- // RTC_Set_Time(15,10,00,RTC_H12_PM); //设置时间
- // RTC_Set_Date(19,1,13,7); //设置日期
- */
-
- //GPIOF9,F10初始化设置
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//LED0和LED1对应IO口
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
- GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
-
- GPIO_SetBits(GPIOB,GPIO_Pin_15);
-
- Home_page_masage();
- POINT_COLOR=RED;
- while(1)
- {
- key=KEY_Scan(0); //扫描按键
-
- RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
- sprintf((char*)timbuf,"%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds);
- //LCD_ShowString(30,75,210,16,16,tbuf);
- RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
- sprintf((char*)daybuf,"20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date);
- //LCD_ShowString(30,95,210,16,16,tbuf);
- sprintf((char*)weekbuf,"%d",RTC_DateStruct.RTC_WeekDay);
- //LCD_ShowString(30,115,210,16,16,tbuf);
-
- sprintf((char*)tbuf,"%s/%s/%s",daybuf,timbuf,weekbuf);
- LCD_ShowString(30,95,210,16,16,tbuf);
-
- LCD_ShowxNum(110,250,Get_Adc_Average_Sound(5,18),6,16,0);//声音传感器
-
- PM_data = Get_GP2Y_Average(10);//PM2.5的值的获取
- LCD_ShowxNum(100,210,PM_data,6,16,0);
-
- if(PM_data >300)
- Fan_Deflect(1);//风扇正
- if(PM_data < 300)
- Fan_Deflect(0);//风扇ting
-
- if(Get_Adc_Average_Sound(5,18) > 1300 || PM_data > 300)
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_15);//设置高,灯灭
- delay_ms(200);
- GPIO_SetBits(GPIOB,GPIO_Pin_15);//设置高,灯灭
- delay_ms(200);
-
- }
-
- get_temp_humi(&temp,&humi);//温湿度的获取
- if(temp > 0 && humi > 0)
- {
- LCD_ShowxNum(100,130,temp,6,16,0);
- LCD_ShowxNum(100,170,humi,6,16,0);
-
- switch(data)
- {
- case'T':
- {
- sprintf(temp_data, "%s %d\r\n", "temp:",temp);
- usart3_send_str(temp_data);
- data =2;
- };break;
- case'H':
- {
- sprintf(humi_data, "%s %d\r\n", "humi:",humi);
- usart3_send_str(humi_data);
- data =2;
- };break;
- case'P':
- {
- sprintf(pm_data, "%s %d\r\n", "pm2.5:",PM_data);
- usart3_send_str(pm_data);
- data =2;
- };break;
-
- }
- if(temp > 30 || humi >90)
- Fan_Deflect(1);//风扇正
- if(temp < 20 || humi < 40)
- Fan_Deflect(2);//风扇反
- if((humi > 50 && humi < 90) || (temp < 30 && temp > 20))
- Fan_Deflect(0);//风扇ting
-
- if(temp > 38 || humi > 90)
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_15);//设置高,灯灭
- delay_ms(500);
- GPIO_SetBits(GPIOB,GPIO_Pin_15);//设置高,灯灭
- delay_ms(500);
-
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
Detection.7z
(264.03 KB, 下载次数: 10)
|