單片機課程設(shè)計電子密碼鎖設(shè)計_第1頁
單片機課程設(shè)計電子密碼鎖設(shè)計_第2頁
單片機課程設(shè)計電子密碼鎖設(shè)計_第3頁
單片機課程設(shè)計電子密碼鎖設(shè)計_第4頁
單片機課程設(shè)計電子密碼鎖設(shè)計_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設(shè)計電子密碼鎖設(shè)計1引言錯誤!未定義書簽,2系統(tǒng)設(shè)計分析錯誤!未定義書簽。2.1總體設(shè)計框圖錯誤!未定義書簽。2.2硬件電路設(shè)計分析錯誤!未定義書簽。2.2.1時鐘電路設(shè)計錯誤!未定義書簽。2.2.2復(fù)位電路設(shè)計錯誤!未定義書簽。2.2.3矩陣鍵盤設(shè)計錯誤!未定義書簽。2.2.4報警控制電路錯誤!未定義書簽。2.2.5液晶顯示電路錯誤!未定義書簽。2.3系統(tǒng)軟件設(shè)計錯誤!未定義書簽。2.3.1初始化及按盤識別程序錯誤!未定義書簽。2.3.2開鎖程序錯誤!未定義書簽。2.3.3修改密碼程序錯誤!未定義書簽。2.3.4 LCD顯示程序錯誤!未定義書簽。2.4仿真測試結(jié)果錯誤!未定義書簽。

