基于LCD1602顯示的電子密碼鎖設(shè)計(共32頁)_第1頁
基于LCD1602顯示的電子密碼鎖設(shè)計(共32頁)_第2頁
基于LCD1602顯示的電子密碼鎖設(shè)計(共32頁)_第3頁
基于LCD1602顯示的電子密碼鎖設(shè)計(共32頁)_第4頁
基于LCD1602顯示的電子密碼鎖設(shè)計(共32頁)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設(shè)計 題目 基于LCD1602顯示的電子密碼鎖設(shè)計學院名稱 電氣工程學院指導老師 朱衛(wèi)華 班 級 電子信息工程01班學 號 學生姓名 周后景 2013年1月目 錄 1. 緒論-3 1.1 引言-3 1.2 摘要-42. 總體設(shè)計方案-5 2.1 設(shè)計思路-5 2.2 方案確立-5 2.3 總體設(shè)計方框圖-53. 設(shè)計原理分析-6 3.1 單片機及其外圍電路-6 3.1.1 復位電路的設(shè)計-6 3.1.2 時鐘電路的設(shè)計-7 3.2 密碼控制電路-7 3.2.1 矩陣鍵盤電路的設(shè)計-7 3.2.1 報警控制電路的設(shè)計-9 3.2.3 液晶顯示電路-94. 系統(tǒng)軟件設(shè)

2、計-10 4.1 系統(tǒng)主程序-10 4.2 初始化及按鍵識別-11 4.3 開鎖處理-12 4.4改密處理-13 4.5液晶顯示子程序-135. 仿真調(diào)試與測試-14總結(jié)-16參考文獻-17附錄-17 1.1 引言 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運而生。密碼鎖具有安全性高、成本低、功

3、耗低、易操作等優(yōu)點。 在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克服了機械式密碼鎖密碼量少、安全性能差的缺點,使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。 設(shè)計本課題時構(gòu)思的方案是用以STC89C52為核心的單片機控制方案。1.2 摘 要 單片機技術(shù)是智能化檢測與控制領(lǐng)域應(yīng)用非常普及并且具有很大潛力的技術(shù)。論文闡述一個基于單片機的液晶顯示電子密碼鎖的設(shè)計與實現(xiàn)

4、。系統(tǒng)采用美國Atmel公司的AT89S52單片機作為系統(tǒng)核心,液晶顯示器LCD1602作為輸出設(shè)備顯示系統(tǒng)提示信息,4*4矩陣薄膜鍵盤作為輸入設(shè)備,配合蜂鳴器、繼電器等電路構(gòu)成整個系統(tǒng)硬件;系統(tǒng)軟件采用匯編語言編寫。設(shè)計的系統(tǒng)液晶顯示,密碼修改方便,具有報警、鎖定等功能,使用便捷簡單,符合住宅、辦公用鎖需求,具有一定的實用價值。 關(guān)鍵詞:密碼鎖;單片機;STC89S52;LCD1602;4*4矩陣鍵盤Abstract Single-chip microcomputer technology is very popular and has great potential in applicat

5、ion of intelligent detection and control field. This thesis describes the design and implementation of LCD electronic password-lock system based on SCM. The system uses the product of America Atmel corporation AT89S52 as the core of system, liquid crystal monitor 1602 as the output device displaying

6、 the prompt information of system, 4*4 matrix membrane keyboard as the input device, with buzzer, relay, and other circuits together constitute the system hardware. The software of the system is written in assembly language. The designed system display in LCD, change password easily, has the functio

7、n of alarming, locking, and so on. This system is simple and easy to use, meets the demand of residential, office lock needs, has some practical value. Key words: Password-Lock; Single-chip microcomputer; STC89C52; LCD1602; 44 matrix keyboard 2 總體設(shè)計方案2.1 設(shè)計思路 該電路是一種采用以AT89S52為核心的單片機控制方案。 利用單片機靈活的編程設(shè)

