基于STM32的室内燃气监测报警系统proteus仿真

硬件设计

链接:https://pan.baidu.com/s/12eGAoLZxwNoN-tagw6tVeQ
提取码:gvpj

仿真图如下所示:
在这里插入图片描述

程序设计

#include "delay.h"
#include "sys.h" 
#include "adc.h"
#include "1602.h"
#include "motor.h"

#define LED1 PAout(13)
#define LED2 PAout(14)
#define LED3 PAout(15)

#define FAN PCout(0)
#define speak PCout(1)

unsigned char dis_vol1[] ={"Alarm:Gas leak!"};
unsigned char dis_vol2[] ={" FAN   ON!"};
unsigned char dis_vol3[] ={"  Gas   Normal!"};
unsigned char dis_vol4[] ={" FAN  OFF!"};
//函数声明
void display1(void);
void display2(void);
int main(void)
{	 
    u8 i;
	u16 ADCValue;
	float voltage;
	u8 Mflag=2;
	u8 OPENflag=0;	//起初代表排风扇关
	delay_init();	    	 	  
	Adc_Init();		  	
	GPIO_InitStructReadtempCmd();
	MotoR_GPIO();
	lcd_system_reset();
	LED1=1;
	LED2=0;
	LED3=1;
	FAN=1;
	speak=0;
	while(1)
	{
	    ADCValue=Get_Adc_Average(ADC_Channel_1,10);
		voltage=((float)ADCValue/4096)*3.3;//计算电压
		voltage*=100;
		if(voltage>100) 
		{
		  display1();
		  Mflag=1;		//燃气泄漏,报警,开启排风扇
		  LED3=0;
		  for(i=0;i<100;i++)
		  {
		      speak=!speak;
			  delay(10);
		  }
		}
		else
	   {
		 display2();
		 Mflag=0;	//燃气未泄漏,关闭排风扇
		 LED3=1;
		 speak=0;
	   }  
	   if(Mflag==1&&OPENflag==0)
		{ 
		   	LED1=0;
           	LED2=1;
			FAN=0;//开启排风扇
		    Mflag=2;
		    OPENflag=1;	 //已经开好

		}
		else if(Mflag==0&&OPENflag==1)
	   {
		   LED1=1;
           LED2=0;
		   FAN=1;//关闭排风扇
		   Mflag=2; 
		   OPENflag=0;	  //已经关闭

	   }
	}
}

void display1()
{
     unsigned int i,j;
	 for(i=0;i<15;i++) 
	  lcd_char_write(i,0,dis_vol1[i]);  
  	 for(j=0;j<10;j++) 
 	  lcd_char_write(j,1,dis_vol2[j]);
}

void display2()
{	
     unsigned int i,j;
	 for(i=0;i<15;i++) 
	  lcd_char_write(i,0,dis_vol3[i]);  
  	 for(j=0;j<10;j++) 
 	  lcd_char_write(j,1,dis_vol4[j]);
}

.

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值