2、3總結(jié)錯誤!未定義書簽。參考文獻錯誤!未定義書簽。附錄錯誤!未定義書簽。1引言隨著科技和人們的生活水平的提高, 如何實現(xiàn)家庭防盜這一問題也變的特別的突出,傳統(tǒng)機械鎖由于構(gòu)造簡單,被撬事件屢見不鮮;電子鎖由于其保密性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶的青睞。單片機, 亦稱單片微電腦或單片微型計算機。 它是把中央處理器 (CPU、隨機存取存儲器(RAM、只讀存儲器(ROM、輸入/輸出端口(I/0)等主要計算機功能部件都集成在一塊集成電路芯片上的微型計算機。計算機的產(chǎn)生加快了人類改造世界的步伐,可是它畢竟體積大。微計算機(單片機)在這種情況下誕生了,它為我們改變了什么?縱觀我們現(xiàn)在生活的各

3、個領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機。在單片機產(chǎn)生后,我們就將控制這些東西變?yōu)橹悄芑耍覀冎恍枰趩纹瑱C外圍接一點簡單的接口電路, 核心部分只是由人為的寫入程序來完成。 這樣產(chǎn)品的體積變小了,成本也降低了,長期使用也不會擔(dān)心精度達不到了,且容易升級改進。電子鎖能夠在日常生活和現(xiàn)代辦公中,住宅與辦公室的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存等多種場合使用。大大提高了主人物資的安全性,安全能夠代替老式機械鎖。當(dāng)前使用的密碼鎖種類

4、繁多,各具特色。本文從經(jīng)濟實用的角度出發(fā),采用AT89C2051單機,研制了一款具有防盜自動報警功能的電子密碼鎖。該密碼鎖設(shè)計方法合理,簡單易行,成本低,符合住宅、辦公室用鎖要求,具有一定的推廣價值。(1)系統(tǒng)設(shè)置6位密碼,密碼經(jīng)過鍵盤輸入,若密碼正確,則將鎖打開。(2)密碼由用戶自己設(shè)定,在開鎖狀態(tài)下,用戶可自行修改密碼。(3)具有自動報警功能,系統(tǒng)工作時,用戶經(jīng)過按鍵輸入6位密碼,若密碼不正確,則要求重新輸入密碼,重新輸入密碼的次數(shù)不能超過3次,若3次輸入的密碼都不正確,則發(fā)出報警信號。本課程設(shè)計以AT89C51為主控芯片,LCD1602為顯示屏,利用單片機的讀寫控制、擴展電路等功能部件設(shè)

5、計電子密碼鎖。2系統(tǒng)設(shè)計分析2.1總體設(shè)計框圖本設(shè)計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行各種功能的實現(xiàn)。由用戶經(jīng)過連接單片機的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路控制是否開鎖。系統(tǒng)整體框圖如圖2-1所示。蜂鳴器報警電路鍵盤輸入模塊圖2-1系統(tǒng)整體框圖各模塊功能如下:1 .鍵盤輸入模塊:分為密碼輸入按鍵與功能按鍵,用于完成密碼輸入功能。AT89C51LCD顯示模塊開鎖由路2 .密碼存儲模塊:用于完成掉電存儲功能,使修改的密碼斷電后仍能保存。3 .晶振電

6、路:用于單片機的起振。4 .復(fù)位電路:完成系統(tǒng)的復(fù)位。5 .LCD顯示模塊:用于完成對系統(tǒng)狀態(tài)顯示及操作提示功能。6 .開鎖電路:應(yīng)用發(fā)光二極管模擬開鎖,完成開鎖及開鎖提示。2.2硬件電路設(shè)計分析本系統(tǒng)電路由鍵盤輸入部分、密碼存儲部分、復(fù)位部分、顯示部分、報警部分、開鎖部分組成,根據(jù)實際情況鍵盤輸入部分選擇4X4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602密碼存儲部分選用內(nèi)部存儲器來完成。具原理圖如圖2-2所示。-mm明Esib.Esib.圖2-2電子密碼鎖原理圖2.2.1時鐘電路設(shè)計時鐘電路為單片機產(chǎn)生時序脈沖,單片機所有運算與控制過程都是在統(tǒng)一的時序脈沖的驅(qū)動下的進行的,如果單片機的

7、時鐘電路停止工作(晶振停振),那么單片機也就停止運行了。當(dāng)采用內(nèi)部時鐘時,連接方法如下圖所示, 在晶振引腳XTAL1 (19腳) 和XTAL2 (18腳) 引腳之間接入一個12MHZ1振,兩個引腳對地分別再接入一個電容即可產(chǎn)生所需的時鐘信號,電容的容量一般在幾十皮法,如33PF。如圖2-3所示。R13R13IT&TIT&TmiCTE-T-O-OR12R121CDR1CDR2.2.2復(fù)位電路設(shè)計復(fù)位是單片機的初始化操作。單片機啟運運行時,都需要先復(fù)位,其作用是使CPlft系統(tǒng)中其它部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。因而,復(fù)位是一個很重要的操作方式。但單片機本身是不

8、能自動進行復(fù)位的,必須配合相應(yīng)的外部電路才能實現(xiàn)。該復(fù)位電路采用按鍵電平復(fù)位式復(fù)位電路。當(dāng)單腳)腳持續(xù)出現(xiàn)24個振蕩器脈沖周期(即2個機器周期)的高電平信號將使單片機復(fù)位。也能使RS偽一段時間的高電平,從而實現(xiàn)C1C2220220口X1CRYSTALTEXThU1KTAL1ieieXTAL2XTAL2圖2-3時鐘電路片機已在運行當(dāng)中時,按下復(fù)位鍵后松開,在復(fù)位引腳RET(9上電或開關(guān)復(fù)位的操作。如圖2-4所示。圖2-4復(fù)位電路2.2.3矩陣鍵盤設(shè)計為了加強密碼的保密性,采用一個4X4的矩陣式鍵盤能夠任意設(shè)置用戶密碼(1-16位長度),從而提高了密碼的保密性,同時也能減少與單片機接口時所占用的I

9、/O口線的數(shù)目,節(jié)省了單片機的寶貴資源,在按鍵比較多的時候,一般采用這種方法。其原理圖如圖2-5所示。圖2-5矩陣鍵盤每一行與每一列的交叉處不相同,而是經(jīng)過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N艮行線與M艮列線,即可組成具有 NXm按鍵的矩陣鍵盤。在這種行列式矩陣鍵盤編碼的單片機系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認有無按鍵按下的程序段。當(dāng)確認有按鍵按下后, 下一步就是要識別哪一個按鍵被按下。 對鍵的識別方法一般有兩種:一種是行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。此系統(tǒng)中,我們采用線反轉(zhuǎn)法。首先辨別鍵盤中有無按鍵被按下,在單片機I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。

10、具體方法是:向行線輸出全掃描字00H,把全部列線置成低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵被按下,總會有一根行線電瓶被拉至低電平從而使行線不全為1。判斷鍵盤中哪一個按鍵被按下一般是經(jīng)過將列線逐列至低電平后, 檢查行輸入狀態(tài)來實現(xiàn)的。方法是:依次給列線送低電平,然后檢查所有行線狀態(tài),如果全為1,則所按下的按鍵不在此列; 如果不全為1,則所按下的按鍵必在此列, 而且是在與零電平行線相交的交點上的那個按鍵。按鍵的操作面板共計10個數(shù)字鍵和6個功能鍵, 鍵盤側(cè)面還有一個微型蜂鳴器。鍵盤側(cè)面還有一個蜂鳴器,每操作一次,它便發(fā)出聲音,提示操作成功。10個數(shù)字鍵用來輸入密碼,另外6個功能鍵分

11、別是:A查看鍵、B設(shè)置新密碼鍵、C退格鍵、D返回鍵、E確認/退出鍵和F開啟鍵。其中退格鍵的功能是當(dāng)輸入密碼錯誤的時候, 清除前面已經(jīng)輸入的數(shù)據(jù), 重新輸入。確認鍵的功能是確認輸入的密碼。開啟鍵是切換到密碼輸入狀態(tài),輸密碼前需按該鍵才能開始輸入密碼。按“F”鍵啟動進入輸入密碼程序,按住“F”鍵不放3秒以上后進入輸入密碼狀態(tài)。在輸入密碼狀態(tài)下,0-9數(shù)字鍵為有效鍵,有時間和次數(shù)限制功能:只有三次輸入密碼機會,每次限制在10秒內(nèi)完成,輸入密碼有誤或每次輸入密碼超時,則被認為是密碼輸入錯誤。當(dāng)3次輸入都錯誤時,程序?qū)⒎祷仄鹗紶顟B(tài)。密碼輸入正確后,繼電器吸合,表示鎖被打開。在密碼輸入正確的情況下,程序進

12、入查看密碼和修改密碼狀態(tài),按“E”鍵退出查看密碼狀態(tài)。按“B”鍵進入重新設(shè)置密碼狀態(tài),在輸入密碼時,如發(fā)現(xiàn)輸入有誤,可按“C刪除后, 重新輸入, 按“E”確認后, 程序退出修改密碼狀態(tài)。 按“D”鍵或等待10秒后程序退出修改密碼和查看密碼狀態(tài),回到起始狀態(tài)。程序內(nèi)定密碼為:1,送電開機時,只要輸入內(nèi)定密碼便可開門,這樣可預(yù)防停電后再送電時無密碼可用。當(dāng)密碼輸入錯誤或密碼輸入時間超過規(guī)定的時間時,蜂鳴器報警。鍵盤的功能如表2-1所示。表2-1按鍵功能表按鍵鍵名功能說明0-9鍵數(shù)字鍵輸入密碼A鍵查看鍵查看密碼B鍵設(shè)置新密碼鍵設(shè)置新密碼C鍵退格鍵退格刪除D鍵返回鍵返回到開始界面E鍵確認/退出鍵確認/

13、退出F鍵開啟鍵開啟密碼輸入2.2.4報警控制電路該電路采用單頻音報警電路,實現(xiàn)單頻音報警的接口電路比較簡單,其發(fā)音元件一般可采用壓電蜂鳴器, 當(dāng)在蜂鳴器兩引腳上加315V直流工作電壓,就能產(chǎn)生3kHZ&右的蜂鳴振蕩音響。壓電式蜂鳴器結(jié)構(gòu)簡單、耗電少,更適于在單片機系統(tǒng)中應(yīng)用。壓電式蜂鳴器,約需10mA勺驅(qū)動電流,可在某端口接上一只三極管和電阻組成的驅(qū)動電路來驅(qū)動,P.3.1接三極管基極輸入端,當(dāng)P3.7輸出高電平“1”時,三極管導(dǎo)通,蜂鳴器的通電而發(fā)音,當(dāng)P3.1輸出低電平“0”時,三極管截止,蜂鳴器停止發(fā)音。其原理圖如圖2-6所示。An/,FEM13LE1rll/rll/r-UJr-

14、UJ=T&CT5-=T&CT5-Ik k圖2-6報警控制電路2.2.5液晶顯示電路本設(shè)計的顯示電路是為了給使用者以提示而設(shè)置的為了達到界面友好的目的,顯示部分由液晶顯示器LCD160取代普通的數(shù)碼管完成。開鎖時,按下鍵盤上的開鎖按鍵后,利用鍵盤上的數(shù)字鍵0-9輸入密碼, 每按下一個數(shù)字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當(dāng)密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話,LCD顯示“IUPUTRIGHT,單片機具中P3.0引腳會輸出低電平,使三極管T2導(dǎo)通,電磁鐵吸合,繼電器開關(guān)跳轉(zhuǎn),電子密碼鎖被打開,如果密碼不正確,LCDS示屏?xí)@示“IUPUTERROR,

