畢業(yè)設(shè)計(jì)---基于單片機(jī)的電子密碼鎖_第1頁(yè)
已閱讀1頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  在日常的生活和工作中, 住宅與部門(mén)的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來(lái)解決。若使用傳統(tǒng)的機(jī)械式鑰匙開(kāi)鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對(duì)日常生活中的安全保險(xiǎn)器件的要求越來(lái)越高。為滿足人們對(duì)鎖的使用要求,增加其安全性,用數(shù)字

2、密碼代替鑰匙的單片機(jī)控制的電子密碼鎖應(yīng)運(yùn)而生。</p><p>  在這次畢業(yè)設(shè)計(jì)中我采用AT89C51單片機(jī)為核心4*4矩陣鍵盤(pán)作為輸入器件,LCD1602字符型液晶作為顯示電路來(lái)制作基于單片機(jī)的電子密碼鎖。該密碼鎖具有可更改密碼、密碼掉電保護(hù)、輸入密碼錯(cuò)誤報(bào)警、輸入密碼錯(cuò)誤三次鎖定鍵盤(pán)的功能。該密碼鎖具有操作人性化、低功耗、高保密性等一系列優(yōu)點(diǎn)。本文詳細(xì)地介紹了系統(tǒng)硬件與軟件的設(shè)計(jì),以及仿真調(diào)試的詳細(xì)過(guò)程。&

3、lt;/p><p>  關(guān)鍵詞:4*4矩陣鍵盤(pán), 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è)計(jì)意義1</p><p>  1.2背景知識(shí)介紹1</p><p>  1.3 本文主要工作以及內(nèi)容安排2</p><p>  第2章 系統(tǒng)總體方案設(shè)計(jì)3</p><p>  2.1 總體方案設(shè)計(jì)3</p><p&g

10、t;  2.1.1 實(shí)現(xiàn)功能:3</p><p>  2.1.2 4*4鍵盤(pán)說(shuō)明4</p><p>  2.2 AT89C51單片機(jī)介紹4</p><p><b>  2.3硬件設(shè)計(jì)6</b></p><p>  2.3.1 時(shí)鐘電路的設(shè)計(jì)6</p><p>  2.3.2 復(fù)位電路

11、的設(shè)計(jì)7</p><p>  2.3.3 密碼存儲(chǔ)電路的設(shè)計(jì)8</p><p>  2.3.4 鍵盤(pán)電路設(shè)計(jì)9</p><p>  2.3.5 顯示電路的設(shè)計(jì)11</p><p>  2.3.6 報(bào)警電路14</p><p>  2.3.7 開(kāi)鎖電路15</p><p>  第3章

12、軟件設(shè)計(jì)16</p><p>  3.1 編程工具介紹16</p><p>  3.2 編程語(yǔ)言介紹17</p><p>  3.3 軟件編程18</p><p>  3.3.1軟件設(shè)計(jì)原則18</p><p>  3.3.2 軟件設(shè)計(jì)方案18</p><p>  3.3.3 4*

13、4矩陣鍵盤(pán)的編程方法19</p><p>  3.3.4液晶顯示子程序21</p><p>  3.3.5 密碼比較和報(bào)警程序22</p><p>  3.3.6 密碼重置程序設(shè)計(jì)23</p><p>  第4章 軟件仿真以及調(diào)試26</p><p>  4.1 仿真軟件簡(jiǎn)介26</p>&

14、lt;p>  4.2 仿真程序基本工作界面26</p><p>  4.3 仿真過(guò)程27</p><p><b>  總結(jié)30</b></p><p><b>  參考文獻(xiàn)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è)計(jì)意義</b></p><p>  單片機(jī)的應(yīng)用是具有高度現(xiàn)實(shí)意義的。單片機(jī)極高的可靠性,微型性和智能性,單片機(jī)已成為工業(yè)控制領(lǐng)

16、域中普遍采用的智能化控制工具,已經(jīng)深深地滲入到我們的日常生活當(dāng)中。在這次基于單片機(jī)的電子密碼鎖畢業(yè)設(shè)計(jì)中,不僅使我加深對(duì)大學(xué)所學(xué)知識(shí)的理解,而且使我對(duì)單片機(jī)有了進(jìn)一步的了解。在設(shè)計(jì)的過(guò)程中,不僅使我熟悉了AT89C51單片的基本結(jié)構(gòu)和相關(guān)的參數(shù),而且了解單片機(jī)最小系統(tǒng)的構(gòu)成。在這次設(shè)計(jì)中所學(xué)到的相關(guān)知識(shí)也許會(huì)在將來(lái)的工作和學(xué)習(xí)中用到。</p><p>  隨著單片機(jī)在各個(gè)領(lǐng)域的廣泛應(yīng)用,許多用單片機(jī)做控制的密碼鎖

17、系統(tǒng)也應(yīng)運(yùn)而產(chǎn)生,如用單片機(jī)控制LCD液晶的各種顯示器顯示數(shù)據(jù),用單片機(jī)控制LED七段操作顯示器等。本次設(shè)計(jì)用由AT89C51編程控制LCD1602液晶作顯示的密碼鎖系統(tǒng)。該系統(tǒng)具有設(shè)定密碼并儲(chǔ)存密碼、報(bào)警、輸入密碼錯(cuò)誤鎖定鍵盤(pán)等功能。它具有高保密性,操作方便、性能穩(wěn)定等特點(diǎn),可以廣泛適合各類檔案管理場(chǎng)所或者家庭室內(nèi)財(cái)務(wù)保管處。通過(guò)本次基于AT89C51系列單片機(jī)密碼鎖的設(shè)計(jì),可以了解、熟悉有關(guān)單片機(jī)開(kāi)發(fā)設(shè)計(jì)的過(guò)程,并加深對(duì)單片機(jī)的理解

