基于51单片机的烟雾火灾报警器proteus仿真设计

基于51单片机的烟雾火灾报警器proteus仿真设计

1 开发环境

仿真图:proteus8.9以上

程序代码:KEIL4/KEIL5

原理图:AD

设计编号:A0004

代码讲解+仿真讲解+仿真演示+原理图讲解

操作视频:

基于51单片机的烟雾火灾报警系统仿真设计

2 功能说明介绍

结合实际情况,基于51单片机设计一个烟雾报警器。该系统应满足的功能要求为:

MQ-2烟雾传感,ADC0832模数转换芯片、DS18B20温度传感器、数码管显示、独立按键、声光报警模块。

具体功能:

1、数码管实时监测及显示温度值和烟雾浓度;

2、可通过按键设置烟雾报警值和温度报警值;

3、可实现手动紧急报警和手动取消报警功能;

4、温度超过设定阈值时,蜂鸣器响黄灯闪烁;烟雾超过设定阈值时,蜂鸣器响红灯灯闪烁;

5、测距范围: 烟物浓度:0-9等级;温度范围:0-99度。

3 仿真图

img

img

4 程序

工程文件使用Keil4/keil5打开

代码

img

主函数

/***************主函数*****************/

void main()

{

​	beep = 0;				  //开机蜂鸣器叫一声

​	delay_1ms(200);

​	P0 = P1 = P2 = P3 = 0xff;  //初始化IO口为高电平

​	temperature = read_temp();  //读取温度值

​	init_eeprom();  //开始初始化保存的数据

​	delay_1ms(650);				

​	temperature = read_temp();  //读取温度值

​	time_init(); //初始化定时器 		

​	while(1)  

​	{

​	

​		key();					//独立按键程序

​		if(key_can < 10)

​		{

​			key_with();			//按键按下要执行的程序

​		}

​		if(flag_300ms == 1)

​		{		

​			flag_300ms = 0;

​			clock_h_l();

​			dengji = ad0832read(0);	

​			if(dengji>248)dengji=248;

​			dengji = dengji * 10 / 250;

​			temperature = read_temp();  //读取温度值

 

​			if(menu_1 == 0)

​			{

​				if(temperature >= 99)

​					temperature = 99;

​				dis_smg[3]=smg_du[dengji];	  //显示烟物报警等级

​				dis_smg[2]= 0x80;	      // -		

​				dis_smg[1]=smg_du[temperature/10%10];	//十位

​				dis_smg[0]=smg_du[temperature%10];	  //个位	ADC0832为8位ADC,数值为0~255,我们将其分开放入l_tmpdate数组中显示

//			dis_smg[3] = smg_du[dengji/100];	//十位

//			dis_smg[2] = smg_du[dengji/10%10];	//十位

//			dis_smg[1] = smg_du[dengji%10];	//个位

 

​			}

​		} 

​		delay_1ms(1);

​	}

}

 

/*************定时器0中断服务程序***************/

void time0_int() interrupt 1

{	

​	static uchar value;

​	TH0 = 0xf8;

​	TL0 = 0x30;   // 2ms

​	value ++;	 

​	display();	 //数码管显示函数

​	if(value % 150 == 0)

​	{

​		flag_300ms = 1;	  //300ms

​		value = 0;

​	}

}

 

首先要给传感器预热,因为MQ.2型半导体电阻式烟雾传感器在不通电存放一段时间后,再次通电时,传感器不能立即正常采集烟雾信息,需要一段时间预热。程序初始化结束后,系统进入监控状态。主程序流程图如下图所示。

img

​ 在整个报警系统工作中,烟雾浓度信息经ADC0832转换处理后,由单片机进行分析处理,判断系统是否启动报警。主程序还包括LED八段式数码管浓度字符显示功能、手动报警功能、报警浓度设定功能,中断子程序等,使报警器功能更加完善,更加方便。

​ 预热后,程序就开始执行初始化子程序,初始化实现的功能是I/O口输入、输出状态设定, 寄存器初始化,中断功能等。首先,设定定时初值为50ms,利用IAP 写入EEPROM,作为取值间隔。然后,设置定时器0,选择方式1。方式1状态下,定时器的工作寄存器TH1、TL1,是全16位参与操作。接下来,定时器0中断的允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警限初值。

5 原理图

​ 原理图由AD绘制,原理图和仿真图有出入,原理图需要电源,电源开关模块。此设计资料详细,硬件手册资料图片详细,不对硬件调试负责,做实物需要一定的基本功。

​ 智能火灾报警系统的原理是依据当烟雾浓度或温度达到设定值时,烟雾传感器和温度传感器感应到信号由ADC0832进行处理模数转化再到单片机进行处理,喇叭发出报警声音。系统共分为控制电路、检测电路、显示和报警电路。

img

6 元器件清单

img

7 清单

img

本资料下载链接见文章开头的视频

猜你喜欢

转载自blog.csdn.net/Jack_0220/article/details/128370406