筆者在業(yè)余時(shí)間設(shè)計(jì)制作了一臺(tái)紅外線防盜報(bào)警器,。具有以下特點(diǎn):用當(dāng)今最流行的AT89C2051單片機(jī)控制,,體積小,成本低,;用紅外線收發(fā)管進(jìn)行檢測(cè),,安裝隱蔽,,不易被發(fā)現(xiàn);探測(cè)信號(hào)采用脈沖信號(hào),,節(jié)能且抗干擾,;當(dāng)有人試圖闖入室內(nèi)時(shí),能自動(dòng)進(jìn)行聲光報(bào)警?,F(xiàn)將該報(bào)警器原理介紹如下,,供廣大單片機(jī)愛(ài)好者參考,。
一、硬件電路
電路原理圖如圖1所示,??蓪⒃撾娐贩譃橐韵氯齻€(gè)部分。
?
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組成手動(dòng)電平復(fù)位和上電自動(dòng)復(fù)位電路,;C2,,C3以及晶振JT1組成時(shí)鐘電路;C4,,C5為+5V電源濾波電容,。U2為CMOS6反相器CC4069,起驅(qū)動(dòng)作用,。VD1~VD6為紅外發(fā)射管,,其負(fù)極端接與P1口,,P1口設(shè)置為輸出狀態(tài),,當(dāng)P1口為“0”時(shí),VD1~VD6發(fā)紅外光,。VD7~VD12為紅外接收管,,當(dāng)接收到紅外光時(shí)導(dǎo)通,+5V電源通過(guò)VD7~VD12加到反相器CC4069的輸入端,,經(jīng)反相為低電平,,這時(shí)P3.0~P3.5為低電平。發(fā)射管和接收管分別安裝在門和窗口的適當(dāng)位置,,當(dāng)有人闖入時(shí)遮擋了紅外線,,接收管截止,反相器輸入端為低電平,,這時(shí)U1的P3.0~P3.5為高電平,。當(dāng)在一定時(shí)間內(nèi)檢測(cè)到位于不同位置的光束被遮擋時(shí),,則由P3.7口輸出報(bào)警信號(hào)(高低電平間隔1S的脈沖信號(hào))。驅(qū)動(dòng)聲光報(bào)警電路,,進(jìn)行聲光報(bào)警,,直至按復(fù)位按鈕RESET或電源開(kāi)關(guān)S1。由于紅外收發(fā)管之間沒(méi)有遮擋時(shí)為正常,,有遮擋時(shí)為異常,,則當(dāng)P1口輸出00H時(shí),P3口的正常狀態(tài)數(shù)據(jù)為00H,。
3,、聲光報(bào)警電路。555定時(shí)器U4,,揚(yáng)聲器BY,,普通紅色發(fā)光二極管VD13等組成聲光報(bào)警電路。其中555定時(shí)器接成了一個(gè)低頻多諧振蕩器,,其控制電壓輸入端5腳與單片機(jī)AT89C2051的P3.7腳相連,,受P3.7腳輸出的高低電平間隔1S的脈沖信號(hào)控制。當(dāng)P3.7為高電平時(shí)控制電壓Uco較高,,閾值電壓UT+(=Uco)和UT-(=1/2Uco)也較高,;當(dāng)P3.7為低電平時(shí)UT+和UT-也較低。當(dāng)UT+較高時(shí),,電容C9充,、放電的電壓幅度較大,因而振蕩頻率較低,。反之,,當(dāng)UT+較低時(shí),電容C9充,、放電過(guò)程中電壓變化幅度較小,,充、放電過(guò)程完成得較快,,故振蕩頻率較高,。即當(dāng)P3.7=1時(shí),555輸出脈沖的振蕩頻率較低,;當(dāng)P3.7=0時(shí),,555輸出脈沖的振蕩頻率高。該輸出脈沖經(jīng)過(guò)隔直電容C8加到揚(yáng)聲器上,,揚(yáng)聲器將交替發(fā)出高,、低不同的兩種叫聲。同時(shí),,P3.7腳輸出的高低電平間隔1S的脈沖信號(hào)經(jīng)電阻R8加到紅色發(fā)光二極管VD13上,,VD13將閃爍發(fā)光,。達(dá)到聲光同時(shí)報(bào)警的效果。
二,、軟件設(shè)計(jì)
我們的目標(biāo)是,,當(dāng)檢測(cè)到有人闖入時(shí)就由P3.7口輸出高低電平間隔1S的脈沖信號(hào)去驅(qū)動(dòng)聲光報(bào)警電路,產(chǎn)生聲光報(bào)警,。這可通過(guò)使P3.7口每隔1S取反一次實(shí)現(xiàn),。而1S時(shí)間可通過(guò)讓定時(shí)器T0(工作于定時(shí)方式1)重復(fù)定時(shí)100ms十次實(shí)現(xiàn)。用工作寄存器R1作循環(huán)計(jì)數(shù)器,,初值為10(0AH),。采用中斷方式編程,整個(gè)軟件由主程序和中斷服務(wù)程序兩部分構(gòu)成,。
YES
|
NO
|
NO
|
YES
|
開(kāi)始
|
系統(tǒng)初始化
|
有人闖入,?
|
啟動(dòng)定時(shí)
|
時(shí)間到嗎?
|
轉(zhuǎn)報(bào)警程序
|
圖2 主程序流程圖
|
等待時(shí)間到
|
?? 