18、和應(yīng)用以及掌握單片機(jī)與外圍接口的一些方法和技巧,這主要表現(xiàn)在以下一些方面:</p><p>  1) 密碼鎖系統(tǒng)包含了8051系列單片機(jī)的最小應(yīng)用系統(tǒng)的構(gòu)成。</p><p>  2) 可以了解到1602液晶的接口、工作原理以及這種顯示器的接口實(shí)例與具體連接與編程方法。</p><p>  3) 用AT24C02儲(chǔ)存密碼的原理和方法。</p><

19、p><b>  1.2背景知識(shí)介紹</b></p><p>  單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。</p><p>  單片機(jī)自20世紀(jì)70年代問(wèn)世以

20、來(lái),以極其高的性價(jià)比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)的優(yōu)點(diǎn)是體積小、重量輕、抗干擾能力強(qiáng),價(jià)格低廉,可靠性高,靈活性好,開(kāi)發(fā)較為容易。單片機(jī)以其一系列優(yōu)點(diǎn),近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng),數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表,及通訊設(shè)備、日常消費(fèi)類產(chǎn)品、玩具等。并且已經(jīng)深入到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié)以及人民生活的各個(gè)層次中,如車(chē)間流水線控制、自動(dòng)化系統(tǒng)等、智能型家用電器等。</p><p

21、>  ATMEL公司開(kāi)發(fā)生產(chǎn)了新型的8位單片機(jī)——AT89系列單片機(jī)。它不但具有一般MCS-51單片機(jī)的所有特性,而且還擁有一些獨(dú)特的優(yōu)點(diǎn),此次設(shè)計(jì)中所用到的AT89C51就是其中典型的代表。單片機(jī)內(nèi)部也有和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤(pán)作用相同的存儲(chǔ)器件,用它來(lái)做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動(dòng)滾筒洗衣機(jī),排煙罩VCD等等的家電里面都可以看到它的身影。  

22、  </p><p>  1.3 本文主要工作以及內(nèi)容安排</p><p>  本文主要介紹電子密碼鎖需要實(shí)現(xiàn)的功能以及如何利用單片機(jī)來(lái)制作電子密碼鎖。在本文中詳細(xì)地介紹了具體硬件設(shè)計(jì)和軟件模塊化編程以及設(shè)計(jì)中各個(gè)功能的實(shí)現(xiàn)方法和過(guò)程。具體內(nèi)容有:</p><p>  全文共分4章,結(jié)構(gòu)安排如下:</p><p>  第1

23、章 緒論介紹了本次設(shè)計(jì)目的及意義以及單片機(jī)的發(fā)展現(xiàn)狀、1602字符型液晶在電子密碼鎖系統(tǒng)中的應(yīng)用以及主要實(shí)現(xiàn)的功能。</p><p>  第2章 介紹了本次設(shè)計(jì)的硬件電路的設(shè)計(jì)思路以及元件的選擇,詳細(xì)的說(shuō)明電路圖中各個(gè)部分的功能和連線方式,為下一步的編程設(shè)計(jì)作好鋪墊。</p><p>  第3章 介紹了單片機(jī)編程軟件和常用的編程語(yǔ)言,確定了編程的主題思路以及設(shè)計(jì)功能的具體實(shí)現(xiàn)方法。<

24、;/p><p>  第4章 介紹了如何在電腦上實(shí)現(xiàn)設(shè)計(jì)的軟件仿真。 </p><p>  第2章 系統(tǒng)總體方案設(shè)計(jì)</p><p>  2.1 總體方案設(shè)計(jì)</p><p>  考慮各方面因素本設(shè)計(jì)采用的是用以AT89C51為核心的單片機(jī)控制方案。利用單片機(jī)靈活的編程設(shè)計(jì)和

25、豐富的I/O端口,及其控制的準(zhǔn)確性,不但能實(shí)現(xiàn)基本的密碼鎖功能,還能添加掉電存儲(chǔ)、聲光提示甚至添加遙控控制功能。其設(shè)計(jì)方案如圖2.1所示。</p><p>  圖2.1 單片機(jī)控制方案</p><p>  實(shí)現(xiàn)此方案硬件是基礎(chǔ),程序是關(guān)鍵。要充分利用仿真軟件,不斷調(diào)試程序,以使程序在滿足各種功能的情況下最簡(jiǎn)。</p><p>  2.1.1 實(shí)現(xiàn)功能:</p

