本设计由STC89C52单片机电路+LCD602液晶显示电路+DS18B20温度传感器电路+继电器模块电路+A/D采样PCF8591电路+声光报警电路+按键电路+MQ-9煤气传感器电路+电源电路组成。
1、LCD1602液晶实时显示当前的煤气浓度显示和温度。
2、可以通过按键设置煤气浓度阈值设置范围210-990,当前阈值超过设置阈值声光报警,同时继电器断开(继电器模块默认闭合)。否则,声光不报警,继电器不动作。
资料下载地址
https://pan.baidu.com/s/1vTzTPCDs46ll_kOc_X3xUg?pwd=8888
部分代码
unsigned int setdata = 300 ;//设置
unsigned int nongDu= 0; //浓度
unsigned char DisFlag=0; //更新显示标志
unsigned long time20ms=0; //定时计数
unsigned char ReadTempFlag=0;//定义读时间标志
int temp1; //温度读取值
float temperature; //实际温度
char dis0[16];//定义显示区域临时存储数组
char dis1[16]; //温度显示
void Init_Timer0(void);//定时器初始化
void CheckKey(void);
void main (void)
{
Init_Timer0();
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear(); //清屏
while (1) //主循环
{
CheckKey(); //检测按键
}
}
void CheckKey(void)
{
static bit rekey =0;
if((key1 == 0)||(key2 == 0)||(key3 == 0)) //有按键按下
{
// if(rekey == 0) //防止重复按下
{
DelayMs(50);
if(key1 == 0) //按键1按下
{
rekey =1; //防止重复按下
if(setdata>210) setdata =setdata-1; //-
}
else if((key2 == 0))//按键2按下
{
rekey =1; //防止重复按下
if(setdata<990) setdata =setdata+1;//+
}
}
}
else
{
rekey = 0;
}
}
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
//TH0=0x00; //给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}