【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第1頁
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第2頁
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第3頁
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第4頁
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

緒論1.1選研究的目的與意義隨著中國經(jīng)濟(jì)的快速發(fā)展和國民生活水平的逐步提高,人們在日常生活的各個(gè)方面都追求更高的水平。以我們家離不開的鎖具為例,從我國古代史上就有各種鎖具的記載和使用,到今天人們的發(fā)展所追求的不僅僅是用來鎖門的一種工具。人們對鎖具的追求體現(xiàn)在心理上的安全感以及在使用先進(jìn)技術(shù)的過程中的經(jīng)驗(yàn)。所以智能電子鎖的發(fā)展趨勢尤為明顯,市場上的受眾度也非常高。這款智能鎖是根據(jù)現(xiàn)代人的生活習(xí)慣和生活趨勢而設(shè)計(jì)的。它可以通過手機(jī)和指紋控制鎖的開關(guān)。非常方便快捷,安全系數(shù)遠(yuǎn)高于以往的機(jī)械鎖。智能鎖的發(fā)明和使用大大減少了攜帶鑰匙和容易丟失鑰匙的問題,給我們的生活帶來了更多的安全和方便。它是現(xiàn)代社會(huì)發(fā)展的必然產(chǎn)物。1.2國內(nèi)外研究現(xiàn)狀目前,與西方發(fā)達(dá)國家相比,我國的電子密碼鎖技術(shù)還相對落后。在西方發(fā)達(dá)國家,電子密碼鎖品種繁多,技術(shù)先進(jìn),已廣泛應(yīng)用于各個(gè)領(lǐng)域。在我國,電子密碼鎖技術(shù)相當(dāng)于世界70年代的水平,相對落后。20世紀(jì)80年代以來,隨著各種電子集成電路的出現(xiàn),特別是單片機(jī)的出現(xiàn),電子密碼鎖得到了很大的發(fā)展。與傳統(tǒng)機(jī)械鎖的笨重結(jié)構(gòu)相比,電子鎖具有體積小、可靠性高的優(yōu)點(diǎn)。但是目前電子密碼鎖的價(jià)格比較高,而且需要提供電源,這在一定程度上限制了它的使用。特別是在我國,各種條件的限制使得電子密碼鎖暫時(shí)難以普及。雖然電子密碼鎖也有一些缺點(diǎn),但其安全性高、使用方便、智能報(bào)警的優(yōu)點(diǎn)是傳統(tǒng)鑰匙鎖所不能替代的,隨著電子信息技術(shù)的不斷發(fā)展和各種電子設(shè)備價(jià)格的降低,電子鎖朝著低成本、多功能的方向發(fā)展。1.3課題研究內(nèi)容本課題為無線電子密碼鎖,本課題選用STC89C52單片機(jī)作為主控制器,可以實(shí)現(xiàn)無線電子密碼鎖的設(shè)計(jì),本設(shè)計(jì)采用紅外遙控,可以進(jìn)行遠(yuǎn)程密碼輸入,如果密碼正確控制,將各個(gè)功能有機(jī)地結(jié)合在一起,首先設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)方案,完成系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)。確定各個(gè)功能的具體方案,明確所有設(shè)計(jì)細(xì)節(jié),設(shè)備選型。根據(jù)選定的設(shè)備型號(hào),設(shè)計(jì)各部分的初始系統(tǒng)電路圖,將各功能的電路圖連接在一起,繪制系統(tǒng)總體電路圖。根據(jù)連接關(guān)系設(shè)計(jì)了軟件。軟件設(shè)計(jì)采用C語言編寫,完成了各功能代碼的開發(fā)。進(jìn)行了模塊化設(shè)計(jì),并進(jìn)行了最終組合。最后對系統(tǒng)進(jìn)行調(diào)試,驗(yàn)證代碼的邏輯結(jié)構(gòu),功能能否實(shí)現(xiàn),優(yōu)化設(shè)計(jì)缺陷,直至系統(tǒng)功能實(shí)現(xiàn)。2系統(tǒng)方案設(shè)計(jì)2.151單片機(jī)密碼鎖系統(tǒng)的工作原理本設(shè)計(jì)原理比較簡單,整個(gè)電路主要由一個(gè)按鍵和三個(gè)芯片組成。觸發(fā)器由一個(gè)D觸發(fā)器組成,分三個(gè)階段連接了三個(gè)雙穩(wěn)態(tài)級(jí)別,僅當(dāng)高級(jí)雙穩(wěn)態(tài)處于活動(dòng)狀態(tài)時(shí),才能激活低級(jí)雙穩(wěn)態(tài)。雙向SD卡基于4017CP0連接器。同時(shí),將兩個(gè)可打開的CD連接到一個(gè)保護(hù)鍵和六個(gè)密碼保護(hù)鍵。4017D未連接到按鈕,此接線如圖2-1所示。其工作原理如圖2-1所示,其前是電流電阻,以減少與接地和可調(diào)電阻環(huán)路并聯(lián)的晶體管BCX38B電解電容器。當(dāng)按下按鈕時(shí),由于在BCX38B開關(guān)周期期間電容器已連接,充電和放電,因此晶體管的集電極電壓實(shí)際上為零,因此CD端D觸發(fā)器被停用。如果初級(jí)電流足夠高,則可以保持集電極的三倍電壓而不會(huì)影響CD的末端。因此,在按下與另一面部保護(hù)裝置D的時(shí)鐘翻轉(zhuǎn)點(diǎn)D(Q=1)相連的觸發(fā)器D的第一固定端子面之后,按下第二D觸發(fā)器(-Q=0)。MR(重置結(jié)束)4017被禁用,時(shí)鐘按鈕(即4017的高性能Q1端子)連接到連接器4017CP1,并按兩次Q2,以獲得較高的電平。按下3次,向上移動(dòng)Q3引腳并打開2sc1815晶體管,繼電器將正常閉合,并且代碼可以將訪問權(quán)限設(shè)置為4-6位。如果電容器放電時(shí)間很快,基本電流不足以在不關(guān)閉密碼的情況下在CD側(cè)面安裝D觸發(fā)器。圖2-1系統(tǒng)電路原理圖2.2系統(tǒng)整體架構(gòu)設(shè)計(jì)無線電子密碼鎖主要包括顯示控制、鍵盤輸入、主控制器、報(bào)警控制和存儲(chǔ)模塊。在簡單密碼鎖系統(tǒng)的硬件設(shè)計(jì)中,選用單片機(jī)作為系統(tǒng)的核心控制元件。具體的設(shè)計(jì)內(nèi)容包括超聲方案的選擇、單片機(jī)的設(shè)計(jì)以及傳感器的類型和型號(hào)。此外,顯示模塊的設(shè)計(jì)需要與各種組件相結(jié)合;在系統(tǒng)軟件設(shè)計(jì)中,最核心的內(nèi)容是系統(tǒng)程序設(shè)計(jì),程序計(jì)算結(jié)果可以通過顯示模塊顯示出來。用戶可以通過鍵盤或紅外遙控器輸入密碼數(shù)據(jù),系統(tǒng)判斷密碼數(shù)據(jù)是否正確,并控制電磁鎖模塊的開啟和關(guān)閉。鍵盤可以修改密碼。系統(tǒng)架構(gòu)如圖2-2所示。圖2-2系統(tǒng)整體框圖2.3主控制器方案方案一:STC89C52單片機(jī)。對于51系列單片機(jī)的性能分析,其可靠性高,且具有價(jià)格低廉、功耗低、加密性強(qiáng)的優(yōu)點(diǎn),而對于STC系列單片機(jī),則可以進(jìn)行在線工作處理,更加方便。系統(tǒng)選用STC89C51單片機(jī)作為核心模塊。51系列單片機(jī)無論從性能和價(jià)格等方面都有很大的優(yōu)勢,運(yùn)行穩(wěn)定,性價(jià)比高,價(jià)格相對便宜,且功耗低,加密能力強(qiáng),而在系統(tǒng)核心模塊的選擇上采用STC系列可以有效地提高系統(tǒng)的工作效率,可以在工作狀態(tài)下進(jìn)行在線操作,使系統(tǒng)工作更加方便。方案二:MSP430系列MCU。優(yōu)點(diǎn):芯片上集成資源豐富,運(yùn)行速度快。缺點(diǎn):工作電壓不是+5V,需要額外增加+5V轉(zhuǎn)換電路;過壓或過流擊穿I/O口;此外,沒有內(nèi)部EEPROM,無法實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。本設(shè)計(jì)中的查表算法非常有用。在這樣的處理器代碼設(shè)計(jì)中,可以完成一個(gè)更標(biāo)準(zhǔn)化、完整的程序。該處理器最重要的特點(diǎn)是低功耗模式,功耗非常低,可以在很多功耗要求較低的場合使用。這種低功耗模式,可編程控制,應(yīng)用靈活,非常方便。缺點(diǎn):工作電壓不是+5V,需要額外增加+5V轉(zhuǎn)換電路;過壓或過流擊穿I/O口;此外,沒有內(nèi)部EEPROM,無法實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。方案三:選擇STM32F103RBT6處理器,處理器搭配的是ARM型32位的M3核的CPU,此款處理器計(jì)算速度快、采購成本低、功耗低的32位處理器。目前此處理器在大量的電子商品上進(jìn)行使用,比如電子農(nóng)業(yè)領(lǐng)域、電動(dòng)汽車領(lǐng)域、共享行業(yè)等領(lǐng)域,這些領(lǐng)域都有使用此產(chǎn)品的例子。處理器的運(yùn)行速度可達(dá)72兆赫茲,高速的運(yùn)行,是由于內(nèi)部設(shè)備都可以進(jìn)行高速操作,STM32最大的特點(diǎn)就是輸入輸出接口數(shù)量多。此款處理器還搭配了兩個(gè)模數(shù)轉(zhuǎn)換器,轉(zhuǎn)換精度達(dá)到12個(gè)數(shù)據(jù)位,檢測精度很高,可以處理18路模擬數(shù)據(jù),處理器的模數(shù)轉(zhuǎn)換的很多參數(shù)都可以進(jìn)行代碼控制、可編程操作,例如模數(shù)轉(zhuǎn)換頻率,多通道的掃描方式。方案選擇:由于設(shè)計(jì)需要低成本,器件使用效率也要達(dá)到最高,方案二還需要進(jìn)行電源再轉(zhuǎn)換,設(shè)計(jì)電路復(fù)雜,明顯成本要高,方案一就可以滿足整個(gè)系統(tǒng)設(shè)計(jì)要求,設(shè)計(jì)費(fèi)用遠(yuǎn)小與另外兩個(gè)方案,所以選擇方案一。而方案三的利用率不能更好的體現(xiàn),所以方案三也排除。2.4顯示方案設(shè)計(jì)方案一:LCD1602。該模塊顯示的內(nèi)容多種多樣,而且非常簡單,價(jià)格合理,非常適合在本設(shè)計(jì)中使用。雖然這種顯示電路中出現(xiàn)的接口有點(diǎn)復(fù)雜,接口太多,但是這些接口給設(shè)計(jì)后期的電路測試和調(diào)試提供了方便。最重要的是液晶的電源與系統(tǒng)電源是一致的,所以沒有必要單獨(dú)設(shè)計(jì)供電系統(tǒng)。LCD1602。該模塊顯示的內(nèi)容多種多樣,而且非常簡單,價(jià)格合理,對于本設(shè)計(jì)來說,非常適用。雖然接口線連接比較多,但是后期對整個(gè)電路的測試,會(huì)很容易得到測試結(jié)果。方案二:選擇數(shù)碼管作為顯示設(shè)備。有很多數(shù)碼管用于數(shù)據(jù)顯示在當(dāng)前的市場,但在系統(tǒng)的工作,需要每個(gè)值對應(yīng)于一個(gè)數(shù)碼管,如果顯示多行和多個(gè)值,顯然需要更多的數(shù)碼管,給整個(gè)設(shè)計(jì)帶來的負(fù)擔(dān)。同時(shí),數(shù)碼管在進(jìn)行動(dòng)態(tài)掃描時(shí),由于需要移動(dòng)其位置,需要使用移位器輔助。只有將掃描到的信息存儲(chǔ)在移位器的寄存器中,才能實(shí)現(xiàn)最終的顯示功能,所以LED會(huì)有很多缺陷。另外,在電路測試中容易受到一些不必要的因素的影響,因此顯示方案不適合本設(shè)計(jì)。因?yàn)榭紤]到本測控系統(tǒng)中顯示的數(shù)字東西比較多,液晶顯示LCD1602能滿足這條件,LED數(shù)碼管只能顯示常用的數(shù)字,以及有限的字母,所以最終選擇方案一。2.5無線方案設(shè)計(jì)方案一:ESP8266系列模組是安信可科技設(shè)計(jì)的在樂鑫ESP8266的非常小能耗的UART-WiFi上開發(fā)的模塊,此產(chǎn)品開發(fā)上手容易,可以和云進(jìn)行連接,移動(dòng)設(shè)備可以和WiFi進(jìn)行連接,完成智能數(shù)據(jù)傳輸,完成系統(tǒng)設(shè)計(jì)。產(chǎn)品集成度很高,整個(gè)設(shè)計(jì)集成在很小的一塊PCB板上,引出了可用接口。模塊的能耗非常小,內(nèi)部的處理器是32位MCU,也可以進(jìn)行16位操作,無線傳輸頻率是80兆赫茲以及160兆赫茲,模塊本身設(shè)計(jì)有天線,可以與網(wǎng)絡(luò)進(jìn)行通信,實(shí)現(xiàn)云端智能數(shù)據(jù)傳輸,能夠完成TCP/IP協(xié)議的建立。模塊能夠的控制簡單,用過AT指令就能夠和單片機(jī)進(jìn)行數(shù)據(jù)傳輸,控制WiFi模塊。方案二:通過紅外遙控進(jìn)行控制,紅外遙控只需要搭配紅外接收頭既可以進(jìn)行信號(hào)接收,接收端對紅外信號(hào)進(jìn)行解釋完成對按鍵的識(shí)別,不同的按鍵發(fā)出的紅外信號(hào)波形不同,所以可以實(shí)現(xiàn)不同按鍵的操作。方案選擇:由于方案一設(shè)計(jì)復(fù)雜,電路復(fù)雜,成本遠(yuǎn)高于方案二,所以選擇方案二紅外遙控控制。