26、><p>  密碼鎖初始密碼為:000000. </p><p> ?。?)開(kāi)鎖:插上電源后,程序自動(dòng)調(diào)入初始密碼,此時(shí)依次輸入:000000,然后按[#](確認(rèn))鍵,此時(shí)鎖會(huì)打開(kāi),可以看到顯示open,密碼鎖打開(kāi)。</p><p> ?。?)退出并關(guān)鎖:按下[*](取消)鍵,此時(shí)鎖關(guān)閉,所有輸入清除。</p><p>  (3) 修改密碼:在開(kāi)

27、鎖狀態(tài)下,再次輸入正確的密碼并按下[#](確認(rèn))鍵,此時(shí)聽(tīng)到兩聲提示,輸入新的六位密碼并按[D](重設(shè))鍵,再重復(fù)輸入一次新密碼并按[D],會(huì)聽(tīng)到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲(chǔ)到AT24C02。(如兩次輸入的新密碼不一樣,則重設(shè)密碼失敗)。</p><p>  (4) 報(bào)警并鎖定鍵盤(pán):當(dāng)輸入密碼錯(cuò)誤后,報(bào)警并鎖定鍵盤(pán)3秒,如3秒內(nèi)又有按鍵,3秒后再啟動(dòng)。</p><p>

28、;  當(dāng)重置新密碼時(shí),新密碼會(huì)保存于AT24C02存儲(chǔ)器里.。</p><p>  2.1.2 4*4鍵盤(pán)說(shuō)明 </p><p>  采用4*4鍵盤(pán)輸入,鍵盤(pán)對(duì)應(yīng)名稱如表2.1</p><p>  表2.1 鍵盤(pán)名稱分布</p><p>  其中,[09]為數(shù)字輸入鍵,用于輸入相應(yīng)的數(shù)字</p><p>  [*

29、]號(hào)鍵為取消當(dāng)前操作</p><p><b>  [#]號(hào)鍵為確認(rèn)</b></p><p><b>  [D]鍵為修改密碼</b></p><p><b>  其它鍵無(wú)功能及定義</b></p><p>  2.2 AT89C51單片機(jī)介紹</p><p&

30、gt;  AT89C51單片機(jī)包括:一個(gè)8位的微型處理器CPU;一個(gè)128K的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM;4K片內(nèi)程序存儲(chǔ)器ROM;四個(gè)8位并行的I/O接口P0P3,每個(gè)接口既可以輸入,也可以輸出;兩個(gè)定時(shí)器/記數(shù)器;五個(gè)中斷源的中斷控制系統(tǒng);一個(gè)全雙工UART的串行I/O口;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率是12MHZ。以上各個(gè)部分通過(guò)內(nèi)部總線相連接。下面簡(jiǎn)單介紹其主要部分的功能。</p>

31、<p>  處理器:CPU是單片微型計(jì)算機(jī)內(nèi)部的核心部件,由它讀入用戶程序,并</p><p>  逐條執(zhí)行指令,它是由8位算術(shù)邏輯運(yùn)算部件(簡(jiǎn)稱ALU)、定時(shí)/控制部件,若干寄存器A、B、PSW、SP以及16位程序計(jì)數(shù)器(PC)和數(shù)據(jù)指針寄存器(DPTR)等主要部件組成。算術(shù)邏輯單元的硬件結(jié)構(gòu)與典型微型機(jī)相似。它具有對(duì)8位信息進(jìn)行+、-、*、/ 四則運(yùn)算和邏輯與、或、異或、取反、清“0”等運(yùn)算,并

32、具有判跳、轉(zhuǎn)移、數(shù)據(jù)傳送等功能,此外還提供存放中間結(jié)果及常用數(shù)據(jù)寄存器??刂破鞑考怯芍噶罴拇嫫鳌⒆g碼器、定時(shí)與控制電路以及信息傳送控制等部件組成的。指令寄存器中存放指令代碼。在執(zhí)行指令時(shí),從程序存儲(chǔ)器中取來(lái)經(jīng)譯碼器譯碼后,根據(jù)不同指令由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),送到存儲(chǔ)器、運(yùn)算器或I/O接口電路,完成指令功能。程序計(jì)數(shù)器PC用來(lái)存放下一條將要執(zhí)行的指令地址,共16位.可對(duì)以64K字節(jié)的程序存儲(chǔ)器直接尋址,指令執(zhí)行結(jié)束后,PC計(jì)

33、數(shù)器自動(dòng)增加,指向下一條要執(zhí)行的指令地址。CPU功能,總的來(lái)說(shuō)是以不同的方式,執(zhí)行各種指令。不同的指令其功能略異。有的指令涉及到寄存器之間的關(guān)系;有的指令涉及到單片機(jī)核心電路內(nèi)部各功能部件的關(guān)系;有的則與外部芯片如外部程序存儲(chǔ)器發(fā)生聯(lián)系。事實(shí)上,CPU是通過(guò)</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)不接外部存儲(chǔ)器與不擴(kuò)展I/O接口時(shí),它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口為地址/數(shù)據(jù)分時(shí)復(fù)用口。它分時(shí)提供8位雙向數(shù)據(jù)總線;P1口(1腳~8腳),P1.0~P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口使用。對(duì)于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P0口</p><p>  接收輸入的低8位地址;P2口(21腳~28腳),P2.

35、0~P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O接口且尋址范圍超過(guò)256個(gè)字節(jié)時(shí),P2口用于高8位地址總線送出高8位地址。對(duì)于EPROM編程和進(jìn)行程序校驗(yàn)時(shí),P2口接收輸入的8位地址; P3口(10腳~17腳), P3.0~P3.7統(tǒng)稱為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能

36、見(jiàn)表2.2所示。</p><p>  中斷系統(tǒng): AT89C51單片機(jī)有5個(gè)中斷源,由兩個(gè)中斷優(yōu)先級(jí),每個(gè)中斷源的優(yōu)先級(jí)可以編程為高優(yōu)先級(jí)或低優(yōu)先級(jí)。中斷允許受到CPU開(kāi)中斷和中斷源開(kāi)中斷的兩級(jí)控制。</p><p>  AT89C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),高優(yōu)先級(jí)和低優(yōu)先級(jí),每個(gè)中斷源都可以編程為高中斷優(yōu)先級(jí)和低中斷優(yōu)先級(jí)。這可以實(shí)現(xiàn)兩級(jí)中斷嵌套,嵌套的原則是:一個(gè)正在執(zhí)行的中斷服務(wù)程

37、序可以被較高優(yōu)先級(jí)的中斷請(qǐng)求中斷,而不能被同級(jí)或較低級(jí)的中斷請(qǐng)求所中斷。兩極中斷通過(guò)使用IP寄存器設(shè)置。</p><p>  AT89C51的管腳有四十多個(gè)這里就不在一一列出,圖2.2.為其管腳分布。</p><p>  圖2.2. 8051的管腳分布</p><p><b>  2.3硬件設(shè)計(jì)</b></p><p>

