電子密碼鎖設(shè)計(jì)畢業(yè)論文_第1頁(yè)
電子密碼鎖設(shè)計(jì)畢業(yè)論文_第2頁(yè)
電子密碼鎖設(shè)計(jì)畢業(yè)論文_第3頁(yè)
電子密碼鎖設(shè)計(jì)畢業(yè)論文_第4頁(yè)
電子密碼鎖設(shè)計(jì)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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章電子密碼鎖簡(jiǎn)介1.1電子密碼鎖的概念什么是電子密碼鎖?“一種通過(guò)密碼輸入來(lái)控制電路或者是芯片工作,從而控制機(jī)械開(kāi)關(guān)的閉合,完成開(kāi)鎖、閉鎖任務(wù)的電子產(chǎn)品。”——百度百科上是這樣解釋的。簡(jiǎn)單來(lái)說(shuō),電子密碼鎖就是能夠?qū)崿F(xiàn)密碼等信息的設(shè)置、存貯、識(shí)別和顯示,以及報(bào)警信號(hào)的接收和發(fā)送等功能的電子器件。 1.2電子密碼鎖設(shè)計(jì)的背景及意義基于單片機(jī)的電子密碼鎖的出現(xiàn),在一定程度上解決了用戶私人財(cái)產(chǎn)安全的問(wèn)題。但是,時(shí)代在發(fā)展,社會(huì)在進(jìn)步,任何事物只有不斷地進(jìn)步才能適應(yīng)時(shí)代發(fā)展的需求。電子密碼鎖雖然有安全性高、操作簡(jiǎn)單等優(yōu)點(diǎn),但是卻不如機(jī)械鎖價(jià)格低廉,因此,在市場(chǎng)上的主流產(chǎn)品還是機(jī)械鎖。電子密碼鎖要想取代機(jī)械鎖成為市場(chǎng)上的主流,就必須不斷改進(jìn),在具有更多功能的同時(shí)向更智能化和更低成本化發(fā)展。這就需要我們不斷研究電子密碼鎖的設(shè)計(jì)方法和實(shí)現(xiàn)原理。因此,研究基于單片機(jī)的電子密碼鎖的設(shè)計(jì)是很有必要且具有現(xiàn)實(shí)意義的。1.3電子密碼鎖的現(xiàn)狀及發(fā)展趨勢(shì)目前,和西方發(fā)達(dá)國(guó)家相比,我國(guó)的電子密碼鎖技術(shù)還相對(duì)落后。在西方發(fā)達(dá)國(guó)家,電子密碼鎖的種類已經(jīng)很齊全,技術(shù)也比較先進(jìn),且在各個(gè)領(lǐng)域得到了廣泛應(yīng)用。在我國(guó),電子密碼鎖技術(shù)卻才相當(dāng)于國(guó)際上七十年代的水平,相對(duì)來(lái)說(shuō)還很落后。20世紀(jì)80年代以來(lái),隨著各種電子集成電路的出現(xiàn),特別是單片機(jī)的面世,電子密碼鎖得到了很大的發(fā)展。相對(duì)于笨重而構(gòu)造簡(jiǎn)單的傳統(tǒng)機(jī)械鎖來(lái)說(shuō),電子密碼鎖具有體積小,可靠性高的優(yōu)勢(shì)。但是就目前而言,電子密碼鎖的價(jià)格相對(duì)較高且需要有電源提供能量,使得其使用還局限在一定范圍,特別是在國(guó)內(nèi),各種條件的制約使得電子密碼鎖暫時(shí)難以普及。盡管電子密碼鎖還存在著一些缺陷,但是其安全性高、方便易用、能夠智能報(bào)警的優(yōu)勢(shì)卻是傳統(tǒng)鑰匙鎖取代不了的,而且隨著電子信息技術(shù)的發(fā)展和各種電子器件的價(jià)格的不斷降低,電子密碼鎖也將往低成本、多功能的方向發(fā)展。1.4設(shè)計(jì)內(nèi)容本設(shè)計(jì)研究的是如何進(jìn)行電子密碼鎖的設(shè)計(jì),本系統(tǒng)由單片機(jī)系統(tǒng)、矩陣鍵盤、LED顯示和報(bào)警系統(tǒng)組成。系統(tǒng)能完成開(kāi)鎖、超時(shí)報(bào)警、超次鎖定、管理員解密、修改用戶密碼基本的密碼鎖的功能。本設(shè)計(jì)是基于AT89C51單片機(jī)為控制核心的密碼鎖設(shè)計(jì)方案。在本次基于單片機(jī)的電子密碼鎖設(shè)計(jì)中,將采用AT89C51單片機(jī)作為控制核心,配合相應(yīng)的電路和軟件程序,實(shí)現(xiàn)密碼的輸入和修改、信息的顯示、鍵盤的鎖定、系統(tǒng)報(bào)警、開(kāi)鎖和閉鎖等功能。在設(shè)計(jì)中,利用識(shí)別密碼是否正確來(lái)開(kāi)鎖或報(bào)警,通過(guò)串行存儲(chǔ)器AT24C02來(lái)實(shí)現(xiàn)密碼的修改和存儲(chǔ)

