畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料_第1頁
畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料_第2頁
畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料_第3頁
畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料_第4頁
畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料_第5頁
已閱讀5頁,還剩172頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

畢業(yè):基于單片機的電子密碼鎖畢業(yè)設(shè)計(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)本科畢業(yè)設(shè)計(論文)題目基于單片機的電子密碼鎖設(shè)計院(系部)河北大學(xué)專業(yè)名稱電子信息工程年級班級學(xué)生姓名指導(dǎo)教師2021年月日摘要本課題設(shè)計了一種基于單片機的數(shù)字電子密碼鎖,這種數(shù)字電子密碼鎖以單片機作為數(shù)據(jù)處理主控芯片。電子密碼鎖的設(shè)計主要由四部分組成:4×4矩陣鍵盤接口電路、以AT89S52芯片為核心的密碼鎖的數(shù)據(jù)處理及控制電路、掉電情況下依然能保存密碼的EEPROM存儲器芯片,輸出七段顯示電路。另外系統(tǒng)還有LED提示燈,報警蜂鳴器,單片機復(fù)位電路等。電子密碼鎖設(shè)計的關(guān)鍵問題是實現(xiàn)密碼的輸入、清除、開鎖、更改等功能。同時該密碼鎖具有設(shè)計方法合理,簡單易行,成本低,安全實用等特點,符合住宅,辦公室等場所的用鎖要求,具有推廣價值。關(guān)鍵詞單片機密碼鎖4*4矩陣鍵盤EEPROM存儲芯片實用經(jīng)濟AbstractThisprojectdesignedadigitalelectroniclockwhichusedaMCUasdataprocessandcontrolchip.Themainfunctionsdigitalelectroniclockareasfollows:Thedesignoftheelectronicpasswordlockismainlymadeupoffourparts:4×4matrixkeyboardinterfacecircuit,dataprocessingandcontrolcircuit,eeprommemorychipthatisusedtokeeppasswordwhenthelocklosespoweranddisplaycircuit.InadditionthesystemalsoconsistsofLEDlights,alarmbuzzers,single-chipresetcircuitandsoon..Thekeyquestionoftheelectroniclockdesigningistherealizationoffunctions,suchastheinputpassword,clearpassword,unlock,changepasswordandotherfunctions.Andthedesignedcipherlockischaracterizedbyitsreasonabledesigningmethods,simpleoperation,lowcostandpropertyofsafetyandpracticality.Besides,itworkswellasaresidencelockandhasgreatpotentialforcommercialdevelopment.Keywords:SCMCipherlock4*4matrixkeyboardEEPROMPracticaleconomy目錄1緒論 11.1國內(nèi)外研究綜述 11.2選題的目的和意義 21.3本論文的任務(wù) 32電子密碼鎖總體設(shè)計 42.1系統(tǒng)總體設(shè)計 42.2單片機 52.3密碼存儲芯片選擇 62.4鍵盤輸入方案比較 82.5顯示方案比較 103電子密碼鎖的硬件設(shè)計 123.1系統(tǒng)結(jié)構(gòu)框圖 123.2主控部分 133.3顯示部分 133.4鍵盤輸入部分 143.5密碼存儲部分 153.6電源部分 163.7其它功能部分 183.8電子密碼鎖的電路原理圖 214電子密碼鎖的軟件組成 224.1系統(tǒng)軟件設(shè)計流程 224.2KeiluVision2軟件介紹 234.3各主要部分的功能實現(xiàn)程序設(shè)計 24初始化程序設(shè)計 24按鍵處理程序設(shè)計 27密碼更改程序設(shè)計 315系統(tǒng)仿真 345.1系統(tǒng)仿真過程 345.2仿真調(diào)試中遇到的問題及解決辦法 35總結(jié) 36致謝 37參考文獻(xiàn) 38附錄 391緒論1.1國內(nèi)外研究綜述在電子鎖出現(xiàn)以前人們廣泛的使用機械鎖,但是隨著時間的推移機械鎖已不能滿足人們的要求,于是電子鎖應(yīng)用而生。以前由于電子器件所限,開發(fā)的電子密碼鎖種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實現(xiàn)的,制作雖簡單但很不安全。現(xiàn)在電子鎖的技術(shù)可以說是時時的在進(jìn)步,出現(xiàn)了很多性能強,安全可靠的新型電子鎖。如:遙控式電子密碼鎖,卡式電子鎖,生物特征電子鎖等。但是應(yīng)用廣泛的還是鍵盤式電子密碼鎖。遙控式電子密碼鎖:優(yōu)點是傳輸信息量可以很大、速度極快、人眼識別不出來,又無法在光路徑上用儀器捕獲信號進(jìn)行復(fù)制,因此保密性極高。缺點是需要隨身保管遙控器即鑰匙,對于某些方面來說不是很實用??ㄊ矫艽a鎖:能夠在卡中存儲大量的個人信息,即容量非常的大,并且可以實現(xiàn)一卡多用。但是卡式密碼鎖也有很大的缺陷,開鎖用的卡很可能受到一些電子產(chǎn)品的磁干擾,出現(xiàn)“失效”;同時卡也很容易被丟失,丟失了卡就需要盡快的取消卡的授權(quán),一面?zhèn)€人的重要信息丟失,這個過程也是相當(dāng)麻煩的。生物特征電子鎖:人的某些與生俱來的個性特征(如手、眼睛、聲音的特征)幾乎不可重復(fù),作為“鑰匙”就是唯一的。但是生物特征電子鎖需要大量的個人身體上的信息,這就使其處理上會變得復(fù)雜,這也確定了生物特征電子鎖目前僅適用于極個別的行業(yè)。鍵盤式電子鎖:主要依靠的是鍵盤輸入密碼驗證,不需要攜帶專一的“鑰匙”,只需要記住密碼即可。鍵盤式電子鎖有采用數(shù)字電路控制的,但控制的準(zhǔn)確性和靈活性比較的差;有以單片機為核心的鍵盤式電子鎖,它的性能比較的穩(wěn)定,而且性價比也比較的高,受到了廣泛的關(guān)注。盡管新式電子防盜鎖層出不窮,但鍵盤式電子密碼鎖仍然“老樹發(fā)新芽”,在市場上居于主流地位。伴隨著科學(xué)技術(shù)的發(fā)展,電子的應(yīng)用技術(shù)的提高,又出現(xiàn)了一些帶有微型處理器的智能電子鎖,它除了具有電子密碼鎖的功能外,還引入了智能化管理的功能,從而使電子密碼鎖具有更高的安全性和可靠性。目前發(fā)達(dá)國家大規(guī)模使用的智能門禁系統(tǒng),就是一種使用多種更加安全,可靠方法來實現(xiàn)大門管理的新型電子密碼鎖。發(fā)達(dá)國家的電子密碼鎖技術(shù)已經(jīng)相當(dāng)?shù)某墒欤悄芑?、集成化程度很高。而我國的?yīng)用還不是很廣泛,一般應(yīng)用在一些高級的場所之中,例如銀行的保險柜、保險箱、高級酒店等,家居應(yīng)用很少。我國的電子密碼鎖的技術(shù)也是比較落后的,不是很成熟。開發(fā)的密碼鎖大多采用的是普通的數(shù)字電路設(shè)計生產(chǎn)的,與機械鎖相比較的確存在著很多的優(yōu)點,但智能化的程度不高,編碼的組合很少。1.2選題的目的和意義在我們的日常生活中,經(jīng)常會遇到一些地方需要進(jìn)行防護(hù),而這些地方的防護(hù)多是以使用各種各樣的鎖來進(jìn)行的。常見的大致有兩個大的方面,一種是機械鎖,一種是電子密碼鎖鎖。傳統(tǒng)簡單的機械鎖一般是結(jié)構(gòu)比較的簡單,很容易遭到外部的破壞,而機密復(fù)雜的大型機械鎖又比較的笨重,不適合大眾的需要。在科學(xué)技術(shù)不斷發(fā)展的今天,電子密碼鎖已經(jīng)受到了越來越多的關(guān)注。電子密碼鎖具有保密性高,無靈活零件,不會磨損,壽命長,靈活性好等特點。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品。但是電子密碼鎖也存在著缺陷1.價格比較的昂貴;2推廣性不強。現(xiàn)在采用單片機制作的電子鎖就克服了這些缺陷。單片機具有體積小、功能強,性價比高等特點,廣泛應(yīng)用于電子產(chǎn)品。基于單片機的電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。本次選題的就是設(shè)計一種基于單片機控制的具有本機開鎖和報警功能的電子密碼鎖,在電子密碼鎖的顯示和鍵盤輸入有方案的比較,使電子密碼鎖更加的實用經(jīng)濟,能夠?qū)嶋H生活中得到廣泛的應(yīng)用。用單片機制作的電子鎖有以下的特點:1.保密性好,采用的是多位密碼輸入。2.破解保護(hù),能夠及時的鎖定鍵盤報警。3.界面簡潔,密碼操作也非常簡單。1.3本論文的任務(wù)本設(shè)計的電子密碼鎖的實現(xiàn)是基于單片機的,任務(wù)及工作如下:1、在Proteus軟件環(huán)境中進(jìn)行硬件電路圖的設(shè)計。2、在Keil軟件環(huán)境中進(jìn)行系統(tǒng)的軟件編程,并進(jìn)行程序源文件的編譯和調(diào)試,最后生成.hex文件。此.hex文件是硬件電路運行實現(xiàn)的源代碼來源。3、把.hex文件加載到單片機芯片,然后在Proteus軟件環(huán)境中運行硬件電路。2電子密碼鎖總體設(shè)計2.1系統(tǒng)總體設(shè)計本設(shè)計主要由單片機、矩陣鍵盤、LED數(shù)碼管顯示和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實現(xiàn)。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經(jīng)過單片機對用戶輸入的密碼與自己保存的密碼進(jìn)行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當(dāng)然也可以用繼電器的常開觸點去控制電磁鐵吸合線圈。其設(shè)計原理框圖如圖2.1所示:單片機單片機顯示部分其它部分鍵盤輸入部分密碼存儲部分圖2.1原理框圖單片機:本部分的功能包括寫入和讀取各種控制命令及數(shù)據(jù)處理,同時還要對各執(zhí)行單元進(jìn)行控制。單片機是整個系統(tǒng)的控制核心及數(shù)據(jù)處理核心。鍵盤部分:本部分由用戶通過鍵盤輸入各種信息送入到單片機進(jìn)行處理。顯示部分:本部分完成的是單片機處理后的數(shù)據(jù)和信息的顯示以及系統(tǒng)提示信息的顯示。密碼存儲部分:本部分完成存儲原始密碼和用戶更改密碼數(shù)據(jù)的功能。其它部分:本部分的目的是為了提高系統(tǒng)的可用性和實用性。主要包括電源部分、復(fù)位部分、晶振部分、開鎖部分和報警部分。電源部分主要的功能是為單片機提供適當(dāng)?shù)墓ぷ麟娫?,同時也為其它的部分提供電源。復(fù)位部分功能是使單片機在出現(xiàn)故障時進(jìn)行成功的復(fù)位。晶振部分功能是給單片機提供時鐘。開鎖部分主要是根據(jù)單片機數(shù)據(jù)處理的結(jié)果驅(qū)動繼電器控制開鎖的操作。報警部分主要的功能就是在錯誤操作下實現(xiàn)報警提示。2.2單片機選擇單片機的種類繁多,各種型號都有其一定的應(yīng)用環(huán)境,因此在選用時要多加比較,合理選擇,以期獲得最佳的性價比。在多數(shù)的電子設(shè)計中,基于性價比的考慮,8位單片機為首選。8位單片機中以MCS-51系列單片機及其兼容機所占的份額最大。MCS-51的硬件結(jié)構(gòu)決定了其指令系統(tǒng)不會發(fā)生變化。因此在對不同公司的單片機進(jìn)行選型時,只需要比較芯片內(nèi)部資源即可。在以前的電子設(shè)計中,應(yīng)用比較廣泛的是AT89C51單片機,但是該單片機存在著致命的缺陷不支持ISP功能。Atmel公司現(xiàn)在已停止了AT89C51的生產(chǎn),而加上了ISP功能的AT89S51、AT89S52誕生了。AT89S系列單片機在工藝上進(jìn)行了改進(jìn),采用了0.35mm的新工藝,不但降低了成本,而且增加了功能,提升了單片機的性能,提高了市場競爭力。AT89S系列單片機新增了許多功能,性能也有了較大的提升,但是價格仍舊與AT89C系列的價格相差不大。新增的功能之中最具影響力的就是ISP在線編程功能,這個功能的優(yōu)勢在于,改寫單片機Flash存儲器內(nèi)的程序時不需要把芯片從工作環(huán)境中剝離,是一個強大易用的功能。顯然,AT89S系列單片機在性能上要比AT89C系列的單片機優(yōu)良的多,而且價格也沒有什么提高。所以選擇AT89S系列作為本系統(tǒng)的的主控部分。而AT89S系列中的89S51和89S52在實際應(yīng)用中最多,本設(shè)計中軟件部分需要大量的程序編程,89S51內(nèi)的程序存儲器太小,不能滿足要求,因此選擇AT89S系列的AT89S52作為本設(shè)計的主控部分。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(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口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。AT89S52引腳圖如圖2.2所示:圖2.2AT89S52引腳圖AT89S52引腳功能說明如下:VCC:電源電壓GND:地P0口:P0口是一個8位漏極開路的雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0內(nèi)部上拉電阻被激活。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動(吸收或輸出電流)4個TTL邏輯門電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(TTL)。P1端口引腳的第二功能如表1所示表1P1端口引腳的第二功能端口引腳第二功能P1.0T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出P1.1T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)P1.5MOSI(在系統(tǒng)編程用)P1.6MISO(在系統(tǒng)編程用)P1.7SCK(在系統(tǒng)編程用)P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX@DPTR)時,P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX@RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(TTL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能。如表2所示:表2端口引腳第二功能端口引腳第二功能P3.0RXD(串行輸入口)P3.4TO(定時/計數(shù)器0)P3.1TXD(串行輸出口)P3.5T1(定時/計數(shù)器1)P3.2INTO(外中斷0)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.3INT1(外中斷1)P3.7RD(外部數(shù)據(jù)存儲器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。RST——復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFRAUXR的DISRTO位(地址8EH)可打開或關(guān)閉該功能。DISRTO位缺省為RESET輸出高電平打開狀態(tài)。ALE/PROG——當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將有兩次有效的PSEN信號。EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。2.3密碼存儲芯片選擇本部分主要是論證密碼存儲芯片的選型。存儲器的類型按功能分只讀存儲器(Read-OnlyMemory,簡稱ROM)和隨機存取存儲器(RandomAccessMemory,簡稱RAM)。隨機存取存儲器與只讀存儲器的根本區(qū)別在于:隨機存儲器在正常工作狀態(tài)時可隨時向存儲器里寫入數(shù)據(jù)或從中讀出數(shù)據(jù),在存儲器斷電后信息全部丟失。只讀存儲器又分為固定掩膜存儲器和可編程存儲器。固定掩膜存儲器在生產(chǎn)時就根據(jù)用戶的要求把數(shù)據(jù)和程序固化其中,其中的內(nèi)容用戶不可以再修改,只能讀出。而可編程存儲器便于用戶根據(jù)自己的需要來寫入特定的信息,根據(jù)存儲矩陣中存儲單元電路的結(jié)構(gòu)不同,可編程的ROM有PROM、EPROM和EEPROM等三種。PROM的編程是由用戶而不是生產(chǎn)廠家完成,增加了靈活性,但編程是一次性的,且可靠性較差,目前已很少使用。EPROM作為一種可以多次擦除和重寫的ROM,克服了掩膜式ROM和PROM只能一次性寫入的缺點,滿足了實際工作中需要多次修改程序或數(shù)據(jù)的可能,前提條件是存儲矩陣中現(xiàn)有的程序或數(shù)據(jù)必須首先擦除。EPROM的擦除和編程寫入是采用專門的編程器設(shè)備完成的,并且擦除的周期比較的長。電可擦除可編程只讀存儲器EEPROM也稱E2PROM。與EPROM擦除時把整個芯片的內(nèi)容全變成“1”不同,EEPROM的擦除可以按字節(jié)分別進(jìn)行,且字節(jié)的編程和擦除都只需10ms,并且不需要將芯片從機器上拔下以及諸如用紫外線光源照射等特殊操作,可以在線進(jìn)行擦除和編程寫入。因此根據(jù)設(shè)計的要求,采用的是EEPROM。常見的EEPROM芯片有28256、AT24C系列,28256的EEPROM引腳比較多,功能比較的多,且容量太大,而本設(shè)計的存儲器只是存儲密碼數(shù)據(jù),不需要很多的功能和很大的容量,因而選用的是AT24C系列的EEPROM。常用的AT24C系列如下表3所示:表3AT24C系列EEPROM對比表EEPROM型號AT24C02AT24C08AT24C16容量(bytes)2K8K16K頁大小(bytes)81616總頁面數(shù)3264128地址位(bits)888本設(shè)計中存儲的數(shù)據(jù)不多,因此選用AT24C02即可滿足要求。AT24C02是美國Atmel公司的低功耗CMOS型EEPROM,內(nèi)含256×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小、掉電情況下可以繼續(xù)保存數(shù)據(jù)等特點。AT24C02芯片作為系統(tǒng)的從器件,它與主器件之間的通信遵循I2C總線協(xié)議,I2C總線協(xié)議規(guī)定,任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器。任何從總線接受數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號的主器件控制的。主器件和從器件都可以作為發(fā)送器或者是接收器。AT24C02的引腳如圖2.3所示:圖2.3AT24C02的引腳引腳的功能:串行時鐘(SCL):用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘。串行數(shù)據(jù)/地址(SDA):用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA是一個開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進(jìn)行線。器件地址輸入端(A0、A1和A2):用于多個器件級聯(lián)時設(shè)置器件地址,當(dāng)有多個從器件連接在I2C總線上時,此端口用于選擇不同的從器件。本次設(shè)計中三個引腳全部接地。寫保護(hù)(WP):如果WP管腳連接到VCC,所有的內(nèi)容都被寫保護(hù)(只能讀)。當(dāng)WP管腳連接地線或懸空,允許器件進(jìn)行正常的讀/寫操作。2.4鍵盤輸入方案比較鍵盤輸入是現(xiàn)階段電子設(shè)計中最常用、最實用的輸入設(shè)備。設(shè)計中常用的鍵盤輸入方案有兩種:獨立式鍵盤、矩陣式鍵盤。獨立式鍵盤獨立式按鍵是指直接用I/O口線構(gòu)成的單個按鍵的電路。每個獨立式按鍵單獨占有一根I/O口線,每個按鍵的工作狀態(tài)都是獨立的不會影響到其他的按鍵的工作狀態(tài)。獨立式按鍵的電路如圖2.4所示:圖2.4獨立式按鍵電路原理圖通常獨立式鍵盤的按鍵輸入都采用低電平有效,上拉電阻保證了按鍵的斷開,I/O口線有確定的高電平。獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但是每個按鍵都需要獨立的I/O口,如果按鍵的數(shù)量較多的時候,I/O就會造成極大的浪費。矩陣式鍵盤行列式鍵盤又叫矩陣式鍵盤。用I/O口線組成行列結(jié)構(gòu),按鍵位于行列的交點位置上。矩陣式鍵盤電路原理如圖2.5所示:圖2.5矩陣式鍵盤電路原理圖本次設(shè)計中電子密碼鎖的鍵盤中,出去0-9的數(shù)字鍵外,還需要一些輔助的功能鍵,總體上來說按鍵的數(shù)量是相當(dāng)?shù)亩嗟?。采用獨立式按鍵的方案,會對單片機的I/O口造成很大的浪費;采用矩陣式的按鍵方案就比較的適用于本次設(shè)計。2.5顯示方案比較設(shè)計中常用的輸出顯示設(shè)備有兩種:數(shù)碼管和LCDLCD顯示方案LCD是一種被動式的顯示器,利用液晶能改變光線通過方向的特性,來達(dá)到顯示的目的。LCD顯示清晰美觀,具有功能低、抗干擾能力強的優(yōu)點,廣泛應(yīng)用于儀器儀表、控制系統(tǒng)等。液晶顯示器的驅(qū)動方式由電極引線的選擇方式確定,選擇了液晶顯示器之后便無法改變驅(qū)動的方式。當(dāng)LCD顯示筆端上兩個電極電壓相位相同時,兩電極之間的電位差為0,該字段就不顯示;當(dāng)兩個電極電壓的相位相反時,兩電極之間的電位差為兩倍的方波電壓,該字段顯示。其原理電路如圖2.6所示:圖2.6原理電路數(shù)碼管顯示方案七段數(shù)碼管顯示器是有8個發(fā)光二極管組成的(a,b,c,d,e,f,g),LED七段數(shù)碼管的顯示即相應(yīng)的發(fā)光二極管導(dǎo)通或者是截斷,不同的組合等到的字符顯示不一樣的。數(shù)碼管顯示的數(shù)據(jù)內(nèi)容比較的直觀,一個數(shù)碼管可以顯示一位,多個數(shù)碼管就可以顯示多位,且程序設(shè)計和外圍電路設(shè)計都十分的簡單。數(shù)碼管顯示的每一位都需要有一個8位輸出口控制,當(dāng)需要較多的數(shù)碼管顯示的時候,單片機如果要直接控制各個數(shù)碼管的顯示是不可能的,因為沒有足夠的I/O口線進(jìn)行控制。通常采用串口發(fā)送數(shù)據(jù),然后用串行輸入并行輸出的移位寄存器來驅(qū)動數(shù)碼顯示器。實際應(yīng)用中,簡單的可以使用三極管來驅(qū)動,但是本設(shè)計為了使顯示更加的穩(wěn)定,采用的是74HC164串行移位寄存器來驅(qū)動。本次設(shè)計,顯示的東西不需要很復(fù)雜,信息也較少,用數(shù)碼管顯示完全可以滿足要求,而使用LCD顯示成本可能會比較的高,所以采用數(shù)碼管顯示。3電子密碼鎖的硬件設(shè)計本部分主要介紹基于AT89S52單片機的電子密碼鎖的硬件設(shè)計。系統(tǒng)的硬件部分由鍵盤輸入部分、密碼存儲部分、顯示部分、電源輸入部分、復(fù)位部分、晶振部分、報警部分、開鎖部分組成。3.1系統(tǒng)結(jié)構(gòu)框圖系統(tǒng)以AT89S52單片機作為數(shù)據(jù)和控制部分;以矩陣鍵盤輸入作為鍵盤輸入部分的方式;數(shù)碼管顯示作為數(shù)據(jù)輸出顯示部分;由繼電器控制電磁閥動作的開鎖電路作為開鎖部分;蜂鳴器作為報警部分,系統(tǒng)的硬件結(jié)構(gòu)框圖如圖3.1所示:AT89S52鍵盤輸入復(fù)位電路密碼存儲電路晶振電路AT89S52鍵盤輸入復(fù)位電路密碼存儲電路晶振電路電源輸入顯示電路報警電路開鎖電路圖3.1系統(tǒng)的硬件結(jié)構(gòu)圖3.2主控部分本次設(shè)計中,選用Ateml公司的51系列單片機AT89S52芯片作為電子密碼鎖的數(shù)據(jù)處理及操作控制芯片。只有單片機芯片是無法完成數(shù)據(jù)處理及控制功能的,必須有附加的電路,使單片機芯片組成一個可運行的系統(tǒng)才能實現(xiàn)其功能。本次設(shè)計,由AT89S52單片機連同附加電路構(gòu)成的單片機最小系統(tǒng)作為主控。電路圖如圖3.2所示:圖3.2最小系統(tǒng)3.3顯示部分電子密碼鎖采用數(shù)碼管進(jìn)行顯示,經(jīng)過單片機處理過的數(shù)據(jù)信息都由數(shù)碼管進(jìn)行顯示。單片機數(shù)據(jù)傳輸采用串行方式,數(shù)據(jù)通過單片機的串行數(shù)據(jù)口P3.0(RXD)進(jìn)行發(fā)送,接著應(yīng)用74HC164串行移位寄存器把串行的數(shù)據(jù)轉(zhuǎn)換成8位的并行數(shù)據(jù),驅(qū)動LED數(shù)碼管。74HC164芯片中,沒有數(shù)據(jù)鎖存器,使串行數(shù)據(jù)每到達(dá)一位,直接就被送到數(shù)碼管中,造成數(shù)據(jù)顯示不穩(wěn)定。為了使數(shù)據(jù)顯示穩(wěn)定,在移位寄存器和數(shù)碼管之間加入數(shù)據(jù)鎖存器,來穩(wěn)定數(shù)碼管的數(shù)據(jù)顯示。顯示部分如圖3.3所示:圖3.3顯示部分電路圖3.4鍵盤輸入部分在電子密碼鎖中各種信息的輸入都是通過鍵盤輸入部分完成的。把單個按鍵按照4*4組成鍵盤,四條行線連接到單片機的P1.0-P1.3四條I/O口線上,四條列線連接到單片機的P1.4-P1.7四條I/O口線上,運行的時候,單片機通過控制P1口得高低電平,然后根據(jù)變化進(jìn)行判斷。單片機向行線輸入高電平,向列線輸入低電平,按鍵未被按下之前保持電平給定不變,按鍵按下,行線的高電平變成低電平。同樣對列線進(jìn)行判定,即可判斷所輸入的信息。鍵盤部分的電路連接如圖3.4所示:圖3.4鍵盤部分電路圖3.5密碼存儲部分在電子密碼鎖中,存入的密碼是需要永久的保存的。在設(shè)計中采用了在掉電的情況下依然能夠保存數(shù)據(jù)的EEPROM存儲芯片24C02存儲密碼。設(shè)計的密碼鎖因為只需要存儲6位密碼,數(shù)據(jù)量很小,所以24C02的地址選擇端口直接接地,時鐘輸入端口(SCK)和數(shù)據(jù)輸入端口(SDA)和單片機的相連即可。電路連接如圖3.5所示:圖3.5密碼存儲部分電路圖3.6電源部分密碼鎖主控制部分電源需要用5V直流電源供電,把頻率為50Hz、有效值為220V的單相交流電壓轉(zhuǎn)換為幅值穩(wěn)定的5V直流電壓。其主要原理是把交流電經(jīng)過電源變壓器、整流電路、濾波電路、穩(wěn)壓電路轉(zhuǎn)換成穩(wěn)定的直流電壓。由于輸入電壓為電網(wǎng)電壓,一般情況下所需直流電壓的數(shù)值和電網(wǎng)電壓的有效值相差較大,因而電源變壓器的作用顯現(xiàn)出來起到降壓作用。降壓后還是交流電壓,所以需要整流電路把交流電壓轉(zhuǎn)換成直流電壓。由于經(jīng)整流電路整流后的電壓含有較大的交流分量,會影響到負(fù)載電路的正常工作。需通過低通濾波電路濾波,使輸出電壓平滑。穩(wěn)壓電路的功能是使輸出直流電壓基本不受電網(wǎng)電壓波動和負(fù)載電阻變化的影響,從而獲得穩(wěn)定性足夠高的直流電壓。為了防止停電情況的發(fā)生,本電路后備了UPS電源,它包括市電供電電路,停電檢測電路,電子開關(guān)切換電路,蓄電池充電電路和蓄電池組成。主電源如圖3.6所示:圖3.6主電路圖220V市電通過變壓器降壓成12V的交流電,再經(jīng)過整流橋整流,7805穩(wěn)壓到5V送往電子切換電路,由于本電路功耗較少,所以選用10W的小型變壓器。由R2,R3,R4,R5及J1構(gòu)成電壓比較器,正常情況下,V+<V-J1輸出高電平,繼電器的常閉觸點和市電相連;當(dāng)市電斷開,V+>V-J6時,由Q1,Q2構(gòu)成的達(dá)林頓管使繼電器K1開啟,將其常開觸電將蓄電池和電路相連,實現(xiàn)市電和蓄電池供電的切換,保證電子密碼鎖的正常工作(視電池容量而定持續(xù)時間)。Q3,Q4構(gòu)成的蓄電池自動充電電路,它在電池充滿后自動停止充電,其中D5亮為正在充電,D7為工作指示。由R8,R11,Q4構(gòu)成電壓檢測電路,蓄電池電壓低,則Q3,Q4導(dǎo)通,實現(xiàn)對其充電;充滿后,Q3,Q4截止,停止充電,同時D5熄滅,電路中C6的作用是濾除干擾信號。如圖3.7、3.8所示:圖3.7停電檢測及電子開關(guān)切換電路圖3.8蓄電池自動充放電電路3.7其它功能部分密碼鎖系統(tǒng)中主要的為以上的幾個部分,但是為了使系統(tǒng)更加的完善,還需要一些附加的部分。復(fù)位部分單片機復(fù)位是使CPU和系統(tǒng)中的其它功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,單片機剛開始接上電源,斷電或者是發(fā)生故障時都需要復(fù)位。單片機的復(fù)位輸入RST腳持續(xù)兩個機器周期高電平將使單片機復(fù)位。復(fù)位部分如圖3.9所示:圖3.9復(fù)位部分電路報警部分報警部分是由陶瓷壓電發(fā)聲裝置及外圍電路組成。當(dāng)密碼輸入不正確是會發(fā)出警報。報警電路如圖3.10所示:圖3.10報警電路晶振部分本部分是為單片機提供時鐘控制信號,采用的電路是外接晶振和電容組成的并聯(lián)諧振回路。AT89S52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C1按圖4-7所示方式連接。晶振、電容C1、C2及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點式振蕩器,振蕩信號頻率與晶振頻率及電容C1、C2的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C1、C2取值范圍在5~30pF之間。根據(jù)實際情況,本設(shè)計中采用12MHZ做為系統(tǒng)的外部晶振。電容取值為20pF。如圖3.11所示:圖3.11晶振部分電路開鎖部分當(dāng)輸入正確的密碼的時候,單片機的其中一個引腳線發(fā)出信號,經(jīng)過三極管放大后,由繼電器驅(qū)動電磁閥動作將鎖打開。同時綠色的指示燈將會點亮。開鎖電路如圖3.12所示:圖3.12開鎖電路3.8電子密碼鎖的電路原理圖根據(jù)系統(tǒng)所需要實現(xiàn)的功能,進(jìn)行的原理圖設(shè)計如圖3.13所示:圖3.13電子密碼鎖的電路原理圖4電子密碼鎖的軟件組成4.1系統(tǒng)軟件設(shè)計流程本設(shè)計的軟件程序設(shè)計主要有(1)初始化程序(2)按鍵功能實現(xiàn)程序(3)密碼修改程序(4)報警程序等組成。系統(tǒng)的總體流程圖如圖4.1所示:開始開始初始化,設(shè)置密碼等待輸入計算鍵值是CLR?是否是確認(rèn)鍵?否存鍵值首次按鍵?已輸6位?是否否密碼右移是計數(shù)值減1報警是是否比較密碼正確?開鎖密碼左移計數(shù)值加1圖4.1系統(tǒng)的總體流程圖4.2KeiluVision2軟件介紹單片機開發(fā)中除必要的硬件外,同樣離不開軟件,本系統(tǒng)的軟件編程設(shè)計是在Keil軟件環(huán)境中完成的。我們寫的C語言、匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于MCS-51單片機的匯編軟件有早期的A51,隨著單片機開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果使用C語言編程,那么Keil幾乎就是不二之選。即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令人事半功倍。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。4.3各主要部分的功能實現(xiàn)程序設(shè)計初始化程序設(shè)計電子密碼鎖系統(tǒng)在接通電源后,首先要對系統(tǒng)進(jìn)行初始化。初始化過程包括密碼鎖上鎖,密碼的讀入,LED數(shù)碼管的顯示內(nèi)容初始化,設(shè)定系統(tǒng)狀態(tài)指示等。流程圖如圖4.2所示:初始化開始初始化開始載入預(yù)設(shè)密碼至系統(tǒng)內(nèi)存系統(tǒng)上鎖并設(shè)定狀態(tài)指示燈設(shè)定顯示器為等待輸入狀態(tài)用戶輸入密碼區(qū)清零初始化定時器0圖4.2初始化程序設(shè)計流程圖初始化程序如下:ORG 0000HLJMP FIRSTORG 000BHLJMP INT_T0ORG 0100HFIRST: MOV SET_TIMES,#0 ;新密碼輸入次數(shù)清零從24C01C中讀數(shù)據(jù),數(shù)據(jù)送AT89CMOV SLA,#0A0H ;寫入控制字MOV SUBA,#00H ;目標(biāo)地址MOV NUMBYTE,#6 ;寫入的字節(jié)數(shù)LCALL IRDNBYTE ;開始寫數(shù)據(jù)BEGIN:MOV CNT_ERROR,#00H ;密碼錯誤次數(shù)清零START:CLR LED_YELLOW ;上鎖指示燈SETB LED_GREEN ;開鎖指示燈滅SETB LED_RED ;密碼錯誤指示燈滅MOV KEY_CNT_SET,#00HMOV CNT_A,#00H MOV CNT_B,#00HMOV KEY_CNT,#00HMOV LINE,#00HMOV ROW,#00HMOV VAL,#00HMOV WORD_ADRESS,#4CHMOV LED_BIT_1,#0AH ;數(shù)碼管全"-"MOV LED_BIT_2,#0AHMOV LED_BIT_3,#0AHMOV LED_BIT_4,#0AHMOV LED_BIT_5,#0AHMOV LED_BIT_6,#0AHMOV KEY_1,#00H ;輸入密碼存儲區(qū)清0MOV KEY_2,#00HMOV KEY_3,#00HMOV KEY_4,#00HMOV KEY_5,#00HMOV KEY_6,#00HMOV TMOD,#01H ;初始化定時器T0MOV TH0,#(65536-700)/256MOV TL0,#(65536-700)MOD 256 MOV IE,#82H 按鍵處理程序設(shè)計(介紹)鍵功能程序鍵功能程序鍵值=‘0-9’?鍵值=‘開鎖’?鍵值=‘清除’?鍵值=‘設(shè)置’?鍵值=‘確認(rèn)’?密碼輸入程序設(shè)置程序清除程序開鎖程序確認(rèn)程序是是是是是否否否否返回否圖4.3按鍵處理程序流程圖按鍵處理程序如下:A0: NOPLSCAN: MOV P1,#0F0H;掃描行碼,把四條“行”線置成低電平 L1: JNB P1.0,L2;檢測第一行是否有鍵按下 LCALL DLY_S;消除鍵盤抖動 JNB P1.0,L2;確認(rèn)第一行有鍵按下 MOV LINE,#00H;把值送到指定內(nèi)存,等待計算 LJMP RSCAN;跳轉(zhuǎn)到鍵值計算部分 L2: JNB P1.1,L3 LCALL DLY_S JNB P1.1,L3 MOV LINE,#01H LJMP RSCAN L3: JNB P1.2,L4 LCALL DLY_SJNB P1.2,L4 MOV LINE,#02H LJMP RSCAN L4: JNB P1.3,a0 LCALL DLY_S JNB P1.3,a0 MOV LINE,#03HRSCAN: MOV P1,#0FH ;掃描列碼 C1: JNB P1.4,C2 MOV ROW,#00H LJMP CALCU C2: JNB P1.5,C3 MOV ROW,#01H LJMP CALCU C3: JNB P1.6,C4 MOV ROW,#02H LJMP CALCU C4: JNB P1.7,C1 MOV ROW,#03H LJMP CALCUCALCU: MOV A,LINE ;計算鍵值 MOV B,#04H MUL AB ADD A,ROW MOV VAL,A;把鍵值存入VAL單元CJNE A,#0AH,J1 ;是否為"CLR"鍵 JNB LED_GREEN,CLR_KEY;檢測是否已開鎖MOV R1,KEY_CNT CJNE R1,#00H,J2;判斷已按鍵次數(shù)為零? LCALL ALARM_1;調(diào)用報警子程序LCALLFALSE;數(shù)碼管顯示“FALSE”LJMP STARTCLR_KEY:LCALL ALARM_1;鎖開狀態(tài)下,按CLR的處理方法,調(diào)用報警子程序 LCALL FALSE;顯示“FALSE”LJMP A1 J2:LCALL SHIFTR;顯示內(nèi)容右移一位 DEC KEY_CNTLCALL BCD LCALL DISP ;等待按鍵抬起 W00:LCALL DLY_1S MOV A,P1 CJNE A,#0FH,W01 LJMP A0 W01:MOV A,P1 CJNE A,#0F0H,W02 LJMP A0 W02:SJMP W00 J1:MOV A,VAL CJNE A,#0CH,J11 ;是否為SET鍵 LCALL DLY_SJB LED_GREEN,SET_ERROR……J11:MOV A,VALCJNE A,#0DH,J22 ;是否為LOCK鍵LCALL DLY_SJNB LED_GREEN,LOCK……J22:MOV A,VAL CJNE A,#0BH,J3_TEMP;是否為"ENTER"鍵 LJMP TTTTTTJ3_TEMP:LJMP J3……密碼更改程序設(shè)計密碼鎖的密碼就相當(dāng)于我們?nèi)粘I钪杏玫降蔫€匙,而電子密碼鎖可以根據(jù)用戶的需要,隨時更改原有的密碼,來提高密碼鎖的安全性,密碼修改功能是保證密碼鎖有效的重要保障。在密碼修改子程序中,用戶只有在開鎖狀態(tài)下才能進(jìn)行修改,即要求用戶知道原有的密碼,否則無法打開密碼鎖,更無法修改其密碼??驁D如圖4.4所示:有按鍵按下?有按鍵按下?操作錯誤,報警否是否是否計算鍵值,存儲新密碼輸入完?兩次輸入并一致?是存儲密碼圖4.4密碼更改程序設(shè)計流程圖密碼更改程序如下:SET_P:CLR LED_GREEN ;更改系統(tǒng)狀態(tài)及屏幕顯示內(nèi)容 SETB LED_YELLOW SETB LED_REDMOV LED_BIT_1,#0CH ;關(guān)閉全部數(shù)碼管 MOV LED_BIT_2,#0CH MOV LED_BIT_3,#0CH MOV LED_BIT_4,#0CH MOV LED_BIT_5,#0CH MOV LED_BIT_6,#0CH LCALL BCD LCALL DISPA0_SET: NOP ;按鍵檢測并計算鍵值存放在VAL單元……. ;按鍵處理部分CJNE A,#02H,TIMES1 ;判斷是否已輸入兩次新密碼LCALL DLY_1S MOV A,WORD_6 ;逐位比較密碼,不一致則重新設(shè)置 CJNE A,KEY_1,J_RSET MOV R0,#59H MOV @R0,#33H MOV A,WORD_5 CJNE A,KEY_2,J_RSET MOV A,WORD_4 CJNE A,KEY_3,J_RSET MOV A,WORD_3 CJNE A,KEY_4,J_RSET MOV A,WORD_2 CJNE A,KEY_5,J_RSET MOV A,WORD_1 CJNE A,KEY_6,J_RSET向24C01C中寫數(shù)據(jù),數(shù)據(jù)存放在24C ……TIMES1:MOV R0,#WORD_1SET ;第一次新密碼暫存內(nèi)存中 MOV WORD_1,@R0 MOV R0,#WORD_2SET MOV WORD_2,@R0 MOV R0,#WORD_3SET MOV WORD_3,@R0 MOV R0,#WORD_4SET MOV WORD_4,@R0 MOV R0,#WORD_5SET MOV WORD_5,@R0 MOV R0,#WORD_6SET MOV WORD_6,@R0 LCALLDLY_1S ;加延時程序 ……5系統(tǒng)仿真5.1系統(tǒng)仿真過程開始時的數(shù)碼管顯示“”,等待輸入密碼。如圖5.1所示:圖5.1數(shù)碼管顯示密碼輸入時顯示F并依次左移,如密碼輸入錯誤可以使用“clr”鍵進(jìn)行清除,然后可以從新輸入。如圖5.2所示:圖5.2數(shù)碼管顯示F密碼輸入正確時,數(shù)碼管顯示簡單的便是“pass”,同時綠色指示燈亮起,開鎖電路運行,鎖被打開。如圖5.3所示:圖5.3數(shù)碼管顯pass本次設(shè)計的密碼鎖的密碼為數(shù)6位,當(dāng)密碼的位數(shù)少于或者多于6位的時候,數(shù)碼管上將提示“false”。如圖5.4所示:圖5.4密碼是輸入錯誤時,數(shù)碼管提示“error1”,如果繼續(xù)輸入第二次、第三次錯誤的時,數(shù)碼管將提示“error2”和“error3”,同時報警器報警提示,紅色指示燈閃爍,鍵盤鎖死,防止繼續(xù)操作。如圖5.5所示:圖5.5當(dāng)需要關(guān)閉密碼鎖的時候,直接按下鍵盤上的“l(fā)ock”鍵即可鎖定。數(shù)碼管恢復(fù)初始“”,黃色指示燈亮起。如圖5.6所示:圖5.65.2仿真調(diào)試中遇到的問題及解決辦法1問題描述:密碼在未輸入6位的情況下,摁下“enter”鍵,數(shù)碼管顯示“false”,無法返回初始輸入界面“”。解決辦法:“enter”鍵跳轉(zhuǎn)時,跳轉(zhuǎn)到開始即可。2問題描述:密碼正確輸入,“enter”鍵確認(rèn)后,數(shù)碼管顯示“pass”,這時直接按“clr”鍵,屏幕上顯示“error1”原因及解決辦法:“clr”的后面跳轉(zhuǎn)不對,需要加一個標(biāo)志位使數(shù)碼管的顯示恢復(fù)“pass”。3問題描述:在系統(tǒng)正常運行后,如果密碼鎖被用戶打開,此時用戶可以按下“l(fā)ock”鍵對其重新上鎖,但在運行過程中,雖然系統(tǒng)可以重新上鎖,但會在重新上鎖前,出現(xiàn)報警,并且數(shù)碼管顯示“error1”原因及解決辦法:因為系統(tǒng)運行的速度較快,按鍵還沒有復(fù)原,鍵盤的檢測便又一次檢測到了該按鍵,重復(fù)的操作了“l(fā)ock”鍵,系統(tǒng)提示錯誤。所以應(yīng)在檢測按鍵時,等待按鍵的復(fù)原,再進(jìn)行跳轉(zhuǎn)執(zhí)行該按鍵的程序指令??偨Y(jié)本次設(shè)計經(jīng)過一個月的時間終于完成,在這期間使我對大學(xué)的知識又進(jìn)行了一次學(xué)習(xí)、了解,特別是對一些以前學(xué)習(xí)過或者說是接觸過的應(yīng)用軟件加深了了解,并且通過網(wǎng)上和書本上的學(xué)習(xí)很成功的運用這些軟件對設(shè)計的硬件電路和軟件程序測試成功實現(xiàn)。雖然運用的還不是很熟練,一些功能還不是很了解,但是通過同學(xué)和老師的幫助,還是得到了很好的解決。本次設(shè)計的目標(biāo)均得到了實現(xiàn),具體如下:(1)產(chǎn)品性能穩(wěn)定,可靠。(2)加電后,數(shù)碼顯示管顯示;(3)輸入密碼時,只逐位顯示F,以防止密碼泄漏;(4)在任何掉電情況下,原設(shè)定密碼保持不變。(5)輸入密碼的過程中,如果不小心出現(xiàn)輸入的密碼錯誤,可以清除,然后繼續(xù)的進(jìn)行密碼的輸入。可以在開鎖后進(jìn)行密碼的修改,但需要兩次輸入確認(rèn)。(6)當(dāng)密碼輸入完畢按下確認(rèn)鍵時,單片機將輸入的密碼與設(shè)定的密碼比較,若密碼正確,則密碼鎖打開;若密碼不正確,則密碼鎖無法打開,在密碼輸入錯誤次數(shù)到達(dá)預(yù)設(shè)值時,啟動報警程序報警。但是由于水平和時間的關(guān)系,有些地方的設(shè)計還不進(jìn)人意。而這些地方還有待今后一一的去解決。致謝本文從開題到定稿,歷時一個多月。在本論文完成之際,首先要向我的指導(dǎo)老師石軍亮老師致以誠摯的謝意。在論文的寫作過程中,她給了我許許多多的幫助和關(guān)懷。同時她對工作的積極熱情、認(rèn)真負(fù)責(zé)、有條不紊、實事求是的態(tài)度,給我留下了深刻的印象,使我受益非淺。在此我向石老師致以真誠的謝意。同時還要感謝各科的老師,你們的辛勤栽培使我獲得了今天的成績,謝謝老師們。當(dāng)然,我還要感謝我周圍的同學(xué),他們在這次設(shè)計中給予了我很多的幫助,沒有他們的幫助,在這短短的一個多月時間內(nèi),我是不可能這么好的完成我的設(shè)計的。尤其是對一些應(yīng)用軟件的運用,開始基本上是不會用,但是經(jīng)過了大家的幫助,我學(xué)會了基本的操作。同時感謝寢室的兄弟給予我的鼓勵和支持,感謝他們的陪伴?,F(xiàn)在即將離開學(xué)校、老師、同學(xué),還有我四年的大學(xué)生活,雖然依依不舍,但是對未來的路,我充滿了信心。最后,感謝在大學(xué)期間認(rèn)識我和我認(rèn)識的所有人,有你們伴隨,才有了我豐富多彩的大學(xué)生活。參考文獻(xiàn)[1]余發(fā)山,王福忠.單片機原理及應(yīng)用技術(shù)[M].徐州:中國礦業(yè)大學(xué)出版社,2021[2]康華光.電子技術(shù)基礎(chǔ)(模擬部分)[M].北京:高等教育出版社,2006[3]康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分)[M].北京:高等教育出版社,2006[4]潘永雄.新編單片機原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003[5]張毅剛.MCS51單片機應(yīng)用設(shè)計[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004[6]周潤景,張麗娜,丁莉.基于Proteus的電路及單片機設(shè)計與仿真(第2版)[M].北京:北京航空航天大學(xué)出版社[7]李廣第等.單片機基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001.[8]彭為.單片機典型系統(tǒng)設(shè)計實例精講[M].北京:電子工業(yè)出版社,2006.附錄電子密碼鎖PCB圖源程序(部分):*******************************************************;以下6個字節(jié)存放6位需要數(shù)碼管顯示的數(shù)據(jù)LED_BIT_1 EQU 30H LED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35H;以下6個字節(jié)存放初始密碼WORD_1EQU 38HWORD_2 EQU 39HWORD_3 EQU 3AHWORD_4 EQU 3BHWORD_5 EQU 3CHWORD_6 EQU 3DH;以下6個字節(jié)存放用戶輸入的6位密碼KEY_1 EQU 3EHKEY_2 EQU 3FHKEY_3 EQU 40HKEY_4 EQU 41HKEY_5 EQU 42HKEY_6 EQU 43H;************************************CNT_A EQU 44HCNT_B EQU 45HKEY_CNT EQU 46H ;已輸出的密碼位數(shù)LINE EQU 47H ;按鍵行號ROW EQU 48H ;按鍵列號VAL EQU 49H ;鍵值CNT_ERROR EQU 4AHWORD_ADRESS EQU 4BH;以下6個字節(jié)存放用戶新設(shè)的密碼WORD_1SET EQU 4CHWORD_2SET EQU 4DHWORD_3SET EQU 4EHWORD_4SET EQU 4FHWORD_5SET EQU 50HWORD_6SET EQU 51HKEY_CNT_SET EQU 36H ;存放用戶設(shè)置密碼時輸入的位數(shù);以下為讀寫I2C芯片時用到的暫存單元ACK BIT 00H ;應(yīng)答標(biāo)志位SLA DATA 54H ;器件地址字SUBA DATA 55H ;器件子地址NUMBYTE DATA56H ;讀/寫字節(jié)數(shù)SDA BIT P3.7SCL BIT P3.6 ;I2C總線定義MTD EQU 4CH ;發(fā)送數(shù)據(jù)緩存區(qū)首地址(4CH-51H)MRD EQU 38H ;接收數(shù)據(jù)緩存區(qū)首地址(38H-3DH)SET_TIMES EQU 37H;定義狀態(tài)指示燈LED_GREEN BIT P3.4LED_RED BIT P3.5LED_YELLOW BIT P3.2;以下為初始化程序,包括數(shù)據(jù)存儲空間初始化,設(shè)置初始密碼 ORG 0000H LJMP FIRST ORG 000BH LJMP INT_T0 ORG 0100HFIRST: MOV SET_TIMES,#0 MOV WORD_1SET,#01H ;設(shè)置初始密碼為"123456" MOV WORD_2SET,#02H MOV WORD_3SET,#03H MOV WORD_4SET,#04H MOV WORD_5SET,#05H MOV WORD_6SET,#06H;向24C01C中寫數(shù)據(jù),數(shù)據(jù)存放在24C MOV SLA,#0A0H ;24C01C MOV SUBA,#00H ;目標(biāo)地址 MOV NUMBYTE,#6 ;字節(jié)數(shù) LCALL IWRNBYTE ;寫數(shù)據(jù) ;***************************************************; LCALLDIY_LS ;加延時程序;**************************************************;;從24C01C中讀數(shù)據(jù),數(shù)據(jù)送AT89C MOV SLA,#0A0H ;24C01C MOV SUBA,#00H ;目標(biāo)地址 MOV NUMBYTE,#6 ;字節(jié)數(shù) LCALL IRDNBYTE ;寫數(shù)據(jù);****************************************************; BEGIN: MOV CNT_ERROR,#00H START: CLR LED_YELLOW ;上鎖指示燈 SETB LED_GREEN ;開鎖指示燈滅 SETB LED_RED ;密碼錯誤指示燈滅 MOV KEY_CNT_SET,#00H MOV CNT_A,#00H ;程序初始化 MOV CNT_B,#00H MOV KEY_CNT,#00H MOV LINE,#00H MOV ROW,#00H MOV VAL,#00H MOV WORD_ADRESS,#4CHMOV LED_BIT_1,#0AH ;led燈全"-" MOV LED_BIT_2,#0AH MOV LED_BIT_3,#0AH MOV LED_BIT_4,#0AH MOV LED_BIT_5,#0AH MOV LED_BIT_6,#0AH MOV KEY_1,#00H ;輸入密碼存儲區(qū)清0 MOV KEY_2,#00H MOV KEY_3,#00H MOV KEY_4,#00H MOV KEY_5,#00H MOV KEY_6,#00HMOV TMOD,#01H ;定時器T0選擇方式1 MOV TH0,#(65536-700)/256 MOV TL0,#44h ;#(65536-700)MOD 256 MOV IE,#82H ;CPU開中斷,定時器1開中斷 ;以下為程序循環(huán)部分 LCALL BCD LCALL DISP;以下為鍵盤掃描程序,計算鍵值并存入VALA0:NOPLSCAN: MOV P1,#0F0H ;掃描行碼 L1: JNB P1.0,L2 LCALL DLY_S JNB P1.0,L2 MOV LINE,#00H LJMP RSCAN L2: JNB P1.1,L3 LCALL DLY_S JNB P1.1,L3 MOV LINE,#01H LJMP RSCAN L3: JNB P1.2,L4 LCALL DLY_SJNB P1.2,L4 MOV LINE,#02H LJMP RSCAN L4: JNB P1.3,A0 LCALL DLY_S JNB P1.3,A0 MOV LINE,#03HRSCAN: MOV P1,#0FH ;掃描列碼 C1: JNB P1.4,C2 MOV ROW,#00H LJMP CALCU C2: JNB P1.5,C3 MOV ROW,#01H LJMP CALCU C3: JNB P1.6,C4 MOV ROW,#02H LJMP CALCU C4: JNB P1.7,C1 MOV ROW,#03H LJMP CALCUCALCU: MOV A,LINE ;計算鍵值 MOV B,#04H MUL AB ADD A,ROW MOV VAL,A;以下為按鍵處理程序,對不同的按鍵作出響應(yīng) CJNE A,#0AH,J1 ;是否為"CLR"鍵 JNB LED_GREEN,CLR_KEY MOV R1,KEY_CNT CJNE R1,#00H,J2 LCALL ALARM_1LCALLFALSELJMP STARTCLR_KEY:LCALL ALARM_1 LCALLFALSE LJMP A1 J2: LCALL SHIFTR DEC KEY_CNT LCALL BCD LCALL DISP ;等待按鍵抬起 W00:LCALL DLY_1S MOV A,P1 CJNE A,#0FH,W01 LJMP A0 W01:MOV A,P1 CJNE A,#0F0H,W02 LJMP A0 W02:SJMP W00 J1:MOV A,VAL CJNE A,#0CH,J11 ;是否為SET鍵 LCALL DLY_S JB LED_GREEN,SET_ERROR W00_SET: LCALL DLY_S MOV A,P1 CJNE A,#0FH,W01_SET LJMP SET_P W01_SET: MOV A,P1 CJNE A,#0F0H,W02_SET LJMP SET_P W02_SET: SJMP W00_SETSET_ERROR:LCALL ALARM_1 LCALLFALSE LJMP BEGINJ11:MOV A,VALCJNE A,#0DH,J22 ;是否為LOCK鍵LCALL DLY_SJNB LED_GREEN,LOCKLOCK_ERROR:LCALL ALARM_1LCALLFALSELOCK:NOPW00_LOCK:LCALL DLY_S MOV A,P1 CJNE A,#0FH,W01_LOCK LJMP BEGIN W01_LOCK: MOV

溫馨提示

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

評論

0/150

提交評論