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文件展示:

百度云盘分享链接 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值