第2章硬件設(shè)計(jì)2.1系統(tǒng)設(shè)計(jì)框圖電子密碼鎖的組成框圖,它是以51系列單片機(jī)(AT89s51)為核心,配以相應(yīng)硬件電路,完成密碼的設(shè)置、存貯、識(shí)別和顯示、驅(qū)動(dòng)電磁執(zhí)行器并檢測(cè)其驅(qū)動(dòng)電流值、接收傳感器送來(lái)的報(bào)警信號(hào)、發(fā)送數(shù)據(jù)等功能。

單片機(jī)接收鍵入的代碼,并與存貯在EEPROM中的密碼進(jìn)行比較,如果密碼正確,則驅(qū)動(dòng)電磁執(zhí)行器開(kāi)鎖;如果密碼不正確,則允許操作人員重新輸入密碼,最多可輸入三次;如果三次都不正確,則單片機(jī)通過(guò)通信線路向智能監(jiān)控器報(bào)警。單片機(jī)將每次開(kāi)鎖操作和此時(shí)電磁執(zhí)行器的驅(qū)動(dòng)電流值作為狀態(tài)信息發(fā)送給智能監(jiān)控器,同時(shí)將接收來(lái)自傳感器接口的報(bào)警信息也發(fā)送給智能監(jiān)控器,作為智能化分析的依據(jù)。系統(tǒng)結(jié)構(gòu)框圖和仿真電路如下。圖1系統(tǒng)結(jié)構(gòu)框圖圖2系統(tǒng)仿真電路2.2AT89S52單片機(jī)介紹AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。

圖3單片機(jī)引腳圖圖3單片機(jī)引腳圖引腳介紹如圖3所示Vcc;電源GND;接地P0口:P0口是一個(gè)8位漏極開(kāi)路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。

對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。P1口:P1

口是一個(gè)具有內(nèi)部上拉電阻的8

位雙向I/O

口,p1

輸出緩沖器能驅(qū)動(dòng)4

個(gè)TTL邏輯電平。

對(duì)P1

端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表3-1所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。P2口:P2

口是一個(gè)具有內(nèi)部上拉電阻的8

位雙向I/O

口,P2

輸出緩沖器能驅(qū)動(dòng)4

個(gè)TTL

邏輯電平。

對(duì)P2

端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX

@DPTR)時(shí),P2

口送出高八位地址。在這種應(yīng)用中,P2

口使用很強(qiáng)的內(nèi)部上發(fā)送1。在使用8位地址(如MOVX

@RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如表3-2所示。

在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。RST:

復(fù)位輸入。

晶振工作時(shí),RST腳持續(xù)2

個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。看門狗計(jì)時(shí)完成后,RST

腳輸出96

個(gè)晶振周期的高電平。

ALE/PROG:地址鎖存控制信號(hào)(ALE)是訪問(wèn)外部程序存儲(chǔ)器時(shí),鎖存低8

位地址的輸出脈沖。在flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。

在一般情況下,ALE

以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部定時(shí)器或時(shí)鐘使用。

PSEN:外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。

當(dāng)AT89S52從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,而在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。

EA/VPP:訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。

為使能從0000H

到FFFFH的外部程序存儲(chǔ)器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)接VCC。在flash編程期間,EA也接12伏VPP電壓。

XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。