8、計和豐富的IO端口,及其控制的準確性,不但能實現(xiàn)基本的密碼鎖功能,還要根據(jù)實際需要添加調(diào)電存儲、聲光提示甚至增加遙控控制功能。 2.2 方案確立 為了實現(xiàn)密碼的保密性,采用一個44的矩陣式鍵盤可以任意設(shè)置用戶密碼(1-16位長度),從而提高了密碼的保密性。 設(shè)計采用一個超級密碼,送電開機時,只要輸入超級密碼便可開門,這樣可預(yù)防停電后再送電時無密碼可用。 采用了1602液晶顯示器來作為顯示單元,提高了可讀性,使用戶對密碼鎖的運行情況一目了然。 2.3 總體設(shè)計方框圖本設(shè)計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶通過連接單片機

9、的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統(tǒng)整體框圖如圖2.1所示。 圖2.1系統(tǒng)結(jié)構(gòu)框圖各模塊功能如下1鍵盤輸入模塊:分為密碼輸入按鍵與幾個功能按鍵,用于完成密碼鎖輸入功能。 2蜂鳴器報警電路:用于完成輸錯密碼時候的警報功能。 3.晶振電路:用于單片機的起振。 4復位電路:完成系統(tǒng)的復位。 5顯示模塊:用于完成對系統(tǒng)狀態(tài)顯示及操作提示功能。 6開鎖電路:應(yīng)用繼電器及發(fā)光二極管模擬開鎖,完成開鎖及開鎖提示

10、3 設(shè)計原理分析 本系統(tǒng)外圍電路包括鍵盤輸入部分、密碼存儲部分、復位部分、顯示部分、報警部分、開鎖部分組成,根據(jù)實際情況鍵盤輸入部分選擇44矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲部分選用內(nèi)部存儲器來完成。其原理圖如圖3.1所示。圖3.1電路原理圖3.1單片機及其外圍電路 3.1.1復位電路的設(shè)計 復位是單片機的初始化操作。單片機啟運運行時,都需要先復位,其作用是使CPU和系統(tǒng)中其他部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。 因而,復位是一個很重要的操作方式。但單片機本身是不能自動進行復位的,必須配合相應(yīng)的外部電路才能實現(xiàn)。該復位電路采用按鍵電平復位式復位電路。當單

11、片機已在運行當中時,按下復位鍵S后松開,在復位引腳RET(9腳)腳持續(xù)出現(xiàn)24個振蕩器脈沖周期(即2個機器周期)的高電平信號將使單片機復位。也能使RST為一段時間的高電平,從而實現(xiàn)上電或開關(guān)復位的操作。如圖3.2所示。圖3.2復位電路3.1.2時鐘電路的設(shè)計 時鐘電路為單片機產(chǎn)生時序脈沖,單片機所有運算與控制過程都是在統(tǒng)一的時序脈沖的驅(qū)動下的進行的,如果單片機的時鐘電路停止工作(晶振停振),那么單片機也就停止運行了。當采用內(nèi)部時鐘時,連接方法如下圖所示,在晶振引腳XTAL1(19腳)和XTAL2(18腳)引腳之間接入一個12MHZ晶振,兩個引腳對地分別再接入一個電容即可產(chǎn)生所需的時鐘信號,電容

12、的容量一般在幾十皮法,如22PF。如圖3.3所示。圖3.3時鐘電路3.2 密碼鎖控制電路 3.2.1矩陣鍵盤電路的設(shè)計 為了加強密碼的保密性,采用一個44的矩陣式鍵盤可以任意設(shè)置用戶密碼(1-16位長度),從而提高了密碼的保密性,同時也能減少與單片機接口時所占用的I/O口線的數(shù)目,節(jié)省了單片機的寶貴資源,在按鍵比較多的時候,通常采用這種方法。其原理圖如圖3.4所示。圖3.4 矩陣鍵盤 每一行與每一列的交叉處不相同,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N根行線與M根列線,即可組成具有N M 個按鍵的矩陣鍵盤。 在這種行列式矩陣鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并