3系統(tǒng)電路設(shè)計(jì)3.1單片機(jī)控制模塊電路設(shè)計(jì)STC89C52內(nèi)部8KFlash存儲(chǔ)電路,可以存儲(chǔ)相關(guān)數(shù)據(jù),這種單片機(jī)應(yīng)用非常廣泛,開發(fā)簡單,電路設(shè)計(jì)容易,可以加快開發(fā)團(tuán)隊(duì)的開發(fā)進(jìn)度,縮短開發(fā)周期。開發(fā)成本低,被許多企業(yè)所選擇。該設(shè)備內(nèi)部運(yùn)行速度快,引腳數(shù)量大,是許多開發(fā)方案的首選。輸入和輸出量是32,分別設(shè)計(jì)了四組,銷0口,口針1和2、3針,有多個(gè)計(jì)時(shí)器,精確的計(jì)時(shí)數(shù)據(jù),中斷設(shè)計(jì)也非常方便,定時(shí)器和中斷的結(jié)合,可以實(shí)現(xiàn)更復(fù)雜的功能需求,并且還可以嵌套多個(gè)中斷執(zhí)行。除了常用的輸入輸出接口外,單片機(jī)還需要時(shí)鐘接口、復(fù)位接口、電源接口。時(shí)鐘接口有18針、19針,設(shè)計(jì)選擇12MHZ晶片。復(fù)位接口為9針,復(fù)位信號(hào)通過單片機(jī)的9針輸入。單片機(jī)的復(fù)位動(dòng)作對信號(hào)有要求。復(fù)位信號(hào)時(shí)間必須持續(xù)兩個(gè)以上的時(shí)鐘周期,并且必須是高電平。AT89C52晶片是一個(gè)12MHZ晶體振蕩器,時(shí)鐘是大約12MHZ頻率,所以計(jì)算周期是1微妙,復(fù)位動(dòng)作輸入9針接口可以被添加到備份電源,確保芯片內(nèi)部的數(shù)據(jù)不會(huì)丟失由于電源故障。單片機(jī)接口是EA31英尺,這針是處理器可以確定的位置代碼,它是內(nèi)部或外部,高水平的輸入到31英尺,因此說使用單片機(jī)內(nèi)部存儲(chǔ)代碼,如果低電平輸入31英尺,所以你說單片機(jī)使用外部存儲(chǔ)代碼。最小系統(tǒng)電路如圖3-1所示。單片機(jī)的運(yùn)行離不開晶振電路,晶振電路是單片機(jī)系統(tǒng)必不可少的外圍硬件。如果電路出現(xiàn)異常,單片機(jī)系統(tǒng)就會(huì)癱瘓,無法運(yùn)行,導(dǎo)致整個(gè)系統(tǒng)故障。微控制器的所有程序都是在寫入只讀存儲(chǔ)器時(shí)刻錄的,微控制器系統(tǒng)啟動(dòng)后必須讀取程序。處理器讀取一段代碼所需的時(shí)間是處理器的機(jī)器周期之一,而這段時(shí)間是處理器的節(jié)拍。處理器有一個(gè)晶體振蕩器,它創(chuàng)建整個(gè)系統(tǒng)開始運(yùn)行所需的時(shí)鐘。因此,晶振電路是處理器運(yùn)行的核心外圍電路。本次設(shè)計(jì)選用的是12mhz的振動(dòng)源。單片機(jī)具有內(nèi)部振動(dòng)源,但由于設(shè)計(jì)需要,選擇外部振動(dòng)源。晶體振蕩器的作用是給處理器拍頻信號(hào),也就是脈沖,處理器根據(jù)這個(gè)拍頻工作,所以這個(gè)拍頻就是處理器的工作速度。這個(gè)方案選擇12MHZ振蕩源,因此處理器將在12mbps的速度工作,每個(gè)處理器的速度是有限的,不能太高,這個(gè)處理器的最高速度是420MHZ,如果選擇了振蕩源過大,SCM不能在這個(gè)速度工作。振動(dòng)源的兩個(gè)引腳與單片機(jī)的XTAL0和XTAL1連接,使處理器可以輸入節(jié)拍。該電路的設(shè)計(jì)必須防止干擾,特別是在器件布局上。如果電路設(shè)計(jì)不好,單片機(jī)無法獲得拍頻信號(hào),系統(tǒng)運(yùn)行必然癱瘓。晶體工作可能很高興波,信號(hào)不影響單片機(jī)打信號(hào)采集,還可以帶來穩(wěn)定,影響晶體制造商設(shè)計(jì)方案的設(shè)計(jì),和源輸出到單片機(jī)輸入之間的兩個(gè)電容,其電容大小在10~50pfpf之間,另一側(cè)電容為GND,這種設(shè)計(jì)可以消除電波的影響。最小系統(tǒng)電路如圖3-1所示。圖3-1單片機(jī)最小系統(tǒng)電路3.2鍵盤掃描模塊電路設(shè)計(jì)由單片機(jī)組成的密碼輸入控制系統(tǒng),通??梢詫?shí)現(xiàn)智能控制,該儀器采用的是頻率最高的非編碼鍵盤,而這樣的鍵盤又分為獨(dú)立的和行列式的兩種不同類型的鍵盤,這種行列式鍵盤又稱為矩陣鍵盤。而在本設(shè)計(jì)中,獨(dú)立鍵盤的選擇,是通過判斷按鍵時(shí)芯片引腳電壓的變化來控制的。該方法簡單有效,非常適合于密碼輸入控制系統(tǒng)。在系統(tǒng)設(shè)計(jì)中,人機(jī)交互需要通過按鍵來實(shí)現(xiàn),按鍵的電路設(shè)計(jì)需要與軟件相結(jié)合。同時(shí)需要根據(jù)實(shí)際使用中出現(xiàn)的問題進(jìn)行分析。掃描鍵盤的簡單方法是不可能實(shí)現(xiàn)的。該系統(tǒng)中的單片機(jī)鍵盤在實(shí)際使用時(shí)是獨(dú)立的,而且還要設(shè)計(jì)按鍵的矩陣,這兩個(gè)方面有很大的區(qū)別。鍵盤電路的設(shè)計(jì)也有一個(gè)很好的功能,即它可以有效的節(jié)省端口的資源,所以在鍵盤電路的設(shè)計(jì)中,人們通常選擇矩陣鍵盤,這樣可以更好地優(yōu)化多鍵電路。系統(tǒng)選用矩陣鍵盤進(jìn)行數(shù)據(jù)輸入。矩陣鍵盤的水平線(行線)和垂直線(列線)沒有連接關(guān)系,唯一的連接關(guān)系是利用一個(gè)按鍵連接的,選擇此行列式矩陣結(jié)構(gòu)方法僅僅有4條行線以及4條列線,這樣就能夠設(shè)計(jì)成4×4個(gè)按鍵的矩陣鍵盤。電路中行線所在的接口的單片機(jī)4個(gè)單片機(jī)接口使用為輸出端,電路中列線所在的接口的單片機(jī)4個(gè)單片機(jī)接口使用為輸入端。如果無按鍵按下時(shí),全部輸出接口都為高電平,說明此時(shí)沒有按鍵按下。但是有按鍵按下,肯定會(huì)有輸入接口為低電平,利用輸入接口的狀態(tài)采集信號(hào),判斷信號(hào)是否有效。按鍵K2~K4、K6~K8、K10~K12,分別表示數(shù)字1到9,K5為A按鍵,K9為B按鍵,K14為*按鍵,K15為數(shù)字0,K16為#按鍵,K17為D按鍵。電路如圖3-2所示。圖3-24×4矩陣鍵盤原理圖3.3密碼存儲(chǔ)電路密碼存儲(chǔ)電路是為了對設(shè)置的密碼進(jìn)行存儲(chǔ),此電路在沒有電源的情況下數(shù)據(jù)也不會(huì)丟失,所以可以對密碼數(shù)據(jù)進(jìn)行長期保存。如果系統(tǒng)斷電了,數(shù)據(jù)依然會(huì)保存在存儲(chǔ)電路中。電路圖如圖3-3所示。圖3-3密碼存儲(chǔ)電路圖3.4液晶顯示電路本文選用LCD1602液晶顯示。本設(shè)計(jì)中,加濕器在工作中需要對當(dāng)前系統(tǒng)信息進(jìn)行顯示,因此選擇能顯示內(nèi)容較多的性價(jià)值比的LCD1602液晶顯示屏。LCD1602液晶顯示器性價(jià)比高、接口多、功能豐富,這使得它具有極廣的應(yīng)用范圍。在系統(tǒng)設(shè)計(jì)當(dāng)中選用液晶顯示器來進(jìn)行數(shù)值的顯示有著諸多的優(yōu)點(diǎn):從顯示的效果上看,液晶顯示的穩(wěn)定性要更高,而且非常清晰,在接收到從單片機(jī)傳來的信息后,顯示器的屏幕會(huì)被自動(dòng)點(diǎn)亮,且亮度會(huì)一直保持不變,而在不需要顯示的時(shí)候又會(huì)對屏顯進(jìn)行刷新,直到接收到其他的顯示命令為止。從內(nèi)容與形式上看,液晶顯示器能夠?qū)Χ喾N數(shù)據(jù)信號(hào)進(jìn)行顯示而不像LED顯示器那樣只能顯示數(shù)值,同時(shí)在對顯示器進(jìn)行電路設(shè)計(jì)的時(shí)候也比較簡單,數(shù)據(jù)信號(hào)的轉(zhuǎn)化更便捷。在液晶顯示器的內(nèi)部,液晶分子的狀態(tài)會(huì)隨著顯示內(nèi)容的不同而發(fā)生改變,而且價(jià)格比較低,質(zhì)量很輕,有著比較高的安全性。液晶顯示器在工作狀態(tài)下也有著一定的缺點(diǎn),例如對電能的消耗很大,液晶芯片的驅(qū)動(dòng)需要靠電機(jī)來完成,這就使得液晶顯示器不但驅(qū)動(dòng)芯片需要電能,同時(shí)電機(jī)的工作也需要耗費(fèi)很多電能。如圖3-4所示。圖3-4液晶接口電路圖3.5報(bào)警電路該系統(tǒng)的報(bào)警模塊由蜂鳴器。蜂鳴器負(fù)責(zé)聲音報(bào)警。蜂鳴器驅(qū)動(dòng)電路簡單,只需要一個(gè)三極管放大就可以驅(qū)動(dòng),而且控制方面只需要一個(gè)IO口,成本價(jià)格低廉。它們的驅(qū)動(dòng)電路圖如圖3-5。圖3-5蜂鳴器報(bào)警電路圖3.6鎖控制電路設(shè)計(jì)鎖控制硬件設(shè)計(jì)選取繼電器進(jìn)行實(shí)現(xiàn)。利用繼電器的動(dòng)作操作鎖的開與關(guān)。由于單片機(jī)的IO電流不夠,所以需要設(shè)計(jì)繼電器驅(qū)動(dòng)電路,選擇PNP三極管控制繼電器。電路圖如圖3-6所示。圖3-6鎖控制電路3.7紅外遙控接收電路紅外遙控操作方式的軟件制作作主要是解碼的問題。將接收頭硬件焊接好,給接收頭接好電源,通過對遙控器的操作,用示波器觀察接收頭的輸出信號(hào)波形。編碼的數(shù)據(jù)格式包括了引導(dǎo)碼、用戶碼、數(shù)據(jù)碼和數(shù)據(jù)碼反碼,編碼總占32位。數(shù)據(jù)反碼是數(shù)據(jù)碼反相后的編碼,在數(shù)據(jù)碼接收時(shí)可以用來檢測數(shù)據(jù)碼是否正確。發(fā)射一串編碼脈沖需要108ms。用戶碼或數(shù)據(jù)碼中的每一個(gè)位可以是‘1’,還可以是‘0’?!?’和‘1’的時(shí)序區(qū)別是脈沖和脈沖之間的時(shí)間間隔不同。如圖3-7。圖3-7紅外遙控接收電路圖3.8系統(tǒng)電路無線電子密碼鎖主要包括顯示控制電路、鍵盤輸入電路、主控制器電路、報(bào)警控制電路、紅外遙控接收電路以及存儲(chǔ)模塊電路。電子密碼鎖的硬件電路設(shè)計(jì)圖如圖3-8所示。圖3-8系統(tǒng)電路圖

