元件
STC15F104W單片機一片,MQ-4燃氣檢測模塊,5V有源蜂鳴器一個,S8550三極管一個,DC005電源插座一個,220u和104電容各一個,10K、200R、100R、10R電阻各一個,微動按鍵一個,發光二極管一個
原理圖
功能描述:系統通電後,單片機控制發光隔3秒閃爍一次,表示系統運行正常。循環檢測MQ-4模塊是否發送低電平,如果是低電平表示檢測到天然氣。當檢測到低電平後,控制蜂鳴器發出聲音。按鍵是測試蜂鳴器是否正常發聲。
程序
程序名: DIY燃氣報警器
編寫人: 慄玉金
編寫時間: 2016年1月
硬件支持: STC15F104W 12MHz
接口說明: P3.2 工作狀態燈,P3.3蜂鳴器 P3.4 MQ-4 P3.5微動按鍵 P3.0 P3.1下載接口
************************************************************************************************/
#include "stc15f2k60s2.h"
#include <intrins.h>
sbit LED = P3^2; //LED燈,工作狀態燈
sbit BEEP =P3^3; //蜂鳴器
sbit MQ4 = P3^4; //天然氣檢測模塊
sbit KEY = P3^5; //測試鍵
void DELAY_MS(unsigned int a){
unsigned char i, j;
while( --a != 0){
_nop_();
_nop_();
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
}
main()
{
unsigned char iCount = 0;
int key_s = 0;//按下測試鍵的時間
//設置 P3.2口為退完輸出,增加LED的電流
P3M1 = 0x00;
P3M0 = 0x04;
//初始喇叭為無聲,LED為滅
BEEP = 1;
LED = 0;
while(1)
{
DELAY_MS(100);
if(MQ4==0)//當濃度高於設定值時 ,執行條件函數
{
DELAY_MS(20);//延時抗干擾
if(MQ4==0)//確定 濃度高於設定值時 ,執行條件函數
{
//報警
BEEP = 0;
DELAY_MS(100);
BEEP = 1;
DELAY_MS(100);
BEEP = 0;
DELAY_MS(100);
BEEP = 1;
DELAY_MS(100);
BEEP = 0;
DELAY_MS(500);
BEEP = 1;
DELAY_MS(200);
}
}
iCount ++;
if(iCount == 30)
{
iCount = 0;
//隔3秒 LED閃爍一下,表示正在正常工作中。
LED = 1;
DELAY_MS(100);
LED = 0;
}
if(KEY==0){
key_s++;
if(key_s>=30) //按下測試鍵超過 3秒
{
key_s=0;
while(KEY==0){
BEEP = 0;
}
BEEP = 0;
DELAY_MS(1000);
BEEP = 1;
}
}
if(KEY==1 && key_s<30)
key_s=0;
}
}
更多資料前往“51黑電子論壇”獲取