13、確認有無按鍵按下的程序段。 當確認有按鍵按下后,下一步就是要識別哪一個按鍵被按下。對鍵的識別方法通常有兩種:一種是通用的組行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。 此系統(tǒng)中,我們采用線反轉(zhuǎn)法。首先辨別鍵盤中有無按鍵被按下,在單片機I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。具體方法是:向行線輸出全掃描字00H,把全部列線置成低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵被按下,總會有一根行線電瓶被拉至低電平從而使行線不全為1。 判斷鍵盤中哪一個按鍵被按下通常是通過將列線逐列至低電平后,檢查行輸入狀態(tài)來實現(xiàn)的。方法是:依次給列線送低電平,然后檢查所有行線狀態(tài),如果全為1,則所按下

14、的按鍵不在此列;如果不全為1,則所按下的按鍵必在此列,而且是在與零電平行線相交的交點上的那個按鍵。 按鍵的操作面板如圖3.5所示,共計10個數(shù)字鍵和6個功能鍵,鍵盤側(cè)面還有一個微型蜂鳴器。鍵盤側(cè)面還有一個蜂鳴器,每操作一次,它便發(fā)出聲音,提示操作成功 圖3.5鍵盤操作面板 10個數(shù)字鍵用來輸入密碼,另外6個功能鍵分別是:A查看鍵、B設(shè)置新密碼鍵、C退格鍵、D返回鍵、E確認/退出鍵和F開啟鍵。其中退格鍵的功能是當輸入密碼錯誤的時候,清除前面已經(jīng)輸入的數(shù)據(jù),重新輸入。確認鍵的功能是確認輸入的密碼。開啟鍵是切換到密碼輸入狀態(tài),輸密碼前需按該鍵才能開始輸入密碼。按“F”鍵啟動進入輸入密碼程序,按住“F

15、”鍵不放3秒以后進入輸入密碼狀態(tài)。在輸入密碼狀態(tài)下,0-9數(shù)字鍵為有效鍵,有時間和次數(shù)限制功能:只有三次輸入密碼機會,每次限制在10秒內(nèi)完成,輸入密碼有誤或每次輸入密碼超時,則被認為是密碼輸入錯誤。當3次輸入都錯誤時,程序?qū)⒎祷仄鹗紶顟B(tài)。密碼輸入正確后,繼電器吸合,開鎖指示燈亮,表示鎖被打開。在密碼輸入正確的情況下,程序進入查看密碼和修改密碼狀態(tài),按“E” 鍵退出查看密碼狀態(tài)。按“B”鍵進入重新設(shè)置密碼狀態(tài),在輸入密碼時,如發(fā)現(xiàn)輸入有誤,可按“C”刪除后,重新輸入,按“E”確認后,程序退出修改密碼狀態(tài)。按“D”鍵或等待10秒后程序退出修改密碼和查看密碼狀態(tài),回到起始狀態(tài)。程序內(nèi)定密碼為:,送電

16、開機時,只要輸入內(nèi)定密碼便可開門,這樣可預(yù)防停電后再送電時無密碼可用。當密碼輸入錯誤或密碼輸入時間超過規(guī)定的時間時,蜂鳴器報警。表3.1 按鍵功能表 按鍵鍵名 功能說明 0-9鍵數(shù)字鍵輸入密碼A鍵查看鍵查看密碼B鍵設(shè)置新密碼鍵設(shè)置新密碼C鍵退格鍵退格刪除D鍵返回鍵返回到開始界面E鍵確認/退出鍵確認/退出F鍵開啟鍵開啟密碼輸入3.2.2報警控制電路的設(shè)計 該電路采用單頻音報警電路,實現(xiàn)單頻音報警的接口電路比較簡單,其發(fā)音元件通??刹捎脡弘姺澍Q器,當在蜂鳴器兩引腳上加315V直流工作電壓,就能產(chǎn)生3kHZ左右的蜂鳴振蕩音響。壓電式蜂鳴器結(jié)構(gòu)簡單、耗電少,更適于在單片機系統(tǒng)中應(yīng)用。壓電式蜂鳴器,約需