4系統(tǒng)軟件設(shè)計(jì)C語言是目前使用最多的單片機(jī)開發(fā)語言,其語言設(shè)計(jì)簡單易懂。這個(gè)發(fā)展陳述很容易理解,很像英語,一些關(guān)鍵詞和英語的意思可以在數(shù)字上。C語言可以用簡單的語句實(shí)現(xiàn)很多復(fù)雜的邏輯,與匯編語言相比,C語言具有明顯的優(yōu)勢。匯編語言很難理解,不適合開發(fā)。C語言的出現(xiàn)使開發(fā)人員更容易完成軟件設(shè)計(jì)。開發(fā)環(huán)境是Keil,專門的SCM開發(fā)工具。4.1整體流程電子密碼鎖工作的主要過程是LCD1602液晶屏提示開始輸入密碼,通過鍵盤輸入密碼,同時(shí)液晶屏顯示密碼輸入,按確認(rèn)鍵確定密碼的正確性,進(jìn)行解鎖或報(bào)警處理。如果密碼連續(xù)3次輸入錯(cuò)誤,系統(tǒng)將產(chǎn)生告警。密碼設(shè)置方法如下:在程序中,密碼可以固定在40H~45H,假設(shè)初始密碼為123456,共6個(gè)字符。使用兩個(gè)按鍵完成密碼輸入,一個(gè)是功能按鍵,另一個(gè)是數(shù)字按鍵。輸入密碼時(shí),先輸入密碼的長度,再根據(jù)密碼的長度輸入數(shù)字位數(shù),直到輸入完密碼的全部長度。再次輸入確認(rèn)密鑰,表示密碼輸入過程已經(jīng)完成。下一步是比較密碼的處理過程,并給出相應(yīng)的處理結(jié)果。圖4-1軟件設(shè)計(jì)流程圖4.2液晶顯示單片機(jī)將需要顯示的數(shù)據(jù)傳送至顯示器當(dāng)中,首先要對其進(jìn)行初始化才能進(jìn)行相關(guān)數(shù)據(jù)的傳送。由于顯示器在工作的時(shí)候使用的是移位數(shù)據(jù)顯示,因此在完成初始化的同時(shí)單片機(jī)會(huì)選擇顯示器的數(shù)據(jù)傳送地址,并不斷向其發(fā)送數(shù)據(jù),進(jìn)而使得顯示器顯示出相關(guān)信息數(shù)據(jù)。如圖4-2所示。圖4-2LCD1602顯示流程圖4.3按鍵識(shí)別鍵盤采用的是矩陣鍵盤,一共需要8個(gè)IO口去控制,其中4個(gè)IO口不斷的進(jìn)行數(shù)據(jù)輸出掃描,另外4個(gè)IO口進(jìn)行輸入檢測。圖4-3鍵盤掃描軟件設(shè)計(jì)流程圖4.4密碼設(shè)置子程序項(xiàng)目包含很多外圍模塊,為了更好地進(jìn)行代碼設(shè)計(jì),選取了模塊化編程,其中密碼設(shè)置為整個(gè)代碼開發(fā)的一部分,這樣的設(shè)計(jì)方案不僅僅節(jié)省開發(fā)時(shí)間,而且在后期的調(diào)試以及錯(cuò)誤處理也是非常高效的,而且可以很快地定位到錯(cuò)誤代碼處,子程序的數(shù)量由項(xiàng)目功能或者項(xiàng)目外設(shè)模塊劃分,其中一個(gè)功能是密碼設(shè)置功能,所以我們設(shè)計(jì)了密碼設(shè)置子程序。如下圖流程圖。圖4-4密碼設(shè)置子程序4.5紅外遙控解碼原理紅外遙控操作方案的實(shí)現(xiàn)主要開發(fā)在軟件方面,就是要完成解碼。硬件方面只需接收頭即可,接收頭需要電源供電,把信號(hào)端給到單片機(jī),單片機(jī)即可對數(shù)據(jù)信息識(shí)別判斷,進(jìn)而完成解碼。數(shù)據(jù)碼波形如圖4-5所示。具體格式如圖4-6。信號(hào)的結(jié)構(gòu)由引導(dǎo)碼、用戶碼、數(shù)據(jù)碼和數(shù)據(jù)碼反碼構(gòu)成,數(shù)據(jù)一共有32個(gè)。信號(hào)相反的轉(zhuǎn)換就是數(shù)據(jù)反碼,數(shù)據(jù)反碼主要是去判斷接收到的數(shù)據(jù)是不是準(zhǔn)確,這樣來確保數(shù)據(jù)無誤。進(jìn)行一次數(shù)據(jù)傳的時(shí)間是108ms。所有的數(shù)據(jù)都只有兩種數(shù)值,他們?yōu)椤?’或者為‘0’。圖4-5某按鍵按下的紅外信號(hào)波形圖4-6紅外遙控器編碼數(shù)據(jù)格式

