喻麗麗,朱 艷,吳 婷
(金山職業技術學院,江蘇 鎮江 212200)
隨著人們家庭安全意識的不斷提升以及防盜報警器智能化水平的不斷提升,防盜報警器的市場需求越來越大,防盜報警器能有效保證家庭生命財產安全。此外,隨著單片機技術、通信技術與人工智能技術的不斷發展,使得防盜報警系統越來越智能化,因此,設計基于單片機的防盜報警系統具有重要的實際意義,也能為建設平安社會發揮重要力量。
文章主要從以下幾個方面研究基于單片機的防盜報警系統:首先進行整體方案設計,設計出滿足使用要求,且具有特點的智能防盜報警系統;其次,進行硬件系統設計,包括進行單片機、紅外傳感器、顯示模塊、時鐘芯片、外擴存儲器及用戶端探測器的選型等,最后,進行軟件設計,檢驗所設計的基于單片機的防盜報警系統的功能是否滿足使用要求,檢驗所設計的系統的合理性。
文章所設計的基于單片機的防盜系統結構如圖1所示:由AT89C51單片機、存儲芯片AT24C02、時鐘芯片DS1302、鍵盤、LCD顯示屏、檢測信號輸入、聲光報警電路等組成。用AT89C51單片機進行控制,AT89C51與存儲芯片交換信息,從DS1302獲取校準時間,通過鍵盤輸入信息,LCD顯示屏顯示信息,當檢測到有異常信號時向單片機進行中斷申請,聲光報警裝置發出報警信號。本系統采用5 V電壓,時鐘晶振頻率為12 MHz,鍵盤的輸入行接P1.0、P1.3,輸入列接P1.4、P1.7,時鐘引腳和復位引腳分別接P1.6、 P1.7, AT24C02用I2C雙總線傳輸,時鐘信號接P2.2,數據線接P2.3,報警系統和I/O引腳分別接P3.4、P3.6,報警指示燈接P3.7,蜂鳴器采用三極管驅動,并接續流二極管防止三極管擊穿, P0為數據的輸入、輸出端口,LCD顯示屏的數據輸入、輸出和檢測信號(16路)的輸入都通過P0,顯示屏的控制線分別接P2口的高三位;利用74LS373鎖存器將16路監測信號輸入給AT89C51。

圖1 系統總體結構
AT89C51是含4K字節FLASH存儲器,是低電壓、高性能CMOS 8位微處理器。AT89C51有32個I/O口,2個16位定時器/計數器,5個中斷源,可編程串行通道,具有掉電模式和低功耗空閑模式。芯片中組合了多功能8位CPU和閃爍存儲器,文章設計所用AT89C51單片機的引腳如圖2所示。

圖2 AT89C51引腳分布
文章選用的熱釋電紅外傳感器型號為RE200B,如圖3所示為熱釋電紅外傳感器RE200B內部電路,D接工作電壓,工作電壓2.2~15 V,S為輸出電壓,在0.4~1.1 V,GND接地,工作波長7.5~14 um,R=47 kΩ,輸出信號大于2.0 V,水平角120°,檢測距離6~10 m,工作溫度-10~40 ℃。