17、10mA的驅(qū)動電流,可在某端口接上一只三極管和電阻組成的驅(qū)動電路來驅(qū)動,P.3.1接三極管基極輸入端,當P3.7輸出高電平“1”時,三極管導通,蜂鳴器的通電而發(fā)音,當P3.1輸出低電平“0”時,三極管截止,蜂鳴器停止發(fā)音。如圖3.6所示 :圖3.6報警控制電路3.2.3液晶顯示電路 本系統(tǒng)設(shè)計的顯示電路是為了給使用者以提示而設(shè)置的為了達到界面友好的目的,顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管完成。開鎖時,按下鍵盤上的開鎖按鍵后,利用鍵盤上的數(shù)字鍵09輸入密碼,每按下一個數(shù)字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話, L

18、CD顯示“IUPUT RIGHT”,單片機其中P3.0引腳會輸出低電平,使三極管T2導通,電磁鐵吸合,繼電器開關(guān)跳轉(zhuǎn),電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“IUPUT ERROR”,P3.0輸出的是高電平,電子密碼鎖不能打開。通過LCD顯示屏,可以清楚地判斷出密碼鎖所處的狀態(tài)。電路圖如圖3.7所示:圖3.7 顯示器電路 4 系統(tǒng)軟件設(shè)計系統(tǒng)的軟件設(shè)計采用匯編語言編碼。設(shè)計方法是先用文本編輯器編寫源碼,然后用軟件Keil C51編譯,如果沒有錯誤,可連接生成.HEX格式的文件(需事先在Keil C51中設(shè)置)。如果有錯誤則無法連接,但可在生成的.OBJ文件中找到代碼錯誤的地方,便

19、于修改。當然也可以直接在Keil中編碼。生成的HEX文件是記錄文本行的ASCII文本文件,在HEX文件中,每一行是一個HEX記錄,由十六進制數(shù)組成的機器碼或者數(shù)據(jù)常量。HEX文件經(jīng)常被用于將程序或數(shù)據(jù)傳輸存儲到ROM、EPROM,大多數(shù)編程器和模擬器使用HEX文件。4.1 系統(tǒng)主程序 系統(tǒng)的主程序如圖4-1所示。由于用戶在使用系統(tǒng)的過程中,可能在任何時刻按下任何按鍵,而程序都必須對此作出正確響應(yīng)。 圖4.1主程序流程圖4.2 初始化及按鍵識別 如圖4.2,系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,兩個定時/計數(shù)器的設(shè)定,液晶顯示模式的設(shè)定,密碼緩沖區(qū)的初始化,一些自定義數(shù)據(jù)空間的初始化,蜂鳴器初始化

20、發(fā)聲等操作。 系統(tǒng)初始化并讀取密碼完成后,液晶顯 Password Control,提示用戶可以輸入密碼。此時程序即不斷測試按鍵,檢查是否有按鍵被按下。如果有,則進行按鍵識別;如果沒有按鍵按下,或者按下的按鍵沒有被識別,R3賦值0FFH,并跳轉(zhuǎn)至按鍵測試。實際程序運行時,絕大部分時間都在測試按鍵,等待用戶輸入。 圖4.2初始化及按鍵識別流程圖4.3 開鎖處理 首先LCD初始化,輸入密碼,密碼正確則使開鎖電路動作,繼電器得電,開鎖指示燈亮。開鎖程序流程圖如圖4.3所示。 圖4.3開鎖流程圖4.4 改密處理 如圖4.4,可以看出,改密鍵的處理流程跟開鎖鍵類似,都需檢查密碼是否正確,錯誤的話,提示重

21、新輸入,只有輸入密碼正確才可以進行改密。然后再按更改鍵,密碼更改程序被調(diào)用,進而更改密碼,此過程,LCD都會顯示信息。 圖4.4改密流程圖 4.5 液晶顯示子程序 液晶顯示子程序在每次更新顯示內(nèi)容時都會被調(diào)用,其流程如圖4.5所示。 圖4.5液晶顯示子程序流程圖 每次更新顯示內(nèi)容前,需清顯示清空LCD原先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。 LCD1602要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最后將字符地址加一,LCD1602會將寫入的ASCII碼

