功能介绍
本设计选用MQ-2烟雾传感器、温度传感器以及STM32F103单片机作为核心器件并与其他电子技术相结合,通过STM32F103单片机控制传感器对检测地点的烟雾进行实时检测,并把检测结果进行数据信息处理,可以实现浓度显示、报警及排气等功能。
系统框图
原理图
系统主程序设计及流程图
源代码
//C库 #include//单片机头文件 #include "sys.h" //硬件驱动 #include "delay.h" #include "usart.h" #include "mq2.h" #include "timer.h" #include "gui.h" #include "LCD.h" #include "key.h" #include "beep.h" #include "exti.h" #include "led.h" #include "adc.h" float value_mq2 = 0.0; //烟雾浓度变量 float value_max = 50; //阈值 //硬件初始化 void Hardware_Init(void) { u8 i = 10; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 delay_init(); //延时函数初始化 LCD_Init(); //液晶屏初始化 LCD_Clear(GRAY0); //清屏 Gui_DrawFont_GBK16(3,10,BLUE,GRAY0,(u8 *)"系统正在初始化"); EXTIX_Init(); //外部中断初始化 Usart1_Init(115200); //串口1初始化为115200 LED_Init(); //LED灯初始化 KEY_Init(); //按键初始化 BEEP_Init(); //蜂鸣器初始化 ADCx_Init(); // ADC 初始化 //MQ2加热时间 while(i --) { delay_ms(20000); delay_ms(20000); } Gui_DrawFont_GBK16(4,30,RED,GRAY0,(u8*)"设备初始化完成"); } int main(void) { char str[] = ""; Hardware_Init(); //初始化外围硬件 GENERAL_TIM_Init(); //1MS系统定时 LCD_Clear(BLACK); //清屏 GUI_DrawRectangle(1, 1, 128-2, 128-2, WHITE); //边框 Gui_DrawFont_GBK16(25,4,BLACK,GRAY0,(u8 *)" 系统监控 "); Gui_DrawFont_GBK16(4,50,RED,BLACK,(u8 *)"阈值:50 ppm "); while(1) { /*MQ2传感器获取烟雾数据*/ value_mq2 = MQ2_GetPPM(); memset(str, 0, sizeof(str)); sprintf(str, "烟雾:%.2fppm ",value_mq2); Gui_DrawFont_GBK16(4,30,BLUE,BLACK,(u8 *)str);//显示 if(value_mq2 >= value_max)//判断是否超过阈值 { BEEP = 0; //超过阈值,蜂鸣器响叫 } else { BEEP = 1; //正常范围,蜂鸣器关闭 } LED1 = !LED1; //程序运行指示灯 delay_ms(1000); } }
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !