基于STC89C52單片機的電子密碼鎖(完整版)-附-仿真圖-原理圖_第1頁
基于STC89C52單片機的電子密碼鎖(完整版)-附-仿真圖-原理圖_第2頁
基于STC89C52單片機的電子密碼鎖(完整版)-附-仿真圖-原理圖_第3頁
基于STC89C52單片機的電子密碼鎖(完整版)-附-仿真圖-原理圖_第4頁
基于STC89C52單片機的電子密碼鎖(完整版)-附-仿真圖-原理圖_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

目錄1緒論1本設計的研究背景與研究目的1國內(nèi)外研究現(xiàn)狀22電子密碼鎖的總體設計方案3方案論證3方案一采用單片機控制方案3方案二采用數(shù)字電路控制方案4方案三采用EDA控制方案5方案比擬以及可行性53電子密碼鎖硬件電路的設計6中央控制模塊的設計6主控芯片STC89C52單片機的簡介6時鐘電路的設計7復位電路的設計8鍵盤輸入模塊的設計9矩陣鍵盤工作原理9單片機鍵盤掃描法10顯示密碼模塊的設計10簡介11液晶顯示模塊與單片機連接電路12開鎖模塊的設計13報警模塊的設計13硬件電路總體設計144電子密碼鎖的軟件設計15主程序流程介紹15鍵盤模塊流程圖16顯示模塊流程圖18修改密碼流程圖19開鎖和報警模塊流程圖205電子密碼鎖的系統(tǒng)調(diào)試及分析22硬件電路調(diào)試及結(jié)果分析22軟件調(diào)試及功能分析22調(diào)試過程22仿真結(jié)果分析24系統(tǒng)調(diào)試266結(jié)論及展望28結(jié)論28展望28謝辭29參考文獻30附錄32附1局部代碼32附2總電路圖401緒論本設計的研究背景與研究目的隨著人們生活水平的提高和社會科技的進步,鎖已開展到了密碼鎖、磁性鎖、電子鎖、激光鎖、聲控鎖等等。在傳統(tǒng)鑰匙的根底上,加了一組或多組密碼,不同聲音,不同磁場,不同聲波,不同光束光波,不同圖像?!踩缰讣y、眼底視網(wǎng)膜等〕來控制鎖的開啟。從而大大提高了鎖的平安性,使不法之徒無從下手,人們也就能對自身財產(chǎn)平安有了更多的保障。因此電子密碼防盜鎖作為防盜衛(wèi)士的作用日趨重要,而如何實現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機械鎖由于其構(gòu)造的簡單,被撬的事件屢見不鮮,而電子密碼防盜鎖用密碼代替鑰匙,不但省去了佩戴鑰匙的煩惱,也從根本上解決了普通門鎖保密性差的缺點。當今平安信息系統(tǒng)應用越來越廣泛,特別在保護機密、維護隱私和財產(chǎn)保護方面起到重大作用,而基于電子密碼鎖的平安系統(tǒng)是其中的組成局部,因此研究它具有重大的現(xiàn)實意義。單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講,一塊芯片就成了一臺計算機。隨著電子技術和計算機技術的飛速開展,單片機性能不斷完善,性價比顯著提高,技術日趨完善。由于單片機具有體積小、重量輕、價格廉價、功耗低、控制功能強及運算速度快等特點,因而在國民經(jīng)濟建設、軍事及家用電器等各個領域均得到了廣泛的應用。它主要是作為控制局部的核心部件。它是一種在線式實時控制計算機,在線式就是現(xiàn)場控制,需要的是有較強的抗干擾能力,較低的本錢,這也是和離線式計算機的〔比方家用PC〕的主要區(qū)別。單片機由運算器、控制器、存儲器、輸入輸出設備構(gòu)成。因為它體積小,通常都藏在被控機械的“肚子〞里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了。本設計利用單片機及附加器件實現(xiàn)數(shù)據(jù)傳送和控制算法,來完成某一實際功能,檢驗并提高同學對整體電路設計和把握能力,了解單片機系統(tǒng)設計流程,以及電路板的實際制作和調(diào)試能力。同時也加強對數(shù)字電路、單片機和微機原理等課程知識的實際應用能力,也為同類產(chǎn)品的進一步開展奠定理論和實踐根底。隨著人們對平安的重視和科技的開展,許多電子智能鎖已在國內(nèi)外相繼面世。但是這些產(chǎn)品的特點是針對特定的指紋和有效卡,只能適用于保密要求的箱、柜、門等。而且指紋識別器,假設在公共場所使用存在容易機械損壞,IC卡還存在容易喪失、損壞等特點。加上其本錢較高,一定程度上限制了這類產(chǎn)品的普及和推廣。電子鎖,由于其保密性高,使用靈活性好,平安系數(shù)高,受到了廣闊用戶的歡送。鑒于目前的技術水平與市場的接收程度,電子密碼鎖是這類電子防盜產(chǎn)品的主流。目前,在西方興旺國家,電子密碼鎖的技術相對先進,種類齊全,電子密碼鎖已被廣泛應用于智能門禁系統(tǒng)中,通過多種更加平安,更加可靠的技術實現(xiàn)大門的管理。在我國電子鎖整體水平尚處于國際上70年代左右,電子密碼鎖的本錢還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進國際先進水平,現(xiàn)國內(nèi)有幾個廠生產(chǎn)供給市場。但國內(nèi)自行研制開發(fā)的電子鎖,其市場結(jié)構(gòu)尚未形成,應用還不廣泛。國內(nèi)的不少企業(yè)也引進了世界上先進的技術,開展前景非??捎^。2電子密碼鎖的總體設計方案方案論證.1方案一采用單片機控制方案選用單片機STC89C52作為本設計的核心元件,利用單片機靈活的編程設計和豐富的IO端口,及其控制的準確性,實現(xiàn)根本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接LCD顯示器用于顯示作用??驁D如下列圖復位電路復位電路振蕩電路鍵盤電路開鎖電路AT9C51單片機報警電路顯示電路圖系統(tǒng)框圖1)中央控制局部采用STCT89C52單片機,該型單片機有8KB的ROM,512B的RAM,5個中斷源,3個16位定時器/計數(shù)器。2)顯示局部采用1602LCD顯示屏組成顯示電路來提示信息。當輸入密碼時,只顯示*,當密碼位數(shù)輸入完畢按下確認鍵之后,對輸入的密碼進行比擬,正確就發(fā)出‘叮當’聲,同時門翻開;假設密碼輸入不正確時顯示錯誤,并計次錄數(shù),當次數(shù)超過三次就觸動蜂鳴器發(fā)出報警聲。3)鍵盤輸入局部本設計所采用鍵盤為4×4行列式。每一條水平線〔行線〕與垂直線〔列線〕的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要4條行線和4條列線,即可組成4×4個按鍵的鍵盤。在行線所接的單片機4個I/O口作為輸出端,而列線所接的I/O口那么作為輸入端。當按鍵沒有被按下時所有的輸出端都是高電平,代表無鍵按下。一旦有鍵按下,那么輸入線就會被拉低,這樣通過讀入輸入線的狀態(tài)就可知是否有鍵按下。按鍵功能分配分為數(shù)字鍵和功能鍵,數(shù)字鍵主要是用于密碼輸入,功能鍵主要是用于修改密碼、確認密碼、刪除密碼等。4)報警電路局部當輸入密碼錯誤超過3次,就會觸動報警電路中蜂鳴器。5〕開鎖電路局部用發(fā)光二極管代替開鎖的電路,發(fā)光表示開鎖。方案二采用數(shù)字電路控制方案用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,假設按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過10秒〔一般情況下,用戶不會超過10秒,假設用戶覺得不便,還可以修改〕電路將報警20秒,假設電路連續(xù)報警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作。電路由兩大局部組成:密碼鎖電路和備用電源(UPS),其中設置UPS電源是為了防止因為停電造成的密碼鎖電路失效,使用戶免遭麻煩。密碼鎖電路包含:鍵盤輸入、密碼修改、密碼檢測、開鎖電路、執(zhí)行電路、報警電路、鍵盤輸入次數(shù)鎖定電路。電路框圖如下圖。密碼修改電路密碼修改電路鍵盤輸入電路報警電路開鎖電路執(zhí)行電路密碼校驗電路圖2.2密碼鎖電路2.1.3方案三采用EDA控制方案1〕整體結(jié)構(gòu)設計電子密碼鎖包括鍵盤控制、密碼設置和報警提示三大功能模塊。2〕硬件描述語言VHDL描述電路首先在適宜的路徑下建立本設計的文件夾。然后用VHDL語言編輯。最后仿真測試及編程下載配置。方案比擬以及可行性方案一采用基于單片機實現(xiàn)的電子密碼鎖,其中硬件電路設計具有按鍵有效提示、輸入錯誤提示、控制開鎖電平、控制報警電路、修改密碼電路等多種功能。密碼鎖內(nèi)部的單片機是核心處理設備,單片機有體積小、質(zhì)量輕、價格廉價諸多優(yōu)點。單片機軟件局部軟件的設計主要是51單片機的程序編寫且單片機是靠程序運行的,如果需要修改只需要修改程序,不需要將整個硬件電路做整修,這不僅以節(jié)約資源而且可以節(jié)約時間,提高工作效率。因為通過不同的程序可以實現(xiàn)不同的功能,尤其是特殊的獨特的一些功能。這是別的器件需要費很大力氣才能做到的,有些那么是花大力氣也很難做到的,但是單片機卻可以輕松解決。通過編寫的程序可以實現(xiàn)高智能,高效率,以及高可靠性,比起數(shù)電中邏輯器件這個優(yōu)點顯而易見,因此方案一比方案二適宜。比照方案三,雖然都可通過編程來實現(xiàn)各種功能,但是單片機是軟件編程,而EDA技術是在軟件平臺下,用硬件描述語言VHDL來實現(xiàn)的。設計者在EDA軟件平臺上,用硬件描述語言VHDL完成設計文件。對于我個人來說,EDA方面的知識有限,不太會運用,因此我個人不選擇這個方案。綜上,本次設計最優(yōu)選擇為方案一即采用AT89C51為核心的單片機控制,其方案的可行性如下:單片機價格實惠,因而畢業(yè)設計本錢不高。單片機型號、種類多,在市場上容易購置。電路的安裝和調(diào)試都比擬容易方便,比擬易于實現(xiàn)。3電子密碼鎖硬件電路的設計本設計主要由中央控制模塊、鍵盤輸入模塊、LCD顯示密碼模塊、開鎖電路模塊、蜂鳴器報警電路模塊五大模塊組成。中央控制模塊的設計中央控制主要由STC89C52單片機構(gòu)成,輔以復位電路和時鐘電路。主控芯片STC89C52單片機的簡介1〕STC89C52單片機的主要特性如下:增強型8051單片機,6時鐘/機器周期和12時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051。用戶應用程序空間為8K字節(jié),片上集成512字節(jié)RAM。通用I/O口〔32個〕,P1/P2/P3/P4是準雙向口/電阻上拉,P0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。2〕STC89C52RC引腳功能說明:VCC〔40引腳〕:電源電壓VSS〔20引腳〕:接地,39~32引腳〕:P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負載,對端口P0寫入每個引腳能驅(qū)動寫入“1”時,可以作為高阻抗輸入。P1端口〔P1.0~P1.7,1~8引腳〕:P1口是一個內(nèi)部帶上拉電阻的8位雙向I/O口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流。P2端口〔P2.0~P2.7,21~28引腳〕:P2口是一個內(nèi)部帶上拉電阻的8位雙向I/O端口。P2作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流〔I〕。P3端口〔P3.0~P3.7,10~17引腳〕:P3口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。RST〔9引腳〕:復位輸入,當輸入連續(xù)兩個機器周期以上高電平時為有效,用來完成單片機的復位初始化操作。ALE/ROG〔30引腳〕地址鎖存控制信號:〔ALE〕是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。圖STC單片機管腳圖時鐘電路的設計時鐘信號用來提供單片機片內(nèi)的各種微操作的時間基準,時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時,電路簡單,所得的時鐘信號比擬穩(wěn)定,實際使用中常采用這種方式,如圖2-2所示在其外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反應元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器并產(chǎn)生振蕩時鐘脈沖。圖3.1.2中外接晶體以及電容C2和C3構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值為30pF左右,晶振頻率選11.0592MHz圖3.2晶振電路復位電路的設計單片機在啟動時都需要復位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。89系列單片機的復位信號是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當系統(tǒng)處于正常工作狀態(tài)時,且振蕩器穩(wěn)定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,那么CPU就可以響應并將系統(tǒng)復位。單片機系統(tǒng)的復位方式有:手動按鈕復位和上電復位,。1〕手動按鈕復位手動按鈕復位需要人為在復位輸入端RST上參加高電平〔圖1〕。一般采用的方法是在RST端和正電源VCC之間接一個按鈕。當人為按下按鈕時,那么VCC的+5V電平就會直接加到RST端。手動按鈕復位的電路如所示。由于人的動作再快也會使按鈕保持接通達數(shù)十毫秒,所以,完全能夠滿足復位的時間要求。2〕上電復位上電復位電路只要在RST復位輸入引腳上接電容至VCC端,下接一個電阻到地即可。對于CMOS型單片機,由于在RST內(nèi)部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1?F。上電復位的工作過程是在加電時,復位電路通過電容加給RST端一個短暫的高電平信號,此高電平信號隨著VCC對電容的充電過程而逐漸回落,即RST端的高電平持續(xù)時間取決于電容的充電時間。為了保證系統(tǒng)能夠可靠地復位,RST端的高電平信號必須維持足夠長的時間。上電時,VCC的上升時間約為10ms,而起振蕩器的起時間取決于振蕩頻率,如晶振頻率為10MHz,起振時間為1ms;晶振頻率為1MHz,起振時間那么為10ms。在圖2的復位電路中,當VCC掉電時,必然會使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個負電壓將不會對器件產(chǎn)生損害。另外,在復位期間,端口引腳處于隨機狀態(tài),復位后,系統(tǒng)將端口置為全“l(fā)〞態(tài)。如果系統(tǒng)在上電時得不到有效的復位,那么程序計數(shù)器PC將得不到一個適宜的初值,因此,CPU可能會從一個未被定義的位置開始執(zhí)行程序。圖3.3手動按鈕復位電路鍵盤輸入模塊的設計矩陣鍵盤工作原理矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線,組成鍵盤的。在行線和列線的每一個交叉點上,設置一個按鍵。這樣鍵盤中按鍵的個數(shù)是4×4個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機系統(tǒng)中I/O口的利用率。行列式鍵盤的工作方式是先利用列線發(fā)送掃描字,然后讀取行線的狀態(tài),查看是否有按鍵按下。鍵盤局部提供一種掃描的工作方式能對鍵盤不斷掃描、自動消抖、自動識別按下的鍵,并給出編碼。在顯示局部,它可以為發(fā)光二極管、熒光管及其他顯示器提供按掃描方式工作的顯示接口,而且為顯示器提供多路復用信號,可以顯示多達16位的字符或數(shù)字。鍵盤中有無按鍵按下是由列線送入全掃描字、行線讀入行線狀態(tài)來判斷的,其方法是由列線逐列置低電平后,檢查行輸入狀態(tài)來判斷,其方法是依次給列線送低電平,然后檢查所有行線狀態(tài),如果全為1,那么所按下的鍵不在此列,如果不全為1,那么所按下的鍵必在此列,而且是在與0電平線相交的交點上的那個鍵。單片機鍵盤掃描法掃描法是在判定有鍵按下后逐列果行〔或列〕的狀態(tài)出現(xiàn)非全1狀態(tài),如果〔或列〕的狀態(tài)出現(xiàn)非全1狀態(tài),這時0狀態(tài)的行、列交點的鍵就是所按下的鍵。掃描法的特點是逐行〔或逐列〕掃描查詢,這時相應行〔或列〕應有上拉電阻接高電平。行列式鍵盤掃描程序就是采用掃描法來確定哪個鍵按下的。確定矩陣式鍵盤上哪個鍵被按下時運用掃描法,又稱為逐行〔或列〕掃描查詢法,是一種最常用的按鍵識別方法,過程如下:1〕判斷鍵盤中有無鍵按下,將全部行線Y0~Y3置為低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,那么表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。假設所有列線,均為高電平,那么鍵盤中無鍵按下。2〕判斷閉合鍵所在的位置,在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為為低電平,即在置某根行線為低電平時,其他線為高電平,在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài),假設某列為那么該列線與置為低電平的行線交叉處的按鈕就是閉合的按鍵。圖3.4矩陣鍵盤電路與單片機連接圖LCD顯示密碼模塊的設計顯示模塊主要由LCD1602顯示屏組成,他顯示的是鍵盤輸入的密碼,以及密碼正確與錯誤的提示。當輸入密碼時,出于平安性的考慮,顯示的密碼是有*號代替,為暗密。當輸入六位密碼后按下確認鍵,系統(tǒng)會與存于ROM的密碼比照,假設密碼錯誤,顯示屏會顯示Error,假設密碼正確,顯示屏會顯示Right。LCD1602簡介1〕1602功能介紹1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊它有假設干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊〔顯示字符和數(shù)字〕。2〕1602LCD采用標準的14腳〔無背光〕或16腳〔帶背光〕接口,各引腳接口說明如下表3.1所示:引腳功能說明編號符號引腳說明編號符號引腳說明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.5LCD1602引腳圖3)LCD存放器的選擇LCD存放器的選擇ER/WRS功能說明110寫入命令存放器111寫入數(shù)據(jù)存放器110讀取忙碌標志及RAM地址111讀取RAM數(shù)據(jù)0X1不動作LCD1602液晶顯示模塊與單片機連接電路圖連接電路開鎖模塊的設計通過單片機送給開鎖執(zhí)行機構(gòu),電路驅(qū)動原本是利用電磁鎖吸合原理來進行開鎖的的。本設計為節(jié)約資源,通過P3.0接一個發(fā)光二極管作為電磁閥線圈,當發(fā)光二級管亮那么表示實現(xiàn),密碼正確門開,假設二極管不亮那么表示輸入的密碼不正確,門不開,其連接電路如圖3.7所示。圖開鎖電路報警模塊的設計報警模塊由蜂鳴器和單片機組成。選擇一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要100mA驅(qū)動電流。蜂鳴器電路如下圖。當89C51的電平時,蜂鳴器產(chǎn)生蜂鳴音,89C51輸出為低電平時,蜂鳴器不發(fā)聲,其連接電路如圖3.5所示。圖報警電路硬件電路總體設計本次設計的各大模塊在上述章節(jié)中已仔細介紹了,將各大模塊融合在一起后組成電子密碼鎖硬件電路,鍵盤輸入模塊和LCD顯示模塊是最主要的兩大模塊,鍵盤主要是完成密碼的輸入、修改密碼、消除密碼等等任務。而顯示模塊那么是主要完成輸入密碼的顯示以及密碼輸入正確或者錯誤的提示。而剩余的就是報警模塊、開鎖模塊以及單片機的最小系統(tǒng)。開鎖顧名思義就是密碼輸入正確后翻開大門,而報警主要是為平安著想,當有人非法入侵時便于抓住犯人。單片機最小系統(tǒng)那么是單片機正常運行的保障。總的硬件電路如下圖。圖3.9總的硬件電路4電子密碼鎖的軟件設計電子密碼鎖的軟件設計是整個電子密碼鎖可靠平安運行的關鍵,密碼鎖軟件程序分為主程序、延時子程序、LCD顯示子程序、修改密碼子程序、掃描鍵盤輸入子程序、報警子程序。密碼通過矩陣鍵盤輸入,并且在液晶顯示屏上顯示,如果輸入密碼正確,那么可以直接開鎖。如果不正確,并且3次以上輸入不正確,那么啟動報警系統(tǒng),觸發(fā)蜂鳴器發(fā)聲。如果要修改密碼,那么需要在輸入根底密碼判別正確后,輸入修改后的密碼,通過系統(tǒng)確認前方可修改密碼。為了完成上述任務,在進行軟件設計時,通常把整個過程分成假設干個局部,每一局部叫做一個模塊。而本次設計分為四大模塊,分別是鍵盤輸入模塊、LCD顯示模塊、開鎖和報警模塊以及修改密碼模塊,通過主程序來實現(xiàn)控制。主程序流程介紹主程序主要內(nèi)容是各子程序模塊的調(diào)用,并利用各模塊進行電子密碼鎖功能的實現(xiàn),即是鍵盤輸入密碼并在LCD液晶顯示屏上顯示密碼,當密碼輸入完成后,單片時機將輸入進的密碼與原單片機內(nèi)部所儲存的密碼進行比照,如假設密碼正確,那么代表電磁吸合器的發(fā)光二極管會顯示紅色,同時LCD液晶顯示屏會顯示出right;如假設密碼錯誤,會啟動計數(shù)器計數(shù),當錯誤次數(shù)超過三次時,報警系統(tǒng)會啟動即是蜂鳴器會發(fā)出報警聲,以提醒保安。流程圖如下圖。開始開始初始化有鍵按下?調(diào)用顯示啟動定時識別按鍵按鍵數(shù)=6?超時?比擬密碼開門結(jié)束自動去除<3次?報警NNYYYYNN圖4.1主程序流程圖4.2鍵盤模塊流程圖鍵盤輸入模塊主要包含鍵盤的掃描、延時去抖、找到鍵值以及返回鍵值。鍵盤掃描時循環(huán)的,程序編寫是會使其進入是循環(huán),這樣可以檢驗出是否有按鍵按下,如果無按鍵按下就會進入等待有按鍵按下的狀態(tài),如果有按鍵按下的話就進入延時去抖的步驟,這樣可以肯定確實定掃描到的按鍵是否被按下。經(jīng)過去抖之后就是確定按鍵的位置即是第幾行和第幾列,找到按鍵后,就是確定鍵值并返回按鍵值,每一次掃描到有鍵按下后,最后都要有釋放閉合按鍵的步驟,這是為了防止影響下一次鍵盤的掃描和按鍵值的讀取。流程圖如下圖。鍵盤掃描鍵盤掃描返回鍵值閉合鍵釋放計算鍵值找到閉合鍵延時去抖有鍵閉合?YN圖4.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]; } 4.3顯示模塊流程圖LCD顯示模塊的軟件設計主要包含開始、初始化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;流程圖如下圖:初始化LCD初始化LCD開始去除LCD寫LCD結(jié)束圖4.3LCD顯示流程圖修改密碼流程圖修改密碼模塊主要是在輸入密碼正確之后,按下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--; } } 流程圖如下圖:按下14鍵按下14鍵啟動定時輸入密碼存入緩沖按下確認1111鍵比擬密碼調(diào)用LED調(diào)用顯示圖修改密碼流程圖開鎖和報警模塊流程圖開鎖和報警模塊主要任務是把從鍵盤輸入到單片機的密碼和本身保存在單片機中的密碼進行比照,如果正確就開鎖,如果錯誤的話就進行計數(shù)并顯示在LCD液晶顯示屏上,當輸入密碼的錯誤次數(shù)到達3所示。圖報警流程圖5電子密碼鎖的系統(tǒng)調(diào)試及分析5.1硬件電路調(diào)試及結(jié)果分析硬件調(diào)試首先檢查電路板焊接是否有誤,檢查有是否出現(xiàn)虛焊、漏焊、線路短接、元器件引腳是否錯誤焊接等等問題,然后檢查電路中某些元器件是否起作用,最后利用一些小程序測試LCD1602是否完好無損。檢測單片機是否工作可通過觀察示波器顯示的波形是否衰減,或者利用萬用表測一下18,19腳的電壓,應該有個2-3V就說明起振了,另外,ALE如果有信號或者有電壓也說明單片機工作了。我采用利用萬用表側(cè)18、19腳的電壓,其結(jié)果顯示為2.3V。檢測電路有無虛焊可用萬用表的二極管檔來檢測,當把萬用表的紅黑兩表筆接觸在焊接線路的兩端后,萬用表發(fā)出聲音,那么說明沒有虛焊。檢查電路是否短路也是利用同一原理。軟件調(diào)試及功能分析軟件調(diào)試即是把已經(jīng)寫好的C語言程序載入到軟件調(diào)試工具,檢查軟件是否有設法錯誤,再根據(jù)軟件提示對本程序進行修改,直到?jīng)]有錯誤再生成單片機能運行的機器碼,再用51開發(fā)板或其它單片機寫入工具把機器碼寫入單片機進行實際的程序調(diào)試,根據(jù)實際情況再對程序的缺乏加以修改,直到滿足設計要求。本設計采用Proteus和KEIL軟件進行仿真、調(diào)試,首先在在Proteus軟件上進行硬件電路的描繪,其次在KEIL軟件編寫電子密碼鎖的源程序,源程序經(jīng)過匯編后產(chǎn)生Hex文件,最后將生成的目標文件添加到單片機中仿真調(diào)試。調(diào)試過程首先翻開KEILC51主程序,新建工程,新建文本框?qū)懭氤绦?,保存,檢查是否有語法錯誤,經(jīng)反復檢查無誤后匯編,生成51單片機可執(zhí)行的HEX文件。然后用與51開發(fā)板相匹配的寫入軟件把HEX文件寫入單片機。圖KEILc51調(diào)試介面圖程序?qū)懭虢缑娣抡娼Y(jié)果分析當系統(tǒng)通電進入初始化狀態(tài)后,LCD顯示屏會顯示W(wǎng)elcome,結(jié)果如下圖。圖系統(tǒng)初始化當進入輸入密碼階段時,依次按下按鍵上的數(shù)字鍵1,2,3,4,5,6后,LCD顯示屏顯示如圖。圖輸入密碼階段仿真圖當按下確定鍵11鍵后,顯示屏上顯示正確且二極管燈亮,表示密碼正確開門,如下圖。圖5.5輸入密碼正確時仿真圖按下確認鍵后,二極管不亮且顯示屏上顯示Error,表示密碼輸入錯誤,門的鎖不會翻開。如下圖。圖輸入密碼錯誤仿真圖當需要修改密碼時,只需按下14鍵即可進入到修改密碼界面,修改成功后顯示success,修改錯誤后顯示屏會顯示fail。圖修改密碼仿真圖圖修改失敗仿真圖系統(tǒng)調(diào)試即是將源程序在KEIL軟件里運行產(chǎn)生的可執(zhí)行文件HEX寫入到單片機中,然后通電初始化,檢查是否能實現(xiàn)仿真中到達的效果。如果都無誤寫入程序后還是有問題就要檢查程序是否有問題。其結(jié)果分析如下所示:單片機寫入程序后并通電初始化后,LCD顯示屏顯示welcome如圖。圖初始化硬件電路當通過4*4矩陣鍵盤輸入密碼且密碼正確后,LCD顯示屏顯示right如下圖。圖密碼正確界面當通過4*4矩陣鍵盤輸入密碼且密碼錯誤后,LCD顯示屏顯示error以及輸入錯誤的次數(shù),如所示。圖密碼錯誤界面當用戶需要修改密碼時,按下14鍵即可進入修改密碼界面,LCD顯示屏顯示new-password如所示。圖修改密碼界面6結(jié)論及展望結(jié)論本次設計通過硬件電路設計、軟件編程、硬件調(diào)試、軟件調(diào)試以及系統(tǒng)調(diào)試完成了設計要求,到達了設計目的。本次設計最終的結(jié)果如下:電子密碼鎖通過鍵盤能成功進行輸入密碼;LCD液晶顯示屏上能顯示輸入的密碼;能判斷輸入的密碼是否正確并且能顯示判斷結(jié)果;能在密碼輸入正確后開門;能在密碼輸入錯誤次數(shù)到達三次以上后進行報警;能在開門后通過一按鍵對原有密碼進行更改;能用*代替顯示輸入的密碼數(shù)字,隱藏了密碼,這實現(xiàn)了密碼保護。但是在實現(xiàn)上述功能時,也存在許多缺乏。第一,在密碼輸入正確時除了要使代表電磁吸合器的發(fā)光二極管發(fā)光以外,還應該加上語音模塊,提示門開,這樣更人性化一些。第二,密碼輸入錯誤次數(shù)小于三次時,也應該采取措施提醒。第三,密碼修改局部,本次設計實現(xiàn)的不是很好,密碼能進行修改但是只能修改第一個密碼。第四,本次設計的電子密碼鎖,平安方面還可以提高進步。本設計中的報警系統(tǒng)只是一個簡單的系統(tǒng),要應用于實際生活還需要進一步改良。展望電子鎖是信息化時代開展的產(chǎn)物,應時而生,我相信隨著科技的不斷開展,將來的電子鎖一定更加完美,更加人性化,更加廉價,更加平安。本次設計中還有待完善的地方還很多。首先,修改密碼可進一步完善,實現(xiàn)有不管多少戶住戶和多少個密碼,都能修改密碼。其次,也是最重要的平安防問題,報警途徑很多,有視屏監(jiān)視和發(fā)出報警聲提醒值班的保安等等。未來,電子密碼鎖需要大面積占據(jù)市場首先必須要突破的就是平安問題,如果解決了這個問題,電子密碼鎖就能在鎖的行業(yè)所向披靡。最后本次設計還可以精進的地方就是輸入密碼錯誤時的處理方法。在輸入密碼錯誤次數(shù)在三次以內(nèi)時,也應該采取措施。比方禁止輸入三秒或者也用發(fā)聲模塊提醒,只要發(fā)聲頻率不一致就可區(qū)分。謝辭本次設計題目是在和我的指導老師孫曉玲老師交流后定下的,選此題原因在于雖然電子密碼鎖在之前就已近在市場上出現(xiàn),但是始終沒有廣泛應用到人們的日常生活中,因此電子密碼鎖就具有繼續(xù)研究的必要。所以在和孫老師商議過后,我就選擇了電子密碼鎖這個設計題目。從前期努力查找資料,到中期設計思路的討論和修改,及最后的反復斟酌,我都無比的感謝我的指導老師孫老師。她在此期間對我的幫助是我能及時準確完成畢業(yè)設計任務的必要條件。在硬件調(diào)試和軟件調(diào)試的過程中,我遇到了相當多的困難,而幫助我解決困難的同學是我必須要要感謝的。幫助我編寫程序并進行調(diào)試的彭同學,在我對某些程序一籌莫展的時候,伸出了援救之手,在編寫程序過程中少走了許多彎路,對于他給予我的幫助,我真心的表示感謝。再來就是幫助我進行硬件調(diào)試的徐同學和胡同學,他們在我電路板焊接好后,但是未能成功實現(xiàn)電子密碼鎖功能的時候,及時伸出了援救之手,把我從無助、迷茫中解救出來,最終完美的完成畢業(yè)設計,對大學四年畫上了圓滿的句號。在論文的不斷修改中孫老師總是認真仔細的幫助我檢查并修改論文,使我的論文不斷完善。再次對您表示感謝,師恩偉大,無以回報。在這里還要深深的對您說上一句抱歉,因為我的懶散和懈怠,令您費盡苦心并且?guī)捉W詈笠兄x的是電信院所有的老師與領導,我永遠都不會忘記你們的良苦用心以及諄諄教誨。參考文獻[1]王千.實用電子電路大全[M].電子工業(yè)出版社,2004,28-36[2]彭為.單片機典型系統(tǒng)設計實例精講[M].電子工業(yè)出版社,2006,69-88[3]張榮.基于單片機的智能系統(tǒng)設計與實現(xiàn)[M].電子工業(yè)出版社,2005,35-38[4]朱勇.單片機原理與應用技術[M].清華大學出版社,2006,14-16[5]潘永雄.新編單片機原理與應用[M].西安電子科技大學出版社,2003,78-86[6]葉啟明.單片機制作的新型平安密碼鎖[J].家庭電子,2005,(10):[7]郭海英.基于單片機的電子平安密碼鎖的設計[M].現(xiàn)代電子技術,2005,(13)[8]李明喜.新型電子密碼鎖的設計[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2004,(03):[9]彭為.單片機典型系統(tǒng)設計實例精講[M].北京:電子工業(yè)出版社,2006,35-38[108L-8AC,2006,(01)[11]WirelessWorld,1998,42-45[12]石文軒,宋薇.基于單片機MCS一51的智能密碼鎖設計[J].武漢工程職業(yè)技術學院學報,2004,(01):76-35[13]祖龍起,劉仁杰.一種新型可編程密碼鎖[J].大連輕工業(yè)學院學報,2002,(01):54-57[14]葉啟明.單片機制作的新型平安密碼鎖[J].家庭電子,2005,(10):98-111[15]郭海英.基于單片機的電子平安密碼鎖的設計[M].現(xiàn)代電子技術,2005,(13),76-96[16]李明喜.新型電子密碼鎖的設計[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2004,(03):45-66[17]董繼成.一種新型平安的單片機密碼鎖[J].電子技術,2004,(03):122-134[18]R.Dye.VisualObject-OrientatedProgramming[J].Dr.DobbsMacintoshJournal,1991,56(1):213-234[19]李朝青.單片機原理及接口技術(簡明修訂版)[M].北京:北京航空航天大學出版社,1998[20]李全利.單片機原理及接口技術[M].高等教育出版社,2003[21]PROTEL99SE電路設計與制板[M].機械工業(yè)出版社,200722]楊將新,李華軍,劉到駿等.單片機程序設計及應用〔從根底到實踐〕[J].電子工業(yè)出版社,2006[23]StevenF.Barrett.DaneilJ.Pack.EmbeddedSystem[M].北京:電子工業(yè)出版社,2006[24]周立功.LPC900系列Flash單片機應用技術[J].北京航空航天大學出版社,2004[25]黃智偉.全國大學生電子設計競賽訓練教程[M].北京:電子工業(yè)出版社,2005附錄附1局部代碼#definekey_dataP1codeunsignedcharkey_value[4][4]={1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16};//--鍵值初始化〔可自行賦予鍵值〕ucharkeypad(void){ucharrow,col; ucharrecieve=0xff; key_data=0XF0; delay(100); if(key_data!=0xf0) { delay(100); if(key_data!=0xf0) row=key_data; key_data=0x0f; delay(10); col=key_data; 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]; } returnrecieve;}#include"reg51.h"#include"lcd1602.c"#include"keydriver.c"sbitP3_0=P3^0;sbitP3_3=P3^3;//sbitP3_0=P3^0;unsignedcharcount,i;unsignedchara[10];unsignedcharpassword[4][10]={1,2,3,4,5,6,7,8,9,0, 2,4,5,6,7,8,2,3,4,7, 4,5,6,3,2,1,1,7,8,9, 0,9,8,7,6,5,4,3,2,1};//報告結(jié)果voidreport(unsignedcharflag){ a[10]=0; if(flag==0) { printf_char(1,10,"right%d"); P3_0=0; delay(60000);delay(60000); P3_0=1; LCD_CLR();} else { printf_char(1,10,"error%d");if(count>=3) P3_3=1; delay(60000);delay(60000); P3_3=0; LCD_CLR(); }}//回刪鍵voiddel(void){ if(i==0) return; else { a[i]='\0'; printf_char(2,i,"%d"); i--; } }//改密碼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--; } } } LCD_CLR(); if(j==6) { for(j=0;j<6;j++) password[0][j]=b[j]; printf_char(1,1,"success%d"); } else printf_char(1,1,"fail%d"); delay(60000);delay(60000); LCD_CLR(); }//功能voidmenu(void){ //unsignedcharrecieve; unsignedcharnumber=0; unsignedcharkey_value=100; unsignedcharERROR=3; unsignedcharj=0; for(;;) { number=keypad(); key_value=number; while(number!=0XFF) number=keypad(); printf_char(1,1,"welcome%d"); if(key_value<=9&&key_value>=0&&i<6) { a[i]=key_value; printf_char(2,i+1,"*%d"); i++; } elseif(key_value==11) { for(i=0;i<6;i++) { if(a[i]!=password[0][i]&&a[i]!=password[1][i]&&a[i]!=password[2][i]&&a[i]!=password[3][i]) { ERROR=1; count++; break; } else { ERROR=0; count=0; } } i=0; report(ERROR); } elseif(key_value==13) { LCD_CLR(); a[10]=0; } elseif(key_value==12)del(); elseif(key_value==14) { ch_word(); } }}voidmain(void){ LCD_CLR(); LCD_init(); while(1) menu();}/********************************************************液晶顯示器說明1、8位傳輸數(shù)據(jù)LCD_DATA=P02、控制端口RS=P2^0RW=P2^1 EN=P2^2********************************************************//********************************************************函數(shù)說明1、LCD_init();//初始化2、LCD_CLR();//清屏函數(shù)3、printf_dat(ucharrow,ucharcol,ucharcount,uintdat)//在第row行第col位開始顯示count個數(shù)據(jù)〔dat〕 4、printf_char(ucharrow,ucharcol,ucharInbuffer[31])//在第row行第col位開始顯示字符串Inbuffer[] ********************************************************/#include<reg51.H>#defineucharunsignedchar#defineuintunsignedint//********************************************************////1602所用端口 *////********************************************************//#defineLCD_DATAP0//1602數(shù)據(jù)端口sbitRS=P2^7;sb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論