DIY燃氣報警器(電路,程序)

DIY 數碼 零是起源 零是起源 2017-11-04

DIY燃氣報警器(電路,程序)

DIY燃氣報警器(電路,程序)

元件

STC15F104W單片機一片,MQ-4燃氣檢測模塊,5V有源蜂鳴器一個,S8550三極管一個,DC005電源插座一個,220u和104電容各一個,10K、200R、100R、10R電阻各一個,微動按鍵一個,發光二極管一個

原理圖

DIY燃氣報警器(電路,程序)

功能描述:系統通電後,單片機控制發光隔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黑電子論壇”獲取

相關推薦

推薦中...