38、;  2.3.1 時(shí)鐘電路的設(shè)計(jì)</p><p>  時(shí)鐘電路用于產(chǎn)生MCS-51單片機(jī)工作時(shí)所必需的時(shí)鐘控制信號(hào),MCS-51單片</p><p>  機(jī)的內(nèi)部電路在時(shí)鐘信號(hào)的控制下,嚴(yán)格的按時(shí)序執(zhí)行指令進(jìn)行工作。</p><p>  電路中的電容C1和C2典型值通常選擇為30pF左右本設(shè)計(jì)采用20pF,電路圖如2.3。對(duì)外接電容的值雖沒(méi)有嚴(yán)格的要求,但電容的大小

39、會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶振的振蕩頻率的范圍通常是在1.2MHZ-12MHZ之間,本設(shè)計(jì)采用12MHZ。晶振的頻率越高,則系統(tǒng)的時(shí)鐘頻率也就越高,單片機(jī)的運(yùn)行速度也就越快。但反過(guò)來(lái)運(yùn)行速度快對(duì)存儲(chǔ)器的速度要求也就越高,對(duì)印制電路板的工藝要求也高,即要求線間的寄生電容要??;晶振和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作。為了提高溫度穩(wěn)定性,應(yīng)采用溫度穩(wěn)定性良好的電容

40、。[12]</p><p>  圖2.3 時(shí)鐘電路</p><p>  2.3.2 復(fù)位電路的設(shè)計(jì)</p><p>  單片機(jī)復(fù)位是使CPU 和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。單片機(jī)復(fù)位的條件是:必須單片機(jī)復(fù)位引腳加上持續(xù)兩個(gè)機(jī)器周期(即24 個(gè)振蕩周期)以上的高電平,單片機(jī)才進(jìn)入復(fù)位狀態(tài)(即程序從0000H地址開(kāi)始執(zhí)行)。復(fù)

41、位后的狀態(tài):?jiǎn)纹瑱C(jī)復(fù)位后,片內(nèi)RAM中低128的內(nèi)容不會(huì)改變,但特殊功能寄存器被初始化。復(fù)位期間單片機(jī)的ALE和PSEN引腳輸出高電平,復(fù)位后單片機(jī)的特殊功能寄存器狀態(tài)除SP為07H,P0P3為FFH外其余都被復(fù)位為0。</p><p>  AT89C51單片機(jī)的第9管腳RST(RESET縮寫(xiě)),當(dāng)向RST管腳輸入一個(gè)非常短暫的高電平時(shí),單片機(jī)就會(huì)復(fù)位。復(fù)位管腳與計(jì)算機(jī)上的復(fù)位鍵功能很相似,當(dāng)計(jì)算機(jī)正在進(jìn)行或死機(jī)

42、時(shí),只要按一下復(fù)位鍵,計(jì)算機(jī),就會(huì)重新啟動(dòng)。單片機(jī)</p><p>  的復(fù)位和這個(gè)過(guò)程相似,無(wú)論單片機(jī)在執(zhí)行什么程序,如果觸發(fā)復(fù)位就會(huì)使其回到程序的開(kāi)頭重新開(kāi)始執(zhí)行程序。最簡(jiǎn)單的復(fù)位電路就是在RST端與Vcc之間連接一個(gè)10uF的電解電容。單片機(jī)上電瞬間,電容的正極電壓瞬間變?yōu)閂cc,電解電容對(duì)于這個(gè)瞬間的電壓突變相當(dāng)于短路,于是Vcc(高電平)相當(dāng)于直接加到了RST端上。正是這個(gè)加在RST上的瞬間高電平使單片

43、機(jī)復(fù)位。很快,電解電容充滿電,在電路中相當(dāng)于斷路,于是RST端電平由高轉(zhuǎn)低,單片機(jī)隨即開(kāi)始執(zhí)行程序. 有時(shí),只使用一個(gè)電解電容的復(fù)位電路可靠性不高,故本設(shè)計(jì)采用如圖2.4所示的復(fù)位電路,以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程引起的抖動(dòng)而影響復(fù)位。</p><p>  圖2.4 復(fù)位電路 </p><p>  2.3.3 密碼存儲(chǔ)電路的設(shè)計(jì)</p><p>  外置的撥

44、碼開(kāi)關(guān)來(lái)設(shè)定密碼,操作既不方便,電路又復(fù)雜。本設(shè)計(jì)采用了E2PROM 來(lái)保存密碼,它最大的優(yōu)點(diǎn)就是掉電后,存儲(chǔ)的內(nèi)容不會(huì)丟失,這是一種十分理想的方案。密碼寫(xiě)入ROM 后即使掉電也沒(méi)關(guān)系,且可以隨意讀出、寫(xiě)入。真正改變了以往密碼鎖的密碼由廠家固定,用戶只有使用權(quán),而沒(méi)有更改權(quán)的缺點(diǎn),真正實(shí)現(xiàn)了密碼鎖的保密性。密碼存儲(chǔ)電路如圖2.5所示。</p><p>  本設(shè)計(jì)采用的芯片是ATMEL 公司的AT24C02C, 內(nèi)

45、有512 字節(jié)的ROM,且支持在線讀寫(xiě)。其SDA為數(shù)據(jù)傳送線,接在單片機(jī)的P3.5 口。SCK為移位時(shí)鐘線,接在單片機(jī)的P3.4 口。利用P3.4 和P3.5口模擬串口來(lái)實(shí)現(xiàn)單片機(jī)和ROM間的數(shù)據(jù)串行通訊。</p><p>  AT24C02各管腳介紹:SCK為串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘這是一個(gè)輸入管腳;SDA為串行數(shù)據(jù)用于器件所有數(shù)據(jù)的發(fā)送或接收,</p><p&g

