版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
...wd......wd......wd...STC89C52單片機的電子密碼鎖設(shè)計摘要隨著人們生活水平的提高,若何實現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機械鎖由于其構(gòu)造的簡單,被撬的事情屢見不鮮,電子密碼鎖具有安全性能高,成本低,功耗低,操作簡單等優(yōu)點使其作為防盜衛(wèi)士的角色越來越重要。從經(jīng)濟實用角度出發(fā),采用51系列單片機,設(shè)計一款可更改密碼,LCD1602顯示,具有報警功能,該電子密碼鎖體積小,易于開發(fā),成本較低,安全性高,能將其存儲的現(xiàn)場歷史數(shù)據(jù)及時上報給上位機系統(tǒng),實現(xiàn)網(wǎng)絡(luò)實時監(jiān)控,方便管理人員及時分析和處理數(shù)據(jù)。其性能和安全性已大大超過了機械鎖,特點有保密性好,編碼量多,遠遠大于彈子鎖,隨機開鎖成功率幾乎為零;密碼可變,用戶可以經(jīng)常更改密碼,防止密碼被盜,同時也可以防止因人員的更替而使鎖的密級下降;誤碼輸入保護。當(dāng)輸入密碼屢次錯誤時,報警系統(tǒng)自動啟動;電子密碼鎖操作簡單易行,受到廣闊用戶的親睞。關(guān)鍵詞單片機,密碼鎖,更改密碼,LCD1602目錄摘要……………………6125I1緒論1.1電子密碼鎖簡介……………11.2電子密碼鎖的開展趨勢…………………12設(shè)計方案……………………33主要元器件…………………43.1主控芯片STC89C52………………………43.2晶體振蕩器………………83.3LCD顯示密碼模塊的設(shè)計………………93.3.1LCD1602簡介………………………93.3.2LCD1602液晶顯示模塊與單片機連接電路………114硬件系統(tǒng)設(shè)計……………124.1設(shè)計原理…………………124.2電源輸入電路……………124.3矩陣鍵盤…………………134.4復(fù)位電路…………………144.5晶振電路…………………144.6報警電路…………………154.7顯示電路…………………154.8開鎖電路…………………164.9電路總體構(gòu)成……………165軟件程序設(shè)計……………185.1主程序流程介紹…………185.2鍵盤模塊流程圖…………195.3顯示模塊流程圖…………215.4修改密碼流程圖…………225.5開鎖和報警模塊流程圖………………236電子密碼鎖的系統(tǒng)調(diào)試及仿真………256.1硬件電路調(diào)試及結(jié)果分析………………256.2軟件調(diào)試及功能分析……………………256.2.1調(diào)試過程……………256.2.2仿真結(jié)果分…………266.3仿真全圖…………………287結(jié)論…………………………29附錄:……………311緒論1.1電子密碼鎖簡介電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價對比高的產(chǎn)品。現(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。其特點如下:1)保密性好,編碼量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零。
2)密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以防止因人員的更替而使鎖的密級下降。
3)誤碼輸入保護,當(dāng)輸入密碼屢次錯誤時,報警系統(tǒng)自動啟動。4)無活動零件,不會磨損,壽命長。5)使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。6)電子密碼鎖操作簡單易行,一學(xué)即會。1.2電子密碼鎖的開展趨勢日常生活和工作中,住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的方法來解決。目前門鎖主要用彈子鎖,其鑰匙容易喪失;保險箱主要用機械密碼鎖,其構(gòu)造較為復(fù)雜,制造精度要求高,成本高,且易出現(xiàn)故障,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙喪失后安全性即大打折扣。針對這些鎖具給人們帶來的不便假設(shè)使用機械式鑰匙開鎖,為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運而生。由于電子器件所限,以前開發(fā)的電子密碼鎖,其種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實現(xiàn)的,制作簡單但很不安全,在后為多是基于EDA來實現(xiàn)的,其電路構(gòu)造復(fù)雜,電子元件繁多,也有使用早先的20引角的2051系列單片機來實現(xiàn)的,但密碼簡單,易破解。隨著電子元件的進一步開展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強大,使用更加方便,安全保密性更強,由以前的單密碼輸入開展到現(xiàn)在的,密碼加感應(yīng)元件,實現(xiàn)了真真的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的開展及人們對保密性需求的提高出現(xiàn)了越來越多的電子密碼鎖。出于安全、方便等方面的需要許多電子密碼鎖已相繼問世。但這類產(chǎn)品的特點是針對特定有效卡、指紋或聲音有效,且不能實現(xiàn)遠程控制,只能適用于保密要求高且供個人使用的箱、柜、房間等。由于數(shù)字、字符、圖形圖像、人體生物特征和時間等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子防盜鎖獲得高度的保密性,如防范森嚴的金庫,需要使用復(fù)合信息密碼的電子防盜鎖,組合使用信息也能夠使電子防盜鎖獲得無窮擴展的可能,使產(chǎn)品多樣化,對用戶而言是“千挑百選、自得其所〞。可以看出組合使用電子信息是電子密碼鎖以后開展的趨勢。2設(shè)計方案采用以單片機為核心的控制方案由于單片機種類繁多,各種型號都有其一定的應(yīng)用環(huán)境,因此在選用時要多加對比,合理選擇,以期獲得最正確的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數(shù)器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比方:中斷源的數(shù)量和優(yōu)先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內(nèi)有無時鐘振蕩器、有無上電復(fù)位功能等。在開發(fā)過程中單片機還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應(yīng)性、技術(shù)支持和服務(wù)等等因素。基于以上因素本設(shè)計選用單片機STC89C52作為本設(shè)計的核心元件,利用單片機靈活的編程設(shè)計和豐富的I/O端口,及其控制的準確性,實現(xiàn)基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD1602液晶顯示屏用于顯示作用。當(dāng)用戶需要開鎖時,先按鍵盤開鎖鍵之后按鍵盤的數(shù)字鍵0-9輸入密碼。密碼輸完后按下確認鍵,如果密碼輸入正確則開鎖,不正確則重新輸入密碼,當(dāng)三次密碼錯誤則發(fā)出報警;當(dāng)用戶需要修改密碼時,先按下鍵盤設(shè)置鍵后輸入原來的密碼,只有當(dāng)輸入的原密碼正確開鎖后才能設(shè)置新密碼。新密碼輸入無誤后按確認鍵使新密碼將得到存儲,密碼修改成功。3主要元器件3.1主控芯片STC89C521〕STC89C52單片機的主要特性如下:Stc89c52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,stc的stc89c52是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案,stc89c52芯片引腳圖如圖3-1所示。圖3-1stc89c52芯片引腳圖主要特性:·與MCS-51兼容·8K字節(jié)可編程閃爍存儲器·壽命:1000寫/擦循環(huán)·數(shù)據(jù)保存時間:10年·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·6個中斷源·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時鐘電路2〕STC89C52RC引腳功能說明:1、主電源引腳VSS和VSSSTC89C52芯片引腳圖VSS——〔40腳〕接+5V電壓;VSS——〔20腳〕接地。2、外接晶體引腳XTAL1和XTAL2XTAL1〔19腳〕接外部晶體的一個引腳。在單片機內(nèi)部,它是一個反相放大器的輸入端,這個放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部振蕩器時,對HMOS單片機,此引腳應(yīng)接地;對SHMOS單片機,此引腳作為驅(qū)動端。XTAL2〔18腳〕接外晶體的另一端。在單片機內(nèi)部,接至上述振蕩器的反相放大器的輸出端。采用外部振蕩器時,對HMOS單片機,該引腳接外部振蕩器的信號,即把外部振蕩器的信號直接接到內(nèi)部時鐘發(fā)生器的輸入端;對XHMOS,此引腳應(yīng)懸浮。3、控制或與其它電源復(fù)用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP①RST/VPD〔9腳〕當(dāng)振蕩器運行時,在此腳上出現(xiàn)兩個機器周期的高電平將使單片機復(fù)位。推薦在此引腳與VSS引腳之間連接一個約8.2k的下拉電阻,與VSS引腳之間連接一個約10μF的電容,以保證可靠地復(fù)位。VSS掉電期間,此引腳可接上備用電源,以保證內(nèi)部RAM的數(shù)據(jù)不喪失。當(dāng)VSS主電源下掉到低于規(guī)定的電平,而VPD在其規(guī)定的電壓范圍〔5±0.5V〕內(nèi),VPD就向內(nèi)部RAM提供備用電源。②ALE/PROG〔30腳〕:當(dāng)訪問外部存貯器時,ALE〔允許地址鎖存〕的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍以不變的頻率周期性地出現(xiàn)正脈沖信號,此頻率為振蕩器頻率的1/6。因此,它可用作對外輸出的時鐘,或用于定時目的。然而要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。ALE端可以驅(qū)動〔吸收或輸出電流〕8個LS型的TTL輸入電路。對于EPROM單片機〔如8751〕,在EPROM編程期間,此引腳用于輸入編程脈沖〔PROG〕。③PSEN〔29腳〕:此腳的輸出是外部程序存儲器的讀選通信號。在從外部程序存儲器取指令〔或常數(shù)〕期間,每個機器周期兩次PSEN有效。但在此期間,每當(dāng)訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。PSEN同樣可以驅(qū)動〔吸收或輸出〕8個LS型的TTL輸入。④EA/VPP〔引腳〕:當(dāng)EA端保持高電平時,訪問內(nèi)部程序存儲器,但在PS〔程序計數(shù)器〕值超過0FFFH〔對851/8751/80S51〕或1FFFH〔對8052〕時,將自動轉(zhuǎn)向執(zhí)行外部程序存儲器內(nèi)的程序。當(dāng)EA保持低電平時,則只訪問外部程序存儲器,不管是否有內(nèi)部程序存儲器。對于常用的8031來說,無內(nèi)部程序存儲器,所以EA腳須常接地,這樣才能只選擇外部程序存儲器。對于EPROM型的單片機〔如8751〕,在EPROM編程期間,此引腳也用于施加21V的編程電源〔VPP〕。4.控制或與其它電源復(fù)用引腳RST/Vpd,ALE/PROG,PSEN和EA/Vpp。RST/Vpd當(dāng)振蕩器運行時。在此引腳上出現(xiàn)兩個機器同期的高電平〔由低到高跳變〕,將使單片機復(fù)位。在VSS掉電期間,此引腳可接上備用電源,由Vpd向內(nèi)部RAM提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。ALE/PROG正常操作時為ALE功能〔允許地址人民幣存〕,提供把地址的低字節(jié)鎖存到外部鎖存器。ALE引腳以不變的頻率〔振蕩周期的1/6〕周期性地發(fā)出正脈沖信號。因此,它可用作對外輸出的時鐘,或用于定時目的。但要注意,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。ALE端可以驅(qū)動〔吸收或輸出電流〕八個LSTTL電路。對于EPROM型單片機,在EPROM編程期間,此引腳接收編程脈沖〔PROG功能〕。PSEN外部程序存儲器讀選通信號輸出端。在從外部程序存儲器取指令〔或數(shù)據(jù)〕期間;PSEN在每個機器周期內(nèi)兩次有效。PSEN同樣可以驅(qū)動八個LSTTL輸入。EA/VppEA為內(nèi)部程序存儲器和外部程序存儲器選擇端。當(dāng)EA為高電平時,訪問內(nèi)部程序存儲器〔PS值小于4K〕。當(dāng)EA為低電平時,則訪問外部程序存儲器。對于EPROM型單片機,在EPROM編程期間,此引腳上加21VEPROM編程電源〔Vpp〕。5、輸入/輸出〔I/O〕引腳P0、P1、P2、P3〔共32根〕①P0口〔39腳至32腳〕:是雙向8位三態(tài)I/O口,在外接存儲器時,與地址總線的低8位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動8個LS型的TTL負載。②P1口〔1腳至8腳〕:是準雙向8位I/O口。由于這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向I/O口。P1口能驅(qū)動〔吸收或輸出電流〕4個LS型的TTL負載。對8052、8032,P1.0引腳的第二功能為T2定時/計數(shù)器的外部輸入,P1.1引腳的第二功能為T2EX捕捉、重裝觸發(fā),即T2外部控制端。對EPROM編程和程序驗證時,它接收低8位地址。③P2口〔21腳至28腳〕:是準雙向8位I/O口。在訪問外部存儲器時,它可以作為擴展電路高8位地址總線送出高8位地址。在對EPROM編程和程序驗證期間,它接收高8位地址。P2可以驅(qū)動〔吸收或輸出電流〕4個LS型的TTL負載。④P3口〔10腳至17腳〕:是準雙向8位I/O口,在MSS-51中,這8個引腳還用于專門功能,是復(fù)用雙功能口。P3能驅(qū)動〔吸收或輸出電流〕4個LS型的TTL負載。作為第一功能使用時,就作為普通I/O口用,功能和操作方法與P1口一樣。作為第二功能使用時,各引腳的定義如表所示。值得強調(diào)的是,P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。如表3-1。表3-1P3口管腳備選功能P3.0RXD〔串行輸入口〕P3.1TXD〔串行輸出口〕P3.2/INT0〔外部中斷0〕P3.3/INT1〔外部中斷1〕P3.4T0〔記時器0外部輸入〕P3.5T1〔記時器1外部輸入〕P3.6/WR〔外部數(shù)據(jù)存儲器寫選通〕P3.7/RD〔外部數(shù)據(jù)存儲器讀選通〕3.2晶體振蕩器晶體振蕩器,簡稱晶振,其作用在于產(chǎn)生原始的時鐘頻率,這個頻率經(jīng)過頻率發(fā)生器的放大或縮小后就成了電腦中各種不同的總線頻率。以聲卡為例,要實現(xiàn)對模擬信號44.1kHz或48kHz的采樣,頻率發(fā)生器就必須提供一個44.1kHz或48kHz的時鐘頻率。如果需要對這兩種音頻同時支持的話,聲卡就需要有兩顆晶振。但是現(xiàn)在的娛樂級聲卡為了降低成本,通常都采用SCR將輸出的采樣頻率固定在48kHz,但是SRC會對音質(zhì)帶來損害,而且現(xiàn)在的娛樂級聲卡都沒有很好地解決這個問題?,F(xiàn)在應(yīng)用最廣泛的是石英晶體振蕩器。
石英晶體振蕩器是一種高精度和高穩(wěn)定度的振蕩器,石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。石英晶體振蕩器廣泛地應(yīng)用在電視機、影碟機、錄像機、無線通訊設(shè)備、電子鐘表、單片機、數(shù)字儀器儀表等電子設(shè)備中。為數(shù)據(jù)處理設(shè)備產(chǎn)生時鐘信號和為特定系統(tǒng)提供基準信號。在單片機中為其提供時鐘頻率。石英晶體振蕩器是利用石英晶體〔二氧化硅的結(jié)晶體〕的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片〔簡稱為晶片,它可以是正方形、矩形或圓形等〕,在它的兩個對應(yīng)面上涂敷銀層作為電極,在每個電極上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器,簡稱為石英晶體或晶體、晶振。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。只要在晶體振子板極上施加交變電壓,就會使晶片產(chǎn)生機械變形振動,此現(xiàn)象即所謂逆壓電效應(yīng)。當(dāng)外加電壓頻率等于晶體諧振器的固有頻率時,就會發(fā)生壓電諧振,從而導(dǎo)致機械變形的振幅突然增大。時鐘信號用來提供單片機片內(nèi)的各種微操作的時間基準,時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時,電路簡單,所得的時鐘信號對比穩(wěn)定,實際使用中常采用這種方式,外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反響元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器并產(chǎn)生振蕩時鐘脈沖。外接晶體以及電容C2和C3構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值為30pF左右,晶振頻率選11.0592MHz3.3LCD顯示密碼模塊的設(shè)計顯示模塊主要由LCD1602顯示屏組成,他顯示的是鍵盤輸入的密碼,以及密碼正確與錯誤的提示。當(dāng)輸入密碼時,出于安全性的考慮,顯示的密碼是有*號代替,為暗密。當(dāng)輸入六位密碼后按下確認鍵,系統(tǒng)會與存于ROM的密碼比照,假設(shè)密碼錯誤,顯示屏?xí)@示Error,假設(shè)密碼正確,顯示屏?xí)@示Right。3.3.1LCD1602簡介1〕1602功能介紹1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊它有假設(shè)干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊〔顯示字符和數(shù)字〕。2〕1602LCD采用標準的14腳〔無背光〕或16腳〔帶背光〕接口,各引腳接口說明如下表3-2所示:表3-2引腳功能說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極其引腳圖如以以下列圖3-2所示:圖3-2LCD1602引腳圖LCD存放器的選擇表3-3LCD存放器的選擇ER/WRS功能說明110寫入命令存放器111寫入數(shù)據(jù)存放器110讀取忙碌標志及RAM地址111讀取RAM數(shù)據(jù)0X1不動作3.3.2LCD1602液晶顯示模塊與單片機連接電路圖3-3LCD1602液晶顯示模塊與單片機連接電路4硬件系統(tǒng)設(shè)計4.1設(shè)計原理本設(shè)計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等局部組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進展各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進展比照,從而判斷密碼是否正確,然后控制引腳的上下電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當(dāng)然也可以用繼電器的常開觸點去控制電磁鐵吸合線圈。本系統(tǒng)共有兩局部構(gòu)成,即硬件局部與軟件局部。其中硬件局部由電源輸入局部、鍵盤輸入局部、密碼存儲局部、復(fù)位局部、晶振局部、顯示局部、報警局部、開鎖局部組成,軟件局部對應(yīng)的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、啟動程序、關(guān)閉程序、建功能程序、密碼設(shè)置程序、EEPROM讀寫程序和延時程序等組成。復(fù)位電路復(fù)位電路振蕩電路鍵盤電路開鎖電路STC89C52單片機顯示電路報警電路圖4-1組成原理4.2電源輸入電路三端集成穩(wěn)壓器LM7805和LM7905是作為固定輸出電壓的典型應(yīng)用。正常工作時,輸入、輸出電壓差為2--3V。電容C為輸入穩(wěn)定電容,其作用是減小紋波,消振、抑制高頻和脈沖干擾,它一般為0.1--1uF。電容C為輸出穩(wěn)定電容,其作用是改善負載的瞬態(tài)響應(yīng),它一般為1uF。使用三端穩(wěn)壓器時要根據(jù)輸出電流的大小選擇加散熱器,否則會由于過熱而無法工作到額定電流。圖4-2電源輸入電路4.3矩陣鍵盤由于本設(shè)計所用到的按鍵數(shù)量較多而不適合用獨立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的穿插點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設(shè)計中使用的這個4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比方清空顯示功能等。鍵盤的每個按鍵功能在程序設(shè)計中設(shè)置。其大體功能〔看鍵盤按鍵上的標記〕及與單片機引腳接法。圖4-3矩陣鍵盤4.4復(fù)位電路單片機復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開場工作,例如復(fù)位后PC=0000H,使單片機從第—個單元取指令。無論是在單片機剛開場接上電源時,還是斷電后或者發(fā)生故障后都要復(fù)位。在復(fù)位期間〔即RST為高電平期間〕,P0口為高組態(tài),P1-P3口輸出高電平;外部程序存儲器讀選通信號PSEN無效。地址鎖存信號ALE也為高電平。根據(jù)實際情況選擇如圖2-8所示的復(fù)位電路。該電路在最簡單的復(fù)位電路下增加了手動復(fù)位按鍵,在接通電源瞬間,電容C1上的電壓很小,復(fù)位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當(dāng)RST端的電壓小于某一數(shù)值后,CPU脫離復(fù)位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時間大于24個振蕩周期,CPU能夠可靠復(fù)位。增加手動復(fù)位按鍵是為了防止死機時無法可靠復(fù)位。當(dāng)復(fù)位按鍵按下后電容C1通過R5放電。當(dāng)電容C1放電完畢后,RST端的電位由R11與R15分壓比決定。由于R11<<R15因此RST為高電平,CPU處于復(fù)位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復(fù)位狀態(tài)。R11的作用在于限制按鍵按下瞬間電容C1的放電電流,防止產(chǎn)生火花,以保護按鍵觸電。圖4-4復(fù)位電路4.5晶振電路STC89C52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C1按以以下列圖所示方式連接。晶振、電容C2/C3及片內(nèi)與非門〔作為反響、放大元件〕構(gòu)成了電容三點式振蕩器,振蕩信號頻率與晶振頻率及電容C1、C2的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C2、C3取值范圍在30pF左右。根據(jù)實際情況,本設(shè)計中采用11.0592MHZ做系統(tǒng)的外部晶振。電容取值為33pF。圖4-5晶振電路4.6報警電路報警局部由陶瓷壓電發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當(dāng)有鍵按下時,“叮〞聲,每按一下,發(fā)聲一次,密碼正確時,不發(fā)聲直接開鎖,當(dāng)密碼輸入錯誤時,單片機的P3.3引腳為低電平,三極管T3導(dǎo)喇叭發(fā)出噪鳴聲報警。圖4-6報警電路4.7顯示電路LCD1602液晶顯示屏顯示。圖4-7顯示電路4.8開鎖電路通過單片機開鎖執(zhí)行機構(gòu),發(fā)光二極管D1發(fā)光以替代到達開鎖的目的。圖4-8開鎖電路開鎖原理:LED發(fā)光LED發(fā)光單片機微控制器STC89C52P1.0低電平返回NY密碼正確圖4-9開鎖原理4.9電路總體構(gòu)成在確定了選用什么型號的單片機后,就要確定在外圍電路,其外圍電路包括電源輸入局部、鍵盤輸入局部、復(fù)位局部、晶振局部、顯示局部、報警局部、開鎖局部組成,根據(jù)實際情況鍵盤輸入局部選擇4*4矩陣鍵盤,顯示局部選擇LCD1602液晶顯示屏來完成。本次設(shè)計的各大模塊在上述章節(jié)中已仔細介紹了,將各大模塊融合在一起后組成電子密碼鎖硬件電路,鍵盤輸入模塊和LCD1602液晶顯示屏顯示模塊是最主要的兩大模塊,鍵盤主要是完成密碼的輸入、修改密碼、消除密碼等等任務(wù)。而顯示模塊則是主要完成輸入密碼的顯示以及密碼輸入正確或者錯誤的提示。而剩余的就是報警模塊、開鎖模塊以及單片機的最小系統(tǒng)。開鎖顧名思義就是密碼輸入正確后翻開大門,而報警主要是為安全著想,當(dāng)有人非法入侵時便于抓住犯人。單片機最小系統(tǒng)則是單片機正常運行的保障??偟挠布娐啡鐖D4-10。圖4-10總電路圖5軟件程序設(shè)計電子密碼鎖的軟件設(shè)計是整個電子密碼鎖可靠安全運行的關(guān)鍵,密碼鎖軟件程序分為主程序、延時程序、LCD1602液晶顯示屏顯示程序、修改密碼程序、掃描鍵盤輸入程序、報警程序。密碼通過矩陣鍵盤輸入,并且在LCD1602液晶顯示屏上顯示,如果輸入密碼正確,則可以直接開鎖。如果不正確,并且3次以上輸入不正確,則啟動報警系統(tǒng),觸發(fā)蜂鳴器發(fā)聲。如果要修改密碼,則需要在輸入根基密碼判別正確后,輸入修改后的密碼,通過系統(tǒng)確認前方可修改密碼。為了完成上述任務(wù),在進展軟件設(shè)計時,通常把整個過程分成假設(shè)干個局部,每一局部叫做一個模塊。而本次設(shè)計分為四大模塊,分別是鍵盤輸入模塊、LCD1602液晶顯示屏顯示模塊、開鎖和報警模塊以及修改密碼模塊,通過主程序來實現(xiàn)控制。5.1主程序流程介紹主程序主要內(nèi)容是各程序模塊的調(diào)用,并利用各模塊進展電子密碼鎖功能的實現(xiàn),即是鍵盤輸入密碼并在LCD1602液晶顯示屏顯示密碼,當(dāng)密碼輸入完成后,單片時機將輸入進的密碼與原單片機內(nèi)部所儲存的密碼進展比照,如假設(shè)密碼正確,則代表電磁吸合器的發(fā)光二極管會發(fā)光,同時LCD1602液晶顯示屏?xí)@示出正確的密碼;如假設(shè)密碼錯誤,會啟動計數(shù)器計數(shù),當(dāng)錯誤次數(shù)超過三次時,報警系統(tǒng)會啟動即是蜂鳴器會發(fā)出報警聲,以提醒保安。流程圖如圖5-1所示。開場開場初始化次數(shù)加1輸入密碼密碼正確返回NYY開鎖程序開鎖N修改密碼碼次數(shù)>3報警程序修改程序YNNY圖5-1主程序流程5.2鍵盤模塊流程圖鍵盤輸入模塊主要包含鍵盤的掃描、延時去抖、找到鍵值以及返回鍵值。鍵盤掃描時循環(huán)的,程序編寫是會使其進入是循環(huán),這樣可以檢驗出是否有按鍵按下,如果無按鍵按下就會進入等待有按鍵按下的狀態(tài),如果有按鍵按下的話就進入延時去抖的步驟,這樣可以肯定確實定掃描到的按鍵是否被按下。經(jīng)過去抖之后就是確定按鍵的位置即是第幾行和第幾列,找到按鍵后,就是確定鍵值并返回按鍵值,每一次掃描到有鍵按下后,最后都要有釋放閉合按鍵的步驟,這是為了防止影響下一次鍵盤的掃描和按鍵值的讀取。流程圖如圖5-2所示鍵盤掃描鍵盤掃描返回鍵值閉合鍵釋放計算鍵值找到閉合鍵延時去抖有鍵閉合?YN圖5-2鍵盤模塊流程按鍵的消抖子程序所示:if(press_on!=0XF0)//--按鍵消抖〔時間自定〕 { delay(50); press_on=KEY_IO;}確定鍵值的子程序如下所示:switch(row) { case0xe0:row=0;break; case0xd0:row=1;break; case0xb0:row=2;break; case0x70:row=3;break; } switch(col) { case0x07:col=0;break; case0x0b:col=1;break; case0x0d:col=2;break; case0x0e:col=3;break; } recieve=key_value[row][col]; } 5.3顯示模塊流程圖LCD顯示模塊的軟件設(shè)計主要包含開場、初始化LCD、去除LCD、寫LCD四個過程。其中寫包含寫數(shù)據(jù)和寫字符。寫數(shù)據(jù)的局部程序://寫數(shù)(5位數(shù)據(jù))voidprintf_data(ucharrow,ucharcol,ucharcount,uintdat){ucharsh1,sh2,sh3,sh4,sh5;sh5=dat/10000; sh4=dat%10000/1000; sh3=dat%1000/100; sh2=dat%100/10; sh1=dat%10; write_adr(0x0c);switch(row) { case1:row=0x80;break; case2:row=0xc0;break; default:break; } write_adr(row+col-1); delay(500); if(count>=5) write_data(sh5+48); if(count>=4) write_data(sh4+48); if(count>=3) write_data(sh3+48); if(count>=2) write_data(sh2+48); if(count>=1) write_data(sh1+48);寫字符的小程序為://寫一段字符voidprintf_char(ucharrow,ucharcol,ucharInbuffer[31]){uchari; write_adr(0x0c); switch(row) { case1:row=0x80;break;}流程圖5-3如下:初始化LCD初始化LCD開場去除LCD寫LCD完畢圖5-3顯示模塊流程圖5.4修改密碼流程圖修改密碼模塊主要是在輸入密碼正確之后,按下14鍵即是修改密碼鍵就能進入修改密碼界面,其流程分為四個步驟,分別為按下14鍵并啟動定時、輸入修改的密碼、按下確認鍵11鍵、LCD的顯示。修改密碼的局部程序如下://改密碼voidch_word(void){ unsignedcharrecieve=0xff,b[10],j=0; LCD_CLR(); printf_char(1,1,"new_password%d"); while(recieve!=11) { recieve=keypad(); delay(10000); if(recieve<=9&&recieve>=0) { b[j]=recieve; printf_data(2,j+1,1,recieve); j++; } elseif(recieve==12) { if(j!=0) { a[j]='\0'; printf_char(2,j,"%d"); j--; } } 流程圖如圖5-4所示:按下14鍵按下14鍵啟動定時輸入密碼存入緩沖按下確認1111鍵對比密碼調(diào)用LED調(diào)用顯示圖5-4修改密碼流程圖5.5開鎖和報警模塊流程圖開鎖和報警模塊主要任務(wù)是把從鍵盤輸入到單片機的密碼和本身保存在單片機中的密碼進展比照,如果正確就開鎖,如果錯誤的話就進展計數(shù)并顯示在LCD液晶顯示屏上,當(dāng)輸入密碼的錯誤次數(shù)到達3次就進入報警模式,啟動蜂鳴器報警。其流程圖如圖5-5所示。圖5-5報警流程圖6電子密碼鎖的系統(tǒng)調(diào)試及仿真6.1硬件電路調(diào)試及結(jié)果分析硬件調(diào)試首先檢查電路板焊接是否有誤,檢查有是否出現(xiàn)虛焊、漏焊、線路短接、元器件引腳是否錯誤焊接等等問題,然后檢查電路中某些元器件是否起作用,最后利用一些小程序測試LCD1602是否完好無損。檢測單片機是否工作可通過觀察示波器顯示的波形是否衰減,或者利用萬用表測一下18,19腳的電壓,應(yīng)該有個2-3V就說明起振了,另外,ALE如果有信號或者有電壓也說明單片機工作了。我采用利用萬用表側(cè)18、19腳的電壓,其結(jié)果顯示為2.3V。檢測電路有無虛焊可用萬用表的二極管檔來檢測,當(dāng)把萬用表的紅黑兩表筆接觸在焊接線路的兩端后,萬用表發(fā)出聲音,則說明沒有虛焊。檢查電路是否短路也是利用同一原理。6.2軟件調(diào)試及功能分析軟件調(diào)試即是把已經(jīng)寫好的C語言程序載入到軟件調(diào)試工具,檢查軟件是否有設(shè)法錯誤,再根據(jù)軟件提示對本程序進展修改,直到?jīng)]有錯誤再生成單片機能運行的機器碼,再用51開發(fā)板或其它單片機寫入工具把機器碼寫入單片機進展實際的程序調(diào)試,根據(jù)實際情況再對程序的缺乏加以修改,直到滿足設(shè)計要求。本設(shè)計采用Proteus和KEIL軟件進展仿真、調(diào)試,首先在在Proteus軟件上進展硬件電路的描繪,其次在KEIL軟件編寫電子密碼鎖的源程序,源程序經(jīng)過匯編后產(chǎn)生Hex文件,最后將生成的目標文件添加到單片機中仿真調(diào)試。6.2.1調(diào)試過程首先翻開KEILC51主程序,新建工程,新建文本框?qū)懭氤绦?,保存,檢查是否有語法錯誤,經(jīng)反復(fù)檢查無誤后匯編,生成51單片機可執(zhí)行的HEX文件。然后用與51開發(fā)板相匹配的寫入軟件把HEX文件寫入單片機。圖6-1KEILc51調(diào)試介面圖6-2程序?qū)懭虢缑?.2.2仿真結(jié)果分析當(dāng)系統(tǒng)通電進入初始化狀態(tài)后,LCD顯示屏?xí)@示W(wǎng)elcome,結(jié)果如圖6-3所示。圖6-3系統(tǒng)初始化當(dāng)進入輸入密碼階段時,依次按下按鍵上的數(shù)字鍵1,2,3,4,5,6后,LCD顯示屏顯示如圖6-4所示。圖6-4輸入密碼階段仿真圖當(dāng)按下確定鍵11鍵后,顯示屏上顯示正確且二極管燈亮,表示密碼正確開門,如圖6-5所示。圖6-5輸入密碼正確時仿真圖按下確認鍵后,二極管不亮且顯示屏上顯示Error,表示密碼輸入錯誤,門的鎖不會翻開。如圖6-6所示。圖6-6輸入密碼錯誤仿真圖當(dāng)需要修改密碼時,只需按下14鍵即可進入到修改密碼界面,修改成功后顯示success,修改錯誤后顯示屏?xí)@示fail。圖6-7修改密碼仿真圖圖6-8修改失敗仿真圖6.3仿真全圖圖6-9仿真全圖7結(jié)論本次設(shè)計通過硬件電路設(shè)計、軟件編程、硬件調(diào)試、軟件調(diào)試以及系統(tǒng)調(diào)試完成了設(shè)計要求,到達了設(shè)計目的。本次設(shè)計最終的結(jié)果如下:電子密碼鎖通過鍵盤能成功進展輸入密碼;LCD液晶顯示屏上能顯示輸入的密碼;能判斷輸入的密碼是否正確并且能顯示判斷結(jié)果;能在密碼輸入正確后開門;能在密碼輸入錯誤次數(shù)到達三次以上后進展報警;能在開門后通過一按鍵對原有密碼進展更改;能用*代替顯示輸入的密碼數(shù)字,隱藏了密碼,這實現(xiàn)了密碼保護。但是在實現(xiàn)上述功能時,也存在許多缺乏。第一,在密碼輸入正確時除了要使代表電磁吸合器的發(fā)光二極管發(fā)光以外,還應(yīng)該加上語音模塊,提示門開,這樣更人性化一些。第二,密碼輸入錯誤次數(shù)小于三次時,也應(yīng)該采取措施提醒。第三,密碼修改局部,本次設(shè)計實現(xiàn)的不是很好,密碼能進展修改但是只能修改第一個密碼。第四,本次設(shè)計的電子密碼鎖,安全方面還可以提高進步。本設(shè)計中的報警系統(tǒng)只是一個簡單的系統(tǒng),要應(yīng)用于實際生活還需要進一步改良。電子鎖是信息化時代開展的產(chǎn)物,應(yīng)時而生,我相信隨著科技的不斷開展,將來的電子鎖一定更加完美,更加人性化,更加廉價,更加安全。本次設(shè)計中還有待完善的地方還很多。首先,修改密碼可進一步完善,實現(xiàn)有不管多少戶住戶和多少個密碼,都能修改密碼。其次,也是最重要的安全防問題,報警途徑很多,有視屏監(jiān)視和發(fā)出報警聲提醒值班的保安等等。未來,電子密碼鎖需要大面積占據(jù)市場首先必須要突破的就是安全問題,如果解決了這個問題,電子密碼鎖就能在鎖的行業(yè)所向披靡。最后本次設(shè)計還可以精進的地方就是輸入密碼錯誤時的處理方法。在輸入密碼錯誤次數(shù)在三次以內(nèi)時,也應(yīng)該采取措施。比方制止輸入三秒或者也用發(fā)聲模塊提醒,只要發(fā)聲頻率不一致就可區(qū)分。附錄:PCB布局:/******************************************************************************** 功能鍵 S6S15 數(shù)字鍵0-9 S16更改密碼 S17更改密碼完畢后確認 S18重試密碼、重新設(shè)定 S19關(guān)閉密碼鎖 初始密碼:000000 密碼位數(shù):6位 注意:掉電后,所設(shè)密碼會喪失,重新上點時,密碼恢復(fù)為原始的000000 與P1相連的8位發(fā)光LED點亮代表鎖被翻開;熄滅代表鎖被鎖上程序功能: 1、開鎖: 下載程序后,直接按六次S7〔即代表數(shù)字1〕,8位LED亮,鎖被翻開,輸入密碼時, 六位數(shù)碼管依次顯示小橫杠。 2、更改密碼: 只有當(dāng)開鎖〔LED亮〕后,該功能方可使用。 首先按下更改密碼鍵S16,然后設(shè)置相應(yīng)密碼,此時六位數(shù)碼管會顯示設(shè)置密碼對應(yīng) 的數(shù)字。最后設(shè)置完六位后,按下S17確認密碼更改,此后新密碼即生效。 3、重試密碼: 當(dāng)輸入密碼時,密碼輸錯后按下鍵S18,可重新輸入六位密碼。 當(dāng)設(shè)置密碼時,設(shè)置中途想更改密碼,也可按下此鍵重新設(shè)置。 4、關(guān)閉密碼鎖: 按下S19即可將翻開的密碼鎖關(guān)閉。推薦初級演示步驟:輸入原始密碼000000按下更改密碼按鍵S16按0到9設(shè)置密碼按S17 確認密碼更改按S18關(guān)閉密碼鎖輸入新的密碼翻開密碼鎖*******************************************************************************/#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharold1,old2,old3,old4,old5,old6;//原始密碼000000ucharnew1,new2,new3,new4,new5,new6;//每次MCU采集到的密碼輸入uchara=16,b=16,c=16,d=16,e=16,f=16;//送入數(shù)碼管顯示的變量ucharwei,key,temp;bitallow,genggai,ok,wanbi,retry,close; //各個狀態(tài)位sbitdula=P2^6;sbitwela=P2^7;sbitbeep=P2^3;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};voiddelay(unsignedchari){ ucharj,k;for(j=i;j>0;j--)for(k=125;k>0;k--);}voiddisplay(uchara,ucharb,ucharc,uchard,uchare,ucharf){dula=0;P0=table[a];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(5);P0=table[b];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);P0=table[c];dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);P0=table[d];dula=1;dula=0;P0=0xf7;wela=1;wela=0;delay(5);P0=table[e];dula=1;dula=0;P0=0xef;wela=1;wela=0;delay(5);P0=table[f];dula=1;dula=0;P0=0xdf;wela=1;wela=0;delay(5);}voidkeyscan(){{ P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){ temp=P3;switch(temp){case0xee:key=0; wei++;break;case0xde:key=1; wei++;break;case0xbe:key=2; wei++;break;case0x7e:key=3; wei++;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;}}P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xed:key=4; wei++;break;case0xdd:key=5; wei++;break;case0xbd:key=6; wei++;break;case0x7d:key=7; wei++;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;beep=0;}beep=1;}}P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;switch(temp){case0xeb:key=8; wei++;break;case0xdb:key=9; wei++;break;case0xbb:genggai=1; wei=0;break;case0x7b: if(allow)ok=1;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版工廠經(jīng)營理念轉(zhuǎn)讓合同3篇
- 2025年度新能源汽車動力電池回收利用合同范本4篇
- 2024食用菌種植基地環(huán)境保護與生態(tài)修復(fù)合同3篇
- 2024版美容院產(chǎn)品購銷合同
- 2025年度商業(yè)地產(chǎn)項目租賃收益分成合同范本4篇
- 編制加油站生產(chǎn)建設(shè)項目可行性研究報告編制說明
- 2025年綠色建筑裝修垃圾清運及節(jié)能減排合同2篇
- 2025年度個人樓房房買賣合同標準范本下載4篇
- 2025年社區(qū)商業(yè)綜合體商鋪租賃管理協(xié)議3篇
- 2025年版影視作品版權(quán)轉(zhuǎn)讓合同范本3篇
- 高考全國Ⅲ卷語文真題含答案
- 10kV架空線路專項施工方案
- OGSM戰(zhàn)略規(guī)劃框架:實現(xiàn)企業(yè)目標的系統(tǒng)化方法論
- 遼寧省大連市中山區(qū)2023-2024學(xué)年七年級下學(xué)期期末數(shù)學(xué)試題
- 2023年版《安寧療護實踐指南(試行)》解讀課件
- 2024年新課標高考化學(xué)試卷(適用黑龍江、遼寧、吉林地區(qū) 真題+答案)
- AQ6111-2023個體防護裝備安全管理規(guī)范
- 鈷酸鋰-安全技術(shù)說明書MSDS
- 江蘇省“大唐杯”全國大學(xué)生新一代信息通信技術(shù)大賽省賽題庫(含答案)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 如何做好談話筆錄
評論
0/150
提交評論