15、P3.0輸出的是高電平,電子密碼鎖不能打開。經(jīng)過LCDS示屏,能夠清楚地判斷出密碼鎖所處的狀態(tài)。電路圖如圖2-7所示。圖2-7顯示電路2.3系統(tǒng)軟件設(shè)計系統(tǒng)的軟件設(shè)計采用匯編語言編碼。設(shè)計方法是先用文本編輯器編寫源碼,然后用軟件KeilC51編譯,如果沒有錯誤,可連接生成.HEX格式的文件 (需事先在KeilC51中設(shè)置)。如果有錯誤則無法連接,但可在生成的.OBJ文件中找到代碼錯誤的地方,便于修改。當(dāng)然也能夠直接在Keil中編碼。生成的HEXC件是記錄文本行的ASCII文本文件,在HEXC件中,每一行是一個HEX己錄,由十六進制數(shù)組成的機器碼或者數(shù)據(jù)常量。HEXC件經(jīng)常被用于將程序或數(shù)據(jù)傳輸

16、存儲到ROMEPROM大多數(shù)編程器和模擬器使用HEX文件。系統(tǒng)的主程序如圖2-8所示。由于用戶在使用系統(tǒng)的過程中,可能在任何時刻按下任何按鍵,而程序都必須對此作出正確響應(yīng)。圖2-8系統(tǒng)主流程圖2.3.2初始化及按盤識別程序如圖2-9所示,系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,定時/計數(shù)器的設(shè)定,液晶顯示模式的設(shè)定,密碼緩沖區(qū)的初始化,一些自定義數(shù)據(jù)空間的初始化等操作。系統(tǒng)初始化并讀取密碼完成后,液晶顯示“PASSWORDCONTR。L,提示用戶能夠輸入密碼。此時程序即不斷測試按鍵,檢查是否有按鍵被按下。如果有,則進行按鍵識別; 如果沒有按鍵按下, 或者按下的按鍵沒有被識別,R3賦彳10FFH,并