22、對應(yīng)的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時,即停止寫入,返回。LCD顯示的內(nèi)容在下次更新前會一直保持。 5 仿真調(diào)試與測試1. 開機后,LCD1602顯示如圖5.1所示,等待按鍵輸入圖5.12. 輸入密碼分兩個過程:首先必須開啟密碼輸入功能才能輸入密碼,按住“F”鍵3秒以上才能啟動進入輸入密碼程序,進入輸入密碼狀態(tài),LCD1602顯示如圖5.2所示:圖5.23. 此時使用矩陣鍵盤輸入密碼,在輸入密碼狀態(tài)下,0-9為有效數(shù)字鍵。本系統(tǒng)有時間、次數(shù)限制功能,不給別人試探機會:三次輸入密碼機會,每次限制在10秒內(nèi)完成。 輸入密碼正確后,

23、蜂鳴器發(fā)聲1次,繼電器吸合,密碼鎖打開,LCD1602顯示如圖5.3所示:圖5.34. 鍵入密碼有誤或每次輸入密碼時間超過10秒,則被認為是密碼輸入錯誤。 假如密碼輸入錯誤,則LCD1602顯示如圖5.4所示:圖5.4當3次輸入密碼都錯誤時,蜂鳴器連續(xù)發(fā)聲3次,程序?qū)⒎祷仄鹗紶顟B(tài),并鎖定。5. 在密碼輸入正確的情況下,程序進入查看密碼和修改密碼狀態(tài)。 按“A”鍵進入查看密碼狀態(tài),LCD1602顯示如圖5.5所示:圖5.56. E”鍵退出看密碼狀態(tài)。 按“B”鍵進入重新設(shè)置狀態(tài),LCD1602顯示如圖5.6所示:圖5.6在輸入新密碼時,如果輸入有誤,可按“C”刪除后,重新輸入。 按“E”確認后,

24、程序退出修改密碼狀態(tài)。 按“D”鍵或等待10秒后,程序退出修改密碼和查看密碼狀態(tài),回到起始狀態(tài)。 設(shè)計采用一個超級密碼,送電開機時,只要輸入超級密碼便可開門,這樣可預(yù)防停電后再送電時無密碼可用。超級密碼為:??偨Y(jié) 經(jīng)過一段時間的課程設(shè)計,我深深體會到要完成一個設(shè)計,首先是要結(jié)合生活中對密碼鎖的功能特性要求,其次是電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)與軟件結(jié)構(gòu)。由于了解的專業(yè)知識尚淺使得在技術(shù)的解決與應(yīng)用顯得粗糙了一些。不過,該系統(tǒng)的密碼修改、開鎖提示、輸入提示、輸出報警功能還算穩(wěn)定。本系統(tǒng)用的是6位密碼輸入,有種密碼組合,另外本系統(tǒng)軟硬件設(shè)計簡單,易于開發(fā),成本較低,安全可靠,操作方便。通過過本次設(shè)計

25、,我不僅鞏固和加深理論課上所學的知識,而且鍛煉了分析問題和解決問題的能力;同時培養(yǎng)了良好的工作習慣和科學素養(yǎng),為我們以后參加工作打下了一定的基礎(chǔ)。同時認識到慢工出細活,過程是很重要的,只有耐心細心努力地去把握過程,才能得到可喜的結(jié)果。除此之外,相信這次設(shè)計中還存在很多不足,希望老師能夠批評指正。 參考文獻 1 郭天祥。51單片機C語言教程M。電子工業(yè)出版社 2 李廣弟,朱月秀,冷祖祁。單片機基礎(chǔ)M。北京:北京航空航天大學出版社,2007 3 董繼成。一種新型安全的單片機密碼鎖J。電子技術(shù),2004,(03) 4 石文軒,宋薇?;趩纹瑱CMSC-51的智能密碼鎖設(shè)計S。武漢工程職業(yè)技術(shù)學院學報5

