【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第1頁(yè)
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第2頁(yè)
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第3頁(yè)
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第4頁(yè)
【電子密碼鎖的設(shè)計(jì)(附程序)12000字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩50頁(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.1選研究的目的與意義隨著中國(guó)經(jīng)濟(jì)的快速發(fā)展和國(guó)民生活水平的逐步提高,人們?cè)谌粘I畹母鱾€(gè)方面都追求更高的水平。以我們家離不開(kāi)的鎖具為例,從我國(guó)古代史上就有各種鎖具的記載和使用,到今天人們的發(fā)展所追求的不僅僅是用來(lái)鎖門(mén)的一種工具。人們對(duì)鎖具的追求體現(xiàn)在心理上的安全感以及在使用先進(jìn)技術(shù)的過(guò)程中的經(jīng)驗(yàn)。所以智能電子鎖的發(fā)展趨勢(shì)尤為明顯,市場(chǎng)上的受眾度也非常高。這款智能鎖是根據(jù)現(xiàn)代人的生活習(xí)慣和生活趨勢(shì)而設(shè)計(jì)的。它可以通過(guò)手機(jī)和指紋控制鎖的開(kāi)關(guān)。非常方便快捷,安全系數(shù)遠(yuǎn)高于以往的機(jī)械鎖。智能鎖的發(fā)明和使用大大減少了攜帶鑰匙和容易丟失鑰匙的問(wèn)題,給我們的生活帶來(lái)了更多的安全和方便。它是現(xiàn)代社會(huì)發(fā)展的必然產(chǎn)物。1.2國(guó)內(nèi)外研究現(xiàn)狀目前,與西方發(fā)達(dá)國(guó)家相比,我國(guó)的電子密碼鎖技術(shù)還相對(duì)落后。在西方發(fā)達(dá)國(guó)家,電子密碼鎖品種繁多,技術(shù)先進(jìn),已廣泛應(yīng)用于各個(gè)領(lǐng)域。在我國(guó),電子密碼鎖技術(shù)相當(dāng)于世界70年代的水平,相對(duì)落后。20世紀(jì)80年代以來(lái),隨著各種電子集成電路的出現(xiàn),特別是單片機(jī)的出現(xiàn),電子密碼鎖得到了很大的發(fā)展。與傳統(tǒng)機(jī)械鎖的笨重結(jié)構(gòu)相比,電子鎖具有體積小、可靠性高的優(yōu)點(diǎn)。但是目前電子密碼鎖的價(jià)格比較高,而且需要提供電源,這在一定程度上限制了它的使用。特別是在我國(guó),各種條件的限制使得電子密碼鎖暫時(shí)難以普及。雖然電子密碼鎖也有一些缺點(diǎn),但其安全性高、使用方便、智能報(bào)警的優(yōu)點(diǎn)是傳統(tǒng)鑰匙鎖所不能替代的,隨著電子信息技術(shù)的不斷發(fā)展和各種電子設(shè)備價(jià)格的降低,電子鎖朝著低成本、多功能的方向發(fā)展。1.3課題研究?jī)?nèi)容本課題為無(wú)線電子密碼鎖,本課題選用STC89C52單片機(jī)作為主控制器,可以實(shí)現(xiàn)無(wú)線電子密碼鎖的設(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語(yǔ)言編寫(xiě),完成了各功能代碼的開(kāi)發(fā)。進(jìn)行了模塊化設(shè)計(jì),并進(jìn)行了最終組合。最后對(duì)系統(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ì)原理比較簡(jiǎn)單,整個(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è)可打開(kāi)的CD連接到一個(gè)保護(hù)鍵和六個(gè)密碼保護(hù)鍵。4017D未連接到按鈕,此接線如圖2-1所示。其工作原理如圖2-1所示,其前是電流電阻,以減少與接地和可調(diào)電阻環(huán)路并聯(lián)的晶體管BCX38B電解電容器。當(dāng)按下按鈕時(shí),由于在BCX38B開(kāi)關(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引腳并打開(kāi)2sc1815晶體管,繼電器將正常閉合,并且代碼可以將訪問(wèn)權(quán)限設(shè)置為4-6位。如果電容器放電時(shí)間很快,基本電流不足以在不關(guān)閉密碼的情況下在CD側(cè)面安裝D觸發(fā)器。圖2-1系統(tǒng)電路原理圖2.2系統(tǒng)整體架構(gòu)設(shè)計(jì)無(wú)線電子密碼鎖主要包括顯示控制、鍵盤(pán)輸入、主控制器、報(bào)警控制和存儲(chǔ)模塊。在簡(jiǎn)單密碼鎖系統(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é)果可以通過(guò)顯示模塊顯示出來(lái)。用戶可以通過(guò)鍵盤(pán)或紅外遙控器輸入密碼數(shù)據(jù),系統(tǒng)判斷密碼數(shù)據(jù)是否正確,并控制電磁鎖模塊的開(kāi)啟和關(guān)閉。鍵盤(pán)可以修改密碼。系統(tǒng)架構(gòu)如圖2-2所示。圖2-2系統(tǒng)整體框圖2.3主控制器方案方案一:STC89C52單片機(jī)。對(duì)于51系列單片機(jī)的性能分析,其可靠性高,且具有價(jià)格低廉、功耗低、加密性強(qiáng)的優(yōu)點(diǎn),而對(duì)于STC系列單片機(jī),則可以進(jìn)行在線工作處理,更加方便。系統(tǒng)選用STC89C51單片機(jī)作為核心模塊。51系列單片機(jī)無(wú)論從性能和價(jià)格等方面都有很大的優(yōu)勢(shì),運(yùn)行穩(wěn)定,性價(jià)比高,價(jià)格相對(duì)便宜,且功耗低,加密能力強(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)換電路;過(guò)壓或過(guò)流擊穿I/O口;此外,沒(méi)有內(nèi)部EEPROM,無(wú)法實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。本設(shè)計(jì)中的查表算法非常有用。在這樣的處理器代碼設(shè)計(jì)中,可以完成一個(gè)更標(biāo)準(zhǔn)化、完整的程序。該處理器最重要的特點(diǎn)是低功耗模式,功耗非常低,可以在很多功耗要求較低的場(chǎng)合使用。這種低功耗模式,可編程控制,應(yīng)用靈活,非常方便。缺點(diǎn):工作電壓不是+5V,需要額外增加+5V轉(zhuǎn)換電路;過(guò)壓或過(guò)流擊穿I/O口;此外,沒(méi)有內(nèi)部EEPROM,無(wú)法實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。方案三:選擇STM32F103RBT6處理器,處理器搭配的是ARM型32位的M3核的CPU,此款處理器計(jì)算速度快、采購(gòu)成本低、功耗低的32位處理器。目前此處理器在大量的電子商品上進(jìn)行使用,比如電子農(nóng)業(yè)領(lǐng)域、電動(dòng)汽車(chē)領(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ù)位,檢測(cè)精度很高,可以處理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ǎn)單,價(jià)格合理,非常適合在本設(shè)計(jì)中使用。雖然這種顯示電路中出現(xiàn)的接口有點(diǎn)復(fù)雜,接口太多,但是這些接口給設(shè)計(jì)后期的電路測(cè)試和調(diào)試提供了方便。最重要的是液晶的電源與系統(tǒng)電源是一致的,所以沒(méi)有必要單獨(dú)設(shè)計(jì)供電系統(tǒng)。LCD1602。該模塊顯示的內(nèi)容多種多樣,而且非常簡(jiǎn)單,價(jià)格合理,對(duì)于本設(shè)計(jì)來(lái)說(shuō),非常適用。雖然接口線連接比較多,但是后期對(duì)整個(gè)電路的測(cè)試,會(huì)很容易得到測(cè)試結(jié)果。方案二:選擇數(shù)碼管作為顯示設(shè)備。有很多數(shù)碼管用于數(shù)據(jù)顯示在當(dāng)前的市場(chǎng),但在系統(tǒng)的工作,需要每個(gè)值對(duì)應(yīng)于一個(gè)數(shù)碼管,如果顯示多行和多個(gè)值,顯然需要更多的數(shù)碼管,給整個(gè)設(shè)計(jì)帶來(lái)的負(fù)擔(dān)。同時(shí),數(shù)碼管在進(jìn)行動(dòng)態(tài)掃描時(shí),由于需要移動(dòng)其位置,需要使用移位器輔助。只有將掃描到的信息存儲(chǔ)在移位器的寄存器中,才能實(shí)現(xiàn)最終的顯示功能,所以LED會(huì)有很多缺陷。另外,在電路測(cè)試中容易受到一些不必要的因素的影響,因此顯示方案不適合本設(shè)計(jì)。因?yàn)榭紤]到本測(cè)控系統(tǒng)中顯示的數(shù)字東西比較多,液晶顯示LCD1602能滿足這條件,LED數(shù)碼管只能顯示常用的數(shù)字,以及有限的字母,所以最終選擇方案一。2.5無(wú)線方案設(shè)計(jì)方案一:ESP8266系列模組是安信可科技設(shè)計(jì)的在樂(lè)鑫ESP8266的非常小能耗的UART-WiFi上開(kāi)發(fā)的模塊,此產(chǎn)品開(kāi)發(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位操作,無(wú)線傳輸頻率是80兆赫茲以及160兆赫茲,模塊本身設(shè)計(jì)有天線,可以與網(wǎng)絡(luò)進(jìn)行通信,實(shí)現(xiàn)云端智能數(shù)據(jù)傳輸,能夠完成TCP/IP協(xié)議的建立。模塊能夠的控制簡(jiǎn)單,用過(guò)AT指令就能夠和單片機(jī)進(jìn)行數(shù)據(jù)傳輸,控制WiFi模塊。方案二:通過(guò)紅外遙控進(jìn)行控制,紅外遙控只需要搭配紅外接收頭既可以進(jìn)行信號(hào)接收,接收端對(duì)紅外信號(hào)進(jìn)行解釋完成對(duì)按鍵的識(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)用非常廣泛,開(kāi)發(fā)簡(jiǎn)單,電路設(shè)計(jì)容易,可以加快開(kāi)發(fā)團(tuán)隊(duì)的開(kāi)發(fā)進(jìn)度,縮短開(kāi)發(fā)周期。開(kāi)發(fā)成本低,被許多企業(yè)所選擇。該設(shè)備內(nèi)部運(yùn)行速度快,引腳數(shù)量大,是許多開(kāi)發(fā)方案的首選。輸入和輸出量是32,分別設(shè)計(jì)了四組,銷(xiāo)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)通過(guò)單片機(jī)的9針輸入。單片機(jī)的復(fù)位動(dòng)作對(duì)信號(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英尺,因此說(shuō)使用單片機(jī)內(nèi)部存儲(chǔ)代碼,如果低電平輸入31英尺,所以你說(shuō)單片機(jī)使用外部存儲(chǔ)代碼。最小系統(tǒng)電路如圖3-1所示。單片機(jī)的運(yùn)行離不開(kāi)晶振電路,晶振電路是單片機(jī)系統(tǒng)必不可少的外圍硬件。如果電路出現(xiàn)異常,單片機(jī)系統(tǒng)就會(huì)癱瘓,無(wú)法運(yùn)行,導(dǎo)致整個(gè)系統(tǒng)故障。微控制器的所有程序都是在寫(xiě)入只讀存儲(chǔ)器時(shí)刻錄的,微控制器系統(tǒng)啟動(dòng)后必須讀取程序。處理器讀取一段代碼所需的時(shí)間是處理器的機(jī)器周期之一,而這段時(shí)間是處理器的節(jié)拍。處理器有一個(gè)晶體振蕩器,它創(chuàng)建整個(gè)系統(tǒng)開(kāi)始運(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,如果選擇了振蕩源過(guò)大,SCM不能在這個(gè)速度工作。振動(dòng)源的兩個(gè)引腳與單片機(jī)的XTAL0和XTAL1連接,使處理器可以輸入節(jié)拍。該電路的設(shè)計(jì)必須防止干擾,特別是在器件布局上。如果電路設(shè)計(jì)不好,單片機(jī)無(wú)法獲得拍頻信號(hào),系統(tǒng)運(yùn)行必然癱瘓。晶體工作可能很高興波,信號(hào)不影響單片機(jī)打信號(hào)采集,還可以帶來(lái)穩(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鍵盤(pán)掃描模塊電路設(shè)計(jì)由單片機(jī)組成的密碼輸入控制系統(tǒng),通常可以實(shí)現(xiàn)智能控制,該儀器采用的是頻率最高的非編碼鍵盤(pán),而這樣的鍵盤(pán)又分為獨(dú)立的和行列式的兩種不同類型的鍵盤(pán),這種行列式鍵盤(pán)又稱為矩陣鍵盤(pán)。而在本設(shè)計(jì)中,獨(dú)立鍵盤(pán)的選擇,是通過(guò)判斷按鍵時(shí)芯片引腳電壓的變化來(lái)控制的。該方法簡(jiǎn)單有效,非常適合于密碼輸入控制系統(tǒng)。在系統(tǒng)設(shè)計(jì)中,人機(jī)交互需要通過(guò)按鍵來(lái)實(shí)現(xiàn),按鍵的電路設(shè)計(jì)需要與軟件相結(jié)合。同時(shí)需要根據(jù)實(shí)際使用中出現(xiàn)的問(wèn)題進(jìn)行分析。掃描鍵盤(pán)的簡(jiǎn)單方法是不可能實(shí)現(xiàn)的。該系統(tǒng)中的單片機(jī)鍵盤(pán)在實(shí)際使用時(shí)是獨(dú)立的,而且還要設(shè)計(jì)按鍵的矩陣,這兩個(gè)方面有很大的區(qū)別。鍵盤(pán)電路的設(shè)計(jì)也有一個(gè)很好的功能,即它可以有效的節(jié)省端口的資源,所以在鍵盤(pán)電路的設(shè)計(jì)中,人們通常選擇矩陣鍵盤(pán),這樣可以更好地優(yōu)化多鍵電路。系統(tǒng)選用矩陣鍵盤(pán)進(jìn)行數(shù)據(jù)輸入。矩陣鍵盤(pán)的水平線(行線)和垂直線(列線)沒(méi)有連接關(guān)系,唯一的連接關(guān)系是利用一個(gè)按鍵連接的,選擇此行列式矩陣結(jié)構(gòu)方法僅僅有4條行線以及4條列線,這樣就能夠設(shè)計(jì)成4×4個(gè)按鍵的矩陣鍵盤(pán)。電路中行線所在的接口的單片機(jī)4個(gè)單片機(jī)接口使用為輸出端,電路中列線所在的接口的單片機(jī)4個(gè)單片機(jī)接口使用為輸入端。如果無(wú)按鍵按下時(shí),全部輸出接口都為高電平,說(shuō)明此時(shí)沒(méi)有按鍵按下。但是有按鍵按下,肯定會(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矩陣鍵盤(pán)原理圖3.3密碼存儲(chǔ)電路密碼存儲(chǔ)電路是為了對(duì)設(shè)置的密碼進(jìn)行存儲(chǔ),此電路在沒(méi)有電源的情況下數(shù)據(jù)也不會(huì)丟失,所以可以對(duì)密碼數(shù)據(jù)進(jìn)行長(zhǎng)期保存。如果系統(tǒng)斷電了,數(shù)據(jù)依然會(huì)保存在存儲(chǔ)電路中。電路圖如圖3-3所示。圖3-3密碼存儲(chǔ)電路圖3.4液晶顯示電路本文選用LCD1602液晶顯示。本設(shè)計(jì)中,加濕器在工作中需要對(duì)當(dāng)前系統(tǒng)信息進(jìn)行顯示,因此選擇能顯示內(nèi)容較多的性價(jià)值比的LCD1602液晶顯示屏。LCD1602液晶顯示器性價(jià)比高、接口多、功能豐富,這使得它具有極廣的應(yīng)用范圍。在系統(tǒng)設(shè)計(jì)當(dāng)中選用液晶顯示器來(lái)進(jìn)行數(shù)值的顯示有著諸多的優(yōu)點(diǎn):從顯示的效果上看,液晶顯示的穩(wěn)定性要更高,而且非常清晰,在接收到從單片機(jī)傳來(lái)的信息后,顯示器的屏幕會(huì)被自動(dòng)點(diǎn)亮,且亮度會(huì)一直保持不變,而在不需要顯示的時(shí)候又會(huì)對(duì)屏顯進(jìn)行刷新,直到接收到其他的顯示命令為止。從內(nèi)容與形式上看,液晶顯示器能夠?qū)Χ喾N數(shù)據(jù)信號(hào)進(jìn)行顯示而不像LED顯示器那樣只能顯示數(shù)值,同時(shí)在對(duì)顯示器進(jìn)行電路設(shè)計(jì)的時(shí)候也比較簡(jiǎn)單,數(shù)據(jù)信號(hào)的轉(zhuǎn)化更便捷。在液晶顯示器的內(nèi)部,液晶分子的狀態(tài)會(huì)隨著顯示內(nèi)容的不同而發(fā)生改變,而且價(jià)格比較低,質(zhì)量很輕,有著比較高的安全性。液晶顯示器在工作狀態(tài)下也有著一定的缺點(diǎn),例如對(duì)電能的消耗很大,液晶芯片的驅(qū)動(dòng)需要靠電機(jī)來(lái)完成,這就使得液晶顯示器不但驅(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)電路簡(jiǎn)單,只需要一個(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)作操作鎖的開(kāi)與關(guān)。由于單片機(jī)的IO電流不夠,所以需要設(shè)計(jì)繼電器驅(qū)動(dòng)電路,選擇PNP三極管控制繼電器。電路圖如圖3-6所示。圖3-6鎖控制電路3.7紅外遙控接收電路紅外遙控操作方式的軟件制作作主要是解碼的問(wèn)題。將接收頭硬件焊接好,給接收頭接好電源,通過(guò)對(duì)遙控器的操作,用示波器觀察接收頭的輸出信號(hào)波形。編碼的數(shù)據(jù)格式包括了引導(dǎo)碼、用戶碼、數(shù)據(jù)碼和數(shù)據(jù)碼反碼,編碼總占32位。數(shù)據(jù)反碼是數(shù)據(jù)碼反相后的編碼,在數(shù)據(jù)碼接收時(shí)可以用來(lái)檢測(cè)數(shù)據(jù)碼是否正確。發(fā)射一串編碼脈沖需要108ms。用戶碼或數(shù)據(jù)碼中的每一個(gè)位可以是‘1’,還可以是‘0’?!?’和‘1’的時(shí)序區(qū)別是脈沖和脈沖之間的時(shí)間間隔不同。如圖3-7。圖3-7紅外遙控接收電路圖3.8系統(tǒng)電路無(wú)線電子密碼鎖主要包括顯示控制電路、鍵盤(pán)輸入電路、主控制器電路、報(bào)警控制電路、紅外遙控接收電路以及存儲(chǔ)模塊電路。電子密碼鎖的硬件電路設(shè)計(jì)圖如圖3-8所示。圖3-8系統(tǒng)電路圖

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

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

結(jié)論通過(guò)本次畢業(yè)設(shè)計(jì)的開(kāi)展,我系統(tǒng)地鞏固了很多在學(xué)校所學(xué)的相關(guān)知識(shí)。真正的理論與實(shí)踐的結(jié)合可以說(shuō)是另一種對(duì)知識(shí)課程的學(xué)習(xí)和深刻的理解:首先是系統(tǒng)方案的選擇,方案的確定是非常重要的,如果前期方案確定有問(wèn)題,后期肯定會(huì)有問(wèn)題,無(wú)論是在硬件上,軟件上。如果出現(xiàn)問(wèn)題,您需要返回并繼續(xù)修改計(jì)劃。方案選擇階段需要大量的經(jīng)驗(yàn),需要積累。系統(tǒng)的硬件設(shè)計(jì)需要根據(jù)方案對(duì)系統(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ò)誤很簡(jiǎn)單的問(wèn)題時(shí),有時(shí)一個(gè)簡(jiǎn)單的問(wèn)題,和調(diào)試將很多天,所以代碼設(shè)計(jì)方法是非常重要的,而模塊化代碼設(shè)計(jì)是最常用的方案。模塊化設(shè)計(jì)很容易在以后更改,也很容易發(fā)現(xiàn)漏洞。最后對(duì)硬件和軟件進(jìn)行統(tǒng)一調(diào)試,并對(duì)實(shí)物進(jìn)行組裝。通過(guò)實(shí)物的調(diào)試和運(yùn)行,驗(yàn)證設(shè)計(jì)的正確性。如果檢測(cè)系統(tǒng)設(shè)計(jì)得更好、更完善,就會(huì)有更多的應(yīng)用場(chǎng)合。但是由于時(shí)間的限制,在設(shè)計(jì)過(guò)程中沒(méi)有時(shí)間和過(guò)多的精力去研究更多的傳感器。

參考文獻(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].中國(guó):北京航空航天出版社,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].艦船電子對(duì)抗,2012(03):22-25[10]楊美仙.單片機(jī)的發(fā)展及其應(yīng)用[J].科技信息(學(xué)術(shù)研究),2017(35):46-47

附錄附錄一電路圖附錄二程序//功能:密碼為000000//密碼可修改萬(wàn)能密碼為: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è)地址開(kāi)始存,第三個(gè)是存儲(chǔ)幾個(gè)數(shù)據(jù)//存儲(chǔ)的數(shù)據(jù)范圍是0-255,地址的范圍也是0-255//要注意的是,存的時(shí)候,數(shù)據(jù)填寫(xiě)是以數(shù)組的形式/*例如tab[0]=11;tab[1]=23;tab[2]=34;Write_dat_24C02(tab,0,2);這句的意思就是,對(duì)tab數(shù)組盡心存儲(chǔ),從第零個(gè)位置開(kāi)始,存兩個(gè)數(shù)據(jù)結(jié)果就是tab【0】存到地址0tab[1]存到地址1tab【2】沒(méi)有存*/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è)位置填寫(xiě)從哪個(gè)地址開(kāi)始讀取數(shù)據(jù),第三個(gè)位置填寫(xiě),一共讀取幾個(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è)管腳是對(duì)比度調(diào)節(jié)管腳,一般接上一個(gè)3K電阻再接地即可。一般我們用的函數(shù),無(wú)非就是LCD1602_write和LCD1602_writebyteLCD1602_write(x,y);這個(gè)函數(shù)括號(hào)里面可以填寫(xiě)兩個(gè)數(shù)據(jù),第一個(gè)數(shù)據(jù)只能是01,是0就說(shuō)明第二個(gè)數(shù)據(jù)對(duì)液晶來(lái)說(shuō)就是命令,填1就說(shuō)明第二個(gè)數(shù)據(jù)對(duì)于液晶來(lái)說(shuō)就是要顯示的數(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)不顯示開(kāi)關(guān)、不顯示光標(biāo)、字符不閃爍LCD1602_write(0,0x06);LCD1602_write(0,0xd0); delay(1500);}ucharkey_fs() //矩陣按鍵返回按碼,矩陣鍵盤(pán)的思路很是通用,課本上都有介紹{ 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]); //把鍵值對(duì)應(yīng)的返回值賦給fz do //do{}while()語(yǔ)句,目的是把紅外解碼緩沖數(shù)組清0,防止此條件一直成立 { qing(); deal_with(); }while(irbyte[2]!=0); }else //否則將鍵盤(pán)返回值賦給fz { fz=key_fs(); } if(fz!=255) //判斷fz的值不是初始值蜂鳴器就滴一聲 { beep2=1;beep=0; delay(10000); beep2=0;beep=1; } if(step==0) //如果是初始頁(yè)面 { 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) //如果是老密碼或新密碼輸入頁(yè)面 { if(fz<10&&n<6) ///如果按鍵返回值小于10說(shuō)明是數(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) //再次輸入頁(yè)面 { 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)鎖門(mén)按鍵 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++)//就對(duì)比密碼 { if(mm[i]!=mm_n1[i]) { break; } } if(i==6) //如果6位都對(duì),門(mén)打開(kāi) { 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) //否則的話對(duì)比萬(wàn)能密碼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次,鍵盤(pán)鎖死 { 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) //鍵盤(pán)鎖死 { LCD1602_write(0,0xc0); LCD1602_writebyte(""); LCD1602_write(0,0xc2); LCD1602_writebyte("Lockedstate"); while(1) { beep1=1; cw=3; time=5; } } } }elseif(step==1) //輸入老密碼頁(yè)面 { 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. 本站所有資源如無(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)論