17、跳轉(zhuǎn)至按鍵測試。實際程序運行時,絕大部分時間都在測試按鍵,等待用戶輸入。2.3.3開鎖程序首先LCDH始化,輸入密碼,密碼正確則使開鎖電路動作,引腳P2.3得到低電平使發(fā)光二極管燈亮, 開鎖。 開鎖程序流程圖如圖2-10所示。邛ILCD,始化_按開j啟鍵1FLCD口始化恤入密碼1確認.序Y-開鎖成功圖2-9初始化及按鍵識別流程圖圖2-10開鎖流程圖2.3.4修改密碼程序如圖2-11所示,能夠看出,改密鍵的處理流程跟開鎖鍵類似,都需檢查密碼是否正確,錯誤的話,提示重新輸入,只有輸入密碼正確才能夠進行改密。 然后再按更改鍵, 密碼更改程序被調(diào)用, 進而更改密碼, 此過程,LCDB會顯示信息。圖2-

18、11修改密碼流程圖2.3.5 LCD顯示程序液晶顯示子程序在每次更新顯示內(nèi)容時都會被調(diào)用,具流程如圖2-12所示開始圖2-12LCD顯示子程序流程圖每次更新顯示內(nèi)容前,需清顯示清空LCDM先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。LCD160要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR最后將字符地址加一,LCD160會將寫入的ASCII碼對應(yīng)的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時,即停止寫入,返回