26、 鄭學堅,周斌。微型計算機原理及應(yīng)用。北京:清華大學出版社附錄一 總電路原理圖附錄二 PCB圖附錄三 實物圖附錄四 元器件清單名稱 型號 數(shù)量 備注 單片機 AT89S52 1 含雙列直插插座 電阻 1K 3 電阻 200 1 排阻 8x10k 1 液晶顯示器 LM1602 1 瓷片電容 33pF 2 電解電容 22uF 1 按鍵 輕觸按鍵 17 晶振 12MHz 1 單排插針 1x8 4 發(fā)光二極管 1 直流插座 1 下載口 1 蜂鳴器 1 繼電器 1 附錄五 源程序清單;* BEEP BIT P3.7 RELAY BIT P3.6 SEC10 BIT 20H.1 SEC3 BIT 20H.

27、2 PASS_OK BIT 20H.3 PASS_OLD EQU 30H PASS_NEW EQU 37H PASS_DIS EQU 40H ;密碼顯存單元 COUNT EQU 47H ;50ms計數(shù)單元 SEC EQU 48H ;秒單元 POS EQU 49H ;* BUSY BIT P0.7 LCD_RS BIT P2.0 ;LCD 控制管腳定義 LCD_RW BIT P2.1 LCD_EN BIT P2.2 DATAPORT EQU P0 ;定義LCD的數(shù)據(jù)端口 LCD_X EQU 29H TIMES EQU 2AH BUSY_CHECK BIT 20H.0 ;* ;* ORG 0000

28、H AJMP MAIN ORG 000BH LJMP TIMER0 ORG 0050H ;* MAIN: MOV SP,#60H ;設(shè)置堆棧指針 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV TMOD,#01H ;工作于方式1 MOV TH0,#4CH ;50ms定時常數(shù) MOV TL0,#00H SETB ET0 SETB EA MOV PASS_OLD,#00H ;內(nèi)定密碼值 MOV PASS_OLD+1,#01H MOV PASS_OLD+2,#02H MOV PASS_OLD+3,#03H MOV PASS_OLD+4,#04H MOV PASS

29、_OLD+5,#05H ACALL LCD_INIT ;LCD初始化 MAIN1: CLR TR0 CLR SEC3 CLR SEC10 CLR PASS_OK MOV COUNT,#00H MOV SEC,#00H SETB RELAY ;繼電器釋放 ACALL MENU1 ACALL START_IN MOV R4,#03H ;3次輸入密碼機會MAIN2: ACALL PASS_IN ACALL PASS_COMP MOV R5,#100 ;延時1s ACALL DELAY JB PASS_OK,MAIN3 DJNZ R4,MAIN2ACALL BEEP_BL ;三次輸入錯誤響10聲ACA

30、LL BEEP_BLACALL BEEP_BLACALL BEEP_BLACALL BEEP_BLACALL BEEP_BLACALL BEEP_BLACALL BEEP_BLACALL BEEP_BLACALL BEEP_BLAJMP MAIN1 MAIN3: ACALL PASS_LOOK ACALL CHANGE_PASS JB SEC10,MAIN4 ACALL KEY_SCAN CJNE A,#0DH,MAIN3 ;判是否“D”按下? ACALL BEEP_BLMAIN4: ACALL BEEP_BL AJMP MAIN1 ;* ; 菜單1顯示子程序 (PASSWORD CONTRO

31、L) ; ( Menu F ) ;* MENU1: MOV B,#00H MOV DPTR,#INFO1 ;指針指到信息1 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO4 ;指針指到信息4 ACALL W_STRING2 RET ;* ; 菜單2顯示子程序 (Input Password) ; (Password -) ;* MENU2: MOV B,#00H MOV DPTR,#INFO3 ;指針指到信息3 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO2 ;指針指到信息2 ACALL W_STRING2 RET ;*

32、 ; 菜單3顯示子程序 (LOOK PASSWORD) ; (PASSWORD -) ;* MENU3: MOV B,#00H MOV DPTR,#INFO7 ;指針指到信息7 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO2 ;指針指到信息2 ACALL W_STRING2 RET ;* ; 菜單4顯示子程序 (CHANGE PASSWORD) ; (PASSWORD -) ;* MENU4: MOV B,#00H MOV DPTR,#INFO8 ;指針指到信息1 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO2 ;指針

