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