5實(shí)物測試5.1實(shí)物上電測試系統(tǒng)調(diào)試完成后,購買器件,準(zhǔn)備焊接烙鐵、焊接使用的焊錫、方便除錫的吸搶、可以擦干凈烙鐵頭的高溫棉等焊接工具。按照電路圖對器件進(jìn)行焊接。焊接完成需要對電源進(jìn)程檢測,通過萬用表的導(dǎo)通檔位檢測電源正負(fù)是否存在異常,一般出現(xiàn)異??赡苁呛附哟嬖诜钦叩倪B接,或者有焊接不良的情況,需要自己檢查。只有在確定電源正常的情況下,才可以進(jìn)行通電。實(shí)物圖如圖5-4所示。圖5-4實(shí)物圖經(jīng)過上電前的短路測試,保證板子沒有短路異常,進(jìn)行上電,上電后觀察電源指示燈是否正常,電源指示燈正常,這時(shí)可以注意下單片機(jī)是否有發(fā)熱跡象,測量各部分電源端是否正常,下一步需要檢測單片機(jī)最小系統(tǒng)是否正常,可以對單片機(jī)的電源端進(jìn)行測量,判斷是否為5V,再進(jìn)行程序下載,不僅僅可以燒寫入程序便于進(jìn)行功能驗(yàn)證,而且可以驗(yàn)證單片機(jī)最小系統(tǒng)的電路,程序收入后,就可以驗(yàn)證系統(tǒng)功能,按下電源開關(guān),觀察液晶顯示。5.2實(shí)物密碼輸入上電測試通過矩陣鍵盤輸入密碼,之后液晶顯示******,代表輸入的密碼數(shù)據(jù)。如圖5-5所示。圖5-5密碼輸入上電測試5.3實(shí)物開鎖上電測試點(diǎn)擊確定按鍵,如果密碼正確,則液晶第二行顯示Succeed,表示密碼正確,鎖也會(huì)打開。如圖5-6所示。圖5-6開鎖上電測試5.4實(shí)物密碼輸入錯(cuò)誤上電測試點(diǎn)擊確定按鍵,如果密碼錯(cuò)誤,則液晶第二行顯示error,表示密碼錯(cuò)誤,蜂鳴器會(huì)發(fā)出報(bào)警聲。如圖5-7所示。圖5-7密碼輸入錯(cuò)誤上電測試5.5實(shí)物密碼修改上電測試系統(tǒng)可以對密碼進(jìn)行修改,修改時(shí)需要輸入兩次密碼數(shù)據(jù)。如圖5-8所示。圖5-8密碼修改上電測試