46、t;  是一個(gè)開(kāi)漏輸出管腳可與其它開(kāi)漏輸出或集電極開(kāi)路輸出進(jìn)行線,A0、 A1、 A2為器件地址輸入端這些輸入腳用于多個(gè)器件級(jí)聯(lián)時(shí)設(shè)置器件地址當(dāng)這些腳懸空時(shí)默認(rèn)值為0 ;WP為寫(xiě)保護(hù),如果WP管腳連接到Vcc所有的內(nèi)容都被寫(xiě)保護(hù)只能讀,當(dāng)WP管腳連接到Vss或懸空允許器件進(jìn)行正常的讀/寫(xiě)操作。</p><p><b>  圖2.5 存儲(chǔ)電路</b></p><p> 

47、 2.3.4 鍵盤(pán)電路設(shè)計(jì)</p><p>  鍵盤(pán)是一組規(guī)則排列的開(kāi)關(guān)元器件組合,是最常用的輸入設(shè)備。操作人員可以通過(guò)鍵盤(pán)向計(jì)算機(jī)輸入數(shù)據(jù)、地址、指令或其他的控制命令,實(shí)現(xiàn)簡(jiǎn)單的人機(jī)對(duì)話。</p><p>  (1) 按鍵輸入原理</p><p>  在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門(mén)的復(fù)位電路及專一的復(fù)位功能外,其它按鍵都是以開(kāi)關(guān)狀態(tài)來(lái)設(shè)置控制功能或輸入數(shù)據(jù)

48、的。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),計(jì)算機(jī)應(yīng)用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,所以按鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過(guò)程。 對(duì)于一個(gè)鍵盤(pán)或一組鍵,總有一個(gè)接口電路與CPU相連。CPU可以采用查詢或中斷方式了解有無(wú)將鍵輸入并檢查是哪一個(gè)鍵按下,將該鍵編號(hào)送入累加器ACC,然后通過(guò)跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。</p><p><b>  (2) 鍵盤(pán)的分類</b><

49、/p><p>  鍵盤(pán)按照接口原理可分為編碼鍵盤(pán)和非編碼鍵盤(pán)兩類,這兩類鍵盤(pán)的主要區(qū)別是識(shí)別鍵符及給出相應(yīng)鍵碼的方法不同。編碼鍵盤(pán)主要用硬件來(lái)實(shí)現(xiàn)對(duì)按鍵的識(shí)別,非編碼鍵盤(pán)主要由軟件來(lái)實(shí)現(xiàn)鍵盤(pán)的定義與識(shí)別,只簡(jiǎn)單地提供行和列的矩陣,其它工作均由軟件完成,由于經(jīng)濟(jì)實(shí)用,所以較多地應(yīng)用于單片機(jī)系統(tǒng)中。根據(jù)結(jié)構(gòu)的不同,非編碼鍵盤(pán)又可分為矩陣式鍵盤(pán)和獨(dú)立式鍵盤(pán)。矩陣式鍵盤(pán)由行線和列線構(gòu)成,按鍵位于行、列交叉點(diǎn)上,矩陣式鍵盤(pán)在按

50、鍵較多時(shí)使用會(huì)節(jié)</p><p>  省很多I/O口,但是,各按鍵間相互影響,因此,必須將行線、列線信號(hào)配合起來(lái)作適當(dāng)處理,才能確定閉合鍵的位置。</p><p>  (3) 按鍵結(jié)構(gòu)與特點(diǎn) </p><p>  微機(jī)鍵盤(pán)通常使用機(jī)械觸點(diǎn)式按鍵開(kāi)關(guān),其主要功能是把機(jī)械上的通斷轉(zhuǎn)換成為電氣上的邏輯關(guān)系。也就是說(shuō),它能提供標(biāo)準(zhǔn)的 TTL邏輯電平,以便與通用數(shù)字系統(tǒng)的邏輯

51、電平相容。機(jī)械式按鍵在按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來(lái)。其抖動(dòng)過(guò)程如圖2.6所示,抖動(dòng)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般為510ms。在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測(cè)誤判,必須采取去抖動(dòng)措施,可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時(shí),可采用硬件去抖,而

52、當(dāng)按鍵數(shù)較多時(shí),采用軟件去抖。在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè)10ms~20ms左右的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài);同理,在檢測(cè)到該鍵釋放后,也應(yīng)采用相同的步驟進(jìn)行確認(rèn),從而可消除抖動(dòng)的影響。[12]</p><p>  圖2.6 鍵盤(pán)抖動(dòng)過(guò)程</p><p>  表2.3. 鍵盤(pán)的連線方式</p><p&

53、gt;  考慮到本次設(shè)計(jì)功能的要求以及軟件編程和硬件電路連接,在本次設(shè)計(jì)所采用的是矩陣鍵盤(pán),用4條I/O線作為行線,4條I/O線作為列線組的鍵盤(pán),采用軟件延時(shí)的辦法來(lái)消除機(jī)械抖動(dòng)。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵,鍵盤(pán)中按鍵的個(gè)數(shù)是4*4個(gè)=16個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。</p><p>  矩陣鍵盤(pán)和單片機(jī)管腳連接(表2.3.)和電路圖(圖2.7)</p&

54、gt;<p>  P1.4--P1.7為行線,P1.0--P1.3為列線.[8] </p><p>  圖2..7 4*4矩陣鍵盤(pán)</p><p>  2.3.5 顯示電路的設(shè)計(jì)</p><p>  顯示器是最常用的輸出設(shè)備,其種類繁多,但在單片機(jī)系統(tǒng)設(shè)計(jì)中最常用的是發(fā)光二極管顯示器(LED)和液晶顯示器(LCD)兩種。由于這兩種顯示器結(jié)構(gòu)簡(jiǎn)單,價(jià)格

