摘? 要:在現(xiàn)代化信息社會(huì),電子密碼鎖已經(jīng)開(kāi)始向大眾普及,基于此背景,對(duì)電子密碼鎖的設(shè)計(jì)展開(kāi)了研究。主要提供一種以STC89S52單片機(jī)為核心的電子密碼鎖的相關(guān)設(shè)計(jì)思路;選用STC89S52單片機(jī)為微控制器,實(shí)現(xiàn)密碼鎖的開(kāi)鎖、輸入和識(shí)別功能。采用了一款EEPROM芯片24C02作為密碼存儲(chǔ)單元,實(shí)現(xiàn)電子密碼鎖的可靠性與安全性,能夠?yàn)橛脩魩?lái)便捷的使用體驗(yàn)。
關(guān)鍵詞:電子密碼鎖;STC89C52單片機(jī);電路仿真
中圖分類(lèi)號(hào):TP368.1? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)16-0020-04
Design of Electronic Code Lock Based on STC89S52 Single Chip Computer
SHEN Deming
(School of Communication and Electronics,Jiangxi Science and Technology Normal University,Nanchang? 330013,China)
Abstract:In the modern information society,smart code locks have begun to be popularized by the public. Based on this background,the design of electronic code locks has been studied. It mainly provides a related design idea of electronic code lock with STC89S52 single-chip microcomputer as the core;mainly uses STC89S52 single-chip microcomputer as microcontroller to achieve the unlocking,input and identification functions of the code lock. An EEPROM chip 24C02 is used as the password storage unit to realize the reliability and security of the electronic password lock,which can bring users a convenient experience.
Keywords:electronic code lock;STC89S52 single chip microcomputer;circuit simulation
0? 引? 言
隨著社會(huì)經(jīng)濟(jì)與科學(xué)的不斷發(fā)展,人們需要隨身攜帶的東西越來(lái)越少,可鑰匙依然是大家生活中必須要隨身攜帶的物品,筆者就被出門(mén)經(jīng)常忘記帶鑰匙所困擾。故想利用大學(xué)所學(xué)的單片機(jī)設(shè)計(jì)、電路板制作和調(diào)試以及模擬電路課程的知識(shí)來(lái)設(shè)計(jì)一把電子密碼鎖,可以與機(jī)械鎖配合使用,只需要記住一組用于解鎖的數(shù)字就可以避免帶鑰匙、丟鑰匙的煩惱并且可以避免因鑰匙被仿制而留下安全隱患。電子密碼鎖的研究早在20世紀(jì)30年代就開(kāi)始了,在一些特殊場(chǎng)所應(yīng)用,現(xiàn)在在西方發(fā)達(dá)國(guó)家,電子密碼鎖已被廣泛應(yīng)用于智能防盜系統(tǒng)中,而我國(guó)目前智能防盜系統(tǒng)整體與國(guó)際相比較為落后,大部分家庭使用的還是機(jī)械鎖,國(guó)內(nèi)電子鎖市場(chǎng)尚未形成,因此本文提供一種電子密碼鎖的設(shè)計(jì)思路,通過(guò)方案設(shè)計(jì)、元件選型、模擬仿真等步驟,驗(yàn)證了該思路的可行性,希望可以為電子密碼鎖的研發(fā)提供借鑒。
1? 系統(tǒng)方案設(shè)計(jì)
在此方案中,針對(duì)電子密碼鎖進(jìn)行設(shè)計(jì)的核心控制器件主要是STC89S52單片機(jī),同時(shí)還在其中加入了復(fù)位電路加晶振電路,由此完成單片機(jī)最小系統(tǒng)電路的設(shè)計(jì)[1]。在本設(shè)計(jì)中,主要是通過(guò)將外圍電路加到矩陣鍵盤(pán)上實(shí)現(xiàn)密碼輸入和其他功能的設(shè)置,只有在密碼輸入正確的情況下,才能驅(qū)動(dòng)實(shí)際電路中繼電器控制吸合線圈即驅(qū)動(dòng)電路中開(kāi)鎖功能的實(shí)現(xiàn),外接顯示器用于顯示,每鍵入一位密碼,顯示位數(shù)隨輸入增加而增加,但不顯示實(shí)際數(shù)字,用*代替,密碼輸入完成后,顯示PASSWORD OK開(kāi)鎖成功,顯示PASSWORD ERROR密碼錯(cuò)誤。同時(shí),為保證設(shè)計(jì)系統(tǒng)的安全性,在密碼輸入錯(cuò)誤三次后,便會(huì)觸自動(dòng)發(fā)報(bào)警電路,并將系統(tǒng)暫時(shí)鎖定。在密碼儲(chǔ)存電路中采用24C02存儲(chǔ)芯片來(lái)完成密碼的儲(chǔ)存設(shè)置。設(shè)計(jì)原理圖如圖1所示。
2? 系統(tǒng)硬件設(shè)計(jì)
2.1? 最小系統(tǒng)電路
最小系統(tǒng)電路包括單片機(jī)及其所需的必要的電源、時(shí)鐘、復(fù)位等部件,能使單片機(jī)處于正常的運(yùn)行狀態(tài)中。在此方案中,選擇的是型號(hào)為STC89S52的單片機(jī),只要將單片機(jī)接上復(fù)位電路和晶振電路即可構(gòu)成最小應(yīng)用系統(tǒng)。在選擇過(guò)程中主要考慮到型號(hào)性能較高,功率耗損較低等優(yōu)點(diǎn),是一款價(jià)值性較高的8位CMOS微控制器。內(nèi)核所使用的是較為普遍的MCS51,既能夠?qū)崿F(xiàn)51單片機(jī)的兼容,又能夠在工作性能上略勝一籌。從整個(gè)系統(tǒng)能夠以更高效率運(yùn)行,也能夠?qū)⒔涌陔娐吩O(shè)計(jì)得更為多樣化,并且能夠?qū)崿F(xiàn)功率耗損的較好控制[2,3]。
該單片機(jī)具有8 KB的Flash和512 B的RAM,共有四個(gè)P0-P3端口,32位I/O口線,看門(mén)狗定時(shí)器(Watch Dog Timer,WDT)。掉電保護(hù)方式下,RAM中的內(nèi)容也會(huì)被保存,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35 MHz,一個(gè)機(jī)器周期需要的時(shí)鐘周期數(shù)可設(shè)置為6T或12T可選。程序可以直接使用UASRT串口進(jìn)行下載。在外形設(shè)計(jì)上,該單片機(jī)包括了LQFP、DIP兩種封裝方式,本次設(shè)計(jì)選擇的是后者。本系統(tǒng)硬件部分主要包括晶振電路、復(fù)位電路、STC89S52單片機(jī)、開(kāi)鎖電路、液晶顯示電路等。原理框圖如圖2所示。
2.1.1? 晶振電路
單片機(jī)設(shè)計(jì)中的核心要素,亦被稱(chēng)為時(shí)鐘電路。在晶振電路設(shè)計(jì)中,包括一個(gè)晶振以及兩個(gè)電容共同組成,兩個(gè)電容的加入是為了更好地達(dá)到諧振要求。從現(xiàn)階段來(lái)看,大部分單片機(jī)所采用的都是內(nèi)部時(shí)鐘,但這種設(shè)計(jì)容易受到外部因素的影響,因此為保障系統(tǒng)設(shè)計(jì)的嚴(yán)謹(jǐn)與精細(xì),本次采用的是外接式晶振電路。設(shè)計(jì)中采用12 MHz外部晶振。電容取值30 pf。通過(guò)單片機(jī)XTAL1和XTAL2與片內(nèi)與非門(mén)構(gòu)成電容三點(diǎn)式振蕩器。
2.1.2? 復(fù)位電路
當(dāng)在STC89S52單片機(jī)的RST引腳引入高電平并保持2個(gè)機(jī)器周期時(shí),單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。復(fù)位操作設(shè)計(jì),包括兩種形式:一種是手動(dòng)復(fù)位,另一種則是上電復(fù)位。其中后者包括了電阻和電容兩種器件組成。手動(dòng)復(fù)位的復(fù)位方式是需要通過(guò)開(kāi)關(guān)來(lái)達(dá)到其復(fù)位效果。本設(shè)計(jì)中手動(dòng)復(fù)位,通過(guò)RST引腳與電源VCC接通實(shí)現(xiàn)。相對(duì)自動(dòng)復(fù)位,手動(dòng)復(fù)位可以避免死機(jī)時(shí)無(wú)法可靠復(fù)位的情況。
2.2? 矩陣鍵盤(pán)電路
本設(shè)計(jì)采用行列式鍵盤(pán)[4],能夠達(dá)到針對(duì)性密碼的基本功能,例如輸入和更改密碼。與直接法的鍵盤(pán)相比,矩陣模式的鍵盤(pán)設(shè)置在設(shè)計(jì)與識(shí)別方面都更具復(fù)雜性,通常采用這種鍵盤(pán)對(duì)付按鍵較多的情況。矩陣式鍵盤(pán)行控制線與列控制線在交叉的地方并不會(huì)直接相通,而是以按鍵設(shè)置完成水平與垂直線的連接。在本設(shè)計(jì)中,水平線可以與STC89S52單片機(jī)的P1.0~P1.3相通,垂直水平線和STC89S52單片機(jī)的P1.4~P1.7連接。在此基礎(chǔ)上,通過(guò)對(duì)水平線與垂直線的掃描達(dá)到按鍵的確認(rèn)功能。
2.3? 液晶顯示電路
在本次設(shè)計(jì)中,顯示模塊采用了LM016L字符型液晶顯示器進(jìn)行顯示,能夠呈現(xiàn)出密碼鎖所處的具體狀態(tài)。液晶控制端口RS.RW.E引腳和單片機(jī)P2.6、P2.7、P2.8引腳連接,液晶數(shù)據(jù)接口AD0~AD7和單片機(jī)的P0.1~P0.7口連接,用于LCD液晶顯示作用。同時(shí),還設(shè)計(jì)了節(jié)能控制端口,從而實(shí)現(xiàn)最大程度的能源節(jié)約效果。在密碼正確時(shí)單片機(jī)P3.6輸出低電平,導(dǎo)通三極管,開(kāi)鎖成功指示燈LED-Yellow亮。LCD顯示PASSWORD OK,反之,密碼錯(cuò)誤時(shí)顯示PASSWORD ERROR。通過(guò)液晶顯示器可以清楚判斷出鎖的開(kāi)關(guān)狀態(tài)。
2.4? 開(kāi)鎖電路
在開(kāi)鎖電路設(shè)計(jì)中,大多都是采用繼電器控制實(shí)施的,可以針對(duì)傳輸信號(hào)類(lèi)別執(zhí)行電路開(kāi)合任務(wù)。在密碼輸入確認(rèn)無(wú)誤時(shí),單片機(jī)會(huì)向系統(tǒng)輸出開(kāi)鎖信號(hào),經(jīng)過(guò)繼電器模板,通電后便可以開(kāi)鎖。具體分析,密碼正確時(shí),在單片機(jī)的P3.6 I/O端口發(fā)出信號(hào),經(jīng)端口的三極管9012放大,進(jìn)而使得繼電器處于閉合狀態(tài)[5],繼電器吸合帶動(dòng)鎖桿伸縮,隨后鎖鉤在彈簧作用下彈起,便可以實(shí)現(xiàn)開(kāi)鎖功能。
2.5? 密碼存儲(chǔ)電路
相對(duì)而言,儲(chǔ)存器與單片機(jī)傳輸?shù)臄?shù)據(jù)偏少,因此便不會(huì)與主線形成競(jìng)爭(zhēng)關(guān)系,在密碼存儲(chǔ)中采用的是運(yùn)用較為廣泛的24C02存儲(chǔ)芯片。此類(lèi)芯片能夠滿足掉電狀態(tài)下的密碼存儲(chǔ),此外,該部分還具備獨(dú)立的寫(xiě)保護(hù)作用。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫(xiě)的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。
2.6? 報(bào)警電路
該系統(tǒng)設(shè)計(jì),能夠?qū)⑤斎氲拿恳粋€(gè)數(shù)字都與原先設(shè)定好的數(shù)值進(jìn)行對(duì)比,只有在每個(gè)數(shù)值都與設(shè)定值符合時(shí)才能開(kāi)鎖。在輸入過(guò)程中只能有三次機(jī)會(huì),如若連續(xù)三次輸入密碼皆不正確,就會(huì)自動(dòng)開(kāi)啟報(bào)警系統(tǒng),在重新復(fù)位后才能繼續(xù)使用。報(bào)警電路主要是通過(guò)蜂鳴器實(shí)現(xiàn)的,以三極管[6]為驅(qū)動(dòng),從而使蜂鳴器能夠根據(jù)輸入密碼的正確與否確認(rèn)警報(bào)聲是否發(fā)出。
3? 軟件設(shè)計(jì)
3.1? 主程序
主程序流程圖如圖3所示,流程說(shuō)明:主程序啟動(dòng)后,密碼鎖初始化,監(jiān)聽(tīng)子程序監(jiān)聽(tīng)鍵盤(pán)輸入信號(hào),同時(shí)調(diào)用亮燈子程序,監(jiān)聽(tīng)到指定鍵盤(pán)輸入信號(hào)調(diào)用模式B,輸入密碼識(shí)別按鍵,若輸入信號(hào)與程序初始化密碼一致,則調(diào)用開(kāi)鎖子程序,執(zhí)行開(kāi)鎖,若不一致,報(bào)警電路則進(jìn)行報(bào)警提示,監(jiān)聽(tīng)子程序持續(xù)監(jiān)聽(tīng)鍵盤(pán)輸入信號(hào)。監(jiān)聽(tīng)子程序監(jiān)聽(tīng)到指定鍵盤(pán)輸入信號(hào)調(diào)用模式A修改密碼子程序。
3.2? 開(kāi)鎖子程序
開(kāi)鎖子程序的功能是通過(guò)判斷輸入信號(hào)是否與初始信號(hào)保持一致,在密碼輸入與原定信號(hào)完全一致后,便會(huì)啟動(dòng)開(kāi)鎖。在開(kāi)鎖子程序內(nèi)會(huì)另用if語(yǔ)句[7]將輸入密碼與原定密碼進(jìn)行逐個(gè)對(duì)比,并且在輸入錯(cuò)誤信號(hào)后,還會(huì)對(duì)錯(cuò)誤次數(shù)進(jìn)行統(tǒng)計(jì),若輸入信號(hào)連續(xù)三次與初始密碼不一致則調(diào)用報(bào)警子程序,流程如圖4所示。
3.3? 修改密碼子程序
監(jiān)聽(tīng)程序監(jiān)聽(tīng)到修改密碼按鍵信號(hào)A,調(diào)用修改密碼子程序,修改密碼子程序檢測(cè)舊密碼輸入并按下確認(rèn)鍵后為開(kāi)鎖狀態(tài),若為開(kāi)鎖狀態(tài),持續(xù)監(jiān)聽(tīng)按鍵輸入信號(hào)。當(dāng)2次輸入新密碼一致則提示密碼修改成功,若不一致則退出修改密碼子程序,并且需要重新輸入舊密碼驗(yàn)證。若不是開(kāi)鎖狀態(tài)則直接退出修改密碼子程序,流程如圖5所示。
3.4? 液晶顯示子程序
顯示器件采用的是LM016L液晶顯示屏,液晶板上排列著若干5×7或5×10點(diǎn)陣的字符顯示位,每個(gè)顯示位可顯示1個(gè)字符,在工作過(guò)程中可以同時(shí)顯示2行字符,每行字符長(zhǎng)度限制為16個(gè)。每一行具有固定的地址,與微控制通過(guò)送入數(shù)據(jù)和指令,使模塊正常工作。
4? 系統(tǒng)的測(cè)試
4.1? 程序調(diào)試
運(yùn)用C語(yǔ)言對(duì)系統(tǒng)進(jìn)行編寫(xiě),并借助Keil4編譯環(huán)境對(duì)系統(tǒng)代碼進(jìn)行相應(yīng)的調(diào)試,進(jìn)一步形成可操作的程序文件。需要對(duì)相應(yīng)程序進(jìn)行編譯、跟蹤執(zhí)行以及檢查程序。
4.2? 硬件調(diào)試
眾所周知,系統(tǒng)的組成需要多個(gè)模塊的組合,而模塊的基礎(chǔ)單位是元器件,因此,對(duì)于任何一個(gè)設(shè)計(jì)系統(tǒng)的調(diào)試與檢查都要針對(duì)元器件進(jìn)行檢查。在元器件檢查完成后再進(jìn)一步對(duì)原理圖進(jìn)行檢查,以電路仿真的方式對(duì)電路功能進(jìn)行全面檢查,查找漏洞。在確保軟件運(yùn)行沒(méi)有問(wèn)題、單片機(jī)和電源沒(méi)有異常的情況下再檢查外圍電路,尤其注意當(dāng)金屬基引腳安裝于LCD時(shí)溫度不當(dāng)、焊接時(shí)間過(guò)長(zhǎng)容易出現(xiàn)損壞的問(wèn)題。
4.3? 仿真設(shè)計(jì)
通過(guò)Proteus軟件的使用,我們能夠輕易地獲得一個(gè)功能齊全、實(shí)用方便的單片機(jī)實(shí)驗(yàn)平臺(tái)[8]。從而確定系統(tǒng)設(shè)計(jì)是否能夠符合其運(yùn)用要求,保障系統(tǒng)設(shè)計(jì)程序的可靠性與安全性。在電子密碼鎖的系統(tǒng)設(shè)計(jì)中,運(yùn)用仿真軟件Proteus進(jìn)行本次設(shè)計(jì)的仿真。Proteus的軟件仿真基于VSM技術(shù),它能仿真大量的單片機(jī)芯片,比如MCS51系列、以及LCD、按鍵等外圍電路。通過(guò)Proteus對(duì)按鍵輸入密碼控制STC89S52單片機(jī)開(kāi)鎖以及信號(hào)不匹配的報(bào)警功能進(jìn)行仿真。圖6為本次系統(tǒng)的仿真設(shè)計(jì)原理圖。
根據(jù)系統(tǒng)提示,在鍵盤(pán)上輸入密碼,并且按下確認(rèn)鍵,如若輸入密碼與原始保持一致,繼電器便能夠吸合、電路開(kāi)鎖,開(kāi)鎖成功指示燈亮起。
根據(jù)系統(tǒng)提示,在鍵盤(pán)上輸入密碼,并且按下確認(rèn)鍵,如若輸入密碼與原始存在錯(cuò)誤對(duì)應(yīng),開(kāi)鎖子程序無(wú)法啟動(dòng),繼電器無(wú)法實(shí)現(xiàn)供電,同時(shí)蜂鳴器發(fā)出聲音。顯示屏上出現(xiàn)密碼錯(cuò)誤提示,并在三次之后啟動(dòng)報(bào)警系統(tǒng)。
4.4? 仿真效果
(1)LCD顯示模式選擇A or B,按下B,LCD顯示屏上下劃線閃爍,等待輸入密碼。每鍵入一位密碼,LCD顯示位數(shù)隨輸入增加而增加,但不顯示實(shí)際數(shù)字,用*代替,按下D鍵確定,顯示PASSWORD OK,五秒鐘后自動(dòng)返回模式選擇主界面;(2)按下B,輸入錯(cuò)誤密碼,按下確認(rèn)鍵D,LCD顯示PASSWORD ERROR,蜂鳴器報(bào)警;(3)返回主界面模式選擇,按下A進(jìn)行修改密碼,輸入正確密碼,按下確認(rèn)鍵D。此時(shí)為開(kāi)鎖狀態(tài),鍵入新密碼后按確認(rèn),再輸入一遍新密碼并確認(rèn)。LCD顯示change Password Succeed,然后返回主界面模式選擇;(4)再次按B輸入密碼,鍵入新密碼,密碼鎖開(kāi)鎖LCD顯示PASSWORD OK。
5? 結(jié)? 論
電子元件的不斷發(fā)展,為電子密碼鎖的完善與優(yōu)化帶來(lái)了更大的發(fā)展空間,進(jìn)一步保障了人們的財(cái)產(chǎn)安全與系統(tǒng)的可靠性。在本次電子鎖設(shè)計(jì)中,通過(guò)以STC89S52單片機(jī)為核心的電路,融入了開(kāi)鎖、修改、液晶顯示等多項(xiàng)子程序,保障了電子密碼鎖的基本功能,并能夠在密碼信號(hào)輸入三次后調(diào)用報(bào)警系統(tǒng),提高安全性,優(yōu)化用戶體驗(yàn)。在設(shè)計(jì)過(guò)程中,還運(yùn)用仿真技術(shù)對(duì)系統(tǒng)進(jìn)行檢查與調(diào)試,進(jìn)而確認(rèn)系統(tǒng)運(yùn)行的有效性。但在本次設(shè)計(jì)中也同樣有部分缺陷,在今后的設(shè)計(jì)中需要進(jìn)一步的優(yōu)化與完善,提高系統(tǒng)的安全性,力求滿足大眾的多元化需求。
參考文獻(xiàn):
[1] 李建忠.單片機(jī)原理與應(yīng)用:第2版 [M].西安:西安電子科技大學(xué)出版社,2008.
[2] 靳達(dá).單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航 [M].北京:人民郵電出版社,2003.
[3] 沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析 [M].北京:北京航空航天大學(xué)出版社,2003.
[4] 金桂,向國(guó)梁.基于C語(yǔ)言STC89C52單片機(jī)電子密碼鎖的設(shè)計(jì)與仿真 [J].現(xiàn)代電子技術(shù),2010,33(19):176-178+182.
[5] 閻石.數(shù)字電子技術(shù)基礎(chǔ):第6版 [M].北京:高等教育出版社,2016.
[6] 童師白,華成英.模擬電子技術(shù)基礎(chǔ):第4版 [M].北京:高等教育出版社,2011.
[7] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì):第3版 [M].北京:清華大學(xué)出版社,2014.
[8] 周澗景,張麗鄭.基于Proteus的電路及單片機(jī)系統(tǒng)設(shè)計(jì)與仿真 [M].北京:北京航空航天大學(xué)出版社,2006.
作者簡(jiǎn)介:沈德明(1998—),男,漢族,江西南昌人,本科在讀,研究方向:電子信息工程。