?? 程序清單如下:
????? ORG? 0000H
????? AJMP? MAIN???? ,;轉(zhuǎn)向主程序???????
????? ORG? 000BH???? ,;定時(shí)器T0中斷入口
????? LJMP? BJ?????? ;轉(zhuǎn)向中斷服務(wù)程序
??? ??ORG? 0030H
MAIN:MOV? SP,,#50H? ,;設(shè)置堆棧棧底
????? MOV? R1,#0AH? ,;設(shè)置循環(huán)計(jì)數(shù)器初值
????? MOV? P3,,#00H? ;設(shè)置P3口為正常狀態(tài)
????? MOV? P1,,#00H ?,;使VD1~VD6發(fā)紅外光
MOV? TMOD,,#01H,;設(shè)T0為定時(shí)方式1
????? MOV? TH0,#3CH ,;設(shè)置定時(shí)100ms初值
????? MOV? TL0,,#0B0H
????? SETB? EA??????? ;CPU開(kāi)中斷
????? SETB? ET0??? ???,;定時(shí)器0允許中斷
? JS:MOV? A,,P3????? ,;監(jiān)視是否有人闖入
????? CJNE? A,#00H,,LP
????? AJMP? JS
? LP:SETB? TR0?????? ,;啟動(dòng)T0定時(shí)100ms
????? SJMP? $???????? ;等待定時(shí)100ms完成
1S到嗎,?
|
P3.7取反
|
中斷返回
|
保護(hù)現(xiàn)場(chǎng)
|
圖3? 中斷服務(wù)程序流程圖
|
重設(shè)定時(shí)初值
|
恢復(fù)現(xiàn)場(chǎng)
|
YES
|
NO
|
??? 

?? 程序清單如下:
????? ORG? 0060H
BJ:PUSH? Acc?????? ,;現(xiàn)場(chǎng)保護(hù)
??? ??PUSH? PSW
????? MOV? TH0,,#3CH? ;重設(shè)定時(shí)初值
????? MOV? TL0,,#0B0H
????? DJNZ? R1,,F(xiàn)H??? ;1S未到返回
????? MOV? R1,,#0AH?? ,;重設(shè)計(jì)數(shù)器初值
????? CPL? P3.7?????? ;P3.7口取反
? FH:POP? PSW??????? ,;恢復(fù)現(xiàn)場(chǎng)
????? 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)焊接無(wú)誤。(2)電源電路調(diào)試,。斷開(kāi)負(fù)載,,用萬(wàn)用表測(cè)量78L05的3腳應(yīng)有+5V電壓。(3)先不裝入AT89C2051單片機(jī),,用短路線把U1插座的12腳接地,,調(diào)整VD1和VD7的安裝位置和角度,測(cè)量U1插座的2腳電壓,。當(dāng)VD1和VD7之間無(wú)遮擋時(shí)2腳電壓為0伏,,有遮擋時(shí)為+5伏。用相同方法反復(fù)調(diào)整其他幾對(duì)紅外收發(fā)管的位置和角度,。使U1插座的3,、6,、7、8,、9各腳的電壓符合要求,。(4)將固化好程序的AT89C2051插入電路中的U1插座上,接上電源即可工作,。