55、便宜,接口容易實(shí)現(xiàn),因而得到了廣泛的應(yīng)用。發(fā)光二極管LED,組成的顯示屏,每個(gè)點(diǎn)都是一個(gè)或多個(gè)發(fā)光二極管,通過(guò)控制電路控制二極管的亮與滅來(lái)控制點(diǎn)的發(fā)光,從而使整個(gè)大屏幕顯示圖案。 液晶顯示器LCD1602,所謂1602是指顯示的內(nèi)容為16*2,即可以顯示兩行,每行16個(gè)字符。最常見(jiàn)的就是TFT類型的,它是由光源,液晶光柵,和控制芯片組成,他的光源是常亮的白色強(qiáng)光,當(dāng)光線通過(guò)液晶光柵(液晶屏)的時(shí)候,通過(guò)電壓改變液晶顆粒濾光方向,從而改變

56、每個(gè)點(diǎn)的顏色和強(qiáng)度來(lái)顯示圖案。[6] </p><p>  液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng)域。</p><p>  液晶顯示器分很多種類,按顯示方式可分為段式,行點(diǎn)陣式和全

57、點(diǎn)陣式。段式與數(shù)碼管類似,行點(diǎn)陣式一般是英文字符,全點(diǎn)陣式可顯示任何信息, 如漢字、圖形、圖表等。</p><p><b>  兩者之間的區(qū)別:</b></p><p> ?。?)二極管本身發(fā)光, 液晶本身不發(fā)光,只是透射光。 </p><p>  (2)二極管體積大,圖像質(zhì)量一般,適合作室外大屏幕,價(jià)格較低。液晶成本較高,面積無(wú)法做得很大,但

58、圖像質(zhì)量很好,適合做顯示器。</p><p> ?。?)二極管耗電大,液晶耗電小。</p><p>  (4)二極管圖像刷新率低,液晶的高 。</p><p>  二者的檔次相差比較大,一般來(lái)講在一些圖像簡(jiǎn)單,對(duì)成本控制較嚴(yán)格的場(chǎng)合,用二極管,比如商場(chǎng)、銀行等服務(wù)部門(mén)的電子提示窗,街道、百貨公司外面的廣告宣傳窗;而液晶一般都是作計(jì)算機(jī)顯示器、電視、手持設(shè)備等對(duì)圖像質(zhì)

59、量要求高的場(chǎng)合,在本次計(jì)設(shè)中綜合考慮各方面的因素,我選定1602作為顯示電路。1602管腳的具體功能如表2.4。.</p><p>  1602液晶的主要參數(shù):</p><p>  顯示容量:16×2個(gè)字符</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實(shí)物圖</p><p>  1602一個(gè)很重要的端口VEE,為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用

61、時(shí)可以通過(guò)一個(gè)1K歐的電位器調(diào)整其顯示的對(duì)比度。[11]</p><p>  表2.4 1602液晶管腳主要功能</p><p>  在本次設(shè)計(jì)中采用了1602來(lái)作為顯示元件,用液晶構(gòu)成顯示電路不僅擴(kuò)大顯示的范圍,而且減少顯示電路對(duì)單片機(jī)I/O端口的占用,同時(shí)減少單片機(jī)連線。單片機(jī)具體的連線方式:P0口作為數(shù)據(jù)輸出口,RP1為P0口的上拉電阻,以提高其驅(qū)動(dòng)力。P2口的P2.5、P2.6、

62、P2.7作為1602液晶的控制口(LCD_RS連接P2.5; LCD_RW連接P2.6; LCD_EN連接P2.7)。VEE連接1個(gè)精密1千歐可調(diào)電阻器用來(lái)調(diào)節(jié)液晶顯示器的亮度。詳細(xì)的電路圖(圖2.10)。</p><p>  圖2.10 LCD顯示電路</p><p>  2.3.6 報(bào)警電路</p><p>  蜂鳴器有兩類3大品種。一類是壓電式,一類是電磁式

63、,電磁式又有兩大品種,鐵振膜式和動(dòng)圈式,二者原理一樣只是結(jié)構(gòu)不同。所有蜂鳴器都有兩種類型:純蜂鳴器和帶驅(qū)動(dòng)的蜂鳴器,蜂鳴器都是用音頻信號(hào)驅(qū)動(dòng)的,都是交流驅(qū)動(dòng)。報(bào)警器的種類很多,比如:揚(yáng)聲器,蜂鳴器等,電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、震動(dòng)膜片以及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號(hào)通過(guò)電磁線圈,使得電磁線圈產(chǎn)生了一個(gè)磁場(chǎng)。本次設(shè)計(jì)采用的是壓電式蜂鳴器作為報(bào)警器(圖2.11)。蜂鳴器的一端接P2.1口,另一端接電源,當(dāng)P2.1

64、為低電平時(shí),蜂鳴器報(bào)警,當(dāng)P2.1為高電平時(shí),蜂鳴器不作出反應(yīng)[4]</p><p>  圖2.11 報(bào)警電路</p><p>  2.3.7 開(kāi)鎖電路</p><p>  在本次設(shè)計(jì)中,基于節(jié)省材料、主次分明的原則,暫時(shí)用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示開(kāi)鎖;滅,表示沒(méi)有開(kāi)鎖。電路圖如2.12所示。當(dāng)P2.0口輸出低電平時(shí),二極管D1導(dǎo)通發(fā)光,表示開(kāi)鎖;當(dāng)二

