![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/7/15/514dda49-3601-4eb2-b4e1-49b1394db314/514dda49-3601-4eb2-b4e1-49b1394db314pic.jpg)
![畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)多功能密碼鎖的設(shè)計(jì)_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/7/15/514dda49-3601-4eb2-b4e1-49b1394db314/514dda49-3601-4eb2-b4e1-49b1394db3141.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于單片機(jī)多功能密碼鎖的設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 在日常的生活和工作中, 住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的
2、安全保險(xiǎn)器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點(diǎn)。</p><p> 單片機(jī)技術(shù)是智能化檢測與控制領(lǐng)域應(yīng)用非常普及并且具有很大潛力的技術(shù)。論文闡述一個基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)采用美國Atmel公司的AT89S52單片機(jī)作為系統(tǒng)核心,液晶顯示器LCD1602作為輸出設(shè)備顯示系統(tǒng)提示信息,4*
3、4矩陣薄膜鍵盤作為輸入設(shè)備,CMOS串行E2PROM存儲器AT24C02作為數(shù)據(jù)存儲器,配合蜂鳴器、繼電器等電路構(gòu)成整個系統(tǒng)硬件;系統(tǒng)軟件采用匯編語言編寫。設(shè)計(jì)的系統(tǒng)液晶顯示,密碼修改方便,具有報(bào)警、鎖定等功能,使用便捷簡單,符合住宅、辦公用鎖需求,具有一定的實(shí)用價(jià)值。</p><p> 關(guān)鍵詞:單片機(jī);密碼鎖; AT89S52 ; LCD1602; AT24C0</p><p><
4、;b> Abstract</b></p><p> In our daily life, the security of house, company department, documents and finance forms, also some personal information always used the lock to protect them. If use the
5、normal keys to lock out the door, we should taken many keys with ourself.That is so difficult to use. And if we lost the keys with careless, the security looks very easy to break out. As the developing of the technology,
6、people ask for high securty machines.For satisfy this request, the cipher lock is appeared. The cipher has hi</p><p> SCM technology is very popular and has great potential in application of intelligent det
7、ection 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, l
8、iquid crystal monitor 1602 as the output device displaying the prompt information of system, 4*4 matrix membrane keyboard as the input device, serial E2PROM memory AT24C02 as the data storage,</p><p> Key w
9、ords: SCM ; Password-Lock;AT89S52 ; LCD1602; AT24C02</p><p><b> 目錄</b></p><p><b> 1 緒 論1</b></p><p><b> 2 系統(tǒng)設(shè)計(jì)1</b></p><p> 2.
10、1 功能設(shè)計(jì)1</p><p> 2.2 結(jié)構(gòu)設(shè)計(jì)2</p><p><b> 3 硬件設(shè)計(jì)3</b></p><p> 3.1 AT89S52簡介3</p><p> 3.2液晶顯示電路5</p><p><b> 3.3發(fā)聲電路6</b></p
11、><p> 3.4開鎖控制電路6</p><p> 3.5密碼存儲電路7</p><p> 3.6鍵盤輸入電路8</p><p> 3.7手動復(fù)位電路9</p><p><b> 3.8晶振電路9</b></p><p> 3.9 系統(tǒng)結(jié)構(gòu)電路10<
12、;/p><p><b> 4 軟件設(shè)計(jì)10</b></p><p> 4.1 系統(tǒng)主程序11</p><p> 4.1.1 初始化及按鍵識別11</p><p> 4.1.2 按鍵重定位12</p><p> 4.1.3 保存密碼14</p><p> 4
13、.1.4 確認(rèn)鍵處理15</p><p> 4.1.5 開鎖鍵處理26</p><p> 4.1.6 改密鍵處理17</p><p> 4.1.7 校驗(yàn)新密碼17</p><p> 4.2 系統(tǒng)相關(guān)子程序18</p><p> 4.2.1 按鍵識別子程序18</p><p>
14、; 4.2.2 液晶顯示子程序20</p><p> 4.2.3 AT24C02子程序21</p><p> 5 系統(tǒng)調(diào)試與測試23</p><p><b> 總結(jié)26</b></p><p><b> 致 謝26</b></p><p><b&g
15、t; 參考文獻(xiàn)27</b></p><p><b> 1 緒 論</b></p><p> 鎖具是源流千古的社會性用品,主要用于日常生活和工作中,住宅與部門的安全防范。當(dāng)前門鎖的主流是彈子鎖,其保密性不強(qiáng),鑰匙容易被仿制和意外丟失;且持有者需隨時(shí)攜帶鑰匙,使用不方便。保存貴重物件的保險(xiǎn)箱主要用機(jī)械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高,成本高昂,且
16、易出現(xiàn)故障。隨著科技、經(jīng)濟(jì)和社會的發(fā)展,當(dāng)今社會公共安全防范系統(tǒng)對鎖具的保密性、牢固性、可靠性、耐用性以及安裝使用等提出了新的更高的要求。針對原有鎖具的特點(diǎn)和缺陷,為滿足人們對鎖的使用需求,增加其安全性,用密碼代替鑰匙的電子密碼鎖應(yīng)運(yùn)而生。 </p><p> 電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的
17、性價(jià)比較高的產(chǎn)品。電子密碼鎖的出現(xiàn)給人們帶來了極大的方便,有很廣闊的市場前景。現(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的。其性能和安全性已大大超過了機(jī)械鎖,特點(diǎn)有:</p><p> 保密性好,編碼量多。</p><p> 隨機(jī)開鎖成功率幾乎為零。</p><p> 密碼可變。用戶可以經(jīng)常更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的
18、密級下降。</p><p> 誤碼輸入保護(hù)。當(dāng)輸入密碼多次錯誤時(shí),報(bào)警系統(tǒng)自動啟動。</p><p> 操作簡單易行,一學(xué)即會。</p><p> 論文闡述基于美國Atmel公司的AT89S52單片機(jī),采用液晶顯示器1602作為輸出顯示系統(tǒng)提示信息的電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)。</p><p><b> 2 系統(tǒng)設(shè)計(jì)</b
19、></p><p><b> 2.1 功能設(shè)計(jì)</b></p><p> 本系統(tǒng)擬采用單片機(jī)為主控芯片,由于單片機(jī)種類繁多,各種型號都有其各自特點(diǎn),應(yīng)用于不同的環(huán)境,因此在選用時(shí)要多加比較。一般來說,在選取單片機(jī)時(shí)從下面幾個方面考慮:性能、存儲器、運(yùn)行速度、I/O口、定時(shí)/計(jì)數(shù)器、串行/并行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性等等。
20、基于以上因素本設(shè)計(jì)選用單片機(jī)AT89S52作為本設(shè)計(jì)的核心元件,利用該單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼鎖功能。</p><p> 在單片機(jī)I/O接口上外接輸入鍵盤用于輸入和一些功能的控制??紤]到密碼的存在形式一般為數(shù)字或字母形式,而字母數(shù)量眾多,并且排列不規(guī)則,不能使用矩陣式鍵盤排列字母;并且按鍵過多會大大增加系統(tǒng)的體積,對適用性極為不利,故只使用數(shù)字作為密碼。阿拉伯?dāng)?shù)字
21、不僅便于用戶記憶,而且通用性極強(qiáng),是作為密碼的首選。10個數(shù)字需要1個不同的按鍵,故選用為4*4矩陣鍵盤;除去10個數(shù)字鍵,還剩6個按鍵可設(shè)置不同的功能。</p><p> 用戶使用密碼鎖開鎖的步驟為:用戶輸入數(shù)字密碼,輸入完畢后按確認(rèn)鍵。如果密碼正確,再按開鎖鍵,即可開鎖。如果密碼錯誤則報(bào)警,如果密碼錯誤多次,還會鎖定鍵盤。這里需要蜂鳴器提示用戶按鍵已按下,開鎖需要繼電器開關(guān)。液晶顯示器則直觀顯示系統(tǒng)當(dāng)前狀態(tài)
22、和提示用戶需要做的操作。</p><p> 用戶修改密碼步驟為:首先輸入舊密碼,輸入完畢后按確認(rèn)鍵。如果密碼正確再按改密鍵。輸入兩次新密碼并確認(rèn)。如果兩次密碼輸入一致,則密碼修改成功。如果兩次輸入不一致,則密碼修改失敗。失敗后只能重新輸入舊密碼才能繼續(xù)改密。為防止系統(tǒng)發(fā)生異常,還應(yīng)提供復(fù)位開關(guān),在系統(tǒng)無法正常運(yùn)轉(zhuǎn)時(shí)手動復(fù)位。</p><p><b> 2.2結(jié)構(gòu)設(shè)計(jì)</
23、b></p><p> 如圖一所示,整個系統(tǒng)以單片機(jī)為核心,輔以若干外圍電路。其中密碼存儲部分是輸入輸出雙向結(jié)構(gòu),保證密碼可以掉電保存,上電后讀出。其余都是單向輸入或輸出。電源部分為整個系統(tǒng)供電,采用5V直流電源。鍵盤輸入部分采用4*4矩陣行列鍵盤,需不斷掃描檢查有無按鍵按下。復(fù)位部分提供手動復(fù)位功能,當(dāng)系統(tǒng)發(fā)生異?;蛭粗e誤時(shí)可以由用戶手動復(fù)位單片機(jī)。晶振部分是提供外部石英晶體諧振器。</p>
24、;<p> 系統(tǒng)輸出有:液晶顯示部分,為用戶顯示字符提示當(dāng)前操作狀態(tài)。蜂鳴器發(fā)聲,提示用戶按鍵已按下,以及密碼正確的提示音,錯誤的警告音等。開鎖電路部分開鎖電路部分是控制繼電器,只有密碼正確并選擇開鎖后,繼電器內(nèi)部的電磁鐵才會吸合,發(fā)光二極管電路連通后發(fā)光,表示鎖已打開。</p><p><b> 3 硬件設(shè)計(jì)</b></p><p> 3.1 A
25、T89S52簡介</p><p> AT89S52是一款低功耗、高性能CMOS8位微控制器,具有8K可編程 Flash存儲器。使用 Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品指令和引腳完全兼容。</p><p> AT89S52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash, 256字節(jié)RAM,32 位 I/O 口線,看門狗定時(shí)器,2 個數(shù)據(jù)指針,三個 16 位定時(shí)器
26、/計(jì)數(shù)器,一個6向量 2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。其引腳如圖2所示,下面簡要介紹其引腳功能:</p><p> VCC:電源。本設(shè)計(jì)中接電源正極。</p><p> GND:地。本設(shè)計(jì)中接電源負(fù)極。</p><p> P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫"1&quo
27、t;時(shí),引腳用作高阻抗輸入。</p><p> P1口:P1口是一個具有內(nèi)部上拉電阻的8 位雙向I/O口,P1輸出緩沖器能驅(qū)動4個TTL邏輯電平。對 P1 端口寫"1"時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p> P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出
28、緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫"1"時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p> P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫"1"時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部
29、拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p> RST:復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2個機(jī)器周期高電平將使單片機(jī)復(fù)位。看門狗計(jì)時(shí)完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。</p><p> EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFF
30、FH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。本設(shè)計(jì)中不需要外部程序存儲器,因此需接高電平。</p><p> ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低8位地址的輸出脈沖。</p><p> PSEN:外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當(dāng)AT89S52從外部程序存儲器執(zhí)行外部代碼時(shí),P
31、SEN在每個機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時(shí),PSEN將不被激活。</p><p> XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 3.2 液晶顯示電路</p><p> 3.2.1 LCD1602簡介</p><p
32、> 如圖3所示1602字符型LCD能夠同時(shí)顯示16*2即32個字符(16列2行)。其內(nèi)置192種字符(160個5*7點(diǎn)陣字符和32個5*10點(diǎn)陣字符),具有64個字</p><p> 節(jié)的自定義字符RAM,可自定義8個5*8點(diǎn)陣字符或4個5*11點(diǎn)陣字符。1602通常有14條引腳線或16條引腳線兩種,多出來的2條線是背光電源線和地線,帶背光的比不帶背光的略厚,控制原理與14腳的LCD完全一樣,是否帶背光
33、在應(yīng)用中并無差別。本設(shè)計(jì)中采用帶背光16引腳線的。</p><p><b> 3.3 發(fā)聲電路</b></p><p> 發(fā)聲部分的電路如圖4,就是用P2.1口控制一個有源蜂鳴器發(fā)聲,作為提示音或報(bào)警音。程序設(shè)定為每當(dāng)識別到有一位按鍵被按下時(shí),蜂鳴器發(fā)聲0.1S;開鎖時(shí)停頓2S發(fā)聲2S,發(fā)聲3次;密碼錯誤時(shí)每次停頓0.5S發(fā)聲1S,錯誤5次以內(nèi)時(shí)錯N次發(fā)N聲,錯誤
34、5次及以上發(fā)聲10次。</p><p> 蜂鳴器有兩個引腳,其中長腳為正極,短腳為負(fù)極。由于單片機(jī)I/O引腳輸出的電流較小,基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路,一般使用三極管來放大電流就可以了。本設(shè)計(jì)中使用三極管9012,P2.1口高電平時(shí)三極管截至,蜂鳴器不發(fā)聲;P2.1口低電平時(shí),三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制P2.1腳的電平來使蜂鳴器發(fā)出聲音和
35、關(guān)閉。</p><p> 3.4 開鎖控制電路</p><p> 開鎖控制電路如圖5,電路的功能就是在輸入正確的密碼后開鎖。系統(tǒng)使用單片機(jī)P2.0引腳發(fā)出信號,經(jīng)三極管放大之后,由繼電器驅(qū)動電磁閥將鎖打開。設(shè)計(jì)中用一個發(fā)光二極管模擬表現(xiàn)鎖的開關(guān),只有鎖打開之后,繼電器吸合至常開觸電,發(fā)光二極管才會亮起;實(shí)際應(yīng)用中用繼電器控制開鎖電路的開關(guān)。</p><p>
36、繼電器也是感性器件,所以不能用單片機(jī)的I/O口直接控制,而且必須在三極管等控制器件上加反相保護(hù)電路。本設(shè)計(jì)中單片機(jī)通過P2.0引腳連接一只作為電子開關(guān)的PNP型三極管9012來驅(qū)動繼電器,繼電器的開、關(guān)完全由三極管的基極電平進(jìn)行控制。當(dāng)P2.0為高電平時(shí),PNP型三極管截止,繼電器不工作;反之P2.0為低電平時(shí),三極管導(dǎo)通,繼電器得電吸合。</p><p><b> 3.5密碼存儲電路</b&g
37、t;</p><p> 3.5.1 AT24C02簡介</p><p> AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256*8位存儲空間AT24C02的引腳如圖6,各引腳功能如下:</p><p> SCL:串行時(shí)鐘輸入管腳,用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘。</p><p> SDA:雙向串行數(shù)據(jù)/地
38、址管腳,用于器件所有數(shù)據(jù)的發(fā)送或接收。</p><p> A0、A1、A2:器件地址輸入端。這些輸入腳用于多個器件級聯(lián)時(shí)設(shè)置器件地址,當(dāng)這些腳懸空時(shí)默認(rèn)值為0。使用AT24C02最大可級聯(lián)8個器件,如果只有一個24C02被總線尋址,這三個地址輸入腳A0、A1、A2可懸空或連接到VSS。</p><p> WP:寫保護(hù)。如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護(hù),只能讀。當(dāng)WP管腳連
39、接到Vss或懸空,允許器件進(jìn)行正常的讀/寫操作。</p><p> VSS:電源地(GND)。</p><p> VCC:電源電壓(5V)。</p><p> 3.6 鍵盤輸入電路</p><p> 本設(shè)計(jì)中采用的4*4矩陣鍵盤共有16個鍵位,4根行線連P1口低四位,4根列線連P1口高四位(見圖7所示)。在按鍵未被按下時(shí),每一條行線與
40、線列線的交叉處互不相通,當(dāng)某個按鍵被按下后,該按鍵所在的行線和列線連通。這</p><p> 樣在P1口的高4位和低4位中各有一位互相連通。通過行列掃描檢測出這兩位,即可識別出被按下的鍵。具體識別方式和按鍵功能完全由軟件自定義。</p><p> 3.7 手動復(fù)位電路 </p><p> 為確保系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分。復(fù)位電路的基本
41、功能是:系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。圖8所示的復(fù)位電路可以基本實(shí)現(xiàn)上述功能,該電路在最基本的復(fù)位電路基礎(chǔ)上增加了一個手動復(fù)位開關(guān),當(dāng)人為按下按鈕時(shí),則Vcc的高電平就會直接加到RST端。由于人的動作再快也會使按鈕保持接通達(dá)數(shù)十毫秒,所以完全能夠滿足復(fù)位的時(shí)間要求。</p><p><b> 3.8 晶振電路</b></p><p>
42、晶振是晶體振蕩器的簡稱,它用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。在通常工作條件下,普通的晶振頻率絕對精度可達(dá)百萬分之五十,高級的精度更高。電路中的晶振即石英晶體振蕩器,它與電容構(gòu)成振蕩回路,為片內(nèi)放大器提供正反饋和振蕩所需的相移條件,從而構(gòu)成一個穩(wěn)定的自激振蕩器。</p><p><b> 3.9系統(tǒng)結(jié)構(gòu)</b></p><
43、p> 根據(jù)以上設(shè)計(jì)思路,得到系統(tǒng)原理圖如圖10所示,本設(shè)計(jì)中單片機(jī)為Atmel公司的AT89S52,電源部分為直流4.5V,3節(jié)5號電池供電,實(shí)驗(yàn)時(shí)也可以用直流</p><p> 5V電源供電。鍵盤輸入部分為4*4矩陣薄膜鍵盤,不需上拉電阻,但掃描時(shí)需先給行線或列線供電。液晶顯示器選用1602,可以顯示兩行,每行16個字符。</p><p> 蜂鳴器為有源5V。繼電器為5腳5V
44、。密碼存儲選用串行AT24C02芯片,256B</p><p> 空間,足夠存儲密碼,采用串行傳輸可以極大減少連線數(shù)目。</p><p><b> 4 軟件設(shè)計(jì)</b></p><p> 系統(tǒng)的軟件設(shè)計(jì)采用匯編語言編碼。設(shè)計(jì)方法是先用文本編輯器編寫源碼,然后用軟件Keil C51編譯,如果沒有錯誤,可連接生成.HEX格式的文件(需事先在K
45、eil C51中設(shè)置)。如果有錯誤則無法連接,但可在生成的.OBJ文件中找到代碼錯誤的地方,便于修改。當(dāng)然也可以直接在Keil中編碼。</p><p> 生成的HEX文件是記錄文本行的ASCII文本文件,在HEX文件中,每一行是一個HEX記錄,由十六進(jìn)制數(shù)組成的機(jī)器碼或者數(shù)據(jù)常量。HEX文件經(jīng)常被用于將程序或數(shù)據(jù)傳輸存儲到ROM、EPROM,大多數(shù)編程器和模擬器使用HEX文件。</p><p
46、><b> 4.1 系統(tǒng)主程序</b></p><p> 系統(tǒng)的主程序如圖11所示。由于用戶在使用系統(tǒng)的過程中,可能在任何時(shí)刻按下任何按鍵,而程序都必須對此作出正確響應(yīng)。所以主程序流程的主要思路是是根據(jù)按鍵的不同進(jìn)行不同的程序處理,下面具體介紹主程序的流程。</p><p> 4.1.1 初始化及按鍵識別</p><p> 如圖1
47、2,系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,兩個定時(shí)/計(jì)數(shù)器的設(shè)定,液晶顯示模式的設(shè)定,密碼緩沖區(qū)的初始化,一些自定義數(shù)據(jù)空間的初始化,蜂鳴器初始化發(fā)聲等操作。</p><p> 如果AT24C02里沒有存儲密碼,或者讀取AT24C02失敗,則載入系統(tǒng)初始化密碼;如果AT24C02里有掉電存儲的密碼,則會讀出該密碼。系統(tǒng)初始化并讀取密碼完成后,液晶顯示"Password:",提示用戶可以輸入密碼
48、。此時(shí)程序即不斷測試按鍵,檢查是否有按鍵被按下。實(shí)際程序運(yùn)行時(shí),絕大部分時(shí)間都在測試按鍵,等待用戶輸入。</p><p> 4.1.2 按鍵重定位</p><p> 之所以要進(jìn)行按鍵重定位,是因?yàn)榘存I識別子程序的功能只限于確認(rèn)某個按鍵被按下,不包括確認(rèn)按鍵的意義。根據(jù)表1可知,識別出的按鍵排列不符合</p><p> 用戶使用習(xí)慣,也不利于程序的后續(xù)處理,需要
49、重新定位。對BUFF重新賦值,</p><p> 新的鍵位值見表2,按鍵左3列仿照手機(jī)的9宮格按鍵,便于用戶輸入密碼。剩下的6個按鍵為功能按鍵,各鍵位對應(yīng)的功能設(shè)定如表3。</p><p> 根據(jù)不同的按鍵,程序跳轉(zhuǎn)至不同的程序段,進(jìn)行對應(yīng)按鍵處理,具體流程可見圖15。程序開始時(shí),先驅(qū)動蜂鳴器發(fā)聲0.1秒,提示用戶程序已經(jīng)檢測到剛才的按鍵。然后根據(jù)BUFF的初始值進(jìn)行一系列的對比。&l
50、t;/p><p> 如果BUFF的值是0,1,2,4,5,6,8,9,D中的一個,則按鍵是屬于數(shù)字鍵。分別將BUFF重賦值為1,2,3,4,5,6,7,8,9,0。然后程序跳轉(zhuǎn)至保存密碼部分,將數(shù)字密碼保存至密碼緩沖區(qū)。</p><p> 除了兩個未定義功能鍵(BUFF=0BH或0FH)程序不作任何處理,刪除鍵(BUFF=0EH)程序直接清空密碼緩沖區(qū),然后返回至按鍵測試之外,其他3個功能
51、按鍵也有各自的處理程序段。確認(rèn)鍵處理當(dāng)確認(rèn)鍵按下后的程序流程,開鎖鍵處理當(dāng)開鎖鍵按下后的準(zhǔn)備開鎖流程,改密處理當(dāng)確認(rèn)鍵按下后的預(yù)備修改密碼流程。</p><p> 4.1.3 保存密碼</p><p> 如圖14,該程序段的功能是將密碼信息保存至對應(yīng)的緩沖區(qū)。程序設(shè)置了一個16字節(jié)的密碼緩沖區(qū)(PS1~PS16)和一個16字節(jié)緩沖區(qū)存儲正確的密碼(AT1~AT16)。為便于比較,第一次
52、輸入的密碼保存至PS1,第二次輸入的密碼保</p><p> 存至PS2,依此類推。后面沒有輸入的位填充默認(rèn)值0FFH。為保密起見,輸入的密碼不能在液晶顯示器上顯示出來,而以“*”號代替。每輸入一位密碼,增加一位星號,便于用戶直觀察覺已經(jīng)輸入的密碼位數(shù)。</p><p> 另外,密碼超長也在此程序段處理。因?yàn)槊艽a超長并不涉及其他功能鍵,在保存密碼之前可判斷當(dāng)前密碼的長度。如果超過緩沖區(qū)
53、16位長度,即認(rèn)為密碼超長,無法繼續(xù)保存密碼。此時(shí)清空密碼緩沖區(qū)所有密碼,等待重新輸入。</p><p> 4.1.4 確認(rèn)鍵處理</p><p> 該程序段就是在識別到按鍵為確認(rèn)鍵之后程序的執(zhí)行流程,如圖15所示。輸入密碼完成后會按確認(rèn)鍵,但是輸入的密碼有三種情況:舊密碼,新密碼第一次,新密碼第二次,三種情況所做的操作也不一樣。程序設(shè)置有新密碼第一次標(biāo)志位PS_NEW1和新密碼第二次
54、標(biāo)志位PS_NEW2,默認(rèn)都是0。如果PS_NEW1</p><p> 被置1,則表明輸入的密碼是新密碼第一次,需將緩沖區(qū)PS1~PS16的信息轉(zhuǎn)存至NEW1~NEW16,然后PS_NEW1清0,PS_NEW2置1,提示重新輸入新密碼第二次。如果PS_NEW2被置1,則輸入的密碼是新密碼第二次,會進(jìn)行新密碼校驗(yàn),調(diào)用密碼校驗(yàn)子程序判斷兩次輸入的新密碼是否一致,然后將PS_NEW2清0。如果兩個標(biāo)志位均沒有被置1
55、,則沒有進(jìn)行改密操作,程序進(jìn)行密碼校驗(yàn),調(diào)用密碼校驗(yàn)子程序判斷輸入密碼是否正確。密碼正確會有聲光提示,并且密碼正確標(biāo)志位PSW_F置1,然后提示用戶選擇開鎖(A)還是改密(B)。如果密碼錯誤,系統(tǒng)也有聲光警示,此時(shí)無法進(jìn)行開鎖或改密操作。</p><p> 程序開始后會首先判別BUFF值是否匹配(BUFF=0F5H),如果BUFF值不匹配,說明程序異常,不是從按鍵重定位處跳轉(zhuǎn)過來的,應(yīng)重啟程序。以下幾個按鍵的處
56、理程序段開頭也有類似的BUFF值檢測,不再做贅述。</p><p> 如果密碼長度小于等于2,則密碼太短,不進(jìn)行任何比較,直接清空緩沖區(qū)重新檢測,可節(jié)省程序運(yùn)行時(shí)間。</p><p> 4.1.5 開鎖鍵處理</p><p> 該程序段是程序識別到開鎖鍵被按下后的流程,如圖16所示。此段并不需校驗(yàn)密碼,這里只需檢查密碼正確標(biāo)志位PSW_F的狀態(tài)。如果PSW_F
57、=1,則前面輸入的密碼正確,可以開鎖。如果PSW_F=0,說明密碼錯誤,甚至根本沒有校驗(yàn)</p><p> 密碼(輸入密碼后沒有按確認(rèn)鍵,或者直接按下開鎖鍵),此時(shí)提示用戶密碼錯誤,無法開鎖開鎖過程就是將P2.0口置0,繼電器得到低電平就會自動吸合,點(diǎn)亮發(fā)光二極管;可以配合液晶顯示器和蜂鳴器發(fā)聲,提示用戶鎖已被打開。整個過程可持續(xù)若干時(shí)間,然后P2.0口置1,清空密碼緩沖區(qū),標(biāo)志位PSW_F清0,重新檢測新的按
58、鍵。</p><p> 4.1.6 改密鍵處理</p><p> 如圖17,可以看出,改密鍵的處理流程跟開鎖鍵類似,都需檢查密碼正確的標(biāo)志位,只有PSW_F被置1才可以進(jìn)行改密。不同之處在于,如果密碼正確,程序會將新密碼第一次的標(biāo)志位PS_NEW1置位,這樣在下一次按確認(rèn)鍵時(shí),程序可以判別出此次輸入的密碼是新密碼第一次。</p><p> 4.1.7 校驗(yàn)新密
59、碼</p><p> 新密碼的校驗(yàn)用于當(dāng)新密碼第二次的標(biāo)志位PS_NEW2=1時(shí),按下確認(rèn)鍵后程序判定當(dāng)前新密碼已經(jīng)輸入兩次,繼而執(zhí)行新密碼校驗(yàn),即判斷兩次輸入的新密碼是否一致。</p><p> 如圖18所示,校驗(yàn)兩次輸入的新密碼是否一致的方法仍然是調(diào)用密碼校</p><p> 驗(yàn)子程序段。然后查詢密碼正確標(biāo)志位PSW_F,如果PSW_F=1,則表明兩次輸入
60、的新密碼一致,可以修改密碼,即可調(diào)用AT24C02寫子程序保存新密碼。若PSW_F=0,則兩次輸入不一致,無法修改密碼;程序提示密碼修改失敗,清空</p><p> 密碼緩沖區(qū),重新測試按鍵。</p><p> 因?yàn)樾旅艽a寫入存儲器的過程可能發(fā)生異常,故寫入后馬上調(diào)用AT24C02讀子程序讀出密碼,然后調(diào)用密碼校驗(yàn)子程序進(jìn)行對比,即可判斷密碼是否被正確寫入。如果PSW_F=1,則密碼寫
61、入無誤,才提示用戶修改密碼成功。如果PSW_F=0,則表明讀出的密碼跟要用戶準(zhǔn)備修改的密碼不一致,密碼修改異常。此時(shí)程序可嘗試調(diào)用AT24C02寫子程序重新寫一遍,再次讀出并對比。若仍然不一致,則只能調(diào)用系統(tǒng)初試密碼,這個密碼是系統(tǒng)最初寫入單片機(jī)ROM內(nèi)部的密碼,僅在AT24C02無法正常讀寫的時(shí)候啟用。</p><p> 4.2 系統(tǒng)相關(guān)子程序</p><p> 4.2.1 按鍵識別
62、子程序</p><p> 按鍵識別子程序的功能是行列掃描矩陣鍵盤并識別按鍵送入BUFF值,如</p><p> 圖19所示。盡管進(jìn)入子程序的前提條件是按鍵檢測子程序檢測到有按鍵被按下,但掃描前仍再次調(diào)用按鍵檢測子程序;因?yàn)槿藶榘存I的速度再快也會持續(xù)幾十毫秒,遠(yuǎn)遠(yuǎn)低于程序的處理速度,所以若是用戶正常按下按鍵,此處的按鍵檢</p><p> 測子程序仍可檢測到。此
63、處調(diào)用按鍵檢測子程序可以防止因按鍵抖動產(chǎn)生的不必要識別。前面提到,薄膜按鍵沒有上拉電阻,掃描行列之前需先給行列寫1。程序的處理方法是在讀行線之前先給P1口低4位送高電平,然后再讀P1口低4位;被按下的按鍵所在行高電平會因?yàn)樾辛袑?dǎo)通,高電平被拉低;故P1口低4位中低電平所在行就是被按下的行。同理,在讀列線之前先給P1口高4位送高電平,然后再讀出,低電平所在的列就是被按下的列。</p><p> 確定BUFF初值的
64、方法是行掃描時(shí)送該行第一個按鍵的值入BUFF,4行的</p><p> 首個按鍵鍵值分別為00H,04H,08H,0CH。然后在列掃描時(shí)給BUFF加上按鍵所在列的值,分別加00H,01H,02H,03H。即可得到BUFF初值。至于BUFF重賦值,則在按鍵重定位中根據(jù)初值對應(yīng)修改。</p><p> 4.2.2 液晶顯示子程序</p><p> 液晶顯示子程序在
65、每次更新顯示內(nèi)容時(shí)都會被調(diào)用,流程如圖20所示。</p><p> 每次更新顯示內(nèi)容前,需清顯示清空LCD原先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。</p><p> LCD1602要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最后將字符地址加一,L
66、CD1602會將寫入的ASCII碼對應(yīng)的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時(shí),即停止寫入,返回。LCD顯示的內(nèi)容在下次更新前會一直保持。</p><p> 4.2.3 AT24C02子程序</p><p> AT24C02的子程序包括從AT24C02中讀取信息和將信息寫入AT24C02,首先介紹AT24C02的讀程序。&l
67、t;/p><p> 如圖21所示,單片機(jī)作為主器件,發(fā)送起始信號和要尋址的從器件的地址;因?yàn)榇藭r(shí)即隨后的發(fā)送讀取地址操作都是單片機(jī)往AT24C02寫入控制信息,所</p><p> 以R/W要置0。本設(shè)計(jì)中只用一個AT24C02,從器件地址為0對應(yīng)代碼為0A0H。AT24C02接收到信號后,發(fā)送應(yīng)答信號。單片機(jī)接收到應(yīng)答信號后,再發(fā)送要讀取信息在從器件上的地址;本設(shè)計(jì)中從0地址開始讀,則送
68、00H。再次接收到從器件的應(yīng)答信號后,單片機(jī)重新發(fā)送起始信號和讀模式信號,將R/W位置1,對應(yīng)代碼為0A1H,正式開始讀取信息。本設(shè)計(jì)中需要連續(xù)讀取16字節(jié)的信息,所以選擇連續(xù)讀方式;即是單片機(jī)每接收到一字節(jié)的信息后,存入正確密碼緩沖區(qū)(AT1~AT16),然后產(chǎn)生一個應(yīng)答信號,告知AT24C02要求更多的數(shù)據(jù)。當(dāng)單片機(jī)不發(fā)送應(yīng)答信號而發(fā)送停止信號時(shí)表示讀取結(jié)束。</p><p> 寫入AT24C02的子程序流
69、程如圖24所示。單片機(jī)發(fā)送起始信號,接著發(fā)送從器件AT24C02所在地址(0A0H)。這里與讀AT24C02子程序不同的是,從開始到結(jié)束都是單片機(jī)控制AT24C02寫入信息,所以R/W置1無需更改。</p><p> 圖22 寫AT24C02子程序流程圖</p><p> 對應(yīng)地址上的從器件AT24C02接收到地址信號后發(fā)送應(yīng)答信號。主器件在接收到應(yīng)答信號后,發(fā)送要寫入信息欲保存在
70、從器件上的地址,本設(shè)計(jì)中從0地址開始保存,故地址為00H。單片機(jī)再次接收到從器件的應(yīng)答信號后即可開始寫入信息。本設(shè)計(jì)中采用字節(jié)寫模式,即AT24C02在每接收一個8位字節(jié)之后響應(yīng)一個應(yīng)答信號,單片機(jī)在接收到應(yīng)答信號后認(rèn)為該字節(jié)成功寫入,便準(zhǔn)備下一字節(jié)的數(shù)據(jù)。直到所有數(shù)據(jù)發(fā)送完畢,單片機(jī)發(fā)送停止信號,結(jié)束寫操作。</p><p><b> 5 系統(tǒng)調(diào)試與測試</b></p>&
71、lt;p> 硬件仿真如下:系統(tǒng)說明:(系統(tǒng)初始密碼:000000)</p><p> 該系統(tǒng)組成:Lcd1602+4*4矩陣鍵盤+單片機(jī)最小系統(tǒng)+AT24C02存儲+蜂鳴器+指示燈,采用4×4矩陣鍵盤輸入,并使用LCD顯示密碼輸入的相關(guān)信息; </p><p> 1)程序開始執(zhí)行時(shí),LCD顯示如圖25: </p><p> WELCOME!
72、 </p><p> A OPEN B MODIFY </p><p><b> 圖23</b></p><p> A鍵:輸入6位數(shù)字(0-9)密碼并做檢查; </p><p> B鍵:設(shè)置新的6位數(shù)字(0-9)密碼; </p><p> 2)可以設(shè)置6位數(shù)字(0-9)密碼
73、,如圖24; </p><p><b> 圖24</b></p><p> 3)密碼輸入正確時(shí)LCD顯示如圖25: </p><p> INPUT PASSWORD </p><p><b> CORRECT! </b></p><p> 同時(shí)啟動以LED指示燈亮
74、2秒,用以仿真電子門鎖開啟;</p><p><b> 圖25</b></p><p> 4)密碼輸入錯誤一次時(shí),LCD顯示如圖26: </p><p> INPUT PASSWORD </p><p><b> ERROR! </b></p><p><b
75、> 同時(shí)警報(bào)響一聲;</b></p><p><b> 圖26</b></p><p> 5)當(dāng)密碼輸入錯誤三次時(shí),LCD顯示如圖27 :“WARNING!”,同時(shí)警報(bào)長響不止,按單片機(jī)復(fù)位鍵才能停止。</p><p><b> 圖27</b></p><p> 6)密碼
76、少于六位時(shí),LCD顯示如圖30“Less than 6!”;內(nèi)部電路設(shè)有密碼初始化按鈕,可以把密碼恢復(fù)到出廠初始值。</p><p><b> 圖28</b></p><p> 本設(shè)計(jì)中利用proteus與keil結(jié)合最后仿真成功。</p><p><b> 總結(jié)</b></p><p>
77、本設(shè)計(jì)利用單片機(jī)AT89S52作為主控芯片,配合液晶顯示器LCD1602,串行傳輸存儲器AT24C02,4*4矩陣薄膜鍵盤,蜂鳴器,繼電器以及其他外圍電路,用單片機(jī)匯編語言編寫的控制程序,成功設(shè)計(jì)出一款利用密碼開鎖,可以隨時(shí)改密,豐富聲光提示信息,具有適用價(jià)值的電子密碼鎖。本系統(tǒng)利用單片機(jī)控制矩陣鍵盤輸入密碼,液晶顯示器顯示英文字符,繼電器開鎖,蜂鳴器發(fā)聲等部件都運(yùn)轉(zhuǎn)良好,密碼鎖運(yùn)行的效果也可以正確呈現(xiàn)。 </p><
78、;p><b> 致 謝</b></p><p> 作為大學(xué)生涯里的最后一項(xiàng)重要課程,本次畢業(yè)設(shè)計(jì)歷時(shí)數(shù)月,收獲頗豐。從前期的軟件安裝,功能設(shè)計(jì),電路設(shè)計(jì),從硬件上每一條線路的焊接,到軟件上每一條語句的調(diào)試,期間遇到許許多多的難點(diǎn),眾多意想不到的問題??朔@些困難,需要理論和實(shí)踐的結(jié)合,把知識融入到設(shè)計(jì)的每個角落。最終完成整個設(shè)計(jì),做出實(shí)實(shí)在在的東西,自是欣喜不已。</p&g
79、t;<p> 整個畢業(yè)設(shè)計(jì)中,我要感謝我的指導(dǎo)教師,史老師。她經(jīng)常詢問設(shè)計(jì)的進(jìn)程,通過她的指導(dǎo),我才了解系統(tǒng)設(shè)計(jì)的要點(diǎn)。史老師嚴(yán)謹(jǐn)求實(shí)的作風(fēng)給我很大啟發(fā),我從心底感謝她!</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】 孫涵芳,徐愛卿。MCS-51/96系列單片機(jī)原理及應(yīng)用[M]。北京:北京航空航天大學(xué)出版社,1996<
80、/p><p> 【2】 李廣弟,朱月秀,冷祖祁。單片機(jī)基礎(chǔ)[M]。北京:北京航空航天大學(xué)出版社,2007</p><p> 【3】 董繼成。一種新型安全的單片機(jī)密碼鎖[J]。電子技術(shù),2004,(03)</p><p> 【4】石文軒,宋薇?;趩纹瑱C(jī)MSC-51的智能密碼鎖設(shè)計(jì)[S]。武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,(01)</p><p
81、> 【5】 吳春國,李文石。單片機(jī)控制電子鎖技術(shù)剖析[S]。東北林業(yè)大學(xué)學(xué)報(bào),2002,(05)</p><p> 【6】 李景宏,馬學(xué)文。電子技術(shù)實(shí)驗(yàn)教程[M]。沈陽:東北大學(xué)出版社,2004</p><p> 【7】賈正松。單片機(jī)系統(tǒng)復(fù)位電路設(shè)計(jì)[J]。科技資訊,2007,(36)</p><p> 【8】 袁新燕。淺談單片機(jī)應(yīng)用系統(tǒng)的調(diào)試[J]。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)多功能密碼鎖的設(shè)計(jì)
- 基于單片機(jī)多功能密碼鎖的設(shè)計(jì)的畢業(yè)論文
- 單片機(jī)課程設(shè)計(jì)---多功能密碼鎖
- 基于單片機(jī)的密碼鎖設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的電子密碼鎖設(shè)計(jì)
- 基于單片機(jī)的密碼鎖 畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的密碼鎖設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)的電子密碼鎖畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的電子密碼鎖
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的電子密碼鎖設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-- 基于單片機(jī)的電子密碼鎖設(shè)計(jì)
- 基于單片機(jī)的電子密碼鎖設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)控制密碼鎖的畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的電子密碼鎖
- 基于51單片機(jī)的多功能電子密碼鎖
- 基于51單片機(jī)的多功能電子密碼鎖
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的電子密碼鎖設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的數(shù)字密碼鎖設(shè)計(jì)
- 基于單片機(jī)的電子密碼鎖的畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的電子密碼鎖的設(shè)計(jì)
評論
0/150
提交評論