結(jié)論通過本次畢業(yè)設(shè)計(jì)的開展,我系統(tǒng)地鞏固了很多在學(xué)校所學(xué)的相關(guān)知識(shí)。真正的理論與實(shí)踐的結(jié)合可以說是另一種對知識(shí)課程的學(xué)習(xí)和深刻的理解:首先是系統(tǒng)方案的選擇,方案的確定是非常重要的,如果前期方案確定有問題,后期肯定會(huì)有問題,無論是在硬件上,軟件上。如果出現(xiàn)問題,您需要返回并繼續(xù)修改計(jì)劃。方案選擇階段需要大量的經(jīng)驗(yàn),需要積累。系統(tǒng)的硬件設(shè)計(jì)需要根據(jù)方案對系統(tǒng)的各個(gè)功能進(jìn)行電路設(shè)計(jì)。硬件設(shè)計(jì)會(huì)發(fā)現(xiàn)軟件設(shè)計(jì)的困難,如接口的定義,將決定軟件的設(shè)計(jì)。接口的定義將決定以后物理組裝的布局。如果接口定義不理想,在物理組裝時(shí)就很難設(shè)計(jì)布局,需要重新繪制電路圖,這將嚴(yán)重導(dǎo)致最終電路的物理設(shè)計(jì)復(fù)雜。良好的接口設(shè)計(jì)將使電路設(shè)計(jì)美觀可靠。硬件電路設(shè)計(jì)還需要考慮后期調(diào)試的便利性,方便的時(shí)候,不僅要考慮到這個(gè)功能,調(diào)試也是一個(gè)非常重要的環(huán)節(jié)。需要進(jìn)行軟件設(shè)計(jì),按照功能,不能整體,一個(gè)函數(shù)是一個(gè)函數(shù)的調(diào)試代碼模塊化設(shè)計(jì),大量的代碼錯(cuò)誤很簡單的問題時(shí),有時(shí)一個(gè)簡單的問題,和調(diào)試將很多天,所以代碼設(shè)計(jì)方法是非常重要的,而模塊化代碼設(shè)計(jì)是最常用的方案。模塊化設(shè)計(jì)很容易在以后更改,也很容易發(fā)現(xiàn)漏洞。最后對硬件和軟件進(jìn)行統(tǒng)一調(diào)試,并對實(shí)物進(jìn)行組裝。通過實(shí)物的調(diào)試和運(yùn)行,驗(yàn)證設(shè)計(jì)的正確性。如果檢測系統(tǒng)設(shè)計(jì)得更好、更完善,就會(huì)有更多的應(yīng)用場合。但是由于時(shí)間的限制,在設(shè)計(jì)過程中沒有時(shí)間和過多的精力去研究更多的傳感器。

