唐凱
【摘要】隨著現(xiàn)代科技的發(fā)展,門禁控制系統(tǒng)在安全技術(shù)防范領(lǐng)域扮演著越來越重要的角色。其軟件系統(tǒng)的開發(fā)和設(shè)計起著重要的作用。
1、前言
隨著現(xiàn)代科技的發(fā)展,門禁控制系統(tǒng)在安全技術(shù)防范領(lǐng)域扮演著越來越重要的角色,這是建立在先進(jìn)的計算機(jī)技術(shù),通信技術(shù)各非接觸的射頻識別技術(shù)之上,通過持有非接觸式IC卡來對人的進(jìn)出實(shí)施放行,拒絕和記錄等操作的智能化控制系統(tǒng)。非接觸式IC卡的核心技術(shù)為射頻識別,其環(huán)境適應(yīng)性強(qiáng),可全天候,無接觸地完成自動識別功能。
本系統(tǒng)以89C51系列單片機(jī)STC89C52為控制核心,利用非接觸式射頻卡模塊讀取用戶手中的IC卡信息,識別成功后與系統(tǒng)存儲的IC卡庫數(shù)據(jù)進(jìn)行比對校驗(yàn),如果IC卡數(shù)據(jù)庫中有IC卡則證明IC卡合法,單片機(jī)通過控制繼電器控制電子鎖門禁開啟和關(guān)閉。同時采用鍵盤作為IC卡錄入和刪除,LCD1602液晶作為人機(jī)交互顯示,讓系統(tǒng)具備更大的實(shí)用價值。
2、系統(tǒng)總程序設(shè)計
系統(tǒng)上電后首先進(jìn)行初始化,完成液晶、鍵盤等初始化任務(wù)。然后進(jìn)入死循環(huán),單片機(jī)控制IC卡模塊時時掃描判斷是否有IC靠近,當(dāng)靠近時,啟動IC卡讀取程序,識別IC卡卡片信息后,與AT24C02芯片內(nèi)存儲的IC卡數(shù)據(jù)庫信息進(jìn)行比對,如果校驗(yàn)成功則控制門禁開,反之則不開門禁。整個過程LCD1602液晶顯示操作過程及數(shù)據(jù)信息。
3、IC卡讀寫子程序設(shè)計
3.1 Mifare射頻卡技術(shù)參數(shù)
(1)容量為8K位(bits)1K字節(jié)(bytes)EEPROM
(2)分為16個扇區(qū),每個扇區(qū)為4塊,每塊16個字節(jié),以塊為存取單位
(3)每個扇區(qū)有獨(dú)立的一組密碼及訪問控制
(4)每張卡有唯一序列號,為32位
(5)具有防沖突機(jī)制,支持多卡操作
(6)無電源,自帶天線,內(nèi)含加密控制邏輯和通訊邏輯電路
(7)數(shù)據(jù)保存期為10年,可改寫10萬次,讀無限次
(8)工作溫度:-20℃~50℃(濕度為90%)
(9)工作頻率:13.56MHZ
(10)通信速率:106 KBPS
(11)讀寫距離:10 cm以內(nèi)(與讀寫器有關(guān))
3.2 IC卡讀寫卡的過程一般包含如下幾個步驟:
(1)復(fù)位應(yīng)答(Answer to request)
射頻卡的通訊協(xié)議和通訊波特率是定義好的,當(dāng)有卡片進(jìn)入讀寫器的操作范圍時,讀寫器以特定的協(xié)議與它通訊,從而確定該卡是否為M1射頻卡,即驗(yàn)證卡片的卡型。
(2)防沖突機(jī)制(Anticollision Loop)
當(dāng)有多張卡進(jìn)入讀寫器操作范圍時,防沖突機(jī)制會從其中選擇一張進(jìn)行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。
(3)選擇卡片(Select Tag)
選擇被選中的卡的序列號,并同時返回卡的容量代碼。
(4)三次互相確認(rèn)(3 Pass Authentication)
選定要處理的卡片之后,讀寫器就確定要訪問的扇區(qū)號,并對該扇區(qū)密碼進(jìn)行密碼校驗(yàn),在三次相互認(rèn)證之后就可以通過加密流進(jìn)行通訊。(在選擇另一扇區(qū)時,則必須進(jìn)行另一扇區(qū)密碼校驗(yàn)。)
IC卡讀寫流程圖如圖所示
3.3 IC卡讀寫操作流程圖
4.按鍵程序的設(shè)計
按鍵作為人機(jī)交互的方式,在該設(shè)計中起著至關(guān)重要的作用。實(shí)現(xiàn)IC卡的錄入與刪除。當(dāng)讀卡模塊檢測到該IC卡時,如果該IC卡沒有被錄入,當(dāng)有鍵按下時,則該卡被記錄,擁有進(jìn)出該門禁的權(quán)限;如果該IC卡被錄入了,當(dāng)有鍵按下時,則該卡被刪除,被取消進(jìn)出權(quán)限。
圖4.3 鍵盤子程序流程圖
本系統(tǒng)用到了5個按鍵,它們的功能分別是:調(diào)節(jié)時間的時鐘加、時鐘減、分鐘加、分鐘減和添加/刪除用用戶卡。它們采用的是獨(dú)立按鍵的連接方式,一端連接地,一端連在單片機(jī)的P1.0到P1.4口上。它們的程序?qū)崿F(xiàn)是:首先給P1.0到P1.4口高電平,然后掃描這些I/O口上是否有電平變化,當(dāng)它們有變化是說明有鍵被按下,最后根據(jù)是哪個I/O口的電平變化了判斷是哪個鍵被按下。它的程序流程圖如圖4.3所示
5. LCD1602液晶顯示子程序
1602液晶是字符型液晶,它的內(nèi)部自帶字符庫,它可以寫兩行的字符,同時每行可以顯示16個字符。在這里要顯示的是實(shí)時時間,IC的編號和權(quán)限以及一些提示信息。
LCD1602的操作步驟:初始化;寫命令(RS=L)設(shè)置顯示坐標(biāo);寫數(shù)據(jù)(RS=H)。根據(jù)其操作步驟設(shè)計LCD1602液晶顯示程序流程圖如圖4.4。
從此流程圖我們得出:LCD液晶顯示屏在寫顯示程序的時候,我們要先寫命令,再設(shè)定字符顯示和漢字的位置,最后寫數(shù)據(jù),在每寫一次命令或數(shù)據(jù)都需要判斷液晶是否忙。打開液晶顯示屏進(jìn)入初始化狀態(tài),開始寫命令,首先判斷LCD是否忙,如果是P0.7=0,那么進(jìn)入下一步寫命令,如果不是P0.7=0,返回LCD是否忙。
6 電子鎖門禁開關(guān)子程序設(shè)計
本系統(tǒng)的電子鎖門禁開關(guān),單片機(jī)只需要輸出高低電平即可。當(dāng)輸出高電平時門禁關(guān)、低電平門禁開。程序流程如圖4.5所示。
7 報警子程序設(shè)計
本系統(tǒng)的報警提示是通過蜂鳴器和LED來實(shí)現(xiàn)的,系統(tǒng)中用的是無源蜂鳴器。無涯蜂鳴器要給脈沖信號才能實(shí)現(xiàn)鳴叫,在程序的設(shè)計中,通過定時器產(chǎn)生脈沖信號來控制蜂鳴器報警。根據(jù)報警電路原理,當(dāng)讀卡模塊檢測到有非法卡進(jìn)入,單片機(jī)輸出一個報警信號,開啟定時器產(chǎn)生脈沖信號給蜂鳴器報警。
報警子程序的流程圖如圖4.6所示。
8小結(jié)
在進(jìn)行程序設(shè)計的時候,各個模塊的子程序是比較好書寫的,但是各個模塊之間的數(shù)據(jù)傳輸,什么時候該模塊工作,調(diào)用該模塊的函數(shù),需要對系統(tǒng)有一個總的了解和把握,這是軟件設(shè)計中的最大的一個問題。