首页 > 编程知识 正文

单片机火灾报警系统设计任务书,单片机火灾报警系统方案设计思路

时间:2023-05-05 19:14:36 阅读:271583 作者:988

文章目录 1 简介2 设计方案3 实现效果4 外围器件4.1 DS18B204.2 MQ-2传感器 5 部分实现代码6 最后


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目

大家可用于 课程设计 或 毕业设计

技术解答毕设帮助:<Q>746876041 2 设计方案

1、MCU采用stm32;

2、使用MQ2传感器采集烟雾等有害气体,当检测到有害气体时发声报警,并可以邮件通知用户;

3、使用DS18B20传感器检测环境温度和火焰;

4、采用OLED12864显示屏进行数据显示;

5、可设置传感器阈值,修改检测灵敏度;

3 实现效果

正常状态加不触发报警

当检测烟雾和明火时触发报警

4 外围器件 4.1 DS18B20


单片机采集到的数据

4.2 MQ-2传感器

MQ-2传感器对可燃气、烟雾等气体灵敏度高,基于MQ-2的烟雾传感器模块通过电路设计,提供了两种输出方式:

数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。
模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。


单片机采集数据如下:

5 部分实现代码 #include "stm32f10x_adc.h"#include "stdlib.h"#include "delay.h"#include "sys.h"#include "oled.h"#include "bmp.h"#include "usart.h"#include "LED.h"#include "KEY.h"#include "ADC.h"#include "timer.h"#include "HUO.h"extern u16 k1,k2;extern u8 an;int main(void){u8 i = 0,t = 0,key_value = 0,fasong = 0,zhuangtai = 0;u16 adcx = 0;u16 adcx_index = 300;u8 huo = 1;u8 huo_flag = 0;u8 string[10] = {0};NVIC_Configuration();delay_init();uart_init(115200); //���ڳ�ʼ��Ϊ115200LED_Init();KEY_Init();HUO_Init();Adc_Init();OLED_Init();OLED_Clear();OLED_ColorTurn(0);//0������ʾ��1 ��ɫ��ʾOLED_DisplayTurn(0);//0������ʾ 1 ��Ļ��ת��ʾfor(i = 0;i<8;i++)OLED_ShowChinese(i*16,16,i,16);//���ܻ��ֱ���ϵͳOLED_Refresh();//������ʾ��OLEDdelay_ms(999);delay_ms(999);OLED_Clear();//0for(i = 0;i<6;i++)//����ɼ�ֵ��OLED_ShowChinese(i*16,0,i+18,16);//16for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16,16,i+18,16);OLED_ShowChinese(16*2,16,26,16);//��for(i = 0;i<2;i++)//ֵ��OLED_ShowChinese(i*16+16*3,16,i+22,16);sprintf((char *)string,"%4d",adcx_index);//0300OLED_ShowString(88,16,string,16);//32for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16,32,i+24,16);for(i = 0;i<2;i++)//ֵ��OLED_ShowChinese(i*16+16+16,32,i+22,16);for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16+16*4+8,32,i+27,16);OLED_ShowChinese(16*6+8,32,23,16);//��OLED_ShowChinese(16*7,32,30,16);//��//48for(i = 0;i<2;i++)//��ȫOLED_ShowChinese(i*16+16*3,48,i+33,16);OLED_Refresh();//������ʾ��OLED//TIM3_Int_Init(99,7199);//10Khz�ļ���Ƶ�ʣ�������100Ϊ10ms while(1){key_value = KEY_Scan(0);switch (key_value){case KEY0_PRES:if(adcx_index>100)adcx_index-=200;else adcx_index=500;sprintf((char *)string,"%4d",adcx_index);OLED_ShowString(88,16,string,16);break;case KEY1_PRES:huo_flag =! huo_flag;OLED_ShowChinese(16*7,32,huo_flag?29:30,16);//��/��break;case KEY2_PRES:fasong = !fasong;if(fasong == 1){LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(50);}else {LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(200);LED0 = 1;delay_ms(50);LED0 = 0;delay_ms(50);}break;default:break;}t++;if(t==10){adcx=Get_Adc_Average(ADC_Channel_1,10);sprintf((char *)string,"%4d",adcx);OLED_ShowString(88,0,string,16);huo = HUO_Scan();OLED_ShowNum(56,32,huo,1,16);if(huo_flag == 0){if(adcx <= adcx_index){LED0 = 0;for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16+16*3,48,i+31,16);zhuangtai = 1;}else{LED0 = 1;for(i = 0;i<2;i++)//��ȫOLED_ShowChinese(i*16+16*3,48,i+33,16);zhuangtai = 0;}}else{if((adcx <= adcx_index)&&huo==1){LED0 = 0;for(i = 0;i<2;i++)//����OLED_ShowChinese(i*16+16*3,48,i+31,16);zhuangtai = 1;}else{LED0 = 1;for(i = 0;i<2;i++)//��ȫOLED_ShowChinese(i*16+16*3,48,i+33,16);zhuangtai = 0;}}if(fasong == 1)zhuangtai?printf("1"):printf("0");//printf("����rn"):printf("��ȫrn");OLED_Refresh();t=0;}delay_ms(20);}} 6 最后 技术解答毕设帮助:<Q>746876041

单片机毕设项目大全:
https://blog.csdn.net/huawei123444/article/details/119822845

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。