仿真图:
功能简介:
当正常状态会显示气体正常、排气扇关闭,一旦检测到有气体会显示气体泄漏、排气扇打开
采用滑动变阻器模拟传感器信号,此引脚需接入单片机ADC功能管脚
排气扇采用三极管+继电器驱动
具有LED和蜂鸣器组成的声光报警电路
主程序:
#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]);
}
设计文件:
链接:https://pan.baidu.com/s/1dqXhnOprhhKy0DHK6dDcDg?pwd=4c3h