19、。LCDS示的內(nèi)容在下次更新前會一直保持。2.4仿真測試結(jié)果開機后,LCD160濕示如圖2-13所示,等待按鍵輸入圖2-13開機界面輸入密碼分兩個過程:首先必須開啟密碼輸入功能才能輸入密碼,按住“F”鍵3秒以上才能啟動進入輸入密碼程序,進入輸入密碼狀態(tài),LCD1602a示如圖2-14所示:圖2-14輸入界面此時使用矩陣鍵盤輸入密碼,在輸入密碼狀態(tài)下,0-9為有效數(shù)字鍵。本系統(tǒng)有時間、次數(shù)限制功能,不給別人試探機會:三次輸入密碼機會,每次限制在10秒內(nèi)完成,輸入過程如圖2-15所示:當(dāng)密碼輸入正確后,LCfS示界面如圖2-16所示:twrtwrINPUTPASSWORDINPUTPASSWORD

20、IUPUTRIGHTIUPUTRIGHT圖2-16輸入正確的界面在輸入密碼正確的基礎(chǔ)上能夠在密碼輸入正確的情況下,程序進入查看密碼和修改密碼狀態(tài)。按“B”鍵進入重新設(shè)置狀態(tài),在輸入新密碼時,能夠按“C鍵刪除修改,按“E”確認后,程序退出修改密碼狀態(tài)。界面如圖2-17所示:按“A”鍵進入查看密碼狀態(tài),LCDS示界面如圖2-18所示:圖2-18查看密碼的界面LCm到初始界面,并鎖定。如果錯誤則LCLS示的界面如圖2-17所示:3總結(jié)課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解在密碼輸入錯誤或是超過輸入時間時,當(dāng)錯誤次數(shù)為3次后,圖2-17修改密碼的界面圖2-17輸入錯誤的界面決實際問題

21、,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中能夠說得是無處不在。 因此作為21世紀的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的。在著手本次課程設(shè)計時, 經(jīng)過查閱網(wǎng)絡(luò)的資料, 再加上請教同學(xué)和老師,結(jié)合生活中對密碼鎖的功能特性要求,設(shè)計出了這一套電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基本完成了課題的要求。本次課程設(shè)計所設(shè)計的系統(tǒng)簡單只能實現(xiàn)一些簡單的功能,還有很多不足之處,自己所學(xué)的知識和能力有限?;仡櫰鸫舜螁纹瑱C課程設(shè)計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,能夠說得是苦多于

22、甜,可是能夠?qū)W到很多很多的的東西,同時不但能夠鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。經(jīng)過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,能夠說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,對單片機匯編語言掌握得不好,特別是外部中斷,定時/計數(shù)器和串行口,掌握的不好,應(yīng)用不熟練。經(jīng)過這次課程設(shè)計之

23、后,一定把以前所學(xué)過的知識重新溫故電子鎖是信息化時代發(fā)展的產(chǎn)物,應(yīng)時而生,我相信隨著科技的不斷發(fā)展,將來的電子鎖一定更加完美,更加人性化,更加便宜,更加安全。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,經(jīng)過這次課設(shè)自己也學(xué)到了很多東西,在這一周的時間里,感謝魏明哲老師的指導(dǎo)和同學(xué)們的幫助,終于游逆而解。參考文獻1何立民主編,單片機中級教程,北京航空航天大學(xué)出版社。2丁元杰主編,單片機原理與應(yīng)用,機械工業(yè)出版社。3孫育才主編,MCS-51系列單片微型計算機及其應(yīng)用,東南大學(xué)出版社。附錄BEEPBITP3.1RELAYBITP3.6SEC10BIT20H.1SEC3BIT20H.2PA

24、SS_OKBIT20H.3PASS_OLDEQU30HPASS_NEWEQU37HPASS_DISEQU40H;COUNTEQU47H;50msSECEQU48H;POSEQU49HBUSYBITP0.7LCD_RSBITP2.0;LCDLCD_RWBITP2.1LCD_ENBITP2.2密碼顯存單元計數(shù)單元秒單元控制管腳定義DATAPORTEQUP0定義LCD的數(shù)據(jù)端口LCD_XEQU29HTIMESEQU2AHBUSY_CHECKBIT20H.0ORG0000HAJMPMAINORG000BHLJMPTIMER0ORG0050HMAIN:MOVSP,#60H;MOVP0,#0FFHMOVP

