摘要:本文主要介紹了基于AT89C51RC單片機的紅外遙控密碼鎖的硬件及程序實現流程的具體設計。論文中給出了紅外發送器與紅外接收器的設計電路以及電子密碼鎖的典型設計電路部分和具體應用方法,并且通過對紅外線信號的發射和接收的詳細研究,設計出了一種對遙控信號進行準確譯碼方法和電路。
1 引言
根據用戶的要求和需要,主要為了解決當前市場上無遙控密碼鎖的問題,以提高門禁系統的可靠性和安全性,適應市場需要而設計的該紅外紅外遙控密碼鎖系統。該系統具有普通電子密碼鎖功能的同時,還增加了遙控功能。該鎖采用6位數作為密碼,總密碼組有106組,完全滿足用戶對密碼安全性高的要求。該系統具有較強的實際應用價值,所涉及的技術包括:紅外載波數據傳輸技術、單片機控制技術、紅外遙控系統編碼及譯碼技術、電路設計與演示板制作技術等。
2 系統硬件設計與實現(單元電路設計)
2.1 硬件結構圖:
系統以單片機AT89C51RC為核心。系統結構框圖如圖1所示。本系統的功能設計目標應該包括以下幾個方面:紅外發射功能模塊,紅外線接收轉換模塊、單片機模塊、蜂鳴器報警功能模塊、LED數碼管顯示模塊、按鍵功能模塊,開鎖功能模塊等。下面詳細介紹一下各單元的硬件電路和實現的功能。
圖1 紅外遙控密碼鎖硬件結構圖
2.1.1 電源部分設計
本系統的電源部分使用LM7805芯片進行穩壓后提供單片機5V的電壓。其電源部分電路的設計如圖2所示。
圖2紅外遙控密碼電源部分的電路原理圖
該電源部分電路,使用四個1N4004二極管構成整流橋,可以輸入直流或是交流9V電源,然后再通過7805穩定到5V供單片機工作。固定式三端穩壓電源7805是由輸出腳Vo,輸入腳Vi和接地腳GND組成,它的穩壓值為+5V,它屬于LM78XX系列的穩壓器,輸入端接電容可以進一步的濾波,輸出端也要接電容可以改善負載的瞬間影響,電路的穩定性也比較好。
2.1.2 紅外接收頭部分和LED顯示部分設計
紅外信號接收部分是使用KS38BL紅外接收頭實現的,其電路如圖3所示。 圖3是紅外線遙控器信號接收頭的簡易電路,它可接收載波頻率從33~57KHz的遙控器信號。100Ω電阻起到限流的作用,470uF電容濾波減少干擾。以邏輯筆接觸紅外線接收模塊的信號輸出端(OUT),便可以偵測當按下紅外線遙控器某一按鍵時,紅外線數字信號的發射。若有發射紅外線數字信號則經過紅外線接收模塊取出數字信號數據,邏輯筆脈沖LED便會閃動。這樣可以檢測到當前有沒有紅外信號發射最簡單的方法。
圖3紅外線接受部分
如圖4所示,系統的顯示是使用MAX7219實現的8位穩定靜態顯示,MAX7219是串行共陰極數碼管動態掃描顯示驅動芯片,僅使用3線串行接口傳送數據,可直接與單片機接口,用戶還可以方便地修改其內部參數以實現多位LED顯示,因此可以方便地使用單片機的串口送出顯示數據,并且其占用的時間少,方便編程及對信號的檢測。
圖4 利用MAX7219設計顯示部分
2.1.5 密碼存儲部分的電路設計
為了保存用戶設置的密碼,該系統使用AT24C04用來保存用戶設置的密碼,單片機AT89C51RC的P3.6接AT24C04的SCLK口作為它的串行移位時鐘,AT89C51RC的P3.7接AT24C04的SDA口作為它的串行數據或地址輸入輸出。該電路要注意的是SCLK、SDA必須加上一上接電阻,阻值為10K。用戶設置的密碼存放在AT24C04中,當需要更改或讀取用戶密碼時,只需對AT24C04里的數據更改或讀取。由于主芯片AT89C51RC沒有I2C總線,故本系統采用軟件程序模擬I2C總線時序來完成AT89S51來與AT24C04的連接。
2.1.6 報警電路設計
本系統設計時考慮到防盜而設計了報警電路,由蜂鳴器發聲進行報警,蜂鳴器接在CPU的引腳P0.4上,通過PNP型三極管做電流放大,因此可以通過單片機控制蜂鳴器的頻率及蜂鳴時間。當輸入錯誤的密碼進行開鎖時,系統會報警,由P0.4口輸出低電平使得PNP型三極管導通,蜂鳴器兩端加電,由蜂鳴器發出1秒的報警聲,當連續三次出現密碼錯誤時,則系統會長時間報警,此舉為了防止別人非法試探開鎖。
2.1.7 本機處理與遙控處理功能選擇電路設計
本系統設計了一個自鎖按鍵用來選擇本機處理或者遙控處理,在設置密碼時一定要處于本機處理狀態下,而開鎖則可以選擇遙控開鎖也可以選擇本機開鎖,當此按鍵按下時,紅燈亮表示選擇了本機處理,此時可以設置密碼,修改密碼,也可以本機開鎖,而不能遙控開鎖;當此開關開沒按下時,紅燈滅選擇遙控開鎖,此時可以通過遙控器輸入密碼進行開鎖,在遙控開鎖時不能進行本機開鎖以及設置密碼。
3 系統軟件設計
本系統有遙控處理和本機處理兩種工作狀態,兩種工作狀態相互獨立。通過自鎖開關K可以選擇當前工作狀態,當K閉合時選擇本機處理,斷開時選擇遙控處理。遙控處理部分只有開鎖功能,所以設計相對簡單,而本機處理部分可以實現開鎖、設置和修改密碼等所有的功能。
要完成本系統功能,首先要需要解決對紅外信號的譯碼問題,并在存儲式示波儀上觀察其具體波形,這就要要求了解其編碼規則。一般的編碼發射的一幀碼含有一個引導碼,用戶碼和鍵數據碼。引導碼由一個較長的載波波形和一段關斷時間構成,它作為隨后發射的碼的引導。用戶碼和鍵數據碼是由邏輯“0”和邏輯“1”組成的具有規定長度的字符串。
邏輯“0”和邏輯“1”是用高低電平的不同組合來表示的,那么可以用單片機的兩個定時計數器,對其高低電平進行計數,具體是這樣的:當單片機檢測到第一個低電平,則定時計數器T0立即開始計數,等到檢測到高電平出現,T0停止計數,T1又立即開始計數,在T1計數的同時,對T0的計數保存,再次出現低電平,T1停止計數,T0又開始計數,在T0計數的同時保存T1的計數,這樣就有了一組低和高的組合,通過判斷這個組合屬于哪個范圍即可譯碼“0”或者“1”,如此循環,直到譯出所有的位。這樣我們就可以根據譯碼所得的值命令單片機系統去完成相應的操作。要注意的是:只有鍵數據碼參與解碼,客戶碼是事先(由某公司或個人)規定好了的。
軟件部分的設計基于匯編語言,采用模塊化設計思想。以主程序為核心設置了很多功能模塊子程序,是大量的功能在子程序中實現的主流程,如圖5所示。
圖5 主流程圖
軟件工作流程包括6個部分:系統的初始化、AT24C04的讀寫操作、校對開鎖、出錯報警處理、對接收的信號進行譯碼。初始化主要包括: MAX7219芯片、中斷和定時器的初始化,以及系統參數等的初始化;對AT24C04的讀寫操作主要完成對原先密碼進行更改或相關設置的目的,然后將更新后的密碼保存到其中。校對開鎖是要對輸入的密碼和保存在存儲器中的密碼相比較,相同著通過,否則要進入出錯報警階段。出錯報警主要處理輸入的密碼和保存在AT24C04中密碼不同時要進行報警1秒鐘,如果報警后再次輸入密碼后再次報警達到3次,即3次都輸入的是錯誤密碼,那么系統將長時間報警并自鎖一個小時。譯碼部分主要完成在遙控處理狀態下對遙控器所發出的信號進行解碼,以得到相應到完成相應功能的碼值。
4 結論
本文的創新點在于本系統除了具有傳統的固定鍵盤式電子密碼鎖系統的功能外,也就是將操作鍵盤固定在鎖具的面板上,還增加了用遙控遠端控制的功能,因此給人們帶來很多便利,這一點也正是作者開發和設計此系統的根本原因。在本系統中,與以往的利用74LS164芯片驅動數碼管的顯示不同,在本系統中采用了更加強大的多功能串行LED顯示驅動器MAX7219來實現8位穩定的靜態顯示,只需要單片機的三個引腳即可,可以更加方便地使用單片機的串口送出顯示數據,并且其占用的時間少,方便編程及對信號的檢測,與此同時本系統所設計的電源部分和解碼譯碼部分經過反復的測試,證明了電路有極高的穩定性和譯碼準確性、高效性。
參考摘要
[1] 林伸茂篇,《8051單片機徹底研究基礎篇》,人民郵電出版社,2003.7,24-153。
[2] 趙廣林,《Protel 99SE電路設計與制作》,電子工業出版社,2005.8,15-342。
[3] 馮耀輝等,《PowerPCB 5.0入門與提高》,人民郵電出版社,2004.6,17-48。
[4] 康華光等,《電子技術基礎》,第2版,高等教育出版社,2004.7,10-156。
[5] 胡凱,張穎超。生化分析儀的設計及與PC機的通信[J]。微計算機信息.2006,22(4-1):208-209
[6] 馬鴻文。基于AT89C52單片機的自動存取柜的設計與實現[J]。微計算機信息,2006,22(1-2):101-103.