功能要求:
基于這個(gè)設(shè)計(jì)的上述要求,根據(jù)功能要求,須設(shè)計(jì)有下載電路、顯示電路、LED控制電路、定時(shí)電路、報(bào)警電路,主控電路各個(gè)電路都有其自己的功能。通過復(fù)位按鍵“KEY1”,電路進(jìn)入就緒狀態(tài)。然后傳感器開始預(yù)熱大概20秒,該預(yù)設(shè)初值為60,然后實(shí)時(shí)檢測周邊的濃度,如果檢測濃度正常,報(bào)警電路不會(huì)工作進(jìn)入休眠狀態(tài),屏幕會(huì)顯示正常。如果家庭的煙霧濃度超過該預(yù)設(shè)值,報(bào)警電路就會(huì)報(bào)警,并且led會(huì)持續(xù)閃爍,屏幕上顯示報(bào)警!提醒居民要注意。該濃度值還可以手動(dòng)調(diào)節(jié),加與減,當(dāng)設(shè)置最大的閾值,報(bào)警電路也是可以報(bào)警,需要手動(dòng)關(guān)閉。
原理圖:
部分程序:
#include "gather.h"
void main()
{
u8 temp;
/****IO口初始化****/
P0M1=P0M0=0X00;
P1M1=P1M0=0X00;
P2M1=P2M0=0X00;
P4M1=P4M0=0X00;
/****定時(shí)器初始化****/
Timer0Init();
ET0=0;
while(1)
{
smg();//數(shù)碼管顯示
temp=keyscan();//按鍵掃描
if(temp==1&&ET0==1)//判斷返回值是否為1與定時(shí)器0是否打開 如果都滿足條件 執(zhí)行以下程序
{
JDQ1=!JDQ1; //繼電器led取反
LED1=!LED1;
LED2=!LED2;
}
if(JDQ1==0){LED2=0;LED1=1;}//當(dāng)繼電器1為0時(shí) 切換燈效果
if(JDQ1==1){LED2=1;LED1=0;}
if(IR==0)ET0=1;
if(min<=0)//當(dāng)?shù)褂?jì)時(shí)為0時(shí) 所有繼電器關(guān)閉
{
JDQ1=1;
JDQ2=1;
}
}
}