25、1,#0FFHMOVP2,#0FFHMOVTMOD,#01H;MOVTH0,#4CH;50msMOVTL0,#00HSETBET0設(shè)置堆棧指針工作于方式1定時常數(shù)SETBEAMOVPASS_OLD+1,#01HMOVPASS_OLD+2,#01HMOVPASS_OLD+3,#01HMOVPASS_OLD+4,#01HMOVPASS_OLD+5,#01HACALLLCD_INIT;LCD初始化MAIN1:CLRTR0CLRSEC3CLRSEC10CLRPASS_OKMOVCOUNT,#00HMOVSEC,#00HSETBRELAY;繼電器釋放ACALLMENU1ACALLSTART_INMAIN

26、2:MOVPASS_OLD,#01H內(nèi)定密碼值MOVR4,#03H;3次輸入密碼機會ACALLPASS_INACALLPASS_COMPMOVR5,#100;延時1sACALLDELAYJBPASS_OK,MAIN3DJNZR4,MAIN2AJMPMAIN1MAIN3:ACALLPASS_LOOKACALLCHANGE_PASSJBSEC10,MAIN4ACALLKEY_SCANCJNEA,#0DH,MAIN3;判是否D按下?MAIN4:ACALLBEEP_BLAJMPMAIN1;菜單1顯示子程序(PASSWORDCONTROL);(LEARNBYHEART)MENU1:MOVB,#00HMO

27、VDPTR,#INFO1;指針指到信息1ACALLWSTRING1MOVB,#00HMOVDPTR,#INFO4;指針指到信息4ACALLW_STRING2RET;菜單2顯示子程序(INPUTPASSWORD);(PASSWORD)MENU2:MOVB,#00HMOVDPTR,#INFO3;指針指到信息3ACALLW_STRING1MOVB,#00HMOVDPTR,#INFO2;指針指到信息2ACALLW_STRING2RET;菜單3顯示子程序(LOOKPASSWORD);(PASSWORD)MENU3:MOVB,#00HMOVDPTR,#INFO7;指針指到信息7ACALLWSTRING1M

28、OVDPTR,#INFO2;指針指到信息2ACALLW_STRING2RET;菜單4顯示子程序(CHANGEPASSWORD);(PASSWORD)MENU4:MOVB,#00HMOVDPTR,#INFO8;指針指到信息1ACALLW_STRING1MOVB,#00HMOVDPTR,#INFO2;指針指到信息2ACALLW_STRING2RET;信息字符串表INFO1:DBPASSWORDCONTROL,0INFO2:DBPASSWORD,0INFO3:DBINPUTPASSWORD,0INFO4:DBLEARNBYHEART,0INFO5:DBIUPUTRIGHT,0INFO6:DBIUPU

29、TERROR,0INFO7:DBLOOKPASSWORD,0INFO8:DBRESETPASSWORD,0;矩陣鍵盤鍵值查找程序;鍵值存入R3KEY_SCAN:MOVP1,#0F0H;NOPMOVA,P1;ANLA,#0F0H;MOVB,A;MOVP1,#0FH;NOPMOVA,P1;ANLA,#0FH;ORLA,B;CJNEA,#0FFH,KEY_IN1;0FFHAJMPKEY_ENDKEY_IN1:MOVB,A;MOVDPTR,#KEYTABLE;MOVR3,#0FFH;KEY_IN2:置列線為0,行線為1讀入P1口狀態(tài)保留高4位保存數(shù)據(jù)置列線為1,行線為0讀入P1口狀態(tài)保留低4位高四位與

30、低四位重新組合保存鍵值置鍵編碼表首址MOVA,R3MOVCA,A+DPTRCJNEA,B,KEY_IN3;MOVA,R3;AJMPKEY_ENDKEY_IN3:CJNEA,#00H,KEY_IN2KEY_END:RET;鍵編碼表KEYTABLE:DB0EEH,0EDH,0EBH,0E7H,0DEHDB0DDH,0DBH,0D7H,0BEH,0BDHDB0BBH,0B7H,07EH,07DH,07BH密碼顯本子程序PASS_PLAY:MOVR0,#PASS_OLDMOVR2,#06H;INCR3查表次數(shù)加1取出鍵碼比較找到,取次數(shù)值繼續(xù)查;00H為結(jié)束碼DB 077H,00H;00H為結(jié)束碼存放

