單片機(jī)控制紅外線防盜報警器

2016-07-05 15:37

  筆者在業(yè)余時間設(shè)計制作了一臺紅外線防盜報警器。具有以下特點:用當(dāng)今最流行的AT89C2051單片機(jī)控制,體積小,成本低;用紅外線收發(fā)管進(jìn)行檢測,安裝隱蔽,不易被發(fā)現(xiàn);探測信號采用脈沖信號,節(jié)能且抗干擾;當(dāng)有人試圖闖入室內(nèi)時,能自動進(jìn)行聲光報警?,F(xiàn)將該報警器原理介紹如下,供廣大單片機(jī)愛好者參考。
一、硬件電路
  電路原理圖如圖1所示??蓪⒃撾娐贩譃橐韵氯齻€部分。
單片機(jī)控制紅外線防盜報警器
?

  1、電源電路。220V交流市電經(jīng)變壓器T降壓,橋式整流器D1整流,電解電容C7濾波,三端穩(wěn)壓器78L05穩(wěn)壓,最后得到整機(jī)要求的+5V穩(wěn)定直流電源。
  2、單片機(jī)系統(tǒng)。U1為AT89C2051單片機(jī)。C1,R0,R1和復(fù)位按鈕RESET組成手動電平復(fù)位和上電自動復(fù)位電路;C2,C3以及晶振JT1組成時鐘電路;C4,C5為+5V電源濾波電容。U2為CMOS6反相器CC4069,起驅(qū)動作用。VD1~VD6為紅外發(fā)射管,其負(fù)極端接與P1口,P1口設(shè)置為輸出狀態(tài),當(dāng)P1口為“0”時,VD1~VD6發(fā)紅外光。VD7~VD12為紅外接收管,當(dāng)接收到紅外光時導(dǎo)通,+5V電源通過VD7~VD12加到反相器CC4069的輸入端,經(jīng)反相為低電平,這時P3.0~P3.5為低電平。發(fā)射管和接收管分別安裝在門和窗口的適當(dāng)位置,當(dāng)有人闖入時遮擋了紅外線,接收管截止,反相器輸入端為低電平,這時U1的P3.0~P3.5為高電平。當(dāng)在一定時間內(nèi)檢測到位于不同位置的光束被遮擋時,則由P3.7口輸出報警信號(高低電平間隔1S的脈沖信號)。驅(qū)動聲光報警電路,進(jìn)行聲光報警,直至按復(fù)位按鈕RESET或電源開關(guān)S1。由于紅外收發(fā)管之間沒有遮擋時為正常,有遮擋時為異常,則當(dāng)P1口輸出00H時,P3口的正常狀態(tài)數(shù)據(jù)為00H。
  3、聲光報警電路。555定時器U4,揚(yáng)聲器BY,普通紅色發(fā)光二極管VD13等組成聲光報警電路。其中555定時器接成了一個低頻多諧振蕩器,其控制電壓輸入端5腳與單片機(jī)AT89C2051的P3.7腳相連,受P3.7腳輸出的高低電平間隔1S的脈沖信號控制。當(dāng)P3.7為高電平時控制電壓Uco較高,閾值電壓UT+(=Uco)和UT-(=1/2Uco)也較高;當(dāng)P3.7為低電平時UT+和UT-也較低。當(dāng)UT+較高時,電容C9充、放電的電壓幅度較大,因而振蕩頻率較低。反之,當(dāng)UT+較低時,電容C9充、放電過程中電壓變化幅度較小,充、放電過程完成得較快,故振蕩頻率較高。即當(dāng)P3.7=1時,555輸出脈沖的振蕩頻率較低;當(dāng)P3.7=0時,555輸出脈沖的振蕩頻率高。該輸出脈沖經(jīng)過隔直電容C8加到揚(yáng)聲器上,揚(yáng)聲器將交替發(fā)出高、低不同的兩種叫聲。同時,P3.7腳輸出的高低電平間隔1S的脈沖信號經(jīng)電阻R8加到紅色發(fā)光二極管VD13上,VD13將閃爍發(fā)光。達(dá)到聲光同時報警的效果。
