馮美艷 殷 鵬
(安陽(yáng)學(xué)院航空工程學(xué)院,河南 安陽(yáng)455000)
傳統(tǒng)門鎖在鑰匙丟失或忘記攜帶時(shí),只能從窗戶進(jìn)入或者采取破壞門鎖的辦法開(kāi)鎖。傳統(tǒng)門鎖在配置時(shí)需要找專業(yè)人士,比較麻煩而且不能保證所配鑰匙的準(zhǔn)確性。在出租房屋業(yè)務(wù)中,由于經(jīng)常換租客,傳統(tǒng)門鎖因?yàn)榭梢噪S意復(fù)制,安全系數(shù)低。針對(duì)這些問(wèn)題提出了一種基于單片機(jī)的IC 卡門禁系統(tǒng)[2]。IC卡門禁系統(tǒng)可以通過(guò)刷卡和輸入密碼兩種方式開(kāi)鎖也可以隨意更改密碼,可以有效解決以上問(wèn)題。
IC 卡門禁系統(tǒng)設(shè)計(jì)方案如圖1 系統(tǒng)設(shè)計(jì)方案圖所示。
圖1 系統(tǒng)設(shè)計(jì)方案圖
該系統(tǒng)由單片機(jī)核心模塊、RFID 讀卡模塊、LCD 顯示模塊、電源模塊、報(bào)警模塊、電子門鎖模塊和存儲(chǔ)模塊七部分組成[3]。
系統(tǒng)的工作模式有設(shè)置模式和正常模式兩種。系統(tǒng)上電后,按鍵模塊若有設(shè)置按鍵按下,則系統(tǒng)進(jìn)入設(shè)置模式。設(shè)置模式又分為更新密碼和注冊(cè)IC 卡兩種模式。設(shè)置模式完成以后,將信息存入存儲(chǔ)模塊[4]。系統(tǒng)上電后,若按鍵模塊設(shè)置按鍵沒(méi)有按下,則系統(tǒng)進(jìn)入正常模式。若有IC 卡靠近,RFID 讀卡模塊讀取IC 卡中的ID 并且通過(guò)串口發(fā)送至STC89C52 單片機(jī)模塊。STC89C52 單片機(jī)模塊接受IC 卡中的ID 并且與FLASH 中存儲(chǔ)的ID 進(jìn)行比對(duì),比對(duì)成功則開(kāi)鎖并提示門已打開(kāi),開(kāi)鎖指示燈亮,反之則不開(kāi)鎖并示警。若有按鍵按下密碼,則按鍵模塊通過(guò)串口將密碼發(fā)送到單片機(jī)模塊,單片機(jī)模塊接受到密碼信息并且與FLASH 中存儲(chǔ)的密碼進(jìn)行比對(duì),比對(duì)成功則開(kāi)鎖并提示開(kāi)鎖成功,開(kāi)鎖指示燈亮,反之則不開(kāi)鎖并示警[5]。
IC 卡門禁系統(tǒng)主要由KEIL 軟件設(shè)計(jì)。系統(tǒng)分為設(shè)置模式和正常模式兩種。程序啟動(dòng),單片機(jī)掃描設(shè)置按鍵是否按下,若按下則進(jìn)入設(shè)置模式,確定是注冊(cè)IC 卡信息還是更換密碼。并在注冊(cè)IC 卡信息或更換密碼后將新的IC 卡信息或密碼保存在FLASH。若為開(kāi)鎖程序則掃描是否有IC 卡靠近,當(dāng)有IC 卡靠近時(shí)讀取IC 中的ID 并且與FLASH 中存儲(chǔ)的ID 進(jìn)行比對(duì),比對(duì)成功則開(kāi)鎖,反之則不開(kāi)鎖并示警。當(dāng)沒(méi)有IC 卡靠近時(shí),掃描是否有密碼按下,若有則與FLASH 中存儲(chǔ)的密碼進(jìn)行比對(duì),比對(duì)成功則開(kāi)鎖,反之則不開(kāi)鎖并示警。IC 卡門禁系統(tǒng)主流程圖如圖2 所示。
圖2 IC 卡門禁系統(tǒng)主流程圖
采用定時(shí)器0,當(dāng)輸入密碼或刷卡正確時(shí),定時(shí)1s 之后門鎖自動(dòng)關(guān)閉。當(dāng)輸入密碼或刷卡不正確時(shí),定時(shí)50ms 蜂鳴器滴滴滴響,之后LCD 顯示器返回初始界面。
按鍵模塊由16 個(gè)按鍵組成。分別表示0~9、返回、確定、設(shè)置、上鍵和下鍵。通過(guò)P1 口與STC89C52 單片機(jī)模塊連接。當(dāng)有按鍵按下時(shí)分為按下0~9 按鍵、按下設(shè)置按鍵和按下其它按鍵。若按下0~9 任意按鍵,直接開(kāi)始輸入密碼,密碼正確,門打開(kāi),指示燈亮。
若按下設(shè)置按鍵,則系統(tǒng)提示輸入密碼,輸入正確密碼后進(jìn)入設(shè)置模式,按上下鍵選擇進(jìn)入注冊(cè)IC 卡模式,點(diǎn)擊確定,選擇進(jìn)入注冊(cè)還是刪除IC 卡ID。操作完成后點(diǎn)擊返回按鍵,返回初始界面。如果選擇進(jìn)入的是修改密碼模式,需要一次輸入一遍原密碼和兩遍新密碼。如果原密碼輸入錯(cuò)誤,則提示原密碼錯(cuò)誤。如果兩遍新密碼不一致,則提示新密碼輸入不一致。如果三個(gè)輸入都正確,則將新密碼存入FLASH。
若按下的是0~9 和設(shè)置按鍵之外的按鍵,系統(tǒng)不作反應(yīng)。
Button_ID=key_fs()//讀按鍵信息
if(Button_ID!=255)//有按鍵按下
{if(Button_ID<10)//如果系統(tǒng)為正常模式
{InputPass[PassNum]=Button_ID//將輸入的密碼存入對(duì)應(yīng)數(shù)組
}else //如果系統(tǒng)為設(shè)置模式
{switch(ShowMode)}//選擇是更新密碼還是IC 卡ID
本設(shè)計(jì)的LCD 程序主要用于顯示當(dāng)前門禁的狀態(tài)和提示用戶下一步要進(jìn)行的操作。當(dāng)系統(tǒng)上電,LCD 顯示歡迎使用,請(qǐng)刷卡或輸入密碼。在正常模式時(shí),當(dāng)系統(tǒng)打開(kāi)電子鎖時(shí)顯示門已打開(kāi)。當(dāng)IC 卡的ID 錯(cuò)誤時(shí)顯示信息錯(cuò)誤,當(dāng)輸入密碼錯(cuò)誤時(shí)顯示密碼錯(cuò)誤。在設(shè)置模式時(shí),LCD 顯示注冊(cè)ID、更新密碼。選擇注冊(cè)ID 點(diǎn)擊確定按鍵,顯示注冊(cè)ID、刪除ID,選擇注冊(cè)ID,顯示請(qǐng)刷卡,注冊(cè)成功之后顯示注冊(cè)成功和返回。刪除成功之后顯示刪除成功和返回。點(diǎn)擊更新密碼,顯示輸入原密碼,輸入新密碼,確定新密碼。三者都正確之后顯示密碼修改成功。
當(dāng)有IC 卡靠近RFID 讀卡模塊時(shí),STC89C52 控制模塊進(jìn)入串口中斷接收IC 卡ID,接收完成后,將信息存入FLASH。
SCON= 0x50; //串口方式1
主要有讀和寫兩個(gè)操作,讀是指在當(dāng)有IC 卡靠近或者有人輸入密碼時(shí),從FLASH 中讀出保存的IC 卡的ID 與靠近的IC卡進(jìn)行比對(duì),或者讀出保存的密碼與輸入的密碼進(jìn)行比對(duì);寫主要是指注冊(cè)完新IC 卡ID、刪除系統(tǒng)中原有的IC 卡ID 和更新門禁密碼之后將新信息保存至FLASH。
當(dāng)系統(tǒng)在控制模式時(shí),可以選擇注冊(cè)IC 卡或者刪除IC 卡信息。若為注冊(cè)IC 卡,第一步校驗(yàn)IC 卡類型,若卡類型符合標(biāo)準(zhǔn),則status=MI_OK,反之返回。第二步校驗(yàn)IC 卡序列號(hào),若序列號(hào)不沖突,將IC 卡序列號(hào)存入序列號(hào)數(shù)組,反之返回。第三步車校驗(yàn)IC 卡密碼B,若密碼B 正確。第四步讀取IC 卡中的ID寫入數(shù)組,存入FLASH,同時(shí)將66 寫入IC 卡數(shù)組shu[0]。
若為刪除IC 卡時(shí),第一二三步一樣,第四步將00 寫入IC數(shù)組shu[0]。
當(dāng)有IC 卡靠近時(shí),第一二三步和注冊(cè)IC 卡ID 程序一樣,第四步讀取IC 卡ID,若和FLASH 中存儲(chǔ)的一樣,則開(kāi)鎖。反之不開(kāi)鎖,并示警。
系統(tǒng)上電,指示燈顯示正常,LCD 顯示器顯示歡迎使用,請(qǐng)刷卡或輸入密碼。輸入密碼正確密碼后顯示門已打開(kāi),門鎖指示燈亮,反之顯示密碼錯(cuò)誤,門鎖指示燈不亮。刷卡正確時(shí)如圖3 開(kāi)鎖顯示圖所示顯示門已打開(kāi),門鎖指示燈亮,反之如圖4 信息錯(cuò)誤顯示圖所示顯示信息錯(cuò)誤,門鎖指示燈不亮。注冊(cè)IC 卡完成后顯示注冊(cè)完成,刪除IC 卡信息后顯示刪除成功,更換密碼后顯示修改完成。
圖3 開(kāi)鎖顯示圖
圖4 信息錯(cuò)誤顯示圖
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于單片機(jī)的IC 卡門禁系統(tǒng)。包括RFID 技術(shù)的IC 卡讀卡模塊、按鍵輸入密碼模塊、報(bào)警模塊和LCD 顯示模塊。通過(guò)對(duì)系統(tǒng)的設(shè)計(jì)可以實(shí)現(xiàn)直接刷卡打開(kāi)門禁系統(tǒng)或者輸入密碼打開(kāi)門禁系統(tǒng),從而方便人們的生活。