版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用數(shù)字
2、密碼代替鑰匙的單片機控制的電子密碼鎖應(yīng)運而生。</p><p> 在這次畢業(yè)設(shè)計中我采用AT89C51單片機為核心4*4矩陣鍵盤作為輸入器件,LCD1602字符型液晶作為顯示電路來制作基于單片機的電子密碼鎖。該密碼鎖具有可更改密碼、密碼掉電保護、輸入密碼錯誤報警、輸入密碼錯誤三次鎖定鍵盤的功能。該密碼鎖具有操作人性化、低功耗、高保密性等一系列優(yōu)點。本文詳細(xì)地介紹了系統(tǒng)硬件與軟件的設(shè)計,以及仿真調(diào)試的詳細(xì)過程。&
3、lt;/p><p> 關(guān)鍵詞:4*4矩陣鍵盤, AT89C51, 1602LCD顯示器,密碼鎖</p><p><b> Abstract</b></p><p> In our daily life, the security of house, company department, documents and finance forms
4、, also some personal information always used the lock to protect them. If use the normal keys to lock out the door, we should taken many keys with us . That is so difficult to use. And if we lost the keys with careless,
5、the security looks very easy to break out. As the developing of the technology people ask for high security machines. For satisfy this request, the cipher lock is appeared. The cipher has hig</p><p> At the
6、 graduation design I AT89C51 microcontroller as the core 4 * 4 matrix as input devices, LCD1602 keyboard type LCD display circuit as a character based on single chip to make the electronic combination lock. This combinat
7、ion lock has may change your password, password off electricity protection, input password mistake alarm, input password mistake three times the function of lock the keypad. This combination lock have operation humanizat
8、ion, low power consumption, high confidentiality and s</p><p> Keywords: matrix keyboards, AT89C51, 1602LCD, combination lock</p><p><b> 目錄</b></p><p><b>
9、; 第1章 概論1</b></p><p> 1.1 設(shè)計意義1</p><p> 1.2背景知識介紹1</p><p> 1.3 本文主要工作以及內(nèi)容安排2</p><p> 第2章 系統(tǒng)總體方案設(shè)計3</p><p> 2.1 總體方案設(shè)計3</p><p&g
10、t; 2.1.1 實現(xiàn)功能:3</p><p> 2.1.2 4*4鍵盤說明4</p><p> 2.2 AT89C51單片機介紹4</p><p><b> 2.3硬件設(shè)計6</b></p><p> 2.3.1 時鐘電路的設(shè)計6</p><p> 2.3.2 復(fù)位電路
11、的設(shè)計7</p><p> 2.3.3 密碼存儲電路的設(shè)計8</p><p> 2.3.4 鍵盤電路設(shè)計9</p><p> 2.3.5 顯示電路的設(shè)計11</p><p> 2.3.6 報警電路14</p><p> 2.3.7 開鎖電路15</p><p> 第3章
12、軟件設(shè)計16</p><p> 3.1 編程工具介紹16</p><p> 3.2 編程語言介紹17</p><p> 3.3 軟件編程18</p><p> 3.3.1軟件設(shè)計原則18</p><p> 3.3.2 軟件設(shè)計方案18</p><p> 3.3.3 4*
13、4矩陣鍵盤的編程方法19</p><p> 3.3.4液晶顯示子程序21</p><p> 3.3.5 密碼比較和報警程序22</p><p> 3.3.6 密碼重置程序設(shè)計23</p><p> 第4章 軟件仿真以及調(diào)試26</p><p> 4.1 仿真軟件簡介26</p>&
14、lt;p> 4.2 仿真程序基本工作界面26</p><p> 4.3 仿真過程27</p><p><b> 總結(jié)30</b></p><p><b> 參考文獻31</b></p><p><b> 致謝32</b></p><
15、p> 附錄A:程序主函數(shù)33</p><p> 附錄B:總電路圖36</p><p><b> 第1章 概論</b></p><p><b> 1.1 設(shè)計意義</b></p><p> 單片機的應(yīng)用是具有高度現(xiàn)實意義的。單片機極高的可靠性,微型性和智能性,單片機已成為工業(yè)控制領(lǐng)
16、域中普遍采用的智能化控制工具,已經(jīng)深深地滲入到我們的日常生活當(dāng)中。在這次基于單片機的電子密碼鎖畢業(yè)設(shè)計中,不僅使我加深對大學(xué)所學(xué)知識的理解,而且使我對單片機有了進一步的了解。在設(shè)計的過程中,不僅使我熟悉了AT89C51單片的基本結(jié)構(gòu)和相關(guān)的參數(shù),而且了解單片機最小系統(tǒng)的構(gòu)成。在這次設(shè)計中所學(xué)到的相關(guān)知識也許會在將來的工作和學(xué)習(xí)中用到。</p><p> 隨著單片機在各個領(lǐng)域的廣泛應(yīng)用,許多用單片機做控制的密碼鎖
17、系統(tǒng)也應(yīng)運而產(chǎn)生,如用單片機控制LCD液晶的各種顯示器顯示數(shù)據(jù),用單片機控制LED七段操作顯示器等。本次設(shè)計用由AT89C51編程控制LCD1602液晶作顯示的密碼鎖系統(tǒng)。該系統(tǒng)具有設(shè)定密碼并儲存密碼、報警、輸入密碼錯誤鎖定鍵盤等功能。它具有高保密性,操作方便、性能穩(wěn)定等特點,可以廣泛適合各類檔案管理場所或者家庭室內(nèi)財務(wù)保管處。通過本次基于AT89C51系列單片機密碼鎖的設(shè)計,可以了解、熟悉有關(guān)單片機開發(fā)設(shè)計的過程,并加深對單片機的理解
18、和應(yīng)用以及掌握單片機與外圍接口的一些方法和技巧,這主要表現(xiàn)在以下一些方面:</p><p> 1) 密碼鎖系統(tǒng)包含了8051系列單片機的最小應(yīng)用系統(tǒng)的構(gòu)成。</p><p> 2) 可以了解到1602液晶的接口、工作原理以及這種顯示器的接口實例與具體連接與編程方法。</p><p> 3) 用AT24C02儲存密碼的原理和方法。</p><
19、p><b> 1.2背景知識介紹</b></p><p> 單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。</p><p> 單片機自20世紀(jì)70年代問世以
20、來,以極其高的性價比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機的優(yōu)點是體積小、重量輕、抗干擾能力強,價格低廉,可靠性高,靈活性好,開發(fā)較為容易。單片機以其一系列優(yōu)點,近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個環(huán)節(jié)以及人民生活的各個層次中,如車間流水線控制、自動化系統(tǒng)等、智能型家用電器等。</p><p
21、> ATMEL公司開發(fā)生產(chǎn)了新型的8位單片機——AT89系列單片機。它不但具有一般MCS-51單片機的所有特性,而且還擁有一些獨特的優(yōu)點,此次設(shè)計中所用到的AT89C51就是其中典型的代表。單片機內(nèi)部也有和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲器件,用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動滾筒洗衣機,排煙罩VCD等等的家電里面都可以看到它的身影。
22、 </p><p> 1.3 本文主要工作以及內(nèi)容安排</p><p> 本文主要介紹電子密碼鎖需要實現(xiàn)的功能以及如何利用單片機來制作電子密碼鎖。在本文中詳細(xì)地介紹了具體硬件設(shè)計和軟件模塊化編程以及設(shè)計中各個功能的實現(xiàn)方法和過程。具體內(nèi)容有:</p><p> 全文共分4章,結(jié)構(gòu)安排如下:</p><p> 第1
23、章 緒論介紹了本次設(shè)計目的及意義以及單片機的發(fā)展現(xiàn)狀、1602字符型液晶在電子密碼鎖系統(tǒng)中的應(yīng)用以及主要實現(xiàn)的功能。</p><p> 第2章 介紹了本次設(shè)計的硬件電路的設(shè)計思路以及元件的選擇,詳細(xì)的說明電路圖中各個部分的功能和連線方式,為下一步的編程設(shè)計作好鋪墊。</p><p> 第3章 介紹了單片機編程軟件和常用的編程語言,確定了編程的主題思路以及設(shè)計功能的具體實現(xiàn)方法。<
24、;/p><p> 第4章 介紹了如何在電腦上實現(xiàn)設(shè)計的軟件仿真。 </p><p> 第2章 系統(tǒng)總體方案設(shè)計</p><p> 2.1 總體方案設(shè)計</p><p> 考慮各方面因素本設(shè)計采用的是用以AT89C51為核心的單片機控制方案。利用單片機靈活的編程設(shè)計和
25、豐富的I/O端口,及其控制的準(zhǔn)確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加掉電存儲、聲光提示甚至添加遙控控制功能。其設(shè)計方案如圖2.1所示。</p><p> 圖2.1 單片機控制方案</p><p> 實現(xiàn)此方案硬件是基礎(chǔ),程序是關(guān)鍵。要充分利用仿真軟件,不斷調(diào)試程序,以使程序在滿足各種功能的情況下最簡。</p><p> 2.1.1 實現(xiàn)功能:</p
26、><p> 密碼鎖初始密碼為:000000. </p><p> ?。?)開鎖:插上電源后,程序自動調(diào)入初始密碼,此時依次輸入:000000,然后按[#](確認(rèn))鍵,此時鎖會打開,可以看到顯示open,密碼鎖打開。</p><p> (2)退出并關(guān)鎖:按下[*](取消)鍵,此時鎖關(guān)閉,所有輸入清除。</p><p> (3) 修改密碼:在開
27、鎖狀態(tài)下,再次輸入正確的密碼并按下[#](確認(rèn))鍵,此時聽到兩聲提示,輸入新的六位密碼并按[D](重設(shè))鍵,再重復(fù)輸入一次新密碼并按[D],會聽到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲到AT24C02。(如兩次輸入的新密碼不一樣,則重設(shè)密碼失?。?lt;/p><p> (4) 報警并鎖定鍵盤:當(dāng)輸入密碼錯誤后,報警并鎖定鍵盤3秒,如3秒內(nèi)又有按鍵,3秒后再啟動。</p><p>
28、; 當(dāng)重置新密碼時,新密碼會保存于AT24C02存儲器里.。</p><p> 2.1.2 4*4鍵盤說明 </p><p> 采用4*4鍵盤輸入,鍵盤對應(yīng)名稱如表2.1</p><p> 表2.1 鍵盤名稱分布</p><p> 其中,[09]為數(shù)字輸入鍵,用于輸入相應(yīng)的數(shù)字</p><p> [*
29、]號鍵為取消當(dāng)前操作</p><p><b> [#]號鍵為確認(rèn)</b></p><p><b> [D]鍵為修改密碼</b></p><p><b> 其它鍵無功能及定義</b></p><p> 2.2 AT89C51單片機介紹</p><p&
30、gt; AT89C51單片機包括:一個8位的微型處理器CPU;一個128K的片內(nèi)數(shù)據(jù)存儲器RAM;4K片內(nèi)程序存儲器ROM;四個8位并行的I/O接口P0P3,每個接口既可以輸入,也可以輸出;兩個定時器/記數(shù)器;五個中斷源的中斷控制系統(tǒng);一個全雙工UART的串行I/O口;片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率是12MHZ。以上各個部分通過內(nèi)部總線相連接。下面簡單介紹其主要部分的功能。</p>
31、<p> 處理器:CPU是單片微型計算機內(nèi)部的核心部件,由它讀入用戶程序,并</p><p> 逐條執(zhí)行指令,它是由8位算術(shù)邏輯運算部件(簡稱ALU)、定時/控制部件,若干寄存器A、B、PSW、SP以及16位程序計數(shù)器(PC)和數(shù)據(jù)指針寄存器(DPTR)等主要部件組成。算術(shù)邏輯單元的硬件結(jié)構(gòu)與典型微型機相似。它具有對8位信息進行+、-、*、/ 四則運算和邏輯與、或、異或、取反、清“0”等運算,并
32、具有判跳、轉(zhuǎn)移、數(shù)據(jù)傳送等功能,此外還提供存放中間結(jié)果及常用數(shù)據(jù)寄存器??刂破鞑考怯芍噶罴拇嫫?、譯碼器、定時與控制電路以及信息傳送控制等部件組成的。指令寄存器中存放指令代碼。在執(zhí)行指令時,從程序存儲器中取來經(jīng)譯碼器譯碼后,根據(jù)不同指令由定時與控制電路發(fā)出相應(yīng)的控制信號,送到存儲器、運算器或I/O接口電路,完成指令功能。程序計數(shù)器PC用來存放下一條將要執(zhí)行的指令地址,共16位.可對以64K字節(jié)的程序存儲器直接尋址,指令執(zhí)行結(jié)束后,PC計
33、數(shù)器自動增加,指向下一條要執(zhí)行的指令地址。CPU功能,總的來說是以不同的方式,執(zhí)行各種指令。不同的指令其功能略異。有的指令涉及到寄存器之間的關(guān)系;有的指令涉及到單片機核心電路內(nèi)部各功能部件的關(guān)系;有的則與外部芯片如外部程序存儲器發(fā)生聯(lián)系。事實上,CPU是通過</p><p> 表 2.2. P3口的第二功能</p><p> 輸入/輸出引腳P0口、P1口、P2口及P3口: P0口(2
34、2腳~39腳),P0.0~P0.7統(tǒng)稱為P0口。當(dāng)不接外部存儲器與不擴展I/O接口時,它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲器或擴展I/O口時,P0口為地址/數(shù)據(jù)分時復(fù)用口。它分時提供8位雙向數(shù)據(jù)總線;P1口(1腳~8腳),P1.0~P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對于EPROM編程和進行程序校驗時,P0口</p><p> 接收輸入的低8位地址;P2口(21腳~28腳),P2.
35、0~P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲器或擴展I/O接口且尋址范圍超過256個字節(jié)時,P2口用于高8位地址總線送出高8位地址。對于EPROM編程和進行程序校驗時,P2口接收輸入的8位地址; P3口(10腳~17腳), P3.0~P3.7統(tǒng)稱為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨立定義為第1功能的輸入輸出或第2功能。P3口的第2功能
36、見表2.2所示。</p><p> 中斷系統(tǒng): AT89C51單片機有5個中斷源,由兩個中斷優(yōu)先級,每個中斷源的優(yōu)先級可以編程為高優(yōu)先級或低優(yōu)先級。中斷允許受到CPU開中斷和中斷源開中斷的兩級控制。</p><p> AT89C51單片機有兩個中斷優(yōu)先級,高優(yōu)先級和低優(yōu)先級,每個中斷源都可以編程為高中斷優(yōu)先級和低中斷優(yōu)先級。這可以實現(xiàn)兩級中斷嵌套,嵌套的原則是:一個正在執(zhí)行的中斷服務(wù)程
37、序可以被較高優(yōu)先級的中斷請求中斷,而不能被同級或較低級的中斷請求所中斷。兩極中斷通過使用IP寄存器設(shè)置。</p><p> AT89C51的管腳有四十多個這里就不在一一列出,圖2.2.為其管腳分布。</p><p> 圖2.2. 8051的管腳分布</p><p><b> 2.3硬件設(shè)計</b></p><p>
38、; 2.3.1 時鐘電路的設(shè)計</p><p> 時鐘電路用于產(chǎn)生MCS-51單片機工作時所必需的時鐘控制信號,MCS-51單片</p><p> 機的內(nèi)部電路在時鐘信號的控制下,嚴(yán)格的按時序執(zhí)行指令進行工作。</p><p> 電路中的電容C1和C2典型值通常選擇為30pF左右本設(shè)計采用20pF,電路圖如2.3。對外接電容的值雖沒有嚴(yán)格的要求,但電容的大小
39、會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶振的振蕩頻率的范圍通常是在1.2MHZ-12MHZ之間,本設(shè)計采用12MHZ。晶振的頻率越高,則系統(tǒng)的時鐘頻率也就越高,單片機的運行速度也就越快。但反過來運行速度快對存儲器的速度要求也就越高,對印制電路板的工藝要求也高,即要求線間的寄生電容要小;晶振和電容應(yīng)盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作。為了提高溫度穩(wěn)定性,應(yīng)采用溫度穩(wěn)定性良好的電容
40、。[12]</p><p> 圖2.3 時鐘電路</p><p> 2.3.2 復(fù)位電路的設(shè)計</p><p> 單片機復(fù)位是使CPU 和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。單片機復(fù)位的條件是:必須單片機復(fù)位引腳加上持續(xù)兩個機器周期(即24 個振蕩周期)以上的高電平,單片機才進入復(fù)位狀態(tài)(即程序從0000H地址開始執(zhí)行)。復(fù)
41、位后的狀態(tài):單片機復(fù)位后,片內(nèi)RAM中低128的內(nèi)容不會改變,但特殊功能寄存器被初始化。復(fù)位期間單片機的ALE和PSEN引腳輸出高電平,復(fù)位后單片機的特殊功能寄存器狀態(tài)除SP為07H,P0P3為FFH外其余都被復(fù)位為0。</p><p> AT89C51單片機的第9管腳RST(RESET縮寫),當(dāng)向RST管腳輸入一個非常短暫的高電平時,單片機就會復(fù)位。復(fù)位管腳與計算機上的復(fù)位鍵功能很相似,當(dāng)計算機正在進行或死機
42、時,只要按一下復(fù)位鍵,計算機,就會重新啟動。單片機</p><p> 的復(fù)位和這個過程相似,無論單片機在執(zhí)行什么程序,如果觸發(fā)復(fù)位就會使其回到程序的開頭重新開始執(zhí)行程序。最簡單的復(fù)位電路就是在RST端與Vcc之間連接一個10uF的電解電容。單片機上電瞬間,電容的正極電壓瞬間變?yōu)閂cc,電解電容對于這個瞬間的電壓突變相當(dāng)于短路,于是Vcc(高電平)相當(dāng)于直接加到了RST端上。正是這個加在RST上的瞬間高電平使單片
43、機復(fù)位。很快,電解電容充滿電,在電路中相當(dāng)于斷路,于是RST端電平由高轉(zhuǎn)低,單片機隨即開始執(zhí)行程序. 有時,只使用一個電解電容的復(fù)位電路可靠性不高,故本設(shè)計采用如圖2.4所示的復(fù)位電路,以防電源開關(guān)或電源插頭分-合過程引起的抖動而影響復(fù)位。</p><p> 圖2.4 復(fù)位電路 </p><p> 2.3.3 密碼存儲電路的設(shè)計</p><p> 外置的撥
44、碼開關(guān)來設(shè)定密碼,操作既不方便,電路又復(fù)雜。本設(shè)計采用了E2PROM 來保存密碼,它最大的優(yōu)點就是掉電后,存儲的內(nèi)容不會丟失,這是一種十分理想的方案。密碼寫入ROM 后即使掉電也沒關(guān)系,且可以隨意讀出、寫入。真正改變了以往密碼鎖的密碼由廠家固定,用戶只有使用權(quán),而沒有更改權(quán)的缺點,真正實現(xiàn)了密碼鎖的保密性。密碼存儲電路如圖2.5所示。</p><p> 本設(shè)計采用的芯片是ATMEL 公司的AT24C02C, 內(nèi)
45、有512 字節(jié)的ROM,且支持在線讀寫。其SDA為數(shù)據(jù)傳送線,接在單片機的P3.5 口。SCK為移位時鐘線,接在單片機的P3.4 口。利用P3.4 和P3.5口模擬串口來實現(xiàn)單片機和ROM間的數(shù)據(jù)串行通訊。</p><p> AT24C02各管腳介紹:SCK為串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘這是一個輸入管腳;SDA為串行數(shù)據(jù)用于器件所有數(shù)據(jù)的發(fā)送或接收,</p><p&g
46、t; 是一個開漏輸出管腳可與其它開漏輸出或集電極開路輸出進行線,A0、 A1、 A2為器件地址輸入端這些輸入腳用于多個器件級聯(lián)時設(shè)置器件地址當(dāng)這些腳懸空時默認(rèn)值為0 ;WP為寫保護,如果WP管腳連接到Vcc所有的內(nèi)容都被寫保護只能讀,當(dāng)WP管腳連接到Vss或懸空允許器件進行正常的讀/寫操作。</p><p><b> 圖2.5 存儲電路</b></p><p>
47、 2.3.4 鍵盤電路設(shè)計</p><p> 鍵盤是一組規(guī)則排列的開關(guān)元器件組合,是最常用的輸入設(shè)備。操作人員可以通過鍵盤向計算機輸入數(shù)據(jù)、地址、指令或其他的控制命令,實現(xiàn)簡單的人機對話。</p><p> (1) 按鍵輸入原理</p><p> 在單片機應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門的復(fù)位電路及專一的復(fù)位功能外,其它按鍵都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)
48、的。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時,計算機應(yīng)用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,所以按鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。 對于一個鍵盤或一組鍵,總有一個接口電路與CPU相連。CPU可以采用查詢或中斷方式了解有無將鍵輸入并檢查是哪一個鍵按下,將該鍵編號送入累加器ACC,然后通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。</p><p><b> (2) 鍵盤的分類</b><
49、/p><p> 鍵盤按照接口原理可分為編碼鍵盤和非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方法不同。編碼鍵盤主要用硬件來實現(xiàn)對按鍵的識別,非編碼鍵盤主要由軟件來實現(xiàn)鍵盤的定義與識別,只簡單地提供行和列的矩陣,其它工作均由軟件完成,由于經(jīng)濟實用,所以較多地應(yīng)用于單片機系統(tǒng)中。根據(jù)結(jié)構(gòu)的不同,非編碼鍵盤又可分為矩陣式鍵盤和獨立式鍵盤。矩陣式鍵盤由行線和列線構(gòu)成,按鍵位于行、列交叉點上,矩陣式鍵盤在按
50、鍵較多時使用會節(jié)</p><p> 省很多I/O口,但是,各按鍵間相互影響,因此,必須將行線、列線信號配合起來作適當(dāng)處理,才能確定閉合鍵的位置。</p><p> (3) 按鍵結(jié)構(gòu)與特點 </p><p> 微機鍵盤通常使用機械觸點式按鍵開關(guān),其主要功能是把機械上的通斷轉(zhuǎn)換成為電氣上的邏輯關(guān)系。也就是說,它能提供標(biāo)準(zhǔn)的 TTL邏輯電平,以便與通用數(shù)字系統(tǒng)的邏輯
51、電平相容。機械式按鍵在按下或釋放時,由于機械彈性作用的影響,通常伴隨有一定時間的觸點機械抖動,然后其觸點才穩(wěn)定下來。其抖動過程如圖2.6所示,抖動時間的長短與開關(guān)的機械特性有關(guān),一般為510ms。在觸點抖動期間檢測按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯。即按鍵一次按下或釋放被錯誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點機械抖動所致的檢測誤判,必須采取去抖動措施,可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時,可采用硬件去抖,而
52、當(dāng)按鍵數(shù)較多時,采用軟件去抖。在檢測到有按鍵按下時,執(zhí)行一個10ms~20ms左右的延時程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài);同理,在檢測到該鍵釋放后,也應(yīng)采用相同的步驟進行確認(rèn),從而可消除抖動的影響。[12]</p><p> 圖2.6 鍵盤抖動過程</p><p> 表2.3. 鍵盤的連線方式</p><p&
53、gt; 考慮到本次設(shè)計功能的要求以及軟件編程和硬件電路連接,在本次設(shè)計所采用的是矩陣鍵盤,用4條I/O線作為行線,4條I/O線作為列線組的鍵盤,采用軟件延時的辦法來消除機械抖動。在行線和列線的每一個交叉點上,設(shè)置一個按鍵,鍵盤中按鍵的個數(shù)是4*4個=16個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機系統(tǒng)中I/O口的利用率。</p><p> 矩陣鍵盤和單片機管腳連接(表2.3.)和電路圖(圖2.7)</p&
54、gt;<p> P1.4--P1.7為行線,P1.0--P1.3為列線.[8] </p><p> 圖2..7 4*4矩陣鍵盤</p><p> 2.3.5 顯示電路的設(shè)計</p><p> 顯示器是最常用的輸出設(shè)備,其種類繁多,但在單片機系統(tǒng)設(shè)計中最常用的是發(fā)光二極管顯示器(LED)和液晶顯示器(LCD)兩種。由于這兩種顯示器結(jié)構(gòu)簡單,價格
55、便宜,接口容易實現(xiàn),因而得到了廣泛的應(yīng)用。發(fā)光二極管LED,組成的顯示屏,每個點都是一個或多個發(fā)光二極管,通過控制電路控制二極管的亮與滅來控制點的發(fā)光,從而使整個大屏幕顯示圖案。 液晶顯示器LCD1602,所謂1602是指顯示的內(nèi)容為16*2,即可以顯示兩行,每行16個字符。最常見的就是TFT類型的,它是由光源,液晶光柵,和控制芯片組成,他的光源是常亮的白色強光,當(dāng)光線通過液晶光柵(液晶屏)的時候,通過電壓改變液晶顆粒濾光方向,從而改變
56、每個點的顏色和強度來顯示圖案。[6] </p><p> 液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動、易于實現(xiàn)全彩色顯示的特點,目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機、PDA移動通信工具等眾多領(lǐng)域。</p><p> 液晶顯示器分很多種類,按顯示方式可分為段式,行點陣式和全
57、點陣式。段式與數(shù)碼管類似,行點陣式一般是英文字符,全點陣式可顯示任何信息, 如漢字、圖形、圖表等。</p><p><b> 兩者之間的區(qū)別:</b></p><p> ?。?)二極管本身發(fā)光, 液晶本身不發(fā)光,只是透射光。 </p><p> ?。?)二極管體積大,圖像質(zhì)量一般,適合作室外大屏幕,價格較低。液晶成本較高,面積無法做得很大,但
58、圖像質(zhì)量很好,適合做顯示器。</p><p> ?。?)二極管耗電大,液晶耗電小。</p><p> ?。?)二極管圖像刷新率低,液晶的高 。</p><p> 二者的檔次相差比較大,一般來講在一些圖像簡單,對成本控制較嚴(yán)格的場合,用二極管,比如商場、銀行等服務(wù)部門的電子提示窗,街道、百貨公司外面的廣告宣傳窗;而液晶一般都是作計算機顯示器、電視、手持設(shè)備等對圖像質(zhì)
59、量要求高的場合,在本次計設(shè)中綜合考慮各方面的因素,我選定1602作為顯示電路。1602管腳的具體功能如表2.4。.</p><p> 1602液晶的主要參數(shù):</p><p> 顯示容量:16×2個字符</p><p> 芯片工作電壓:4.5~5.5V</p><p> 工作電流:2.0mA(5.0V) </p>
60、;<p> 模塊最佳工作電壓:5.0V</p><p> 1602的管腳示意圖:</p><p> 圖2.8 1602管腳</p><p> 圖 2.9 1602實物圖</p><p> 1602一個很重要的端口VEE,為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用
61、時可以通過一個1K歐的電位器調(diào)整其顯示的對比度。[11]</p><p> 表2.4 1602液晶管腳主要功能</p><p> 在本次設(shè)計中采用了1602來作為顯示元件,用液晶構(gòu)成顯示電路不僅擴大顯示的范圍,而且減少顯示電路對單片機I/O端口的占用,同時減少單片機連線。單片機具體的連線方式:P0口作為數(shù)據(jù)輸出口,RP1為P0口的上拉電阻,以提高其驅(qū)動力。P2口的P2.5、P2.6、
62、P2.7作為1602液晶的控制口(LCD_RS連接P2.5; LCD_RW連接P2.6; LCD_EN連接P2.7)。VEE連接1個精密1千歐可調(diào)電阻器用來調(diào)節(jié)液晶顯示器的亮度。詳細(xì)的電路圖(圖2.10)。</p><p> 圖2.10 LCD顯示電路</p><p> 2.3.6 報警電路</p><p> 蜂鳴器有兩類3大品種。一類是壓電式,一類是電磁式
63、,電磁式又有兩大品種,鐵振膜式和動圈式,二者原理一樣只是結(jié)構(gòu)不同。所有蜂鳴器都有兩種類型:純蜂鳴器和帶驅(qū)動的蜂鳴器,蜂鳴器都是用音頻信號驅(qū)動的,都是交流驅(qū)動。報警器的種類很多,比如:揚聲器,蜂鳴器等,電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、震動膜片以及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號通過電磁線圈,使得電磁線圈產(chǎn)生了一個磁場。本次設(shè)計采用的是壓電式蜂鳴器作為報警器(圖2.11)。蜂鳴器的一端接P2.1口,另一端接電源,當(dāng)P2.1
64、為低電平時,蜂鳴器報警,當(dāng)P2.1為高電平時,蜂鳴器不作出反應(yīng)[4]</p><p> 圖2.11 報警電路</p><p> 2.3.7 開鎖電路</p><p> 在本次設(shè)計中,基于節(jié)省材料、主次分明的原則,暫時用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示開鎖;滅,表示沒有開鎖。電路圖如2.12所示。當(dāng)P2.0口輸出低電平時,二極管D1導(dǎo)通發(fā)光,表示開鎖;當(dāng)二
65、極管輸出高電平時,二極管不能導(dǎo)通也就是說二極管不發(fā)光,表示上鎖。[1]</p><p> 圖2..12 開鎖電路</p><p><b> 第3章 軟件設(shè)計</b></p><p> 3.1 編程工具介紹</p><p> Kiel C51是美國Kiel Software公司出品的51系列兼容單片機C語言軟件開
66、發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),比較方便.Kiel C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢keil軟件常與proteus仿真軟件相配合使用單片機開發(fā)中除必要的硬件外,同樣離不開軟件。</p><p> 圖3.1 編程軟件工作界面</p>
67、<p> 我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于MCS-51單片機的匯編軟件有早期的A51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā)</p><p> 單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟
68、件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了</p><p> 包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對于
69、使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的最好的選擇之一,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)其試工具也會令你事半功倍。其工作界面如上圖所示。</p><p> 3.2 編程語言介紹</p><p> 匯編語言的實質(zhì)和機器語言是相同的,都是其直接對硬件操作,只不過指令采用了英文縮寫的標(biāo)識符,更容易識別
70、和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。</p><p> 匯編程序的每一句指令只能對應(yīng)實際操作過程中的一個很細(xì)微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復(fù)雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業(yè)知識,但匯編語言的優(yōu)點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文
71、件不僅比較小,而且執(zhí)行速度很快。高級語言主要是相對于匯編語言,而相關(guān)的機器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完成工作無關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專業(yè)知識。高級語言所編制的程序不能直接被計算機識別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行。</p><p> C語言是一種高級語言。C語言是一種計算機程序設(shè)計語言。它既具有高級語言的
72、特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。</p><p><b> C語言特點</b></p><p> ?。?)簡潔緊湊、靈活方便</p>&l
73、t;p> C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。</p><p> 把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。 C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元。</p><p><b> ?。?)運算符豐富</b></p><p> C語言的運算符包
74、含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。</p><p><b> ?。?)數(shù)據(jù)類型豐富</b></p><p> C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各
75、種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。并引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強大。[10]</p><p><b> 3.3 軟件編程</b></p><p> 3.3.1軟件設(shè)計原則</p><p> 所設(shè)計的軟件不僅要滿足密碼鎖:插上電源后,程序自動調(diào)入初始密碼,此時依次輸入
76、 所000000,然后按[#](確認(rèn))鍵,此時鎖會打開,可以看到顯示open,密碼鎖打開;按下[*](取消)鍵,此時鎖關(guān)閉,所有輸入清除,在開鎖狀態(tài)下,再次輸入正確的密碼并按下[#](確認(rèn))鍵,此時聽到兩聲提示,輸入新的六位密碼并按[D](重設(shè))鍵,再重復(fù)輸入一次新密碼并按[D],會聽到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲到AT24C02;(如兩次輸入的新密碼不一樣,則重設(shè)密碼失敗)。當(dāng)輸入密碼錯誤后,報警并鎖定鍵盤3秒,
77、如3秒內(nèi)又有按鍵,3秒再啟動;當(dāng)重置新密碼時,新密碼會保存于AT24C02存儲器里。而且</p><p> 要使程序最簡化,通俗易懂。</p><p> 3.3.2 軟件設(shè)計方案</p><p> 本次設(shè)計中的軟件部分設(shè)計采用模塊化程序設(shè)計,分塊逐個實現(xiàn)在本次設(shè)計中,在對每個單獨進行程序修改時不影響全局,同時降低編程的工作量和調(diào)試的難度,主程序包括顯示初始化預(yù)
78、定義、主程序、4*4矩陣鍵盤掃描程序、1602顯示子程序等組成。主程序流程圖(圖3.2)</p><p> 圖3.2 主程序流程圖</p><p> 3.3.3 4*4矩陣鍵盤的編程方法</p><p> ?。?)先讀取鍵盤的狀態(tài),得到按鍵的特征編碼。P1口高四位輸入高電平,低四位輸入低電平。當(dāng)有按鍵按下時,可以從P1口的高四位讀取端口低電平狀態(tài)來</
79、p><p> 確定列數(shù);在確定有按鍵按下后, P1口的高四位輸入高電平,低四位輸入3個高電平和1個電平,通過編程使3高1低在低四位端口中循環(huán),當(dāng)P1口的高四位中出現(xiàn)低電平時就可以確定行數(shù)。將行說和列數(shù)組合起來就可以得到當(dāng)前按鍵的特征編碼。使用上述方法我們得到16個鍵的特征編碼。</p><p> ?。?)根據(jù)按鍵的特征編碼,查表得到按鍵的編碼。將用上述方法得到的16個</p>
80、<p> 按鍵的特征編碼按表3.1排列的順序排成一張?zhí)卣骶幋a與順序編碼的對應(yīng)關(guān)系表,然后用當(dāng)前讀得的特征編碼來查表,當(dāng)表中有該特征編碼時,它所在的位置就是對應(yīng)的順序編碼。</p><p> ?。?)根據(jù)矩陣鍵盤鍵值查找相對應(yīng)程序的具體編程。</p><p> 鍵盤掃描程序的主要功能有:</p><p> 1)識別鍵盤有無按鍵按下,若無鍵按下返回<
81、;/p><p> 2)如果有鍵按下,找出具體的按鍵值(特征編碼)。</p><p> 表3.1 按鍵號和特征編碼對應(yīng)</p><p><b> 程序段如下</b></p><p> //=====================按鍵檢測并返回按鍵值==================</p><p
82、> unsigned char keynum(void)</p><p><b> {</b></p><p> unsigned char row,col,i;</p><p><b> P1=0xf0;</b></p><p> if((P1&0xf0)!=0xf0)&l
83、t;/p><p><b> {</b></p><p> Delay5Ms();</p><p> Delay5Ms();</p><p> if((P1&0xf0)!=0xf0)</p><p><b> {</b></p><p>
84、 row=P1^0xf0; //確定行線</p><p><b> i=0;</b></p><p> P1=a[i]; //精確定位</p><p> while(i<4)</p><p><b> {</b></p><p&
85、gt; if((P1&0xf0)!=0xf0)</p><p><b> {</b></p><p> col=~(P1&0xff); //確定列線</p><p> break; //已定位后提前退出 </p><p><b> }</b>&
86、lt;/p><p><b> else </b></p><p><b> {</b></p><p><b> i++;</b></p><p><b> P1=a[i];</b></p><p><b> }&l
87、t;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> retu
88、rn 0;</b></p><p><b> }</b></p><p> while((P1&0xf0)!=0xf0);</p><p> return (row|col); //行線與列線組合后返回</p><p><b> }</b></p>&
89、lt;p> else return 0; //無鍵按下時返回0</p><p><b> }</b></p><p> 3.3.4液晶顯示子程序</p><p> 1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假
90、名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如‘A’。 </p><p> 在本次設(shè)計中P2口作為數(shù)據(jù)口,P0口作為控制端口,具體定義如下。</p><p
91、> 1602液晶控制端口的定義</p><p> //=======================================LCD1602====================================================</p><p> //=====================================================
92、========</p><p> #define yi 0x80 //LCD第一行的初始位置</p><p> ,因為LCD1602字符地址首位D7恒定為1(100000000=80)</p><p> #define er 0x80+0x40 //LCD第二行初始位置(因為第二行第一個字符位置地址是0x40)</p><p> /
93、/----------------延時函數(shù),后面經(jīng)常調(diào)用----------------------</p><p> void delay(uint xms)//延時函數(shù),有參函數(shù)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p>
94、 for(x=xms;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> //--------------------------寫指令---------------------------</p><p> write_
95、1602com(uchar com); //****液晶寫入指令函數(shù)****</p><p><b> {</b></p><p> lcd1602_rs=0; //數(shù)據(jù)/指令選擇置為指令</p><p> lcd1602_rw=0; //讀寫選擇置為寫</p><p> P0=com;
96、 //送入數(shù)據(jù)</p><p><b> delay(1);</b></p><p> lcd1602_en=1; //拉高使能端,為制造有效的下降沿做準(zhǔn)備</p><p><b> delay(1);</b></p><p> lcd1602_en=0; //en
97、由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p> } //-------------------------寫數(shù)據(jù)-----------------------------</p><p> write_1602dat(uchar dat) //***液晶寫入數(shù)據(jù)函數(shù)****</p><p><b> {</b><
98、/p><p> lcd1602_rs=1; //數(shù)據(jù)/指令選擇置為數(shù)據(jù)</p><p> lcd1602_rw=0; //讀寫選擇置為寫</p><p> P0=dat //送入數(shù)據(jù)</p><p><b> delay(1);</b></p><p> lcd1602_en=
99、1; //en置高電平,為制造下降沿做準(zhǔn)備</p><p><b> delay(1);</b></p><p> lcd1602_en=0; //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令</p><p> } //-------------------------初始化----------------------
100、---</p><p> void lcd_init(void)</p><p><b> {</b></p><p> write_1602com(0x38); //設(shè)置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù)</p><p> write_1602com(0x0c); //開顯示不
101、顯示光標(biāo)</p><p> write_1602com(0x06); // 整屏不移動,光標(biāo)自動右移</p><p> write_1602com(0x01); //清顯示</p><p> }//===========================================================</p><p>
102、 3.3.5 密碼比較和報警程序</p><p> 密碼比較和報警程序也是本次設(shè)計的重點,下圖(圖3.3)是此程序的詳細(xì)設(shè)計流程圖。</p><p> 圖3.3 密碼比較和報警程序設(shè)計</p><p> 密碼比較和報警程序如下</p><p> switch(NUM)</p><p><b> {
103、</b></p><p> case ('A'): ; break;</p><p> case ('B'):; break;</p><p> case ('C'): ; break;</p><p> case ('D'):
104、 ResetPassword();break; //重新設(shè)置密碼</p><p> case ('*'): Cancel();break; //取消當(dāng)前輸入</p><p> case ('#'): Ensure(); break; //確認(rèn)鍵,</p><p><b> default: </b
105、></p><p><b> {</b></p><p> DisplayListChar(0,1,Input);</p><p> write_1602com(er);</p><p> for(i=0;i<16;i++)</p><p><b> {</
106、b></p><p> write_1602dat(Input[i]);</p><p><b> }</b></p><p> operation=0;</p><p> if(N<6) //當(dāng)輸入的密碼少于6位時,接受輸入并保存,大于6位時則無效。</p><p>&l
107、t;b> { </b></p><p> OneAlam();//按鍵提示音</p><p> //DisplayOneChar(6+N,1,'*');</p><p> for(j=0;j<=N;j++)</p><p><b> {</b><
108、/p><p> write_1602com(er+6+j);</p><p> write_1602dat('*');</p><p><b> }</b></p><p> InputData[N]=NUM;</p><p><b> N++;</b>
109、</p><p><b> }</b></p><p> else//輸入數(shù)據(jù)位數(shù)大于6后,忽略輸入</p><p><b> {</b></p><p><b> N=6;</b></p><p> 3.3.6 密碼重置程序設(shè)計</
110、p><p> 在開鎖狀態(tài)下,再次輸入正確的密碼并按下[#](確認(rèn))鍵,此時聽到兩聲提示,輸入新的六位密碼并按[D](重設(shè))鍵,再重復(fù)輸入一次新密碼并按[D],會聽到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲到AT24C02。(如兩次輸入的新密碼不一樣,則重設(shè)密碼失敗)。</p><p><b> 其程序如下</b></p><p>
111、//==========================確認(rèn)鍵,并通過相應(yīng)標(biāo)志位執(zhí)行相應(yīng)功能===============================</p><p> void Ensure(void)</p><p><b> {</b></p><p> unsigned char i,j;</p><p&
112、gt; RdFromROM(CurrentPassword,0,6); //從24C02里讀出存儲密碼</p><p><b> if(N==6)</b></p><p><b> {</b></p><p> if(ReInputEn==0)//重置密碼功能未開啟</p><p>&l
113、t;b> {</b></p><p> for(i=0;i<6;)</p><p><b> {</b></p><p> if(CurrentPassword[i]==InputData[i])</p><p><b> {</b></p>
114、<p><b> i++;</b></p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> ErrorCont++;</p>&l
115、t;p> if(ErrorCont==3)//錯誤輸入計數(shù)達三次時,報警并鎖定鍵盤</p><p><b> {</b></p><p> write_1602com(er);</p><p> for(i=0;i<16;i++)</p><p><b> {</b></
116、p><p> write_1602dat(Error[i]);</p><p><b> }</b></p><p><b> do</b></p><p> Alam_KeyUnable();</p><p><b> while(1);</b>
117、;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> TR0=1;//開啟定時</p><p> key_disable=1;//鎖定鍵盤</p
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計---基于單片機的電子密碼鎖
- 畢業(yè)設(shè)計----基于單片機的電子密碼鎖
- 畢業(yè)設(shè)計---基于單片機的電子密碼鎖設(shè)計
- 畢業(yè)設(shè)計-- 基于單片機的電子密碼鎖設(shè)計
- 基于單片機的電子密碼鎖設(shè)計畢業(yè)設(shè)計
- 基于單片機的電子密碼鎖的畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機的電子密碼鎖設(shè)計
- 基于單片機控制的電子密碼鎖畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的電子密碼鎖的設(shè)計
- 畢業(yè)設(shè)計(論文)基于單片機的電子密碼鎖設(shè)計
- 基于單片機電子密碼鎖畢業(yè)設(shè)計
- 基于單片機的密碼鎖 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計 利用單片機實現(xiàn)電子密碼鎖
- 單片機控制的電子密碼鎖設(shè)計畢業(yè)設(shè)計
- 基于單片機的密碼鎖設(shè)計【畢業(yè)設(shè)計】
- 基于單片機的電子密碼鎖設(shè)計
- 畢業(yè)設(shè)計---利用單片機實現(xiàn)電子密碼鎖
- 基于單片機的密碼鎖設(shè)計【畢業(yè)設(shè)計】
- 基于單片機的電子密碼鎖設(shè)計
- 畢業(yè)設(shè)計--基于單片機電子密碼鎖設(shè)計
評論
0/150
提交評論