24-基于51单片机的MQ2烟雾检测报警系统源程序、原理图、PCB、元件清单实物制作

功能介绍:采用51单片机作为CPU主控,采用MQ2传感器采集烟雾浓度,采用LCD1602显示相关数据,采用按键设置报警值,当浓度大于设置值,蜂鸣器产生声光报警,并且语音模块进行语音提醒,继电器驱动风扇进行排气,文末有资料分享:

24-基于51单片机的MQ2烟雾检测报警系统(程序+原理图+PCB+元件清单全套资料)

程序部分展示,有中文注释,新手容易看懂

uint ADC_Get(uchar Channel)//读取ADC值
{
ADC_CONTR=0x88|Channel;
_nop_(); _nop_(); _nop_(); _nop_();
while(!(ADC_CONTR&0x10));  
ADC_CONTR&=0xe7;      
return(ADC_RES*4+ADC_RESL);   
}

float ADC_Value(uchar Channel)//读取ADC通道值
{
float AD_Value;
uint i;
for(i=0;i<10;i++) 
AD_Value+=ADC_Get(Channel); 
AD_Value/=10;
AD_Value=(AD_Value*5)/1024;
return AD_Value;
}

void delay9(unsigned int a) //延时函数
{
unsigned int i;
while (--a!=0)
for(i=600;i>0;i--);   
}

void USART_Init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd; //波特率9600
SCON=0x50; 
TR1=1;
	TI=1;
}

void ADC_Init()//ADC初始化
{
P1ASF=0x07;
AUXR1=0x00;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR=0x80;
delay9(2);
}

void  delay_m(int ms)//延时函数
{
     int i;
	 do{
	      i = 11059200L / 13000;
		  while(--i)	;   //14T per loop
     }while(--ms);
}


void main()
{
	USART_Init();
		ADC_Init();//ADC初始化
	init();//LCD初始化
	delay_m(200);
	yinyue=0;q1=1;
    while (1)
		{
			if(key1==0)
			{
				bug++;
				if(bug>999) bug=999;
			}
			if(key2==0)
			{
			bug--;
				if(bug<1) bug=1;
			}
		

 下面是原理图和PCB文件展示:

百度云盘分享链接 

### 回答1: 51单片机mq2烟雾传感器代码用于检测周围环境中的烟雾浓度。以下是一个简单的示例代码: #include<reg51.h> #include<stdio.h> #define MQ2_pin P1 #define LED_pin P2 sbit power = P0^0; // 定义MQ2传感器的电源引脚 void delay(unsigned int time) // 延时函数 { unsigned int i,j; for(i=0;i<time;i++) for(j=0;j<121;j++); } void LCD_cmd(unsigned char cmd) // 发送命令到LCD { P2 = (P2 & 0x0F) | (cmd & 0xF0); P3 &= ~0x80; // RS = 0 P3 &= ~0x40; // RW = 0 P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); P2 = (P2 & 0x0F) | (cmd << 4); P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); } void LCD_write(unsigned char dat) // 发送数据到LCD { P2 = (P2 & 0x0F) | (dat & 0xF0); P3 |= 0x80; // RS = 1 P3 &= ~0x40; // RW = 0 P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); P2 = (P2 & 0x0F) | (dat << 4); P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); } void init_lcd() // 初始化LCD { LCD_cmd(0x02); // 返回起始位置 LCD_cmd(0x28); // 设置2行显示,5x7点阵 LCD_cmd(0x0C); // 打开显示,无光标 LCD_cmd(0x01); // 清屏 LCD_cmd(0x80); // 设置显示位置为第一行第一列 LCD_write("Smoke Level:"); } void display_smoke_level(unsigned int level) // 显示烟雾浓度 { LCD_cmd(0xC0); // 设置显示位置为第二行第一列 LCD_write(" "); LCD_cmd(0xC0); // 设置显示位置为第二行第一列 LCD_write(level); } void main() { unsigned int smoke_level; power = 1; // 打开传感器电源 init_lcd(); // 初始化LCD while(1) { smoke_level = MQ2_pin; // 读取MQ2传感器输出 display_smoke_level(smoke_level); // 显示烟雾浓度 delay(500); } } ### 回答2: 51单片机是一种常用的微控制器,能通过编程实现不同功能。MQ2烟雾传感器是一种常用的传感器,用于检测环境中的烟雾浓度。 编写51单片机MQ2烟雾传感器的代码可以分为以下几个步骤: 1. 首先,需要包含相关的头文件和宏定义。例如,可以包含51单片机的相关头文件如reg51.h、intrins.h,并定义需要使用的IO口。 2. 然后,需要初始化IO口和串口。可以使用相应的函数来设置IO口的工作模式,例如将传感器的输出引脚连接到51单片机的某个IO口上,并设置为输入模式。 3. 接下来,需要编写主函数或中断函数,来处理传感器数据的读取和处理。可以使用一个循环来不断读取传感器的输出,然后根据读取到的数据进行相应的处理,例如根据阈值判断是否有烟雾存在,或者输出烟雾浓度的数值。 4. 最后,可以通过串口或其他方式将检测到的烟雾浓度数据输出到外部设备,例如显示器或者手机等。 总的来说,编写51单片机MQ2烟雾传感器代码涉及到初始化IO口和串口、读取传感器数据和进行相应的处理,以及输出结果到外部设备的操作。具体的实现细节根据具体的需求和硬件组成而有所差异,可根据实际情况进行相应的代码编写。 ### 回答3: 51单片机是一种常用的单片机芯片,MQ2烟雾传感器是一种用于检测环境中有害烟雾浓度的传感器。下面给出一个使用51单片机控制MQ2烟雾传感器的简单代码示例: #include <reg51.h> sbit MQ2 = P2^0; // 定义烟雾传感器接口 int main() { unsigned int ADCResult; while(1) { MQ2 = 1; // 给烟雾传感器供电 delay(100); // 延时一段时间使传感器稳定 ADCResult = GetADC(); // 获取模拟信号的AD转换结果 if(ADCResult > 500) // 当烟雾浓度高于某个阈值时 { // 执行相应的操作,比如触发警报等 } MQ2 = 0; // 关闭烟雾传感器电源 delay(1000); // 延时一段时间,以便传感器回到低功耗状态 } return 0; } 此代码首先通过P2^0引脚给烟雾传感器供电,并延时一段时间以使传感器稳定。之后,通过编写的GetADC()函数获取烟雾传感器的模拟信号的AD转换结果。最后,根据获取的结果进行判断,如果烟雾浓度高于设定的阈值,则执行相应的操作,比如触发警报等。随后,关闭烟雾传感器的电源,并延时一段时间,以便传感器回到低功耗状态。该代码通过循环不断地获取烟雾浓度,并根据需要进行相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值