潘雪峰 李臘元,2 楊威棣
(武漢生物工程學(xué)院計(jì)算機(jī)與信息工程系1,湖北 武漢 430415;武漢理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院2,湖北 武漢 430063)
安全問(wèn)題是現(xiàn)代社會(huì)各界普遍關(guān)注的焦點(diǎn)之一。目前,常見(jiàn)的安全產(chǎn)品有指紋識(shí)別系統(tǒng)、IC卡辨識(shí)系統(tǒng)以及紅外防盜系統(tǒng)等。這些系統(tǒng)一般用于保密要求較高或供個(gè)人使用的保險(xiǎn)箱(或保險(xiǎn)柜)。雖然產(chǎn)品的安全性高,但由于其生產(chǎn)成本高,攜帶、安裝及使用不方便等缺點(diǎn),在一定程度上限制了這類產(chǎn)品的普及和推廣[1-2]。針對(duì)這些缺點(diǎn),基于單片機(jī)的電子密碼鎖使用8051單片機(jī)來(lái)實(shí)現(xiàn)多功能密碼模塊。這種電路設(shè)計(jì)具有加密更快速、可靠性更高、成本更低的特點(diǎn),特別適用于家庭、辦公室、學(xué)生宿舍及賓館等場(chǎng)所,具有很強(qiáng)的社會(huì)推廣價(jià)值。
傳統(tǒng)電子密碼鎖的基本功能要求有:①一定的密碼位數(shù)與取值范圍,密碼位數(shù)決定鎖體健壯程度;②用戶自行設(shè)定和修改密碼;③按鍵時(shí)有相應(yīng)提示,若輸入的開鎖密碼不正確,則需另行處理;④開鎖密碼錯(cuò)誤次數(shù)超過(guò)限制則報(bào)警;⑤鍵入正確開鎖密碼后開鎖;⑥硬件成本低廉,軟件簡(jiǎn)潔可靠,易于批量生產(chǎn)。
智能電子鎖的功能擴(kuò)展要求有:①功能多樣化;②計(jì)算機(jī)及網(wǎng)絡(luò)通信擴(kuò)展智能電子鎖的功能;③與智能現(xiàn)場(chǎng)儀器和中央監(jiān)控系統(tǒng)連接;④模塊高度集成,結(jié)構(gòu)簡(jiǎn)單可靠,操作方便;⑤人機(jī)界面智能化、友善化;⑥智能識(shí)別系統(tǒng),擴(kuò)展信號(hào)提取技術(shù)[3-5]。
本設(shè)計(jì)基于單片機(jī)實(shí)現(xiàn)傳統(tǒng)電子密碼鎖基本功能,并引入嵌入式技術(shù),減少了電子密碼鎖外圍元器件,硬件電路簡(jiǎn)單;以C語(yǔ)言進(jìn)行程序設(shè)計(jì),簡(jiǎn)化了源程序結(jié)構(gòu)及代碼,降低了ROM空間的占用。
中央處理單元采用Intel 8051,其具有4個(gè)8位準(zhǔn)雙向I/O口,只需1個(gè)晶振和2個(gè)電容即可工作。其結(jié)構(gòu)簡(jiǎn)單、運(yùn)行可靠[6-8]。Intel 8051內(nèi)置4 kB的程序ROM以及128 B的數(shù)據(jù)RAM[9-10]。為了降低成本,沒(méi)有外接存儲(chǔ)器,而是直接使用片內(nèi)的存儲(chǔ)空間。由于鍵盤輸入密碼采用的是中斷方式,因而采用74LS21四輸入與非門作為單片機(jī)的中斷源。
用戶通過(guò)矩陣式鍵盤中斷輸入密碼,中斷后系統(tǒng)調(diào)用密碼驗(yàn)證函數(shù)。如果密碼輸入正確,單片機(jī)輸出開鎖信號(hào)開鎖。同時(shí),實(shí)現(xiàn)鍵盤的中斷控制還要為鍵盤的擴(kuò)展功能留出CPU時(shí)間。當(dāng)用戶發(fā)現(xiàn)輸入錯(cuò)誤時(shí),可以清除重新輸入。此外,當(dāng)密碼輸入后,可通過(guò)驗(yàn)證程序進(jìn)行判斷。如果密碼錯(cuò)誤,則啟動(dòng)出錯(cuò)提示。當(dāng)密碼錯(cuò)誤次數(shù)達(dá)到一定次數(shù),系統(tǒng)將鎖定鍵盤,一段時(shí)間內(nèi)禁止輸入。
1.3.1 單片機(jī)引腳的分配
在進(jìn)行數(shù)據(jù)交換時(shí),基于單片機(jī)的電子密碼鎖采用的是 Intel 8051 的4 個(gè)8 位 I/O 口,其中 P2.0~ P2.4作為掃描的輸入輸出口使用,而P3.2則作為輸出口使用。
1.3.2 存儲(chǔ)分配
用戶通過(guò)鍵盤進(jìn)行輸入,需要為鍵盤分配一個(gè)用來(lái)存儲(chǔ)鍵入數(shù)據(jù)的緩沖區(qū)。由于密碼位數(shù)一般在10位以內(nèi),因此,分配10 B給該緩沖區(qū)。
在進(jìn)行密碼驗(yàn)證過(guò)程中,需要使用密碼表來(lái)存放密碼,因此,分配一個(gè)256 B的密碼表并存放在code區(qū),同時(shí),code區(qū)用來(lái)存代碼。
1.3.3 電路設(shè)計(jì)
Intel 8051通過(guò)8根數(shù)據(jù)線直接與鍵盤連接,其中4根作為行掃描線,掃描輸入高電平;另外4根與8051直接連接的是列掃描線,列掃描輸出線置低電平。當(dāng)鍵盤按下時(shí),將在中斷輸入產(chǎn)生一個(gè)上升沿的跳變,觸發(fā)中斷進(jìn)入中斷處理程序。該信號(hào)通過(guò)四輸入與門發(fā)送給8051。8051電子密碼鎖原理如圖1所示。
圖1 8051電子密碼鎖原理圖Fig.1 Principle schematic of 8051 electronic cryptogram lock
目前,國(guó)內(nèi)使用較多的是Hi-Tech的Hi-Tech PICC編譯器,且目前的單片機(jī)仿真器也支持Hi-Tech PICC編譯格式。因此,本文采用Hi-Tech C編譯器的格式編寫程序模塊。
程序模塊包括鍵盤接收模塊、加密模塊和驗(yàn)證密碼模塊這3部分。在功能模塊之前,還要加上密碼格式定義的內(nèi)容。該內(nèi)容用于對(duì)密碼的長(zhǎng)度和格式類型進(jìn)行定義。密碼長(zhǎng)度定義為10,類型定義為unsigned char。
鍵盤接收模塊由兩個(gè)程序組成,分別是中斷例程和讀取鍵盤鍵值程序。中斷例程是一個(gè)中斷服務(wù)程序。該程序可記錄下按鍵次數(shù);讀取鍵盤程序則是將輸入的鍵值記錄下來(lái)。
2.1.1 中斷例程
中斷例程的主要功能是當(dāng)按下鍵盤任意一按鍵時(shí)產(chǎn)生中斷,此時(shí)執(zhí)行中斷程序aa(void)。該程序首先將外部中斷位清0,然后調(diào)用讀取鍵值的程序readbyte(),記錄下按鍵次數(shù),并判斷相應(yīng)位數(shù)是否為10,最后將外部中斷位置1。程序代碼如下。
2.1.2 讀取鍵盤鍵值程序
讀取鍵盤鍵值程序的主要功能是根據(jù)單片機(jī)P2口相應(yīng)引腳電平的變化情況,返回一個(gè)相應(yīng)的鍵值。其程序代碼如下。
加密模塊首先獲取系統(tǒng)時(shí)間,然后借助系統(tǒng)時(shí)間產(chǎn)生隨機(jī)數(shù),通過(guò)循環(huán)初始化生成一個(gè)密碼矩陣。接著,程序會(huì)打開一個(gè)文件,如果文件成功打開,則將矩陣寫入該文件中;如果文件無(wú)法打開,則返回。在將矩陣寫入文件時(shí),先寫入數(shù)組頭;然后格式化數(shù)組串,將矩陣分行寫入文件,每行尾部加上換行,寫入最后一個(gè)文件并加上數(shù)組結(jié)尾;加密模塊最后給出關(guān)閉文件句柄,并將寫好的文件關(guān)閉。其程序代碼如下。
在進(jìn)行密碼驗(yàn)證的過(guò)程中,主要是核對(duì)輸入的信息和存儲(chǔ)的信息是否一致,在此使用scanf_s()函數(shù)進(jìn)行驗(yàn)證。如果信息一致,即給出密碼驗(yàn)證成功的提示;如果不一致,則給出相應(yīng)編號(hào)。其程序代碼如下。
常用的電路仿真軟件有Multisim、Protel、Proteus、Pspice這4種。由于Mulstisim在模擬器件和一些分離器件的仿真方面功能較強(qiáng),因此,在電路仿真測(cè)試中選用的是 Multisim 11.0。
使用Multisim 11.0時(shí),可以借助特殊功能寄存器窗口對(duì)寄存器進(jìn)行監(jiān)控,同時(shí)還可以借助IRAM窗口對(duì)變量進(jìn)行跟蹤。通過(guò)仿真測(cè)試,可觀測(cè)到flag變量地址為20H,值為0H。由于密碼長(zhǎng)度被定義為10,因此用戶鍵盤的緩沖區(qū)的地址范圍為10 B,地址是從21H到2AH。在未按下任何按鍵時(shí),該緩沖區(qū)的值均為0。
在鍵盤上按下預(yù)定的10位密碼后,中斷程序即進(jìn)行響應(yīng),并執(zhí)行讀鍵程序和判斷程序;驗(yàn)證正確后,在開鎖控制端給出高電平。為了使試驗(yàn)更直觀,在開鎖控制端接一個(gè)燈泡,根據(jù)燈泡是否發(fā)光來(lái)判斷試驗(yàn)是否成功。
在仿真測(cè)試的過(guò)程中,當(dāng)按鍵符合預(yù)設(shè)時(shí),燈泡變亮,同時(shí)緩存區(qū)的數(shù)據(jù)顯示為11H,并將緩存區(qū)指針復(fù)位,測(cè)試結(jié)果與設(shè)計(jì)相符。
在完成系統(tǒng)功能測(cè)試的同時(shí),在密碼輸入過(guò)程中對(duì)密碼驗(yàn)證模塊進(jìn)行了測(cè)試,使用6組不同的十六進(jìn)制值來(lái)測(cè)試相應(yīng)單元,測(cè)試值分別為 12h、34h、01h、bfh、21h和1dh。這6組不同的值,在仿真測(cè)試中均可以生成密碼,并能夠?qū)Ⅱ?yàn)證密碼模塊中的提示“密碼驗(yàn)證成功!”逐個(gè)顯示。這就說(shuō)明模塊完成了編譯運(yùn)行工作[11-15]。
為降低密碼鎖的成本,設(shè)計(jì)了基于8051單片機(jī)的密碼鎖加密模塊。由于該模塊具有8位操作數(shù),故能夠十分方便地移植到8位的8051上并高速、正確運(yùn)行。同時(shí),該系統(tǒng)模塊中的程序簡(jiǎn)短,不需額外的存儲(chǔ)器來(lái)存放程序,為整個(gè)系統(tǒng)節(jié)省了成本。
[1]鄭詩(shī)程,朱虹,武衛(wèi)華.FPGA與AVR單片機(jī)的通訊與智能監(jiān)控系統(tǒng)研究[J].自動(dòng)化與儀表,2009,44(11):13-17.
[2]周功明.基于AT89C2051單片機(jī)的防盜自動(dòng)報(bào)警電子密碼鎖系統(tǒng)的設(shè)計(jì)[J].綿陽(yáng)師范學(xué)院學(xué)報(bào),2007(5):112-115.
[3]郭海英.基于單片機(jī)的電子安全密碼鎖的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2005,28(13):95-97.
[4]魏學(xué)海.基于MULTISIM10的單片機(jī)系統(tǒng)仿真研究[J].計(jì)算機(jī)仿真,2010,27(1):246-248.
[5]曹建國(guó),王威,王丹.基于VHDL語(yǔ)言的電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)[J].沈陽(yáng)大學(xué)學(xué)報(bào),2006,18(4):77-79.
[6]潘永雄.單片機(jī)控制程序加密策略探索與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(11):2466-3469.
[7]劉振海.一種基于單片機(jī)和串行E2PROM的智能密碼鎖[J].微計(jì)算機(jī)信息,2007,23(35):133-134.
[8]楊亭.單片機(jī)C51程序功能設(shè)計(jì)教程與實(shí)驗(yàn)[M].北京:北京航空航天大學(xué)出版社,2004:99-109.
[9]王幸之,王雷,鐘愛(ài)琴,等.單片機(jī)應(yīng)用系統(tǒng)電磁干擾與抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,2006:88-99.
[10]何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1992:42-47.
[11]沈建華,楊艷琴.MSP430系列16位超低功耗單片機(jī)實(shí)踐與系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005:2-10.
[12]胡大可.MSP430系列單片機(jī)C語(yǔ)言程序設(shè)計(jì)與開發(fā)[M].北京:北京航空航天大學(xué)出版社,2003:2-5.
[13]錢峰.EZ-USB FX2單片機(jī)原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006:20-27.
[14]吳振宇,常玉保,馮林.基于FPGA和USB2.0的高速數(shù)據(jù)采集系統(tǒng)[J].儀器儀表學(xué)報(bào),2006,27(z1):1-3.
[15]謝運(yùn)祥,歐陽(yáng)森.電力電子單片機(jī)控制技術(shù)[M].北京:機(jī)械工業(yè)出版社,2007.