基於單片機的紅外線報警器設計
一. 硬體電路
電路原理圖如圖1所示.可將該電路分為以下三個部分.
1 、電源電路
220V交流市電經變壓器T降壓 .橋式整流器D1整流. 電解電容C7濾波.三端穩壓器78L05穩壓,最後得到整機要求的+5V穩定直流電源.
2 、 單片機系統.
U1為AT89C2051單片機.C1.R0,R1和復位按鈕RESET組成手動電平復位和上電自動復位電路; C2.C3以及晶振T1組成時鐘電路iC4.C5為+5V電源濾波電容 .U2為CM0S6反相器CC4069 , 起驅動作用 .VD1 ~ VD6為紅外發射管, 其負極端接與P1口.P1口設置為輸出狀態 ,當P1口為 .0時 ,VD1~VD6發紅外光.VD7~VD12為紅外接收管.當接收到紅外光時導通,+5V電源通過VD7一VD12加到反相器 CC4069的輸入端,經反相為低電平,這時P3_0~P3.5為低電平.發管和接收管分別安裝在門和窗口的適當位置.當有人闖入時遮擋了紅外線,接收管截止.反相器輸入端為低電平 .這時U1的P3.0一P3.5為高電平.當在一定時間內檢測到位於不位置的光束被遮擋時.則由P3.7口輸出報警信號(高低電平間隔1S的脈衝信號).驅動聲光報警電路.進聲光報警.直至按復位按鈕RESET或電源開關S1.由於紅外收發管之間沒有遮擋時為正常.有遮擋時為異常,則當 P 1口輸出 o 0 H時. P 3口的正常狀態數據為00H.
3、聲光報警電路 .
555定時器U4.揚聲器BY, 普通紅色發光二極體VD13等組成聲光報警電路 . 其中555定時器接成了一個低頻多諧振蕩器 .其控制電壓輸入端5腳與單片機 AT89C2051的P3.7腳相連,受P3.7腳輸出的高低電平間隔1S的脈衝信號控制.當P3.7為高電平時控制電壓Uco較高,閾值電壓UT+(=Uco)和UT-(=1/2Uco) 也較高 ;當P3.7為低電平時UT+和UT-也較低.當UT+較高時,電容C9充、放電的電壓幅度較大.因而振蕩頻率較低.反之,當UT+較低時,電容C9充、放電過程中電壓變化幅度較小.充、放電過程完成得較快,故振蕩頻率較高.即當P3.7=1時.555輸出脈衝的振蕩頻率較低;當P3.7=0時.555輸出脈衝的振蕩頻率高. 該輸出脈衝經過隔直電容C8加到揚聲器上,揚聲器將交替發出高、上位機的通信.液晶顯示模塊使用了12864的並行模式 ,數據端DB0-DB7與單片機的P2.0-P2.7相連,PSB控制12864工作在並行模式,電路中未接液晶的背光.RST復位端直接懸空.
通信協議
開始發送數據時,A1_89S52發出SS下降沿信號然後等待ZLG500在SDA線上的響應,若在50ms內未檢測到此響應則退出本次傳輸(由SPI看門狗定時器實現) 將錯誤代碼返回給主程序由主程序進行錯誤處理.若ZLG500正確響應則AT89S52可將命令和數據發送出去,然後AT89S52等待ZLG500發回的狀態和響應數據.即等待SS線上的下降沿的產生, 此時的AT89S52用外部中斷響應. 若在500ms內未檢測到此信號則退出本次傳輸且向主程序報告錯誤代碼(由SPI看門狗定時器實現) .若正確檢測到SS信號則可接收狀態和數據.SS為數據發送使能,若一方有數據要發送給另一方,則該方控制SS線為低.並在發送結束後將該線置高. 接收數據方不得 控制該線.雙方必須遵守通信協議.不得同時控制該線.SDAT為數據線由數據發送端控制數接收端必須釋放該線,該線在一次傳輸開始時還同時作為數據接收端的響應信號.SPI線上信號波形圈見圖4 .
本系統主要由四個源程序實現分為三層. mface-3.asm為底層程序.定義最基本的函數且直接操作硬體zig500.C .12864.C為中層程序定義各種功能函數main .C為頂層程序直接調用底層和中層文件中的函數.其中zig500.C和m-face.asm由ZLG500模塊的生產廠家提高低不同的兩種叫聲.同時P3.7腳輸出的高低電平間隔1S的脈衝信號經電阻R8加到紅色發光二極體VD13上.VD13將閃爍發光.達到聲光同時報警的效果.
二.軟體設計
我們的目標是,當檢測到有人闖入時就由 P3713輸出高低電平間隔1S的脈衝信號去驅動聲光報警電路.產生聲光報警. 這可通過使P3.7口每隔1S取反一次實現.而1S時間可通過讓定時器T0(工作於定時方式1) 重複定時1OOms十次實現.用工作寄存器R1作循環計數器.初值為10(OAHo採用中斷方式編程.整個軟體由主程序和中斷服務程序兩部分構成.
1 、主程序.主要功能是對系統進行初始化和對系統進行監視看是否有人闖入.其程序流程圖如圖2所示.程序清單如下:
0RG O0O0H
AJMP MAIN ; 轉向主程序
ORG O00BH : 定時器 T O中斷八E l
LJMP BJ ; 轉向中斷服務程序
0RG O0 30H
MAI N: MOV SP , #50H ; 設置堆棧棧底
MOV R1.#OAH; 設置循環計數器初值
MOV P3, # OOH; 設置P3口為正常狀態
MOV P1.#OOH; 使VD1-VD6發紅外光
MOV TMOD. #01H; 設TO為定時方式 1
MOV TH0. # 3CH; 設置定時100ms初值
M0V TL O. # OBOH
SETB EA ; CPU開中斷
SETB ETO ; 定時器0允許中斷
JS: MOV A, P3 ; 監視是否有人闖入
CJNE A. #O OH. LP
由於設備生產廠家停產老機型,配件價高難購,導致我單位一臺老型號數控塑鋼門窗角縫清理機(簡稱清角機)閒置至今 .棄之可惜 ,留著無用.最近生產任務又比較緊.原定要購買一臺新的清角機.但本著為單位減少資金投入的目的. 決定對閒置清角機進行低投入改裝.
經過仔細查看、分析:原機由數控電路控制步進電機拖動清角機構運動.精確控制清角機構進給、升降量.可原機 控制電路部分已經損壞 ,還缺少一隻步進電機.但機械部分完好.因此決定捨去原機電路和步進電機等部分不用,只保留原機機械部分.改用一隻氣缸來拖動清角機構運動.機械定位來控制進給量.由多隻氣缸協作完成物件加工的工作過程.
機械部分改裝辦法確定了.但又怎樣去控制它們的運行呢?想到以前用P111-G可編程控制器改裝過其它生產設備 .使用P111-G可編程控制器控制線路簡潔、性價比高.編程簡單、方便、快捷.決定選用P111-G可編程控制器來控制機械部分運行.改裝方法構思好後.動手改裝.先加裝氣缸、電磁閥、行程開關、限位裝置等( 機械部分改 裝後結構簡圖如上圖) .再拆掉原機配電箱內所有電路並裝入P111-G可編程控制器. 按擬定的線路配線接好相關
電路.一切就緒後 .重點轉到對P111一G可編程控制器的編程上.下面介紹具體編程步驟:
AJ MP JS
LP . SETB TR0 ; 啟動T0定時
100ms
S J MP$ ;等待定時100ms
完成
2 、中斷服務程序.主要功能是判斷定時1S是否完成.從而決定是否對P3.7Iq取反.其程序流程圖如圖3所示.程序清單如下:
ORG 0060H
BJ : PUSH Acc ; 現場保護
PUSH PSW
MOV TH0 . #3CH ; 重設定時初值
MOV TL0.B0H
DJ NZ R1.FH
MOV R1 . } }OAH
CPL P3.7
FH: POP PSW
POP Acc
RETl
END
; 1S未到返回
; 重設計數器初值
; P3.7口取反
: 恢復現場
: 中斷返回
三.系統調試
1 、軟體調試.
先在 Keilc51 環境中 進行軟體調試. 再利用編程器將調試好 的程序固化到AT89C2051單片機中.
2 、硬體調試
(1)檢查線路應焊接無誤.(2) 電 源電路調試 .斷開負載.用萬用表測量78L05的3腳應有+5v電壓.(3) 先不裝入AT89C2051單片機.用短路線把U1插座的12腳接地.調整 VD1和VD7的安裝位置和角度 ,測量U1插座的2腳電壓 .當VD1和VD7之間無遮擋時2腳電壓為0伏,有遮擋時為+5伏.用相同方法反覆調整其他幾對紅外收發管的位置和角度. 使U1插座的3、6、7、8、9各腳的電壓符合要求.(4)將固化好程序的AT89C2051插入電路中的U1插座上.接上電源即可工作.