XTAL2:振蕩器反相放大器的輸出端。2.3鍵盤電路設(shè)計(jì)每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過(guò)一個(gè)按鍵來(lái)連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個(gè)按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無(wú)按鍵按下的程序段。當(dāng)確認(rèn)有按鍵按下后,下一步就要識(shí)別哪一個(gè)按鍵按下。對(duì)鍵的識(shí)別通常有兩種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。對(duì)照?qǐng)D4所示的4×4鍵盤,說(shuō)明線反轉(zhuǎn)個(gè)工作原理。首先辨別鍵盤中有無(wú)鍵按下,有單片機(jī)I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來(lái)判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會(huì)有一根行線電平被拉至低電平從而使行線不全為1。判斷鍵盤中哪一個(gè)鍵被按下使通過(guò)將列線逐列置低電平后,檢查行輸入狀態(tài)來(lái)實(shí)現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點(diǎn)上的那個(gè)鍵。圖4鍵盤電路圖2.4報(bào)警電路設(shè)計(jì)聲音的產(chǎn)生是一種音頻振動(dòng)的效果,振動(dòng)的頻率高則為高音,頻率底則為低音。音頻的范圍為20Hz~200kHz之間,人類耳朵比較容易辨識(shí)的聲音大概是200Hz~20kHz。一般音響電路是以正弦波信號(hào)驅(qū)動(dòng)喇叭,產(chǎn)生悅耳的音樂(lè)的,而在數(shù)字電路中,則是以脈沖信號(hào)驅(qū)動(dòng)喇叭以產(chǎn)生聲音。

