版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
目錄1引言 12系統(tǒng)設(shè)計分析 22.1總體設(shè)計框圖 22.2硬件電路設(shè)計分析 32.2.1時鐘電路設(shè)計 32.2.2復(fù)位電路設(shè)計 42.2.3矩陣鍵盤設(shè)計 52.2.4報警控制電路 62.2.5液晶顯示電路 72.3系統(tǒng)軟件設(shè)計 82.3.2初始化及按盤識別程序 92.3.3開鎖程序 92.3.4修改密碼程序 102.3.5LCD顯示程序 112.4仿真測試結(jié)果 123總結(jié) 14參考文件 15附錄 161引言伴隨科技和大家生活水平提升,怎樣實現(xiàn)家庭防盜這一問題也變尤其突出,傳統(tǒng)機械鎖因為結(jié)構(gòu)簡單,被撬事件屢見不鮮;電子鎖因為其保密性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶青睞。單片機,亦稱單片微電腦或單片微型計算機。它是把中央處理器(CPU)、隨機存取存放器(RAM)、只讀存放器(ROM)、輸入/輸出端口(I/0)等關(guān)鍵計算機功效部件全部集成在一塊集成電路芯片上微型計算機。計算機產(chǎn)生加緊了人類改造世界步伐,不過它畢竟體積大。微計算機(單片機)在這種情況下誕生了,它為我們改變了什么?縱觀我們現(xiàn)在生活各個領(lǐng)域,從導(dǎo)彈導(dǎo)航裝置,到飛機上多種儀表控制,從計算機網(wǎng)絡(luò)通訊和數(shù)據(jù)傳輸,到工業(yè)自動化過程實時控制和數(shù)據(jù)處理,和我們生活中廣泛使用多種智能IC卡、電子寵物等,這些全部離不開單片機。在單片機產(chǎn)生后,我們就將控制這些東西變?yōu)橹悄芑?,我們只需要在單片機外圍接一點簡單接口電路,關(guān)鍵部分只是由人為寫入程序來完成。這么產(chǎn)品體積變小了,成本也降低了,長久使用也不會擔(dān)心精度達不到了,且輕易升級改善。電子鎖能夠在日常生活和現(xiàn)代辦公中,住宅和辦公室安全防范、單位文件檔案、財務(wù)報表和部分個人資料保留等多個場所使用。大大提升了主人物資安全性,安全能夠替換傳統(tǒng)機械鎖?,F(xiàn)在使用密碼鎖種類繁多,各具特色。本文從經(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è)計電子密碼鎖。2系統(tǒng)設(shè)計分析2.1總體設(shè)計框圖本設(shè)計關(guān)鍵由單片機、矩陣鍵盤、液晶顯示器和密碼存放等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進行多種功效實現(xiàn)。由用戶經(jīng)過連接單片機矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入密碼和自己保留密碼進行對比,從而判定密碼是否正確,然后控制引腳高低電平傳到開鎖電路控制是否開鎖。系統(tǒng)整體框圖圖2-1所表示。AT89CAT89C51晶振電路復(fù)位電路鍵盤輸入模塊密碼存放模塊LCD顯示模塊開鎖電路蜂鳴器報警電路圖2-1系統(tǒng)整體框圖各模塊功效以下:1.鍵盤輸入模塊:分為密碼輸入按鍵和功效按鍵,用于完成密碼輸入功效。2.密碼存放模塊:用于完成掉電存放功效,使修改密碼斷電后仍能保留。3.晶振電路:用于單片機起振。4.復(fù)位電路:完成系統(tǒng)復(fù)位。5.LCD顯示模塊:用于完成對系統(tǒng)狀態(tài)顯示及操作提醒功效。6.開鎖電路:應(yīng)用發(fā)光二極管模擬開鎖,完成開鎖及開鎖提醒。2.2硬件電路設(shè)計分析本系統(tǒng)電路由鍵盤輸入部分、密碼存放部分、復(fù)位部分、顯示部分、報警部分、開鎖部分組成,依據(jù)實際情況鍵盤輸入部分選擇4×4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存放部分選擇內(nèi)部存放器來完成。其原理圖圖2-2所表示。圖2-2電子密碼鎖原理圖2.2.1時鐘電路設(shè)計時鐘電路為單片機產(chǎn)生時序脈沖,單片機全部運算和控制過程全部是在統(tǒng)一時序脈沖驅(qū)動下進行,假如單片機時鐘電路停止工作(晶振停振),那么單片機也就停止運行了。當(dāng)采取內(nèi)部時鐘時,連接方法以下圖所表示,在晶振引腳XTAL1(19腳)和XTAL2(18腳)引腳之間接入一個12MHZ晶振,兩個引腳對地分別再接入一個電容即可產(chǎn)生所需時鐘信號,電容容量通常在幾十皮法,如33PF。圖2-3所表示。圖2-3時鐘電路2.2.2復(fù)位電路設(shè)計復(fù)位是單片機初始化操作。單片機啟運運行時,全部需要先復(fù)位,其作用是使CPU和系統(tǒng)中其它部件處于一個確定初始狀態(tài),并從這個狀態(tài)開始工作。所以,復(fù)位是一個很關(guān)鍵操作方法。但單片機本身是不能自動進行復(fù)位,必需配合對應(yīng)外部電路才能實現(xiàn)。該復(fù)位電路采取按鍵電平復(fù)位式復(fù)位電路。當(dāng)單片機已在運行當(dāng)中時,按下復(fù)位鍵后松開,在復(fù)位引腳RET(9腳)腳連續(xù)出現(xiàn)24個振蕩器脈沖周期(即2個機器周期)高電平信號將使單片機復(fù)位。也能使RST為一段時間高電平,從而實現(xiàn)上電或開關(guān)復(fù)位操作。圖2-4所表示。圖2-4復(fù)位電路2.2.3矩陣鍵盤設(shè)計為了加強密碼保密性,采取一個4×4矩陣式鍵盤能夠任意設(shè)置用戶密碼(1-16位長度),從而提升了密碼保密性,同時也能降低和單片機接口時所占用I/O口線數(shù)目,節(jié)省了單片機寶貴資源,在按鍵比較多時候,通常采取這種方法。其原理圖圖2-5所表示。圖2-5矩陣鍵盤每一行和每一列交叉處不相同,而是經(jīng)過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N根行線和M根列線,即可組成含有N×M個按鍵矩陣鍵盤。在這種行列式矩陣鍵盤編碼單片機系統(tǒng)中,鍵盤處理程序首先實施等候按鍵并確定有沒有按鍵按下程序段。當(dāng)確定有按鍵按下后,下一步就是要識別哪一個按鍵被按下。對鍵識別方法通常有兩種:一個是行掃描查詢法;另一個是速度較快線反轉(zhuǎn)法。此系統(tǒng)中,我們采取線反轉(zhuǎn)法。首先分辨鍵盤中有沒有按鍵被按下,在單片機I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判定。具體方法是:向行線輸出全掃描字00H,把全部列線置成低電平,然后將列線電平狀態(tài)讀入累加器A中。假如有按鍵被按下,總會有一根行線電瓶被拉至低電平從而使行線不全為1。判定鍵盤中哪一個按鍵被按下通常是經(jīng)過將列線逐列至低電平后,檢驗行輸入狀態(tài)來實現(xiàn)。方法是:依次給列線送低電平,然后檢驗全部行線狀態(tài),假如全為1,則所按下按鍵不在此列;假如不全為1,則所按下按鍵必在此列,而且是在和零電平行線相交交點上那個按鍵。按鍵操作面板累計10個數(shù)字鍵和6個功效鍵,鍵盤側(cè)面還有一個微型蜂鳴器。鍵盤側(cè)面還有一個蜂鳴器,每操作一次,它便發(fā)出聲音,提醒操作成功。10個數(shù)字鍵用來輸入密碼,另外6個功效鍵分別是: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)完成,輸入密碼有誤或每次輸入密碼超時,則被認(rèn)為是密碼輸入錯誤。當(dāng)3次輸入全部錯誤時,程序?qū)⒎祷仄鹗紶顟B(tài)。密碼輸入正確后,繼電器吸合,表示鎖被打開。在密碼輸入正確情況下,程序進入查看密碼和修改密碼狀態(tài),按“E”鍵退出查看密碼狀態(tài)。按“B”鍵進入重新設(shè)置密碼狀態(tài),在輸入密碼時,如發(fā)覺輸入有誤,可按“C”刪除后,重新輸入,按“E”確定后,程序退出修改密碼狀態(tài)。按“D”鍵或等候10秒后程序退出修改密碼和查看密碼狀態(tài),回到起始狀態(tài)。程序內(nèi)定密碼為:1,送電開機時,只要輸入內(nèi)定密碼便可開門,這么可預(yù)防停電后再送電時無密碼可用。當(dāng)密碼輸入錯誤或密碼輸入時間超出要求時間時,蜂鳴器報警。鍵盤功效如表2-1所表示。表2-1按鍵功效表按鍵鍵名功效說明0-9鍵數(shù)字鍵輸入密碼A鍵查看鍵查看密碼B鍵設(shè)置新密碼鍵設(shè)置新密碼C鍵退格鍵退格刪除D鍵返回鍵返回到開始界面E鍵F鍵確定/退出鍵開啟鍵確定/退出開啟密碼輸入2.2.4報警控制電路該電路采取單頻音報警電路,實現(xiàn)單頻音報警接口電路比較簡單,其發(fā)音元件通常可采取壓電蜂鳴器,當(dāng)在蜂鳴器兩引腳上加3~15V直流工作電壓,就能產(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所表示。圖2-6報警控制電路2.2.5液晶顯示電路本設(shè)計顯示電路是為了給使用者以提醒而設(shè)置為了達成界面友好目標(biāo),顯示部分由液晶顯示器LCD1602替換一般數(shù)碼管完成。開鎖時,按下鍵盤上開鎖按鍵后,利用鍵盤上數(shù)字鍵0-9輸入密碼,每按下一個數(shù)字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當(dāng)密碼輸入完成時,按下確定鍵,假如輸入密碼正確話,LCD顯示“IUPUTRIGHT”,單片機其中P3.0引腳會輸出低電平,使三極管T2導(dǎo)通,電磁鐵吸合,繼電器開關(guān)跳轉(zhuǎn),電子密碼鎖被打開,假如密碼不正確,LCD顯示器會顯示“IUPUTERROR”,P3.0輸出是高電平,電子密碼鎖不能打開。經(jīng)過LCD顯示器,能夠清楚地判定出密碼鎖所處狀態(tài)。電路圖圖2-7所表示。圖2-7顯示電路2.3系統(tǒng)軟件設(shè)計N系統(tǒng)軟件設(shè)計采取匯編語言編碼。設(shè)計方法是先用文本編輯器編寫源碼,然后用軟件KeilC51編譯,假如沒有錯誤,可連接生成.HEX格式文件(需事先在KeilC51中設(shè)置)。假如有錯誤則無法連接,但可在生成.OBJ文件中找到代碼錯誤地方,便于修改。當(dāng)然也能夠直接在Keil中編碼。生成HEX文件是統(tǒng)計文本行ASCII文本文件,在HEX文件中,每一行是一個HEX統(tǒng)計,由十六進制數(shù)組成機器碼或數(shù)據(jù)常量。HEX文件常常被用于將程序或數(shù)據(jù)傳輸存放到ROM、EPROM,大多數(shù)編程器和模擬器使用HEX文件。N系統(tǒng)主程序圖2-8所表示。因為用戶在使用系統(tǒng)過程中,可能在任何時刻按下任何按鍵,而程序全部必需對此作出正確響應(yīng)。錯誤次數(shù)加1N錯誤次數(shù)加1N提醒正確提醒錯誤開鎖延時關(guān)鎖密碼正確標(biāo)志位=1NNN鎖定開始系統(tǒng)初始化顯示菜單一鍵盤掃描顯示菜單二密碼輸入是否開啟輸入Y錯誤3次?YYYN修改密碼?存新密碼D鍵按下?Y密碼正確?密碼比較YYYYYNN圖2-8系統(tǒng)主步驟圖2.3.2初始化及按盤識別程序圖2-9所表示,系統(tǒng)初始化包含堆棧起始地址設(shè)定,定時/計數(shù)器設(shè)定,液晶顯示模式設(shè)定,密碼緩沖區(qū)初始化,部分自定義數(shù)據(jù)空間初始化等操作。系統(tǒng)初始化并讀取密碼完成后,液晶顯示“PASSWORDCONTROL”,提醒用戶能夠輸入密碼。此時程序即不停測試按鍵,檢驗是否有按鍵被按下。假如有,則進行按鍵識別;假如沒有按鍵按下,或按下按鍵沒有被識別,R3賦值0FFH,并跳轉(zhuǎn)至按鍵測試。實際程序運行時,絕大部分時間全部在測試按鍵,等候用戶輸入。圖2-9初始化及按鍵識別步驟圖2.3.3開鎖程序首先LCD初始化,輸入密碼,密碼正確則使開鎖電路動作,引腳P2.3得到低電平使發(fā)光二極管燈亮,開鎖。開鎖程序步驟圖圖2-10所表示。開始開始LCD初始化按開啟鍵LCD初始化輸入密碼確定程序輸入密碼正確?開鎖成功錯誤次數(shù)加13次錯誤?YNNY圖2-10開鎖步驟圖2.3.4修改密碼程序圖2-11所表示,能夠看出,改密鍵處理步驟跟開鎖鍵類似,全部需檢驗密碼是否正確,錯誤話,提醒重新輸入,只有輸入密碼正確才能夠進行改密。然后再按更改鍵,密碼更改程序被調(diào)用,進而更改密碼,此過程,LCD全部會顯示信息。圖2-11修改密碼步驟圖2.3.5LCD顯示程序液晶顯示子程序在每次更新顯示內(nèi)容時全部會被調(diào)用,其步驟圖2-12所表示。圖2-12LCD顯示子程序步驟圖每次更新顯示內(nèi)容前,需清顯示清空LCD原先顯示內(nèi)容,清屏指令指令碼為01H,立即P0口賦值01H,然后寫入指令寄存器IR。LCD1602要顯示內(nèi)容是依據(jù)其控制器內(nèi)置字符碼表,事先列出要顯示ASCII字符串。每次送一個字符ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最終將字符地址加一,LCD1602會將寫入ASCII碼對應(yīng)字符依次顯示出來。因為顯示字符串長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時,即停止寫入,返回。LCD顯示內(nèi)容在下次更新前會一直保持。2.4仿真測試結(jié)果開機后,LCD1602顯示圖2-13所表示,等候按鍵輸入。圖2-13開機界面輸入密碼分兩個過程:首先必需開啟密碼輸入功效才能輸入密碼,按住“F”鍵3秒以上才能開啟進入輸入密碼程序,進入輸入密碼狀態(tài),LCD1602顯示圖2-14所表示:圖2-14輸入界面此時使用矩陣鍵盤輸入密碼,在輸入密碼狀態(tài)下,0-9為有效數(shù)字鍵。本系統(tǒng)有時間、次數(shù)限制功效,不給她人試探機會:三次輸入密碼機會,每次限制在10秒內(nèi)完成,輸入過程圖2-15所表示:圖2-15輸入過程界面當(dāng)密碼輸入正確后,LCD顯示界面圖2-16所表示:圖2-16輸入正確界面在輸入密碼正確基礎(chǔ)上能夠在密碼輸入正確情況下,程序進入查看密碼和修改密碼狀態(tài)。按“B”鍵進入重新設(shè)置狀態(tài),在輸入新密碼時,能夠按“C”鍵刪除修改,按“E”確定后,程序退出修改密碼狀態(tài)。界面圖2-17所表示:圖2-17修改密碼界面按“A”鍵進入查看密碼狀態(tài),LCD顯示界面圖2-18所表示:圖2-18查看密碼界面在密碼輸入錯誤或是超出輸入時間時,當(dāng)錯誤次數(shù)為3次后,LCD回到初始界面,并鎖定。假如錯誤則LCD顯示界面圖2-17所表示:圖2-17輸入錯誤界面3總結(jié)課程設(shè)計是培養(yǎng)學(xué)生綜合利用所學(xué)知識,發(fā)覺,提出,分析和處理實際問題,鍛煉實踐能力關(guān)鍵步驟,是對學(xué)生實際工作能力具體訓(xùn)練和考察過程.伴隨科學(xué)技術(shù)發(fā)展日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍領(lǐng)域,
在生活中能夠說得是無處不在。所以作為二十一世紀(jì)大學(xué)來說掌握單片機開發(fā)技術(shù)是十分關(guān)鍵。在著手此次課程設(shè)計時,經(jīng)過查閱網(wǎng)絡(luò)資料,再加上請教同學(xué)和老師,結(jié)合生活中對密碼鎖功效特征要求,設(shè)計出了這一套電子密碼鎖系統(tǒng)關(guān)鍵硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基礎(chǔ)完成了課題要求。此次課程設(shè)計所設(shè)計系統(tǒng)簡單只能實現(xiàn)部分簡單功效,還有很多不足之處,自己所學(xué)知識和能力有限。回顧起此次單片機課程設(shè)計,至今我仍感慨頗多,確實,從選題到定稿,從理論到實踐,能夠說得是苦多于甜,不過能夠?qū)W到很多很多東西,同時不僅能夠鞏固了以前所學(xué)過知識,而且學(xué)到了很多在書本上所沒有學(xué)到過知識。經(jīng)過這次課程設(shè)計使我知道了理論和實際相結(jié)合是很關(guān)鍵,只有理論知識是遠(yuǎn)遠(yuǎn)不夠,只有把所學(xué)理論知識和實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提升自己實際動手能力和獨立思索能力。在設(shè)計過程中碰到問題,能夠說得是困難重重,這畢竟第一次做,難免會碰到過多種多樣問題,同時在設(shè)計過程中發(fā)覺了自己不足之處,對以前所學(xué)過知識了解得不夠深刻,掌握得不夠牢靠,對單片機匯編語言掌握得不好,尤其是外部中止,定時/計數(shù)器和串行口,掌握不好,應(yīng)用不熟練。經(jīng)過這次課程設(shè)計以后,一定把以前所學(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.2PASS_OKBIT20H.3PASS_OLDEQU30HPASS_NEWEQU37HPASS_DISEQU40H;密碼顯存單元COUNTEQU47H;50ms計數(shù)單元SECEQU48H;秒單元POSEQU49HBUSYBITP0.7LCD_RSBITP2.0;LCD控制管腳定義LCD_RWBITP2.1LCD_ENBITP2.2DATAPORTEQUP0;定義LCD數(shù)據(jù)端口LCD_XEQU29H TIMESEQU2AHBUSY_CHECKBIT20H.0ORG0000HAJMPMAINORG000BHLJMPTIMER0ORG0050HMAIN:MOVSP,#60H;設(shè)置堆棧指針MOVP0,#0FFHMOVP1,#0FFHMOVP2,#0FFHMOVTMOD,#01H;工作于方法1MOVTH0,#4CH;50ms定時常數(shù)MOVTL0,#00HSETBET0SETBEAMOVPASS_OLD,#01H;內(nèi)定密碼值MOVPASS_OLD+1,#01HMOVPASS_OLD+2,#01HMOVPASS_OLD+3,#01HMOVPASS_OLD+4,#01HMOVPASS_OLD+5,#01HACALLLCD_INIT;LCD初始化MAIN1:CLRTR0CLRSEC3CLRSEC10CLRPASS_OK MOVCOUNT,#00H MOVSEC,#00HSETBRELAY;繼電器釋放ACALLMENU1ACALLSTART_IN MOVR4,#03H;3次輸入密碼機會MAIN2:ACALLPASS_INACALLPASS_COMP MOVR5,#100;延時1s ACALLDELAY JBPASS_OK,MAIN3 DJNZR4,MAIN2 AJMPMAIN1MAIN3:ACALLPASS_LOOKACALLCHANGE_PASSJBSEC10,MAIN4 ACALLKEY_SCANCJNEA,#0DH,MAIN3;判是否"D"按下?MAIN4: ACALLBEEP_BLAJMPMAIN1;菜單1顯示子程序(PASSWORDCONTROL);(LEARNBYHEART)MENU1:MOVB,#00HMOVDPTR,#INFO1;指針指到信息1ACALLW_STRING1MOVB,#00HMOVDPTR,#INFO4;指針指到信息4ACALLW_STRING2RET;菜單2顯示子程序(INPUTPASSWORD);(PASSWORD)MENU2:MOVB,#00HMOVDPTR,#INFO3;指針指到信息3ACALLW_STRING1MOVB,#00HMOVDPTR,#INFO2;指針指到信息2ACALLW_STRING2RET;菜單3顯示子程序(LOOKPASSWORD);(PASSWORD)MENU3:MOVB,#00HMOVDPTR,#INFO7;指針指到信息7ACALLW_STRING1MOVB,#00HMOVDPTR,#INFO2;指針指到信息2ACALLW_STRING2RET;菜單4顯示子程序(CHANGEPASSWORD);(PASSWORD)MENU4:MOVB,#00HMOVDPTR,#INFO8;指針指到信息1ACALLW_STRING1MOVB,#00HMOVDPTR,#INFO2;指針指到信息2ACALLW_STRING2RET;信息字符串表INFO1:DB"PASSWORDCONTROL",0INFO2:DB"PASSWORD",0INFO3:DB"INPUTPASSWORD",0INFO4:DB"LEARNBYHEART",0INFO5:DB"IUPUTRIGHT",0INFO6:DB"IUPUTERROR",0INFO7:DB"LOOKPASSWORD",0INFO8:DB"RESETPASSWORD",0;矩陣鍵盤鍵值查找程序;鍵值存入R3KEY_SCAN:MOVP1,#0F0H;置列線為0,行線為1NOPMOVA,P1;讀入P1口狀態(tài)ANLA,#0F0H;保留高4位MOVB,A;保留數(shù)據(jù)MOVP1,#0FH;置列線為1,行線為0NOPMOVA,P1;讀入P1口狀態(tài)ANLA,#0FH;保留低4位ORLA,B;高四位和低四位重新組合CJNEA,#0FFH,KEY_IN1;0FFH為末按鍵AJMPKEY_ENDKEY_IN1:MOVB,A;保留鍵值MOVDPTR,#KEYTABLE;置鍵編碼表首址MOVR3,#0FFH;KEY_IN2:INCR3;查表次數(shù)加1MOVA,R3MOVCA,@A+DPTR;取出鍵碼CJNEA,B,KEY_IN3;比較MOVA,R3;找到,取次數(shù)值A(chǔ)JMPKEY_ENDKEY_IN3:CJNEA,#00H,KEY_IN2;繼續(xù)查;00H為結(jié)束碼KEY_END:RET;鍵編碼表KEYTABLE:DB0EEH,0EDH,0EBH,0E7H,0DEHDB0DDH,0DBH,0D7H,0BEH,0BDHDB0BBH,0B7H,07EH,07DH,07BHDB077H,00H;00H為結(jié)束碼;密碼顯示子程序PASS_PLAY:MOVR0,#PASS_OLD;存放數(shù)據(jù)首地址MOVR2,#06H;顯示6組數(shù)據(jù)MOVLCD_X,#09H;第9列ACALLSET_X2;第二行P_PLAY:MOVA,@R0;取顯示數(shù)據(jù)ADDA,#30H;轉(zhuǎn)換為ASCII碼ACALLWDATA;寫數(shù)據(jù),顯示INCR0;修改存放數(shù)據(jù)地址DJNZR2,P_PLAYRET;開啟輸入子程序;按F鍵大于3秒,方可退出此程序START_IN:CLRSEC3;清3s標(biāo)志位 MOVCOUNT,#00H;清中止計數(shù)單元 MOVSEC,#00HS_IN1:ACALLKEY_SCANCJNEA,#0FH,S_IN1;"F"鍵SETBTR0;開啟TIMER0中止S_IN2:ACALLKEY_SCANCJNEA,#0FH,S_IN3;"F"鍵JNBSEC3,S_IN2;沒有達成3s,轉(zhuǎn)移CLRTR0;停止TIMER0中止CLRSEC3;清3s標(biāo)志位 MOVSEC,#00HMOVCOUNT,#00H;清中止計數(shù)單元ACALLMENU2ACALLBEEP_BLAJMPS_ENDS_IN3:CLRTR0;停止TIMER0中止CLRSEC3;清3s標(biāo)志位MOVCOUNT,#00H;清中止計數(shù)單元 MOVSEC,#00HAJMPS_IN1S_END:RET;密碼輸入子程序PASS_IN:ACALLMENU2MOVR0,#PASS_NEW;存放輸入密碼單元首地址MOVR2,#06H;6位密碼MOVLCD_X,#09H;確定顯示首位置ACALLSET_X2CLRSEC10;清10s標(biāo)志位 MOVSEC,#00H;清秒計數(shù)單元MOVCOUNT,#00H;清中止計數(shù)單元SETBTR0P_IN1:JBSEC10,P_ENDACALLKEY_SCANCJNEA,#0FFH,P_IN2;判是否有鍵按下?AJMPP_IN1P_IN2:ACALLKEY_SCANCJNEA,#0AH,P_IN3;數(shù)字鍵0-9有效P_IN3:JNCP_IN1;>=時,C=0MOVA,R3;取鍵值MOV@R0,A;保留輸入密碼值INCR0MOVA,#2AH;轉(zhuǎn)換為ASCII碼ACALLWDATA;顯示輸入密碼位數(shù)ACALLBEEP_BL;蜂鳴器響一聲DJNZR2,P_IN1P_END:CLRTR0 MOVSEC,#00H;清秒計數(shù)單元 CLRSEC10;清10s標(biāo)志位 MOVCOUNT,#00H;清中止計數(shù)單元RET;修改密碼子程序CHANGE_PASS:ACALLKEY_SCANCJNEA,#0BH,CH_END;判"B"鍵是否按下?CLRTR0ACALLMENU4MOVR0,#PASS_OLD;存放輸入密碼單元首地址MOVR2,#06H;6位密碼MOVPOS,#09H;確定顯示首位置ACALLBEEP_BLCH_IN1:ACALLKEY_SCANCJNEA,#0FFH,CH_IN2;判是否有鍵按下?AJMPCH_IN1CH_IN2: ACALLKEY_SCANCJNEA,#0AH,CH_IN3;數(shù)字鍵0-9有效CH_IN3:JNCCH_IN4;>=時,C=0MOVLCD_X,POS;確定顯示位置ACALLSET_X2MOVA,R3;取鍵值MOV@R0,A;保留輸入密碼值MOVA,#2AH;轉(zhuǎn)換為ASCII碼ACALLWDATA;顯示輸入密碼位數(shù)ACALLBEEP_BL;蜂鳴器響一聲INCPOSINCR0DJNZR2,CH_IN1;6位密碼是否輸入完?AJMPCH_IN6CH_IN4:ACALLKEY_SCANCJNEA,#0CH,CH_IN1;"C"修改鍵MOVA,POSCJNEA,#09H,CH_IN5;檢測POS是否到最小值A(chǔ)JMPCH_IN1CH_IN5:DECPOSDECR0INCR2MOVLCD_X,POSACALLSET_X2MOVA,#2DH;顯示"-"ACALLWDATAACALLBEEP_BL;蜂鳴器響一聲AJMPCH_IN1CH_IN6:ACALLKEY_SCANCJNEA,#0EH,CH_IN7;"E"鍵確定退出ACALLMENU1ACALLBEEP_BLAJMPCH_ENDCH_IN7:CJNEA,#0CH,CH_IN6;"C"鍵返回修改AJMPCH_IN5CH_END:SETBTR0RET;密碼比較子程序;比較正確,置密碼正確標(biāo)志位。;比較錯誤,清密碼正確標(biāo)志位。PASS_COMP:MOVR2,#06H;比較6組數(shù)據(jù)MOVR0,#PASS_OLDMOVR1,#PASS_NEWP_COMP0:MOVA,@R0MOVB,@R1CJNEA,B,P_COMP1INCR0INCR1DJNZR2,P_COMP0SETBPASS_OK;置密碼正確標(biāo)志位CLRRELAY;繼電器吸合MOVB,#00HMOVDPTR,#INFO5;指針指到信息5ACALLW_STRING2MOVSEC,#00H;清秒計數(shù)單元 CLRSEC10;清10s標(biāo)志位 MOVCOUNT,#00H;清中止計數(shù)單元 SETBTR0RETP_COMP1:CLRPASS_OK;清密碼正確標(biāo)志位MOVB,#00HMOVDPTR,#INFO6;指針指到信息6ACALLW_STRING2RET;查看密碼子程序PASS_LOOK:ACALLKEY_SCANCJNEA,#0AH,LOOK_END;"A"鍵查看 ACALLMENU3CLRTR0ACALLPASS_PLAYACALLBEEP_BLLOOK_1:ACALLKEY_SCANCJNEA,#0EH,LOOK_1;"E"鍵退出 ACALLMENU1 ACALLBEEP_BL SETBTR0LOOK_END:RET;蜂鳴器響一聲子程序BEEP_BL:MOVR6,#200BL1:ACALLBL2CPLBEEP;蜂鳴器取反產(chǎn)生驅(qū)動脈沖DJNZR6,BL1SETBBEEP;關(guān)閉蜂鳴器MOVR5,#15ACALLDELAYRETBL2:MOVR7,#200BL3:NOPDJNZR7,BL3RET;定時器0計時中止子程序TIMER0:PUSHACCPUSHPSWMOVTL0,#00H;50ms定時常數(shù)MOVTH0,#4CHINCCOUNTMOVA,COUNT;50ms計數(shù)值加1CJNEA,#20,T0_ENDMOVCOUNT,#0INCSEC;秒加1MOVA,SECCJNEA,#03H,T0_0SETBSEC3;置3s標(biāo)志位T0_0:CJNEA,#10,T0_END;是否到10秒?MOVSEC,#0;秒單元清0SETBSEC10;置10s標(biāo)志位T0_END:POPPSWPOPACCRETI;延時R5*10MS子程序DELAY:MOVR6,#50DEL1:MOVR7,#93DEL2:DJNZR7,DEL2DJNZR6,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-D7=指令碼,E=高脈沖WCOM:JNBBUSY_CHECK,WCOM_1ACALLLCD_BUSYWCOM_1:MOVDATAPORT,A;寫入指令和地址CLRLCD_RSCLRLCD_RWNOPSETBLCD_ENNOPCLRLCD_ENRET;LCD寫數(shù)據(jù)子程序;LCD_RS=H,LCD_RW=L,D0-D7=數(shù)據(jù)碼,E=高脈沖WDATA:ACALLLCD_BUSYMOVDATAPORT,A;寫入數(shù)據(jù)SETBLCD_RSCLRLCD_RWNOPSETBLCD_ENNOPCLRLCD_ENRET;在LCD第一行指定顯示位置SET_X1:MOVA,LCD_XADDA,#80HACALLWCOMRET;在LCD第二行指定顯示位置SET_X2:MOVA,LCD_XADDA,#0C0HACALLWCOMRET;清除LCD第一行CLR_LINE1:MOVA,#80H;設(shè)置LCD第一行地址ACALLWCOM;MOVR0,#16;設(shè)置計數(shù)值
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生院信息報送工作制度
- 農(nóng)村衛(wèi)生所協(xié)管制度
- 萬達公共衛(wèi)生間管理制度
- 水果間衛(wèi)生監(jiān)管制度
- 某單位衛(wèi)生管理制度
- 衛(wèi)生健康宣傳制度
- 衛(wèi)生保健所規(guī)章制度
- 精神科食品衛(wèi)生管理制度
- 學(xué)校衛(wèi)生間消殺制度
- 選煤廠職業(yè)衛(wèi)生管理制度
- 加班工時管控改善方案
- 2025年江蘇省高考地理真題(含答案解析)
- 口腔科院感預(yù)防與控制考核試題附答案
- 心肌梗死護理教學(xué)課件
- 2025年市場監(jiān)督管理局招聘面試題及答案
- DB42T 1279-2017 機動車檢驗檢測機構(gòu)資質(zhì)認(rèn)定評審?fù)?用指南
- 應(yīng)急測繪服務(wù)方案(3篇)
- 2025至2030年中國移動充電車行業(yè)市場全景評估及發(fā)展策略分析報告
- 2025年湖南省長沙市長郡教育集團中考三模道德與法治試題
- 南京市五校聯(lián)盟2024-2025學(xué)年高二上學(xué)期期末考試英語試卷(含答案詳解)
- 云南省昆明市五華區(qū)2024-2025學(xué)年高一上學(xué)期1月期末考試地理試題(解析版)
評論
0/150
提交評論