二、軟件設(shè)計
  我們的目標(biāo)是,當(dāng)檢測到有人闖入時就由P3.7口輸出高低電平間隔1S的脈沖信號去驅(qū)動聲光報警電路,產(chǎn)生聲光報警。這可通過使P3.7口每隔1S取反一次實現(xiàn)。而1S時間可通過讓定時器T0(工作于定時方式1)重復(fù)定時100ms十次實現(xiàn)。用工作寄存器R1作循環(huán)計數(shù)器,初值為10(0AH)。采用中斷方式編程,整個軟件由主程序和中斷服務(wù)程序兩部分構(gòu)成。

YES
NO
NO
YES
開始
系統(tǒng)初始化
有人闖入?
啟動定時
時間到嗎?
轉(zhuǎn)報警程序
圖2 主程序流程圖
等待時間到
1、主程序。主要功能是對系統(tǒng)進(jìn)行初始化和對系統(tǒng)進(jìn)行監(jiān)視??词欠裼腥岁J入。其程序流程圖如圖2所示。
?? 單片機(jī)控制紅外線防盜報警器
?? 程序清單如下:
????? ORG? 0000H
????? AJMP? MAIN???? ;轉(zhuǎn)向主程序???????
????? ORG? 000BH???? ;定時器T0中斷入口
????? LJMP? BJ?????? ;轉(zhuǎn)向中斷服務(wù)程序
??? ??ORG? 0030H
MAIN:MOV? SP,#50H? ;設(shè)置堆棧棧底
????? MOV? R1,#0AH? ;設(shè)置循環(huán)計數(shù)器初值
????? MOV? P3,#00H? ;設(shè)置P3口為正常狀態(tài)
????? MOV? P1,#00H ?;使VD1~VD6發(fā)紅外光
MOV? TMOD,#01H;設(shè)T0為定時方式1
????? MOV? TH0,#3CH ;設(shè)置定時100ms初值
????? MOV? TL0,#0B0H
????? SETB? EA??????? ;CPU開中斷
????? SETB? ET0??? ???;定時器0允許中斷
? JS:MOV? A,P3????? ;監(jiān)視是否有人闖入
????? CJNE? A,#00H,LP
????? AJMP? JS
? LP:SETB? TR0?????? ;啟動T0定時100ms
????? SJMP? $???????? ;等待定時100ms完成

1S到嗎?
P3.7取反
中斷返回
保護(hù)現(xiàn)場
圖3? 中斷服務(wù)程序流程圖
重設(shè)定時初值
恢復(fù)現(xiàn)場
YES
NO
2、中斷服務(wù)程序。主要功能是判斷定時1S是否完成,從而決定是否對P3.7口取反。其程序流程圖如圖3所示。
??? 單片機(jī)控制紅外線防盜報警器
?? 程序清單如下:
????? ORG? 0060H
BJ:PUSH? Acc?????? ;現(xiàn)場保護(hù)
??? ??PUSH? PSW
????? MOV? TH0,#3CH? ;重設(shè)定時初值
????? MOV? TL0,#0B0H
????? DJNZ? R1,F(xiàn)H??? ;1S未到返回
????? MOV? R1,#0AH?? ;重設(shè)計數(shù)器初值
????? CPL? P3.7?????? ;P3.7口取反
? FH:POP? PSW??????? ;恢復(fù)現(xiàn)場
????? POP? Acc
????? RETI??????????? ;中斷返回
????? END
三、系統(tǒng)調(diào)試
  1、軟件調(diào)試。先在Keilc51環(huán)境中進(jìn)行軟件調(diào)試,再利用編程器將調(diào)試好的程序固化到AT89C2051單片機(jī)中。
  2、硬件調(diào)試
(1)檢查線路應(yīng)焊接無誤。(2)電源電路調(diào)試。斷開負(fù)載,用萬用表測量78L05的3腳應(yīng)有+5V電壓。(3)先不裝入AT89C2051單片機(jī),用短路線把U1插座的12腳接地,調(diào)整VD1和VD7的安裝位置和角度,測量U1插座的2腳電壓。當(dāng)VD1和VD7之間無遮擋時2腳電壓為0伏,有遮擋時為+5伏。用相同方法反復(fù)調(diào)整其他幾對紅外收發(fā)管的位置和角度。使U1插座的3、6、7、8、9各腳的電壓符合要求。(4)將固化好程序的AT89C2051插入電路中的U1插座上,接上電源即可工作。