本系統(tǒng)使用的蜂鳴器產(chǎn)生的聲音是利用程序產(chǎn)生頻率,送到輸出端口。利用LED燈表示輸入密碼正確與否,紅色表示密碼錯(cuò)誤,蜂鳴器發(fā)出報(bào)警聲,密碼正確時(shí),綠色LED燈亮。圖5報(bào)警電路2.5顯示電路設(shè)計(jì)本系統(tǒng)設(shè)計(jì)的顯示電路是為了給使用者以提示而設(shè)置的,使用LCD可以為用戶提供更友好的人機(jī)界面,故選用LCD1602作為顯示器件。開(kāi)鎖時(shí),按下鍵盤上的開(kāi)鎖按鍵后,利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話,LCD顯示“OK”,單片機(jī)其中P3.0引腳會(huì)輸出低電平,使三極管T2導(dǎo)通,電磁鐵吸合,繼電器開(kāi)關(guān)跳轉(zhuǎn),電子密碼鎖被打開(kāi),如果密碼不正確,LCD顯示屏?xí)@示“youarethief!”,P3.0輸出的是高電平,電子密碼鎖不能打開(kāi)。通過(guò)LCD顯示屏,可以清楚地判斷出密碼鎖所處的狀態(tài)。2.6開(kāi)鎖電路設(shè)計(jì)因?yàn)樵谠O(shè)計(jì)中是以發(fā)光二極管代替電磁鎖,二極管亮代表鎖開(kāi),因此可以設(shè)計(jì)一個(gè)簡(jiǎn)單的可以點(diǎn)亮二極管的電路系統(tǒng)代替電磁鎖開(kāi)鎖機(jī)構(gòu)。開(kāi)鎖顯示電路如圖6所示由于單片機(jī)I/O口默認(rèn)為高電平,故初始時(shí)二極管不亮,代表鎖是閉著的。當(dāng)用戶輸入密碼并驗(yàn)證正確時(shí),發(fā)出開(kāi)鎖信號(hào)(使P2.4=0)。圖6開(kāi)鎖電路第3章軟件設(shè)計(jì)4.1工具軟件介紹4.1.1Kell軟件介紹KeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(μVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果使用C語(yǔ)言編程,那么Keil幾乎就是不二之選,即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍KeilC51開(kāi)發(fā)系統(tǒng)基本知識(shí)⒈系統(tǒng)概述KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil的優(yōu)勢(shì)。下面詳細(xì)介紹KeilC51開(kāi)發(fā)系統(tǒng)各部分功能和使用。⒉KeilC51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)的整體結(jié)構(gòu)C51工具包的整體結(jié)構(gòu),μVision與Ishell分別是C51forWindows和forDos的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.obj)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.abs)。abs文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。使用獨(dú)立的Keil仿真器時(shí),注意事項(xiàng)仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。仿真器上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng),仿真芯片的31腳(/EA)已接至高電平,所以仿真時(shí)只能使用片內(nèi)ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴(kuò)展有外部ROM(其CPU的/EA引腳接至低電平)的目標(biāo)系統(tǒng)中使用。4.1.2Proteus仿真軟件介紹Proteus軟件是英國(guó)Labcenterelectronics公司出版的EDA工具軟件(該軟件中國(guó)總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛(ài)好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開(kāi)發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。4.2程序設(shè)計(jì)調(diào)試圖7程序框圖4.3程序仿真本設(shè)計(jì)經(jīng)過(guò)kell的編輯,反復(fù)修改后,生成hex文件通過(guò)proteus進(jìn)行仿真,調(diào)試過(guò)程主要包括兩方面:測(cè)試和調(diào)整,調(diào)試的整個(gè)過(guò)程就是一系列的測(cè)量、判斷、調(diào)整、再測(cè)量的反復(fù)進(jìn)行過(guò)程。本系統(tǒng)調(diào)試采用的是先分調(diào)再總調(diào)。調(diào)試過(guò)程中,要依照信號(hào)流程,分步逐級(jí)進(jìn)行調(diào)試,并取得了預(yù)期的結(jié)果。第4章設(shè)計(jì)總結(jié)5.1設(shè)計(jì)總結(jié)本系統(tǒng)由單片機(jī)系統(tǒng)、矩陣鍵盤、LCD顯示和報(bào)警系統(tǒng)組成。系統(tǒng)能完成開(kāi)鎖、錯(cuò)誤報(bào)警,超次鎖定、修改用戶密碼,恢復(fù)初始密碼基本的密碼鎖的功能。除上述基本的密碼鎖功能外,還有聲音提示等功能,依據(jù)實(shí)際的情況還可以添加遙控功能。本系統(tǒng)利用單片機(jī)控制,LCD顯示,配合蜂鳴器提示,系統(tǒng)成本低廉,功能強(qiáng)大實(shí)用。但是在系統(tǒng)調(diào)試過(guò)程中,還是發(fā)現(xiàn)一些問(wèn)題,系統(tǒng)不穩(wěn)定情況時(shí)有發(fā)生,經(jīng)過(guò)反復(fù)調(diào)試發(fā)現(xiàn)下列問(wèn)題:按鍵效果不好,產(chǎn)生較大狀況的抖動(dòng),使軟件消抖不完全;另外一個(gè)就是單片機(jī)本身不問(wèn)題,引起系統(tǒng)跑飛或者卡死;還有就是由于電路板制作的原因,線路之間產(chǎn)生干擾,系統(tǒng)發(fā)生錯(cuò)誤,比如液晶顯示錯(cuò)誤等等。經(jīng)過(guò)反復(fù)調(diào)試和修改,最好終于達(dá)到一個(gè)比較滿意的水平。本系統(tǒng)設(shè)計(jì)還做的不是太人性化,比如說(shuō)能夠加上語(yǔ)音提示和遙控開(kāi)鎖功能,將可能會(huì)更加有生命力!致謝我非常感謝我的導(dǎo)師袁科新老師。這篇論文是在袁科新老師的精心指導(dǎo)和親切關(guān)懷下完成的。從最初的定題,到收集資料,到論文修改,袁科新老師始終悉心指導(dǎo)、無(wú)私幫助。袁科新老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,科學(xué)的學(xué)習(xí)方法以及無(wú)私奉獻(xiàn)的敬業(yè)精神將使我終身受益。在此,謹(jǐn)向袁科新老師致以深深的敬意和誠(chéng)摯的感謝。本論文的完成,還得到了信息工程學(xué)院其他老師的關(guān)懷和指導(dǎo),在此向所有給予我?guī)椭完P(guān)懷的老師們說(shuō)一聲:謝謝!畢業(yè)論文的收尾,也意味著我在袁科新大學(xué)的三年學(xué)習(xí)生活即將結(jié)束,自己最寶貴的青春時(shí)光能在這樣的校園中,能在這些學(xué)富五車、才華橫溢的老師們得熏陶下度過(guò),我在思想和學(xué)業(yè)上受益匪淺。最后,再次向關(guān)心和幫助我的老師,親人,同學(xué)和朋友表示我最真摯的謝意。謝謝你們!

參考文獻(xiàn)[1]江曉安,董秀峰.

模擬電子技術(shù).第3版.西安:

西安電子科技大學(xué)出版社2001.p34-39[2]陳明熒.

8051單片機(jī)課程設(shè)計(jì).