圖3 熱釋電紅外傳感器RE200B內部電路圖
選取ND-1型傳感器作為振動位移傳感器,能檢測振動和位移信號。當檢測到人體運動信號時,輸出高電平并通過電路進行延時,反之輸出低電平。
LED數碼管有靜態和動態兩種,由發光二極管組成,驅動功耗小、電壓低、信息容量大,在光很亮的情況下也可用,但工作溫度范圍較窄。靜態顯示法適用于顯示器位數較少的場合,靜態顯示時,顯示一個字符,相應的發光二極管被導通或截止。動態顯示是顯示器各個位一位一位點亮,顯示器每一位每隔一段時間亮一次,須保證掃描速度夠快,字符才不閃爍。設計采用1602LCD液晶顯示,其顯示容量為16×2Byte,芯片工作電壓5±0.5 V,工作電流2 mA,字符尺寸2.95 mm×4.35 mm,顯示屏能夠同時顯示2行信息,每行16個字符。
DS1302是一種高性能、低功耗,芯片內自帶RAM,工作可接2.0~5.5 V電壓。可以對year、month、day、week、hour、minute等進行計時,附帶閏年補償功能。采用三總線方式與CPU進行同步通信,并可采用突發方式一次傳送多個字節的RAM數據或時鐘信號。
AT24C02內含256×8位字節,一個16 Byte頁寫緩沖器,通過I2C總線接口進行數據信號和地址信號的傳輸,通過地址選擇端A0、A1和A2實現最多8個AT24C02器件連接至總線。
文章設計的檢測信號電路圖,信號檢測采用復合式傳感器,其由熱釋電紅外探測器和動位移傳感器通過或非門相連組成,任何一個傳感器接收到報警信號,單片機都會響應,增加安全性,降低漏報率。
16路檢測信號采用74LS20、74LS25,每4路信號先與后非,再對4路與非門輸出取或非,正常狀態下,檢測信號是高電平,反之,當檢測出異常信號時則輸出低電平,同時由高電平到低電平所產生的下降沿進行中斷申請,同時鎖存器74LS373其 LE 端變為0,鎖存Dn端信號,P2.0、P2.1為外部中斷程序掃描端,鎖存器74LS373 OC端為0時,鎖存信號由Qn端輸出,檢測信號(16路)輸入電路。
為了使時鐘功能更加精準,且節省單片機I/O口資源,選用時鐘芯片DS1302、DS1302,體積小、線路簡單、易于操作。DS1302與單片機之間的通信是同步串行,DS1302用于記錄數據與數據出現的時間。
文章選用蜂鳴器與單片機的P1.7口相連,按下開關2時,P1.7為高電平時,蜂鳴器報警,反之蜂鳴器停止工作。
當檢測到熱電型紅外傳感器無信號時,P1.3輸出高電平,LED指示燈滅,反之,當檢測到危險信號時,P1.3輸出低電平,LED指示燈亮。
SC2262是一個8位地址碼和按鍵碼組合的無線射頻發射模塊,1、2引腳是工作電壓,K0、K3是按鍵輸入,VT腳為發射指示輸出端,SC2262的地址和SC2272的地址需設置成一樣,否則無法通信。SC2272是一個帶射頻接收和譯碼電路的無線射頻接收模塊。
選用1602顯示模塊作為LCD顯示,使用前先對1062模塊進行初始化,即上電15 ms后對1602顯示模式寫指令38H,再對1602輸入清屏指令,如圖4。

圖4 顯示流程
系統在運行前都要進行初始化操作,才能保證系統能正常、有效運行。系統初始化包括寄存器初始化、LCD初始化、AT24C02檢測以及報警時長設置。如圖5為系統初始化流程,首先設置堆棧SP為60H,設置IE為 07H,中斷優先級IP為01H,再初始化LCD,設置報警時長,設置好后系統檢查I2C的數據通信,若數據通信失敗或出錯,顯示器顯示“ E”字符;2EH、2FH分別寫FFH,讀取的監測信號異常位為0,將檢測信號與2EH、2FH分別做與運算,存在異常的位為0,通過檢測位顯示當前報警發生異常的通道,最后從DS1302獲取當前時間,開中斷,啟動定時,初始化結束。

圖5 系統初始化流程
設計報警系統時,當16監測信號發生異常時,電平處于低位,向單片機申請中斷,低電平通知74LS373鎖存異常信號;進入中斷,從74LS373讀信號,記錄異常時間,通知外部中斷1報警,報警指示燈亮,蜂鳴器開,LCD顯示報警時間和通道。報警時長到或中途取消,退出報警。
記錄查詢包括單通道和總體狀況查詢,總體查詢檢查異常通道,顯示該通道發生異常的次數,查詢出現異常的時間與記錄。程序將通道記錄數地址、光標顯示位置和通道號分別讀入R0、R2、R3。當查詢某路詳細記錄時,先查該通道記錄是否存在,即R0不為0,再將R0和R3參數傳遞給詳細查詢子程序。當某通道存在異常記錄時,詳細查詢通道的異常記錄,并通過總體查詢獲得記錄數地址和通道號,從AT24C02獲取數據。
中斷程序完成對時間的計數,每完成一次定時中斷R7加1,當R7=20時,則對R7進行清零。當時間為24時時,中斷從DS1302時鐘芯片校準時間。
當前通道若無記錄,則當前記錄為第1條,若有記錄,設置當前記錄為第2條。中斷程序完成對異常信號的判斷與記錄,拉低P3.1,并發出提示信號。
刪除記錄程序用于刪除當前通道查詢的記錄,清空內存數據時,要對存儲芯片進行寫操作,若刪除的是兩條中最早的記錄,后一條記錄替代前一條。需判斷記錄數和當前刪除記錄的位置,然后再執行刪除動作。