31、數(shù)據(jù)首地址顯示6組數(shù)據(jù)MOVLCD_X,#09HACALLSETX2P_PLAY:MOVA,R0;ADDA,#30H;ACALLWDATA;INCR0;DJNZR2,P_PLAYRET;啟動輸入子程序;按F鍵大于3秒,方可退出此程序START_IN:CLRSEC3;MOVCOUNT,#00HMOVSEC,#00HS_IN1:ACALLKEY_SCANCJNEA,#0FH,S_IN1;FSETBTR0;S_IN2:ACALLKEY_SCANCJNEA,#0FH,S_IN3;F第二行取顯示數(shù)據(jù)轉(zhuǎn)換為ASCII碼寫數(shù)據(jù),顯示修改存放數(shù)據(jù)地址清3s標(biāo)志位清中斷計數(shù)單元鍵啟動TIMER0中斷鍵JNBSE

32、C3,S_IN2沒有達到3s,轉(zhuǎn)移CLRTR0停止TIMER0中斷CLRSEC3;MOVSEC,#00HMOVCOUNT,#00HACALLMENU2ACALLBEEP_BLAJMPS_ENDS_IN3:CLRTR0;CLRSEC3;MOVCOUNT,#00HMOVSEC,#00HAJMPS_IN1S_END:RET;密碼輸入子程序PASS_IN:ACALLMENU2MOVR0,#PASS_NEWMOVR2,#06H;6MOVLCD_X,#09H;ACALLSET_X2清3s標(biāo)志位清中斷計數(shù)單元停止TIMER0中斷清3s標(biāo)志位清中斷計數(shù)單元存放輸入密碼單元首地址位密碼確定顯示首位置CLRSEC

33、10MOVSEC,#00HMOVCOUNT,#00HSETBTR0P_IN1:JBSEC10,P_ENDACALLKEY_SCANCJNEA,#0FFH,P_IN2AJMPP_IN1P_IN2:ACALLKEY_SCANCJNEA,#0AH,P_IN3;P_IN3:JNCP_IN1;=MOVA,R3;MOVR0,A;INCR0MOVA,#2AH;ACALLWDATA;ACALLBEEP_BL;DJNZR2,P_IN1清10s標(biāo)志位清秒計數(shù)單元清中斷計數(shù)單元判是否有鍵按下?數(shù)字鍵0-9有效時,C=0取鍵值保存輸入密碼值轉(zhuǎn)換為ASCII碼顯示輸入密碼的位數(shù)蜂鳴器響一聲PEND:CLRTR0MOVS

34、EC,#00HCLRSEC10MOVCOUNT,#00HRET;修改密碼子程序CHANGE_PASS:ACALLKEY_SCANCJNEA,#0BH,CH_END;CLRTR0ACALLMENU4MOVR0,#PASS_OLD;MOVR2,#06H;6MOVPOS,#09H;ACALLBEEP_BLCH_IN1:ACALLKEY_SCANCJNEA,#0FFH,CH_IN2;AJMPCH_IN1CH_IN2:ACALLKEYSCAN清秒計數(shù)單元清10s標(biāo)志位清中斷計數(shù)單元判B鍵是否按下?存放輸入密碼單元首地址位密碼確定顯示首位置判是否有鍵按下?CJNEA,#0AH,CH_IN3數(shù)字鍵0-9有效

35、CH_IN3:JNCCH_IN4;=MOVLCD_X,POS;ACALLSET_X2MOVA,R3;MOVR0,A;MOVA,#2AH;ACALLWDATA;ACALLBEEP_BL;INCPOSINCR0DJNZR2,CH_IN1;6AJMPCH_IN6CH_IN4:ACALLKEY_SCANCJNEA,#0CH,CH_IN1;CMOVA,POSCJNEA,#09H,CH_IN5;AJMPCH_IN1CH_IN5:DECPOS時,C=0確定顯示位置取鍵值保存輸入密碼值轉(zhuǎn)換為ASCII碼顯示輸入密碼的位數(shù)蜂鳴器響一聲位密碼是否輸入完?修改鍵檢測POS是否到最小值DECR0INCR2MOVLCD