33、指到信息2 ACALL W_STRING2 RET ;* ; 信息字符串表 ;* INFO1: DB Password Control,0 INFO2: DB Password:- ,0INFO3: DB Input Password ,0 INFO4: DB Menu F ,0 INFO5: DB Right, Open! ,0 INFO6: DB Input Error ,0 INFO7: DB Look Password ,0 INFO8: DB Reset Password ,0 ;* ; 矩陣鍵盤鍵值查找程序 ; 鍵值存入R3 ;* KEY_SCAN: MOV P1,#0F0H ;置

34、列線為0,行線為1 NOP MOV A,P1 ;讀入P1口狀態(tài) ANL A,#0F0H ;保留高4位 MOV B,A ;保存數(shù)據(jù) MOV P1,#0FH ;置列線為1,行線為0 NOP MOV A,P1 ;讀入P1口狀態(tài) ANL A,#0FH ;保留低4位 ORL A,B ;高四位與低四位重新組合 CJNE A,#0FFH,KEY_IN1 ;0FFH為末按鍵 AJMP KEY_END KEY_IN1: MOV B,A ;保存鍵值 MOV DPTR,#KEYTABLE ;置鍵編碼表首址 MOV R3,#0FFH ; KEY_IN2: INC R3 ;查表次數(shù)加1 MOV A,R3 MOVC A,

35、A+DPTR ;取出鍵碼 CJNE A,B,KEY_IN3 ;比較 MOV A,R3 ;找到,取次數(shù)值 AJMP KEY_END KEY_IN3: CJNE A,#00H,KEY_IN2 ;繼續(xù)查 ;00H為結(jié)束碼 KEY_END: RET ;* ; 鍵編碼表 ;* KEYTABLE: DB 0EEH,0EDH,0EBH,0E7H,0DEH DB 0DDH,0DBH,0D7H,0BEH,0BDH DB 0BBH,0B7H,07EH,07DH,07BH DB 077H,00H ;00H為結(jié)束碼 ;* ; 密碼顯示子程序 ;* PASS_PLAY: MOV R0,#PASS_OLD ;存放數(shù)據(jù)首地

36、址 MOV R2,#06H ;顯示6組數(shù)據(jù) MOV LCD_X,#09H ;第9列 ACALL SET_X2 ;第二行 P_PLAY: MOV A,R0 ;取顯示數(shù)據(jù) ADD A,#30H ;轉(zhuǎn)換為ASCII碼 ACALL WDATA ;寫數(shù)據(jù),顯示 INC R0 ;修改存放數(shù)據(jù)地址 DJNZ R2,P_PLAY RET ;* ; 啟動輸入子程序 ; 按F鍵大于3秒,方可退出此程序 ;* START_IN: CLR SEC3 ;清3s標志位 MOV COUNT,#00H ;清中斷計數(shù)單元 MOV SEC,#00H S_IN1: ACALL KEY_SCAN CJNE A,#0FH,S_IN1

37、;“F”鍵 SETB TR0 ;啟動TIMER0中斷 S_IN2: ACALL KEY_SCAN CJNE A,#0FH,S_IN3 ;“F”鍵 JNB SEC3,S_IN2 ;沒有達到3s,轉(zhuǎn)移 CLR TR0 ;停止TIMER0中斷 CLR SEC3 ;清3s標志位 MOV SEC,#00H MOV COUNT,#00H ;清中斷計數(shù)單元 ACALL MENU2 ACALL BEEP_BL AJMP S_END S_IN3: CLR TR0 ;停止TIMER0中斷 CLR SEC3 ;清3s標志位 MOV COUNT,#00H ;清中斷計數(shù)單元 MOV SEC,#00H AJMP S_IN1 S_END: RET ;* ; 密碼輸入子程序 ;* PASS_IN: ACALL MENU2 MOV R0,#PASS_NEW ;

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論