參考文獻(xiàn)[1]周立功主編.項(xiàng)目驅(qū)動(dòng)—單片機(jī)應(yīng)用設(shè)計(jì)基礎(chǔ)[M].北京航空航天出版社,2011[2]孫鑫余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2015[3]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2015[4]王曉明.電動(dòng)機(jī)單片機(jī)控制[M].中國:北京航空航天出版社,2014[5]王學(xué)文.傳感器原理及應(yīng)用[M].北京:航空航天大學(xué)出版社,2013[6]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2014[7]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2011[8]LindaJ,Engelman.InteractingonUPeInternet.IrwinBookTeam.U.S.A,2012(06)66-68[9]黃家升.基于51的單片機(jī)軟件遠(yuǎn)程升級(jí)[J].艦船電子對抗,2012(03):22-25[10]楊美仙.單片機(jī)的發(fā)展及其應(yīng)用[J].科技信息(學(xué)術(shù)研究),2017(35):46-47

附錄附錄一電路圖附錄二程序//功能:密碼為000000//密碼可修改萬能密碼為:131420改密碼可初始化密碼為:000000密碼有掉電保存功能#include<reg52.h> //頭文件#include<intrins.h>#defineucharunsignedchar //宏定義#defineuintunsignedint//下面這些變量用于紅外遙控的解析,關(guān)于紅外遙控,推薦大家去看下51單片機(jī)天狼星教程里面紅外遙控的章節(jié),很詳細(xì),優(yōu)酷上直接搜索即可ucharirbyte[4];ucharirtime,irflag,bitnum,irdateok;ucharirdate[33];#defineLCD1602_datP0sbitLCD1602_rs=P2^5;sbitLCD1602_rw=P2^6;sbitLCD1602_e=P2^7;sbitled=P2^0; //led指示燈sbitbeep=P2^1; //蜂鳴器sbitScl=P3^5; //24C02串行時(shí)鐘sbitSda=P3^4; //24C02串行數(shù)據(jù)//定義一些變量數(shù)據(jù)ucharptem,mm[6],mm_n1[6],mm_n2[6],n,j;ucharstep,ms,time,cw;bitcq,beep1,beep2;voidmDelay(uintt)//延時(shí){ uchari; while(t--) { for(i=0;i<125;i++) {;} }voidNop(void) //空操作{ _nop_(); _nop_(); _nop_(); _nop_();}/*起始條件*/voidStart(void){ Sda=1; Scl=1; Nop(); Sda=0; Nop();}/*停止條件*/voidStop(void){ Sda=0; Scl=1; Nop(); Sda=1; Nop();}/*應(yīng)答位*/voidAck(void){ Sda=0; Nop(); Scl=1; Nop(); Scl=0;}/*反向應(yīng)答位*/voidNoAck(void){ Sda=1; Nop(); Scl=1; Nop(); Scl=0;}/*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/voidSend(ucharData){ ucharBitCounter=8; uchartemp; do { temp=Data; Scl=0; Nop(); if((temp&0x80)==0x80) Sda=1; else Sda=0; Scl=1; temp=Data<<1; Data=temp; BitCounter--; } while(BitCounter); Scl=0;}/*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/ucharRead(void){uchartemp=0; uchartemp1=0; ucharBitCounter=8; Sda=1; do{ Scl=0; Nop(); Scl=1; Nop(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) { temp1=temp<<1; temp=temp1; } BitCounter--; } while(BitCounter); return(temp); }/*24C02存儲(chǔ)芯片,這個(gè)底層主要就兩個(gè)函數(shù)Write_dat_24C02();Read_dat_24C02();我們?nèi)绻鏀?shù)據(jù),就調(diào)用Write_dat_24C02,讀數(shù)據(jù)調(diào)用Read_dat_24C02*///存數(shù)據(jù)函數(shù),這個(gè)函數(shù)括號(hào)里可以填兩個(gè)數(shù)據(jù),第一個(gè)是要存儲(chǔ)的數(shù)據(jù),是數(shù)組形式,第二個(gè)是從哪個(gè)地址開始存,第三個(gè)是存儲(chǔ)幾個(gè)數(shù)據(jù)//存儲(chǔ)的數(shù)據(jù)范圍是0-255,地址的范圍也是0-255//要注意的是,存的時(shí)候,數(shù)據(jù)填寫是以數(shù)組的形式/*例如tab[0]=11;tab[1]=23;tab[2]=34;Write_dat_24C02(tab,0,2);這句的意思就是,對tab數(shù)組盡心存儲(chǔ),從第零個(gè)位置開始,存兩個(gè)數(shù)據(jù)結(jié)果就是tab【0】存到地址0tab[1]存到地址1tab【2】沒有存*/voidWrToROM(ucharData[],ucharAddress,ucharNum) //往24c02里存數(shù)據(jù){ uchari; uchar*PData; PData=Data; for(i=0;i<Num;i++) { Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i)); Ack(); Stop(); mDelay(20); }}/*數(shù)據(jù)讀取,使用方法第一個(gè)位置放數(shù)組,第二個(gè)位置填寫從哪個(gè)地址開始讀取數(shù)據(jù),第三個(gè)位置填寫,一共讀取幾個(gè)數(shù)據(jù)*/voidRdFromROM(ucharData[],ucharAddress,ucharNum)//從24c02里讀數(shù)據(jù){ uchari; uchar*PData; PData=Data; for(i=0;i<Num;i++) { Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Start(); Send(0xa1); Ack(); *(PData+i)=Read(); Scl=0; NoAck(); Stop(); }}voiddelay(uintT) //延時(shí)函數(shù){ while(T--);}voidqing() // 清楚數(shù)據(jù){uinti; for(i=0;i<33;i++) { irdate[i]=0; }}voiddeal_with() //解碼處理部分{ uchari,j,k,temp; k=1; for(j=0;j<4;j++) { for(i=0;i<8;i++) { temp=temp>>1; if(irdate[k]>7) { temp=temp|0x80; } k++; } irbyte[j]=temp; }}/*1602液晶,是常用的顯示器件,一共是16個(gè)管腳,其中有八個(gè)管腳是數(shù)據(jù)傳輸管腳,有三個(gè)管腳是數(shù)據(jù)命令使能端管腳,還有兩組電源管腳,其中一組電源管腳是給整個(gè)液晶進(jìn)行供電的,還有一組電源是單純的背景光電源,還剩下的最后一個(gè)管腳是對比度調(diào)節(jié)管腳,一般接上一個(gè)3K電阻再接地即可。一般我們用的函數(shù),無非就是LCD1602_write和LCD1602_writebyteLCD1602_write(x,y);這個(gè)函數(shù)括號(hào)里面可以填寫兩個(gè)數(shù)據(jù),第一個(gè)數(shù)據(jù)只能是01,是0就說明第二個(gè)數(shù)據(jù)對液晶來說就是命令,填1就說明第二個(gè)數(shù)據(jù)對于液晶來說就是要顯示的數(shù)據(jù)。LCD1602_writebyte();這個(gè)函數(shù)里面直接填上要顯示的字符串即可,自動(dòng)進(jìn)行顯示*/voidLCD1602_write(ucharorder,dat) //1602一個(gè)字節(jié)處理{LCD1602_e=0;LCD1602_rs=order;LCD1602_dat=dat;LCD1602_rw=0;LCD1602_e=1;delay(1);LCD1602_e=0; }voidLCD1602_writebyte(uchar*prointer) //1602字符串處理{while(*prointer!='\0'){LCD1602_write(1,*prointer);prointer++;}}voidLCD1602_cls() //1602初始化{LCD1602_write(0,0x01);//1602清屏指令 delay(1500);LCD1602_write(0,0x38);//功能設(shè)置8位、5*7點(diǎn)陣 delay(1500);LCD1602_write(0,0x0c);//設(shè)置光標(biāo)不顯示開關(guān)、不顯示光標(biāo)、字符不閃爍LCD1602_write(0,0x06);LCD1602_write(0,0xd0); delay(1500);}ucharkey_fs() //矩陣按鍵返回按碼,矩陣鍵盤的思路很是通用,課本上都有介紹{ ucharfs=255; P1=0x0f; //給P1口賦值0x0f if(P1!=0x0f) //當(dāng)判斷不等于0x0f時(shí) { delay(800); //延時(shí)消抖 P1=0x0f; //再次賦值 if(P1!=0x0f)//再次判斷 { ptem=P1;//將所得鍵值賦給變量ptem P1=0xf0;//給P1口賦值0xf0 ptem=ptem|P1;//變量ptem=ptem或上當(dāng)前P1口的值,以確定那個(gè)按鍵按下 switch(ptem) //根據(jù)變量ptem的值返回不同的數(shù)據(jù) { case0xe7: fs=1; break; case0xd7: fs=2; break; case0xb7: fs=3; break; case0x77: fs=10; break; case0xeb: fs=4; break; case0xdb: fs=5; break; case0xbb: fs=6; break; case0x7b: fs=11; break; case0xed: fs=7; break; case0xdd: fs=8; break; case0xbd: fs=9; break; case0x7d: fs=12; break; case0xee: fs=13; break; case0xde: fs=0; break; case0xbe: fs=14; break; case0x7e: fs=15; break; } P1=0x0f; while(P1!=0x0f) { P1=0x0f; } } } return(fs);}voidshow() //顯示程序{ LCD1602_write(0,0x80); LCD1602_writebyte("===CodedLock===");}unsignedcharcoding_1(unsignedcharm) //根據(jù)紅外解碼的值不同,給k賦不同的數(shù)據(jù){ unsignedchark; switch(m) { case(0x0c):k=1;break; case(0x18):k=2;break; case(0x5e):k=3;break; case(0x08):k=4;break; case(0x1c):k=5;break; case(0x5a):k=6;break; case(0x42):k=7;break; case(0x52):k=8;break; case(0x4a):k=9;break; case(0x09):k=13;break; case(0x16):k=0;break; case(0x19):k=14;break; case(0x0d):k=15;break; case(0x07):k=12;break; } return(k);}voidkey() //按鍵鍵碼處理程序{ ucharfz=255,i; if(irbyte[2]!=0) //如果紅外解碼緩沖數(shù)組判斷不等于0,代表紅外遙控有按鍵按下 { fz=coding_1(irbyte[2]); //把鍵值對應(yīng)的返回值賦給fz do //do{}while()語句,目的是把紅外解碼緩沖數(shù)組清0,防止此條件一直成立 { qing(); deal_with(); }while(irbyte[2]!=0); }else //否則將鍵盤返回值賦給fz { fz=key_fs(); } if(fz!=255) //判斷fz的值不是初始值蜂鳴器就滴一聲 { beep2=1;beep=0; delay(10000); beep2=0;beep=1; } if(step==0) //如果是初始頁面 { if(fz<10&&cq==0&&n<6) //且輸入的密碼位數(shù)不足6位 { if(n==0) { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc0); LCD1602_writebyte("Pass:"); } mm_n1[n]=fz; //把鍵值賦給密碼輸入緩沖數(shù)組 n++; //密碼位數(shù)++ LCD1602_write(0,0xc5); for(i=0;i<n;i++) //輸入密碼后顯示*號(hào) { LCD1602_writebyte("*"); } } }elseif(step==1|step==2) //如果是老密碼或新密碼輸入頁面 { if(fz<10&&n<6) ///如果按鍵返回值小于10說明是數(shù)字按下,且輸入密碼位數(shù)小于6位 { mm_n1[n]=fz; //就把鍵值存到輸入密碼緩沖數(shù)組 n++; //輸入密碼位數(shù)+1 LCD1602_write(0,0xc9); for(i=0;i<n;i++) { LCD1602_writebyte("*"); //顯示*號(hào) } } }elseif(step==3) //再次輸入頁面 { if(fz<10&&n<6) { mm_n2[n]=fz; n++; LCD1602_write(0,0xc6); for(i=0;i<n;i++) { LCD1602_writebyte("*"); } } } switch(fz) //功能按鍵作用 { case10: break; case11: break; case12://刪除所輸入的密碼按鍵 if(n!=0) { n--; //密碼位數(shù)-1 if(step==0) { mm_n1[n+1]=0xff; LCD1602_write(0,0xc5); for(i=0;i<n;i++) { LCD1602_writebyte("*"); //*號(hào)被空白填補(bǔ) } for(i=0;i<6-n;i++) { LCD1602_writebyte(""); } }elseif(step==1|step==2) { mm_n1[n+1]=0xff; LCD1602_write(0,0xc9); for(i=0;i<n;i++) { LCD1602_writebyte("*"); } for(i=0;i<6-n;i++) { LCD1602_writebyte(""); } }elseif(step==3) { mm_n2[n+1]=0xff; LCD1602_write(0,0xc6); for(i=0;i<n;i++) { LCD1602_writebyte("*"); } for(i=0;i<6-n;i++) { LCD1602_writebyte(""); } } } break; case13://大返及手動(dòng)鎖門按鍵 LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc0); LCD1602_writebyte("Password"); step=0; cq=0; n=0; led=1; break; case14://確認(rèn)按鍵 if(step==0) { if(n==6)//如果輸入的密碼達(dá)到6位 { n=0; for(i=0;i<6;i++)//就對比密碼 { if(mm[i]!=mm_n1[i]) { break; } } if(i==6) //如果6位都對,門打開 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc5); LCD1602_writebyte("Open"); led=0; cq=1; cw=0; }elseif(mm_n1[0]==1&&mm_n1[1]==3&&mm_n1[2]==1&&mm_n1[3]==4&&mm_n1[4]==2&&mm_n1[5]==0) //否則的話對比萬能密碼131420,正確就把密碼初始化 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc3); LCD1602_writebyte("Passinit"); for(j=0;j<6;j++) { mm[j]=0; } cw=0; WrToROM(mm,0,6); //把新密碼存到24c02里 }else //否則密碼錯(cuò)誤 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc5); LCD1602_writebyte("Error"); time=3; cw++; if(cw>2) //錯(cuò)誤次數(shù)達(dá)到3次,鍵盤鎖死 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc2); LCD1602_writebyte("Lockedstate"); while(1) { beep1=1; cw=3; time=5; } } } }else //輸入密碼不足6位直接判斷密碼錯(cuò)誤 { n=0; LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc5); LCD1602_writebyte("Error"); time=3; cw++; if(cw>2) //鍵盤鎖死 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc2); LCD1602_writebyte("Lockedstate"); while(1) { beep1=1; cw=3; time=5; } } } }elseif(step==1) //輸入老密碼頁面 { if(n==6) { n=0; for(i=0;i<6;i++) { if(mm[i]!=mm_n1[i]) { break; } } if(i==6) //判斷正確,就進(jìn)入輸入新密碼界面 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc0); LCD1602_writebyte("Newpass:"); step=2; }else //否則就提示錯(cuò)誤 { step=0; LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc5); LCD1602_writebyte("Error"); } }else { step=0; n=0; LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc5); LCD1602_writebyte("Error"); } }elseif(step==2)//輸入新密碼界面 { if(n==6) //輸入密碼達(dá)到6位,就進(jìn)入再次輸入界面 { n=0; LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc0); LCD1602_writebyte("Again:"); step=3; }else //否則直接判定密碼錯(cuò)誤 { step=0; n=0; LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論