65、極管輸出高電平時(shí),二極管不能導(dǎo)通也就是說(shuō)二極管不發(fā)光,表示上鎖。[1]</p><p>  圖2..12 開(kāi)鎖電路</p><p><b>  第3章 軟件設(shè)計(jì)</b></p><p>  3.1 編程工具介紹</p><p>  Kiel C51是美國(guó)Kiel Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)

66、發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開(kāi)發(fā),比較方便.Kiel C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)keil軟件常與proteus仿真軟件相配合使用單片機(jī)開(kāi)發(fā)中除必要的硬件外,同樣離不開(kāi)軟件。</p><p>  圖3.1 編程軟件工作界面</p>

67、<p>  我們寫(xiě)的匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過(guò)匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開(kāi)發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開(kāi)發(fā)</p><p>  單片機(jī)的開(kāi)發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開(kāi)發(fā)MCS-51系列單片機(jī)的軟

68、件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了</p><p>  包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤(pán)空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于

69、使用51系列單片機(jī)的愛(ài)好者來(lái)說(shuō)是十分必要的,如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的最好的選擇之一,即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)其試工具也會(huì)令你事半功倍。其工作界面如上圖所示。</p><p>  3.2 編程語(yǔ)言介紹</p><p>  匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的,都是其直接對(duì)硬件操作,只不過(guò)指令采用了英文縮寫(xiě)的標(biāo)識(shí)符,更容易識(shí)別

70、和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫(xiě)出來(lái)。匯編程序通常由三部分組成:指令、偽指令和宏指令。</p><p>  匯編程序的每一句指令只能對(duì)應(yīng)實(shí)際操作過(guò)程中的一個(gè)很細(xì)微的動(dòng)作,例如移動(dòng)、自增,因此匯編源程序一般比較冗長(zhǎng)、復(fù)雜、容易出錯(cuò),而且使用匯編語(yǔ)言編程需要有更多的計(jì)算機(jī)專業(yè)知識(shí),但匯編語(yǔ)言的優(yōu)點(diǎn)也是顯而易見(jiàn)的,用匯編語(yǔ)言所能完成的操作不是一般高級(jí)語(yǔ)言所能實(shí)現(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文

71、件不僅比較小,而且執(zhí)行速度很快。高級(jí)語(yǔ)言主要是相對(duì)于匯編語(yǔ)言,而相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完成工作無(wú)關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡(jiǎn)化了程序中的指令。同時(shí),由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專業(yè)知識(shí)。高級(jí)語(yǔ)言所編制的程序不能直接被計(jì)算機(jī)識(shí)別,必須經(jīng)過(guò)轉(zhuǎn)換才能被執(zhí)行。</p><p>  C語(yǔ)言是一種高級(jí)語(yǔ)言。C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的

72、特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開(kāi)發(fā)上,而且各類科研都需要用到C語(yǔ)言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。</p><p><b>  C語(yǔ)言特點(diǎn)</b></p><p> ?。?)簡(jiǎn)潔緊湊、靈活方便</p>&l

73、t;p>  C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書(shū)寫(xiě)形式自由,區(qū)分大小寫(xiě)。</p><p>  把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。 C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。</p><p><b> ?。?)運(yùn)算符豐富</b></p><p>  C語(yǔ)言的運(yùn)算符包

74、含的范圍很廣泛,共有34種運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語(yǔ)言的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。</p><p><b> ?。?)數(shù)據(jù)類型豐富</b></p><p>  C語(yǔ)言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來(lái)實(shí)現(xiàn)各

75、種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大。[10]</p><p><b>  3.3 軟件編程</b></p><p>  3.3.1軟件設(shè)計(jì)原則</p><p>  所設(shè)計(jì)的軟件不僅要滿足密碼鎖:插上電源后,程序自動(dòng)調(diào)入初始密碼,此時(shí)依次輸入

76、 所000000,然后按[#](確認(rèn))鍵,此時(shí)鎖會(huì)打開(kāi),可以看到顯示open,密碼鎖打開(kāi);按下[*](取消)鍵,此時(shí)鎖關(guān)閉,所有輸入清除,在開(kāi)鎖狀態(tài)下,再次輸入正確的密碼并按下[#](確認(rèn))鍵,此時(shí)聽(tīng)到兩聲提示,輸入新的六位密碼并按[D](重設(shè))鍵,再重復(fù)輸入一次新密碼并按[D],會(huì)聽(tīng)到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲(chǔ)到AT24C02;(如兩次輸入的新密碼不一樣,則重設(shè)密碼失?。.?dāng)輸入密碼錯(cuò)誤后,報(bào)警并鎖定鍵盤(pán)3秒,

77、如3秒內(nèi)又有按鍵,3秒再啟動(dòng);當(dāng)重置新密碼時(shí),新密碼會(huì)保存于AT24C02存儲(chǔ)器里。而且</p><p>  要使程序最簡(jiǎn)化,通俗易懂。</p><p>  3.3.2 軟件設(shè)計(jì)方案</p><p>  本次設(shè)計(jì)中的軟件部分設(shè)計(jì)采用模塊化程序設(shè)計(jì),分塊逐個(gè)實(shí)現(xiàn)在本次設(shè)計(jì)中,在對(duì)每個(gè)單獨(dú)進(jìn)行程序修改時(shí)不影響全局,同時(shí)降低編程的工作量和調(diào)試的難度,主程序包括顯示初始化預(yù)

78、定義、主程序、4*4矩陣鍵盤(pán)掃描程序、1602顯示子程序等組成。主程序流程圖(圖3.2)</p><p>  圖3.2 主程序流程圖</p><p>  3.3.3 4*4矩陣鍵盤(pán)的編程方法</p><p> ?。?)先讀取鍵盤(pán)的狀態(tài),得到按鍵的特征編碼。P1口高四位輸入高電平,低四位輸入低電平。當(dāng)有按鍵按下時(shí),可以從P1口的高四位讀取端口低電平狀態(tài)來(lái)</