第2版.北京:清華大學(xué)出版社,

2003.p45-67[3]邢敏華.模擬、數(shù)字及電力電子技術(shù).第4版.北京:機(jī)械工業(yè)出版社,2013.p56-76[4]陳中平.51單片機(jī)C語(yǔ)言程序設(shè)計(jì)經(jīng)典實(shí)例.第5版.北京:電子工業(yè)出版社,2012.p67-89[5]胡宴如.模擬電子技術(shù).耿蘇燕.第4版.北京;高等教育出版社,2013:p83-93[6]楊志忠.數(shù)字電子技術(shù).第4版.北京:高等教育出版社,2013:p240-244[7]陸國(guó)和.電路與電工技術(shù).顧永杰.第3版.北京:高等教育出版社,2010:p253-285[8]王靜霞.單片機(jī)應(yīng)用技術(shù).楊宏麗.第2版.北京:電子工業(yè)出版社,2014:p141-150[9]朱巖.工業(yè)用微型計(jì)算機(jī).2011年版.北京:機(jī)械工業(yè)出版社,2011:p182-227

附錄源程序代碼#include<reg52.h>#include<string.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDIOP0#definedelay4us()_nop_();_nop_();_nop_();_nop_();ucharbuffer[6]={0};sbitsda=P3^4;sbitscl=P3^3;sbitbeep=P3^7;sbitrelay=P2^3;sbithuifu=P2^6;bitflag=0,aa; //用戶zi定時(shí)溢出標(biāo)志位ucharDSY_BUFFER[16]="";ucharDSY_BUFFER1[16]="";ucharUserpassword[6]={0};ucharMem[6]={0};sbitrs=P2^0;sbitrd=P2^1;sbitlcden=P2^2;sbitled=P2^4;sbitled1=P2^7;ucharcodetable2[]="123456";ucharcodetable[]="Inputyourcode:";voiddelayms(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddelay() //短延時(shí),兩個(gè)機(jī)器周期,做總線的延時(shí)用{;;}voidwrite_com(ucharcom){ rs=0; rd=0; lcden=0; P0=com; delayms(3); lcden=1; delayms(3); lcden=0; }voidwrite_date(uchardate){ rs=1; rd=0; lcden=0; P0=date; delayms(3); lcden=1; delayms(3); lcden=0; }voidDisplay_String(uchar*p,ucharcom){uchari;write_com(com);for(i=0;i<16;i++){write_date(p[i]); }}voidinit_lcd(){ lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80);Display_String(table,0x80); Display_String("===LockOK!======",0xc0);}voidstart(){ sda=1; scl=1; delay4us(); sda=0; delay4us(); scl=0;}voidstop(){ sda=0; scl=1; delay4us(); sda=1; delay4us(); scl=0;}voidinit() //初始化{sda=1;delay();scl=1;delay();}voidack(){ sda=0; scl=1; delay4us(); scl=0; sda=1;}voidnoack(){ sda=1; scl=1; delay4us(); scl=0; sda=0;}ucharrecbyte(){ uchari,rd; rd=0x00; sda=1; for(i=0;i<8;i++) { scl=1; rd<<=1; rd|=sda; delay4us(); scl=0; delay4us(); } scl=0; delay4us(); returnrd;}ucharsendbyte(ucharwd){ uchari; bitack0; for(i=0;i<8;i++) { sda=(bit)(wd&0x80); _nop_(); _nop_(); scl=1; delay4us(); scl=0; wd<<=1; } delay4us(); sda=1; scl=1; delay4us(); ack0=!sda; scl=0; delay4us(); returnack0;}ucharRecstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchari;start();if(!sendbyte(slave))return0;if(!sendbyte(subaddr))return0;start();if(!sendbyte(slave+1))return0;for(i=0;i<n-1;i++){ buffer[i]=recbyte(); ack();}buffer[n-1]=recbyte();noack();stop();return1;}ucharSendstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){ uchari; start(); if(!sendbyte(slave))return0; if(!sendbyte(subaddr))return0; for(i=0;i<n;i++) { if(!sendbyte(buffer[i]))return0; } stop(); return1;}voidclear_password(){ uchari; for(i=0;i<6;i++) { Userpassword[i]=''; } for(i=0;i<16;i++) { DSY_BUFFER[i]=''; }}ucharKeys_Scan(){ uchartemp,keynum; P1=0x0F; delayms(5); temp=P1^0x0F; //掃描行線值 switch(temp) { case1:keynum=1;break; case2:keynum=4;break; case4:keynum=7;break; case8:keynum=10;break; break; } P1=0xF0; delayms(5); temp=P1>>4^0x0f; switch(temp) { case8:keynum+=0;break; case4:keynum+=1;break; case2:keynum+=2;break; case1:keynum+=12;break; break; } delayms(600);returnkeynum;}voidmain(){uchartemp,i=0,j=0,k=0,n,m=0,flay,error,ne=1; ucharIS_valid_user; relay=1; init(); init_lcd(); delayms(5); P1=0x0f; while(1) {if(!huifu==1) {aa=Sendstring(0xa0,1,table2,6); delayms(10); aa=Recstring(0xa0,1,buffer,6); } else aa=Recstring(0xa0,1,buffer,6); if(P1!=0x0f) {delayms(10); if(P1!=0x0f) { temp=Keys_Scan(); switch(temp){case11:temp=0;case1:case2:case3:case4:case5:case6:case7:case8:case9:if(i<=5)//密碼限制在6位以內(nèi){Userpassword[i]=temp;DSY_BUFFER[i]='*';Display_String(DSY_BUFFER,0xc0); i++; } break; case19: //按F鍵清除一位 if(i!=0) {i--; for(n=0;n<i;n++) { DSY_BUFFER1[n]=temp+'*'; } } Display_String(DSY_BUFFER1,0xc0); break;case12://按Enter鍵開(kāi)鎖 for(k=0;k<6;k++) { if(buffer[k]==(Userpassword[k]+48)) flag=1; else flag=0; } if(flag==1) { flag=0; i=0; led=0;//點(diǎn)亮LED relay=0;//開(kāi)鎖 clear_password(); Display_String("OPENOK!",0xc0); IS_valid_user=1; j=0; error=0; } else { j++; error++; led=1;//關(guān)閉LED clear_password(); Display_String("ERROR!Retry:",0xc0); write_com(0xcf); write_date(0x30+j); IS_valid_user=0; } i=0; break;case10://按Lock鍵上鎖 led=1; relay=1; //關(guān)閉鎖 clear_password(); Display_String(table,0x80); Display_String("===LockOK!=====",0xc0); i=0; IS_valid_user=0; break;case13://按C鍵設(shè)置新密碼//如果是合法用戶則提示輸入新密碼 if(!IS_valid_user) { i=0; Display_String("==Norights!==",0xc0); delayms(1000); Display_String("YourPassword...",0x80); Display_String("===LockOK!====",0xc0); } else { i=0; newcode:Display_String("NewPassword:",0x80); Display_String("",0xc0); } break;case16://按D鍵保存新密碼 if(!IS_valid_user) { i=0; Display_String("==Norights!==",0xc0); delayms(1000); Display_String("YourPassword...",0x80); Display_String("===LockOK!====",0xc0); } else {i=0; init(); flay=1; //密碼校驗(yàn)位置1 delayms(5); if(m>0) //在第二次輸入密碼 { for(k=0;k<6;k++) { flay=flay&&(Mem[k]==(Userpassword[k]+48)); //將第二次的密碼與第一次的密碼進(jìn)行比較 } } if(flay) //如果校驗(yàn)位為1則第二次密碼放入存儲(chǔ)器 { for(k=0;k<6;k++) { Userpassword[k]=Userpassword[k]+48; } for(k=0;k<6;k++) {Mem[k]=Userpassword[k]; //密碼放入緩沖區(qū)便于比對(duì) ne=ne&&(Userpassword[k+1]==Mem[k]); } if(ne) {Display_String("Codeissamenum",0x80); // Display_String("",0xc0); delayms(1000); Mem[6]=0; DSY_BUFFER[6]=0; m=0; gotonewcode; } else { clear_password(); Display_String(table,0x00); Display_String("PasswordSaved!",0xc0); delayms(1000); m++; if(m<2)gotonewcode; //如果沒(méi)有到第二次就繼續(xù)輸入 else { aa=Sendstring(0xa0,1,Mem,6); delayms(5); aa=Recstring(0xa0,1,buffer,6); delayms(5); Display_String("Newcodeconfirm",0x80); Display_String("Willlockagain……",0xc0); Mem[6]=0; m=0; } } } else //如果兩次密碼輸入不一致,顯示錯(cuò)誤提示,密碼不保存 {Display_String("Codeiswrong",0x80); Display_String("Codenotbesaved",0xc0); Userpassword[6]=0; Mem[6]=0; DSY_BUFFER[6]=0; m=0; aa=Sendstring(0xa0,1,Mem,6); delayms(5); aa=Recstring(0xa0,1,buffer,6); delayms(5); break; } } break;case22://按E鍵消除所有輸入i=0;clear_password(); Display_String("",0x80);Display_String("",0xc0); break; } P1=0x0f; } } if(j==3) //錯(cuò)誤三次報(bào)警1S并顯示 { Display_String("Youarethief!",0x80); Display_String("THIEF!!!THIEF!!!",0xc0); relay=1; for(i=0;i<200;i++) {beep=!beep; led1=0; delayms(5); } if(error>5) //如果錯(cuò)誤次數(shù)達(dá)到五次長(zhǎng)鳴報(bào)警,并清除顯示 while(1) {Display_String("",0x80); Display_String("",0xc0); relay=1; while(1) {led1=!led1; beep=!beep; delayms(2); } } } }}評(píng)語(yǔ)姓名崔洪運(yùn)學(xué)號(hào)201309010112學(xué)制三年班級(jí)電子1301班級(jí)負(fù)責(zé)人邱文風(fēng)論文題目電子密碼鎖設(shè)計(jì)指導(dǎo)教師袁科新職稱或職務(wù)講師指導(dǎo)教師評(píng)語(yǔ):成績(jī):指導(dǎo)教師簽名:年月日學(xué)校審查意見(jiàn):成績(jī):審查人簽名:職稱:年月日80196單片機(jī)IP研究與實(shí)現(xiàn),TN914.42AT89S52單片機(jī)實(shí)驗(yàn)系統(tǒng)的開(kāi)發(fā)與應(yīng)用,TG155.1F406基于單片機(jī)的LED三維動(dòng)態(tài)信息顯示系統(tǒng),O536TG174.444基于單片機(jī)的IGBT光伏充電控制器的研究,TV732.1TV312基于89C52單片機(jī)的印刷品色彩質(zhì)量檢測(cè)系統(tǒng)的研究,TP391.41基于單片機(jī)+CPLD體系結(jié)構(gòu)的信標(biāo)機(jī)設(shè)計(jì),TU858.3TN915.62基于單片機(jī)SPCE061A的汽車空調(diào)控制系統(tǒng),TM774TM621.3帶有IEEE488接口的通用單片機(jī)系統(tǒng)方案設(shè)計(jì)與研究,TN015基于VC的單片機(jī)軟件式開(kāi)發(fā)平臺(tái),TG155.1F406基于VB的單片機(jī)虛擬實(shí)驗(yàn)軟件的研究與開(kāi)發(fā),TG155.1F406采用單片機(jī)的電阻點(diǎn)焊智能控制器開(kāi)發(fā),TG155.1F406基于51系列單片機(jī)的PROFIBUS-DP智能從站研究,TG155.1F406八位單片機(jī)以太網(wǎng)接入研究與實(shí)現(xiàn),TG155.1F406基于單片機(jī)與Internet的數(shù)控機(jī)床遠(yuǎn)程監(jiān)控系統(tǒng)的研發(fā),R319TP319基于單片機(jī)和DSP控制的醫(yī)用輸液泵的研究,U467.11基于單片機(jī)控制新型逆變穩(wěn)壓電源的設(shè)計(jì)與仿真,F426.22TP311.52基于8位單片機(jī)的摩托車發(fā)動(dòng)機(jī)電控單元軟硬件的開(kāi)發(fā),TB61基于430單片機(jī)的變壓器監(jiān)控終端的研究,TG155.1F406逆變點(diǎn)焊單片機(jī)控制系統(tǒng)研究,TG131TG113.14單片機(jī)控制數(shù)字變量柱塞泵的研究,F426.22TP311.52基于單片機(jī)控制的高通量藥物篩選及檢測(cè)系統(tǒng)開(kāi)發(fā),R730.55R734.2MCS8051以及DS80C320單片機(jī)軟核的設(shè)計(jì),TP391基于AVR單片機(jī)的應(yīng)用設(shè)計(jì)實(shí)踐,TN015HYPERLIN

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論