36、_X,POSACALLSET_X2MOVA,#2DH;ACALLWDATAACALLBEEP_BL;AJMPCH_IN1CH_IN6:ACALLKEY_SCANCJNEA,#0EH,CH_IN7;EACALLMENU1ACALLBEEP_BLAJMPCH_ENDCH_IN7:CJNEA,#0CH,CH_IN6;CAJMPCH_IN5CH_END:SETBTR0RET;密碼比較子程序顯木一蜂鳴器響一聲鍵確定退出鍵返回修改;比較正確,置密碼正確標(biāo)志位。;比較錯誤,清密碼正確標(biāo)志位。PASS_COMP:MOVR2,#06H;MOVR0,#PASS_OLDMOVR1,#PASS_NEWP_COMP0:

37、MOVA,R0MOVB,R1CJNEA,B,P_COMP1INCR0INCR1DJNZR2,P_COMP0SETBPASS_OK;CLRRELAY;MOVB,#00HMOVDPTR,#INFO5;ACALLW_STRING2MOVSEC,#00H;CLRSEC10MOVCOUNT,#00HSETBTR0比較6組數(shù)據(jù)置密碼正確標(biāo)志位繼電器吸合指針指到信息5清秒計數(shù)單元清10s標(biāo)志位清中斷計數(shù)單元RETP_COMP1:CLRPASS_OK;MOVB,#00HMOVDPTR,#INFO6;ACALLW_STRING2RET;查看密碼子程序PASS_LOOK:ACALLKEY_SCANCJNEA,#0

38、AH,LOOK_END;AACALLMENU3CLRTR0ACALLPASS_PLAYACALLBEEP_BLLOOK_1:ACALLKEY_SCANCJNEA,#0EH,LOOK_1;EACALLMENU1ACALLBEEP_BLSETBTR0清密碼正確標(biāo)志位指針指到信息6鍵查看鍵退出LOOK_END:RET;蜂鳴器響一聲子程序BEEP_BL:MOVR6,#200BL1:ACALLBL2CPLBEEP;蜂鳴器取反產(chǎn)生驅(qū)動脈沖DJNZR6,BL1SETBBEEP;關(guān)閉蜂鳴器MOVR5,#15ACALLDELAYRETBL2:MOVR7,#200BL3:NOPDJNZR7,BL3RET;定時器0

39、計時中斷子程序TIMER0:PUSHACCPUSHPSWMOVTH0,#4CHINCCOUNTMOVA,COUNT;50ms計數(shù)值力口1CJNEA,#20,T0_ENDMOVCOUNT,#0INCSEC;MOVA,SECCJNEA,#03H,T0_0SETBSEC3;T0_0:CJNEA,#10,T0_ENDMOVSEC,#0;SETBSEC10;T0_END:POPPSWPOPACCRETI延時R5*10MS子程序DELAY:MOVR6,#50MOVTL0,#00H;50ms定時常數(shù)秒加1置3s標(biāo)志位是否到10秒?秒單元清0置10s標(biāo)志位DEL1:MOVR7,#93DEL2:DJNZR7,D

40、EL2DJNZR6,DEL1DJNZR5,DELAYRET;延時5MS子程序DELAY1:MOVR6,#25DEL3:MOVR7,#93DEL4:DJNZR7,DEL4DJNZR6,DEL3RET;檢查LCD忙狀態(tài);busy為1時,忙,等待。busy為0時,閑,可寫指令與數(shù)據(jù)LCD_BUSY:MOVDATAPORT,#0FFHBUSY_1:CLRLCD_RSSETBLCD_RWCLRLCD_ENNOPSETBLCD_ENJBBUSY,BUSY_1CLRLCD_ENRET;LCD寫命令子程序;LCD_RS=L,LCD_RW=L,D0-D曲令碼,=高脈沖WCOM:JNBBUSY_CHECK,WCOM_1ACA

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論