79、p><p>  確定列數(shù);在確定有按鍵按下后, P1口的高四位輸入高電平,低四位輸入3個(gè)高電平和1個(gè)電平,通過(guò)編程使3高1低在低四位端口中循環(huán),當(dāng)P1口的高四位中出現(xiàn)低電平時(shí)就可以確定行數(shù)。將行說(shuō)和列數(shù)組合起來(lái)就可以得到當(dāng)前按鍵的特征編碼。使用上述方法我們得到16個(gè)鍵的特征編碼。</p><p>  (2)根據(jù)按鍵的特征編碼,查表得到按鍵的編碼。將用上述方法得到的16個(gè)</p>

80、<p>  按鍵的特征編碼按表3.1排列的順序排成一張?zhí)卣骶幋a與順序編碼的對(duì)應(yīng)關(guān)系表,然后用當(dāng)前讀得的特征編碼來(lái)查表,當(dāng)表中有該特征編碼時(shí),它所在的位置就是對(duì)應(yīng)的順序編碼。</p><p> ?。?)根據(jù)矩陣鍵盤(pán)鍵值查找相對(duì)應(yīng)程序的具體編程。</p><p>  鍵盤(pán)掃描程序的主要功能有:</p><p>  1)識(shí)別鍵盤(pán)有無(wú)按鍵按下,若無(wú)鍵按下返回<

81、;/p><p>  2)如果有鍵按下,找出具體的按鍵值(特征編碼)。</p><p>  表3.1 按鍵號(hào)和特征編碼對(duì)應(yīng)</p><p><b>  程序段如下</b></p><p>  //=====================按鍵檢測(cè)并返回按鍵值==================</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; //無(wú)鍵按下時(shí)返回0</p><p><b>  }</b></p><p>  3.3.4液晶顯示子程序</p><p>  1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假

90、名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如‘A’。   </p><p>  在本次設(shè)計(jì)中P2口作為數(shù)據(jù)口,P0口作為控制端口,具體定義如下。</p><p

91、>  1602液晶控制端口的定義</p><p>  //=======================================LCD1602====================================================</p><p>  //=====================================================

92、========</p><p>  #define yi 0x80 //LCD第一行的初始位置</p><p>  ,因?yàn)長(zhǎng)CD1602字符地址首位D7恒定為1(100000000=80)</p><p>  #define er 0x80+0x40 //LCD第二行初始位置(因?yàn)榈诙械谝粋€(gè)字符位置地址是0x40)</p><p>  /

93、/----------------延時(shí)函數(shù),后面經(jīng)常調(diào)用----------------------</p><p>  void delay(uint xms)//延時(shí)函數(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>  //--------------------------寫(xiě)指令---------------------------</p><p>  write_

95、1602com(uchar com); //****液晶寫(xiě)入指令函數(shù)****</p><p><b>  {</b></p><p>  lcd1602_rs=0; //數(shù)據(jù)/指令選擇置為指令</p><p>  lcd1602_rw=0; //讀寫(xiě)選擇置為寫(xiě)</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>  } //-------------------------寫(xiě)數(shù)據(jù)-----------------------------</p><p>  write_1602dat(uchar dat) //***液晶寫(xiě)入數(shù)據(jù)函數(shù)****</p><p><b>  {</b><

98、/p><p>  lcd1602_rs=1; //數(shù)據(jù)/指令選擇置為數(shù)據(jù)</p><p>  lcd1602_rw=0; //讀寫(xiě)選擇置為寫(xiě)</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點(diǎn)陣,8位數(shù)據(jù)</p><p>  write_1602com(0x0c); //開(kāi)顯示不

101、顯示光標(biāo)</p><p>  write_1602com(0x06); // 整屏不移動(dòng),光標(biāo)自動(dòng)右移</p><p>  write_1602com(0x01); //清顯示</p><p>  }//===========================================================</p><p>

102、  3.3.5 密碼比較和報(bào)警程序</p><p>  密碼比較和報(bào)警程序也是本次設(shè)計(jì)的重點(diǎn),下圖(圖3.3)是此程序的詳細(xì)設(shè)計(jì)流程圖。</p><p>  圖3.3 密碼比較和報(bào)警程序設(shè)計(jì)</p><p>  密碼比較和報(bào)警程序如下</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位時(shí),接受輸入并保存,大于6位時(shí)則無(wú)效。</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è)計(jì)</

110、p><p>  在開(kāi)鎖狀態(tài)下,再次輸入正確的密碼并按下[#](確認(rèn))鍵,此時(shí)聽(tīng)到兩聲提示,輸入新的六位密碼并按[D](重設(shè))鍵,再重復(fù)輸入一次新密碼并按[D],會(huì)聽(tīng)到兩聲提示音,表示重設(shè)密碼成功,內(nèi)部保存新密碼并存儲(chǔ)到AT24C02。(如兩次輸入的新密碼不一樣,則重設(shè)密碼失?。?。</p><p><b>  其程序如下</b></p><p>  

111、//==========================確認(rèn)鍵,并通過(guò)相應(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里讀出存儲(chǔ)密碼</p><p><b>  if(N==6)</b></p><p><b>  {</b></p><p>  if(ReInputEn==0)//重置密碼功能未開(kāi)啟</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)//錯(cuò)誤輸入計(jì)數(shù)達(dá)三次時(shí),報(bào)警并鎖定鍵盤(pán)</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;//開(kāi)啟定時(shí)</p><p>  key_disable=1;//鎖定鍵盤(pán)</p

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論