基于單片機(jī)的多功能密碼鎖_第1頁(yè)
基于單片機(jī)的多功能密碼鎖_第2頁(yè)
基于單片機(jī)的多功能密碼鎖_第3頁(yè)
基于單片機(jī)的多功能密碼鎖_第4頁(yè)
基于單片機(jī)的多功能密碼鎖_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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課題背景研究更多的設(shè)備和系統(tǒng)選擇采用智能化的控制方式,不斷演進(jìn)和迭代的智能化技術(shù),催生了更多產(chǎn)品,其中,多功能密碼鎖為了更高的安全性和更多的功能性,密碼鎖進(jìn)行了大量的升級(jí)改造,如,單片機(jī)技術(shù)的引入,使得密碼鎖防破解能力和結(jié)構(gòu)的復(fù)雜度大大增加,安全性能也隨之提升。由此,一種常見(jiàn)的安全設(shè)備,通過(guò)智能化技術(shù)的引入,其功能更加多元,也更易于日常的使用和適應(yīng)復(fù)雜的場(chǎng)景,成為一種被更多人接受的設(shè)備。密碼鎖可以有更多的功能,以前,較為簡(jiǎn)單的密碼鎖只具有開(kāi)鎖和館所的功能,無(wú)法滿足特殊需求,在引入單片機(jī)后就可以增加密碼鎖的功能,例如,通過(guò)復(fù)雜的編程,可以植入如震動(dòng)、防撬等,還可以讓用戶重置自己的密碼。引入單片機(jī)的密碼鎖,也可以變得更適合大眾使用,操作界面會(huì)變得更加友好,設(shè)置對(duì)密碼的增刪改查等,讓密碼鎖變得更智能,會(huì)贏得更多的用戶青睞。許許多多的場(chǎng)景可以用到單片機(jī),通過(guò)簡(jiǎn)單的編程,實(shí)現(xiàn)一些簡(jiǎn)單的功能。例如,在一些需要高度安全的地方,如銀行、政府機(jī)構(gòu)等,為了保障這些場(chǎng)所的安全,引入單片機(jī)后,進(jìn)行更復(fù)雜的編程,就能實(shí)現(xiàn)更復(fù)雜的功能,同時(shí)提供更加可靠和安全的保護(hù),為這些場(chǎng)所的安全防護(hù)提供更加可靠的保障。在采用了先進(jìn)的電子技術(shù)之后,多功能密碼鎖的的可靠性和安全性也得到了更多的保障,用微處理器、單片機(jī)等,對(duì)鎖的開(kāi)啟和關(guān)閉進(jìn)行控制,可以實(shí)現(xiàn)比傳統(tǒng)機(jī)械更強(qiáng)大的功能,做身份驗(yàn)證和密碼保護(hù)時(shí),比起傳統(tǒng)的機(jī)械鎖,多功能密碼鎖還可以實(shí)現(xiàn)防護(hù)非法入侵和防止誤操作。同時(shí),多功能密碼鎖還集成了多種附加功能,如無(wú)線連接、報(bào)警等,為用戶提供更加便捷、安全的保護(hù)。在時(shí)代和技術(shù)的發(fā)展下,特別是人工智能和物聯(lián)網(wǎng)的發(fā)展,多功能密碼鎖的智能化程度也在不斷提高。密碼鎖已經(jīng)不像過(guò)去一樣,只有在面對(duì)鎖的時(shí)候才能進(jìn)行操作,通過(guò)智能家居系統(tǒng),用戶可以在手機(jī)程序上進(jìn)行操作,進(jìn)行開(kāi)鎖和關(guān)鎖,不僅如此,用戶還可以查看開(kāi)鎖記錄,如果有人偷偷進(jìn)入用戶的家里,用戶可以通過(guò)開(kāi)鎖記錄查到??梢哉f(shuō),在智能化和安全性上,已經(jīng)相對(duì)于過(guò)去發(fā)展了很多。另外,在環(huán)保上,隨著人們?cè)絹?lái)越重視,多功能密碼鎖的設(shè)計(jì)也在不斷優(yōu)化,以實(shí)現(xiàn)更低功耗、更環(huán)保的材料和制造工藝。1.2簡(jiǎn)述國(guó)內(nèi)外研究國(guó)內(nèi):技術(shù)的創(chuàng)新,是時(shí)代發(fā)展的標(biāo)志,在多功能密碼鎖領(lǐng)域,隨著科技的不斷發(fā)展,越來(lái)越多的新技術(shù)被應(yīng)用到密碼鎖的設(shè)計(jì)和制造中。為了密碼鎖更加安全,越來(lái)越多技術(shù)被應(yīng)用其中,例如,生物識(shí)別技術(shù),這其中的面部識(shí)別和紅膜識(shí)別技術(shù),增加了密碼鎖的安全性和可靠性,也讓開(kāi)鎖更加方便和快捷。為了智能化管理的需求,物聯(lián)網(wǎng)技術(shù)也在不斷運(yùn)用于密碼鎖領(lǐng)域,隨著智能家居系統(tǒng)的興起,密碼鎖的安全性得到了極大的提升,為實(shí)現(xiàn)更加智能化的管理,邁出了重要的一步。安全性、便捷性、創(chuàng)新性,這些新技術(shù)不斷賦予密碼鎖更多、更強(qiáng)的特性,也滿足了消費(fèi)者逐步提升的需求,除此之外,現(xiàn)代消費(fèi)者也越來(lái)越重視多功能密碼鎖的智能化程度,他們希望密碼鎖不僅能夠提供基本的安全保障,還能實(shí)現(xiàn)更人性化的設(shè)計(jì),例如,用戶希望通過(guò)手機(jī)就能操作密碼鎖,可以在智能家居系統(tǒng)里查看密碼鎖的狀況,用戶希望,他們能在虛擬程序你,控制在現(xiàn)實(shí)世界的事物。因此,越來(lái)越多的消費(fèi)者開(kāi)始選擇購(gòu)買智能密碼鎖,以提升家庭的安全性和便捷性。市場(chǎng)正朝著多元化的方向發(fā)展,密碼鎖市場(chǎng)就是其中之一,特別是線上平臺(tái),或是在社交媒體上,人們談?wù)摰臇|西很大程度的影響了市場(chǎng)的動(dòng)向,也隨之可以影響實(shí)體店的銷售。密碼鎖市場(chǎng)的快速發(fā)展,離不開(kāi)線上渠道的興起,以及,由此帶來(lái)的消費(fèi)者的評(píng)價(jià),他們的選擇帶動(dòng)了市場(chǎng)的變化,并未技術(shù)的進(jìn)步提供了動(dòng)力。國(guó)外:隨著全球消費(fèi)者對(duì)家庭和商業(yè)安全需求的不斷增加,密碼鎖市場(chǎng)在國(guó)外持續(xù)發(fā)展。尤其是在北美和歐洲等發(fā)達(dá)國(guó)家,密碼鎖市場(chǎng)的規(guī)模和銷量都在不斷增長(zhǎng)。在國(guó)外,密碼鎖的技術(shù)創(chuàng)新也在不斷推進(jìn)。除了指紋識(shí)別、面部識(shí)別等生物識(shí)別技術(shù)外,還有一些新興的技術(shù),如聲音識(shí)別、靜脈識(shí)別等也開(kāi)始被應(yīng)用到密碼鎖中。這些技術(shù)的應(yīng)用提高了密碼鎖的安全性和用戶體驗(yàn)。國(guó)外的智能家居市場(chǎng)發(fā)展較為成熟,密碼鎖的智能化發(fā)展也得到了加速。實(shí)現(xiàn)智能化的管理的一個(gè)典型特征是,智能家居系統(tǒng)可以與更種事物進(jìn)行聯(lián)動(dòng),如智能密碼鎖,當(dāng)用戶項(xiàng)進(jìn)行不同的操作時(shí),不需要真的在設(shè)備面前[1],而是借助手機(jī)app,或電腦上的軟件,只需要輕輕點(diǎn)擊,就可以是吸納大量的功能,如開(kāi)鎖、關(guān)鎖、設(shè)置權(quán)限等。氣候不斷變化,為了應(yīng)對(duì)危機(jī),綠色環(huán)保也被注入了各種技術(shù)當(dāng)中,更加環(huán)保的材料和更加綠色的生產(chǎn)供給,可以有效的減少能耗和廢棄物,也為企業(yè)提供了競(jìng)爭(zhēng)力,也為行業(yè)的可持續(xù)發(fā)展注入能量。當(dāng)然,無(wú)論如何變化,安全,仍然是密碼鎖競(jìng)爭(zhēng)力的核心,這也是各種技術(shù)創(chuàng)新和智能化進(jìn)步中不可取代的優(yōu)勢(shì),即使一個(gè)具備了所有的特征,如果他不能在安全性上做到保證,就無(wú)法贏的競(jìng)爭(zhēng)。國(guó)外的密碼鎖企業(yè)都在加強(qiáng)技術(shù)研發(fā),提高產(chǎn)品的安全性能,可以給予用戶更多的安全保障。1.3多功能密碼鎖研究方向多功能密碼鎖的研究方向可以涵蓋多個(gè)領(lǐng)域和方面,國(guó)內(nèi)外廣泛研究主要包括以下幾個(gè)方面:1)密碼學(xué)與安全協(xié)議:研究如何設(shè)計(jì)更安全、更難以破解的密碼算法和安全協(xié)議,為財(cái)產(chǎn)安全和用戶的隱私提供保證。2)生物識(shí)別技術(shù):研究如何利用生物識(shí)別技術(shù),如指紋識(shí)別、虹膜識(shí)別等,通過(guò)注入新技術(shù)來(lái)為安全性提供保證,既做到有效驗(yàn)證身份,也要防止非法入侵,還要防止誤判。3)硬件設(shè)計(jì):縮減成本,同時(shí)提高性能,達(dá)到最高的性價(jià)比。4)智能化與自適應(yīng)性:研究如何利用人工智能、機(jī)器學(xué)習(xí)等技術(shù),使密碼鎖能夠自適應(yīng)地調(diào)整安全策略、識(shí)別用戶行為模式等,以提供更加智能化的保護(hù)。5)物聯(lián)網(wǎng)與無(wú)線通信技術(shù):研究如何利用物聯(lián)網(wǎng)和無(wú)線通信技術(shù),實(shí)現(xiàn)遠(yuǎn)程控制、實(shí)時(shí)監(jiān)控和數(shù)據(jù)傳輸?shù)裙δ?,提高用戶的使用便利性和安全性?)智能化以及用戶體驗(yàn):通過(guò)研究智能化設(shè)計(jì),讓用戶操作更加方便快捷,帶來(lái)簡(jiǎn)便和安全性的同時(shí),讓用戶滿意。7)法律法規(guī)與標(biāo)準(zhǔn)制定:研究與密碼鎖相關(guān)的法律法規(guī)和標(biāo)準(zhǔn)制定,以確保產(chǎn)品的合規(guī)性和市場(chǎng)競(jìng)爭(zhēng)力。8)應(yīng)用場(chǎng)景與市場(chǎng)調(diào)研:研究不同應(yīng)用場(chǎng)景的需求和市場(chǎng)趨勢(shì),以開(kāi)發(fā)更符合市場(chǎng)需求的多功能密碼鎖產(chǎn)品。1.4研究?jī)?nèi)容本課題用proteus8.6做仿真軟件,keil4寫代碼,模擬多功能密碼鎖的內(nèi)容,主要探討以下幾個(gè)方面:密碼設(shè)計(jì):設(shè)計(jì)一種多位密碼輸入系統(tǒng),其具備多種功能和人性化設(shè)計(jì),如用戶在輸入密碼時(shí),只在后臺(tái)接收輸入的數(shù)字,不在屏幕上顯示,這是為防止被窺探。再輸入密碼后,系統(tǒng)進(jìn)行比對(duì),如果輸入正確,則進(jìn)行下一步操作。開(kāi)鎖方式:研究并設(shè)計(jì)多種開(kāi)鎖方式,如輸入正確的密碼、使用指紋、面部識(shí)別等生物識(shí)別技術(shù),以及通過(guò)遠(yuǎn)程控制等方式。成本和生產(chǎn)工藝:研究如何降低生產(chǎn)成本,優(yōu)化生產(chǎn)工藝,以提高產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力。多功能密碼鎖多功能密碼鎖具有以下功能:1.密碼輸入;2.密碼保護(hù);3.密碼修改;4.輸入成功;5.管理員萬(wàn)能鑰匙。2.1多功能密碼鎖的基本原理圖2.1.1函數(shù)圖多功能密碼的程序主要由輸入程序KeyScan、定時(shí)器Timer0_Routine、密碼保護(hù)程序keyprotect組成。當(dāng)用戶想輸入之前,密碼輸入行顯示6個(gè)“*”,每輸入一個(gè)數(shù)字,“*”變成該數(shù)字,數(shù)字一個(gè)個(gè)輸入直到完成,接著,提取用戶之前設(shè)置的密碼,在KeyScan中對(duì)比,如果密碼正確,則可以打開(kāi)鎖,同時(shí)清除輸入次數(shù)的計(jì)算。如果比對(duì)的結(jié)果是不相同,那么就去查看用戶輸入的次數(shù)[2],如果用戶輸入錯(cuò)誤的次數(shù)在三次以內(nèi),則重新讓用戶輸入,調(diào)用KeyScan,輸入框恢復(fù)為6個(gè)“*”,用戶再次輸入。若密碼錯(cuò)誤,則啟動(dòng)keyprotect,進(jìn)入密碼保護(hù)狀態(tài),調(diào)用Timer0_Routine函數(shù),開(kāi)始計(jì)時(shí),在一定的時(shí)間內(nèi),報(bào)警燈閃爍,蜂鳴器發(fā)出警報(bào)聲,用戶無(wú)法操作,在倒計(jì)時(shí)結(jié)束之前,所有的功能都被禁止。倒計(jì)時(shí)結(jié)束之后,用戶才能繼續(xù)操作。本程序內(nèi)置了管理員萬(wàn)能鑰匙,這樣,當(dāng)用戶實(shí)在記不起自己的密碼的時(shí)候,可以聯(lián)系生產(chǎn)密碼鎖的工作人員,使用管理員萬(wàn)能鑰匙解開(kāi),或者重啟密碼鎖的電源,這樣用戶密碼會(huì)恢復(fù)到用戶設(shè)置時(shí)的密碼。2.2多功能密碼鎖仿真圖圖2.2.1多功能密碼鎖仿真圖仿真圖2.2.1是多功能密碼鎖的仿真圖,多功能密碼鎖由矩陣鍵盤、顯示屏、單片機(jī)、排阻、LED燈、揚(yáng)聲器、地線、電源組成[3]。圖2.2.2矩陣鍵盤圖2.2.2是矩陣鍵盤,由4x4個(gè)按鈕組成,按照矩形排列,每一列的按鈕左端都連在一起,由右至左分別連在P0至P3引腳,每一行的按鈕右端都連在一起,由下至上分別連在P4至P7引腳。由于人的手指按下后會(huì)停留一段時(shí)間,雖然很短,但遠(yuǎn)遠(yuǎn)多于單片機(jī)運(yùn)行的時(shí)間,因此,需要在這種檢查入一次延時(shí),以確保不重復(fù)掃描。掃描分為兩次,一是行掃描,而是列掃描,行掃描和列掃描的結(jié)果疊加[4],就能確定按鍵的位置,獲得一個(gè)輸入值。通過(guò)這樣的方式,開(kāi)關(guān)信息就可以轉(zhuǎn)化為數(shù)字信息,完成矩陣鍵盤的信息輸出[5]。圖2.2.3AMPIRE128x64圖2.2.3AMPIRE128x64為顯示屏,密碼鎖的圖像信息由此顯示屏顯示,AMPIRE128x64有128x64個(gè)像素點(diǎn),圖像由像素點(diǎn)的亮和暗信息組成,也就是由0和1控制,由此,可以組成任意的圖像,可以是漢字、數(shù)字、字母,也可以是自己創(chuàng)造的問(wèn)題,或是在上面畫(huà)圖,支持自定義點(diǎn)陣模型。AMPIRE下方由許多引腳,其中,通過(guò)E、RW、RS三個(gè)引腳的組合控制寫入指令還是數(shù)據(jù),CS1和CS2兩個(gè)引腳分別控制AMPIRE的左右屏幕的兩半,數(shù)據(jù)和指令由DB0至DB7傳入。圖2.2.4單片機(jī)圖2.2.4是C51單片機(jī),是一種相對(duì)簡(jiǎn)單的芯片,具備一些簡(jiǎn)單的指令系統(tǒng),可以接受和發(fā)出一些簡(jiǎn)單的信息,廣泛應(yīng)用于各種機(jī)械設(shè)備里,如汽車、家用電器、工業(yè)控制,以及一些通信設(shè)備。多功能密碼鎖的控制中心,單片機(jī),代碼和數(shù)據(jù)都存放在單片機(jī)里,P0、P1、P2是幾個(gè)引腳組,可以單獨(dú)輸入信號(hào)進(jìn)P0.1、P0.2等,也可以將一個(gè)八位的信號(hào)輸入P0。在多功能密碼鎖中,P1引腳用來(lái)接收矩陣鍵盤的信號(hào),通過(guò)列掃描和行掃描獲取按下的鍵,接著就可以在單片機(jī)中處理這些信號(hào)[6];P2.2、P2.3、P2.4三個(gè)引腳分別接AMPIRE的RS、RW、E引腳,通過(guò)這三個(gè)引腳的相互組合,就能控制信號(hào)和指令的轉(zhuǎn)化;從P0引腳輸出對(duì)應(yīng)的指令和信息,顯示在AMPIRE中;P2.6、P2.7兩個(gè)引腳分別接LED燈和揚(yáng)聲器,當(dāng)需要燈發(fā)光、揚(yáng)聲器發(fā)生的時(shí)候,只需要從這兩個(gè)引腳中輸出信號(hào),LED燈就會(huì)發(fā)光、揚(yáng)聲器也會(huì)發(fā)聲[7]。AMPIRE128x643.1AMPIRE128x64簡(jiǎn)述AMPIRE128X64液晶顯示器具有強(qiáng)大的功能,他的原理簡(jiǎn)單,構(gòu)造并不復(fù)雜,憑借低壓和微功耗,占有巨大的市場(chǎng),AMPIRE可以顯示點(diǎn)陣序列,用來(lái)產(chǎn)生字符和圖像,這款顯示器并不自帶字庫(kù),因此為了顯示字符,需要使用取模軟件自制字模。Ampire以革新愿景和創(chuàng)新想法為驅(qū)動(dòng),以傳統(tǒng)的TN(TwistedNematic)模組為起點(diǎn),擴(kuò)展了多種產(chǎn)品,如STN(SuperTwistedNematic)模組、TFT(ThinFilmTransistor)模組以及觸摸面板。在單片機(jī)系統(tǒng)中,以低壓和低功耗為為優(yōu)勢(shì),得到了廣泛應(yīng)用,涵蓋了數(shù)顯液晶模塊、點(diǎn)陣字符液晶模塊和點(diǎn)陣圖形液晶模塊等多種類型。此外,Ampire還是知名的顯示器品牌,其主要產(chǎn)品包括高亮度TFTLCD顯示屏,這些顯示屏采用非晶硅TFT-LCD技術(shù),并配備驅(qū)動(dòng)裝置、不銹鋼座圈和白色LED背光。AMPIRE128X64顯示器的主要特點(diǎn)包括其強(qiáng)大的功能和指令系統(tǒng)。指令系統(tǒng)是顯示器的核心部分,它負(fù)責(zé)接收并解析來(lái)自控制器的指令,然后根據(jù)指令的要求控制顯示器的顯示內(nèi)容。由于這款顯示器支持多種語(yǔ)言,使得它在各種應(yīng)用場(chǎng)景中都能發(fā)揮出色的性能[8]。AMPIRE128x64是一種128x64像素的液晶顯示屏,它被廣泛應(yīng)用于各種電子設(shè)備中作為人機(jī)交互界面的顯示器[9]。這種顯示屏具有高對(duì)比度、清晰度和反應(yīng)速度等優(yōu)點(diǎn),可以顯示豐富的內(nèi)容,讓用戶更加直觀、便捷地操作設(shè)備。Ampire128x64的應(yīng)用領(lǐng)域非常廣泛,包括工控機(jī)、電子秤、醫(yī)療設(shè)備、家電控制器、智能家居等。在工業(yè)控制領(lǐng)域,Ampire128x64常用于監(jiān)控設(shè)備運(yùn)行狀態(tài)、顯示數(shù)據(jù)信息等;在醫(yī)療領(lǐng)域,Ampire128x64可用于監(jiān)測(cè)患者生命體征、顯示醫(yī)學(xué)影像等;在智能家居領(lǐng)域,Ampire128x64則可作為智能控制面板,實(shí)現(xiàn)對(duì)家居設(shè)備的遠(yuǎn)程控制和管理。除了應(yīng)用領(lǐng)域廣泛外,Ampire128x64還具有多種優(yōu)點(diǎn)。首先,它的顯示面積較大,可以同時(shí)顯示多個(gè)信息,減少用戶的操作次數(shù)和時(shí)間。其次,它的分辨率較高,能夠呈現(xiàn)清晰的圖像和文字,提高用戶的使用體驗(yàn)。此外,Ampire128x64還擁有快速響應(yīng)的特點(diǎn),能夠?qū)崟r(shí)更新顯示內(nèi)容,保證用戶獲取最新的信息。在本次多功能密碼鎖的制作中,并不需要真實(shí)的AMPIRE,而是采用proteus進(jìn)行仿真,實(shí)際效果會(huì)是類似的。3.2AMPIRE128x64的數(shù)據(jù)和指令A(yù)MPIRE128X64本身并不帶字庫(kù),所以為了顯示字符,我們需要使用取模程序來(lái)制作字模。這款顯示屏分為左右兩個(gè)半屏,分別由兩片控制器控制,控制引腳為CS1和CS2[10],每個(gè)控制器內(nèi)部有64*64位(512字節(jié))RAM緩存區(qū)[11]。AMPIRE128X64液晶顯示器的指令系統(tǒng)由寄存器選擇信號(hào)RS,讀寫控制信號(hào)R/W與8位三態(tài)數(shù)據(jù)口輸入輸出的控制代碼的不同組合構(gòu)成。這些指令幫助控制液晶顯示器完成各種操作。RS為寄存器選擇,高電平1為數(shù)據(jù)寄存器,低電平0為指令寄存器。R/W為讀下信號(hào)線,高電平1時(shí)進(jìn)行讀操作,低電平0時(shí)進(jìn)行寫操作。E是使能端(ENABLE),下降沿使能。RS為0,R/W為0時(shí),寫入指令寄存器;RS為0,R/W為1時(shí),讀取位址計(jì)數(shù)器值;RS為1,R/W為0時(shí),寫入數(shù)據(jù)寄存器(顯示各字型等);RS為1,R/W為1時(shí),從數(shù)據(jù)寄存器讀取數(shù)據(jù)。設(shè)置好RS、R/W、E后,數(shù)據(jù)和指令從DB端口輸入,之后就可以在AMPIRE上顯示。3.3字符和引腳編輯3.3.1字符編輯圖3.3.1數(shù)字字模圖3.3.2“*”字模圖3.3.3開(kāi)鎖關(guān)鎖圖像字模圖3.3.1為編輯的數(shù)字字模,當(dāng)需要在AMPIRE上顯示數(shù)字的時(shí)候,就可以調(diào)用ch函數(shù),生成對(duì)應(yīng)的數(shù)字圖像。圖3.3.2是“*”字模,再輸入密碼前,顯示6個(gè)“*”,每次輸入一個(gè)數(shù)字,就取消一個(gè)“*”的顯示,切換成數(shù)字。圖3.3.3是開(kāi)鎖關(guān)鎖的圖像,在輸入密碼器前,顯示一把關(guān)著的鎖,輸入密碼后,若密碼錯(cuò)誤,依舊顯示一把關(guān)著的鎖,若密碼正確,則顯示的是打開(kāi)的鎖,此時(shí)LED燈亮,定時(shí)器開(kāi)始計(jì)時(shí),三秒鐘之后,LED燈滅,自動(dòng)關(guān)鎖,圖像又變回關(guān)著的鎖。圖3.3.4圖像輸出代碼展示圖3.3.5開(kāi)鎖前效果仿真圖3.3.6輸入密碼后效果圖3.3.4為代碼,圖3.3.5和圖3.3.6為實(shí)際效果。圖3.3.7重設(shè)密碼圖3.3.8密碼錯(cuò)誤圖3.3.9重設(shè)密碼圖3.3.7里是“輸”、“入”、“密”、“碼”、“重”、“設(shè)”、“錯(cuò)”、“誤”幾個(gè)漢字的字模,當(dāng)輸入的密碼錯(cuò)誤時(shí),就顯示“密碼錯(cuò)誤”,而當(dāng)輸入的密碼正確,想重設(shè)密碼時(shí),點(diǎn)擊“reset”按鍵,就會(huì)如圖3.3.9所示,變?yōu)椤爸卦O(shè)密碼”幾個(gè)字,這些漢字都來(lái)源于ch2函數(shù)里的數(shù)字字模。3.3.2引腳編輯圖3.3.2.1引腳設(shè)置 圖3.3.2.2聲明函數(shù)在設(shè)置引腳的時(shí)候,需要先在頭文件里設(shè)置好,然后在程序中引用,寫程序的文件代碼雜亂無(wú)章,單獨(dú)一個(gè)文件設(shè)置會(huì)顯得清晰。圖3.3.2.1設(shè)置屏幕 圖3.3.2.2設(shè)置頁(yè)面圖3.3.2.3設(shè)置列圖3.3.2.4寫命令函數(shù) 圖3.3.2.5寫數(shù)據(jù)函數(shù)圖3.3.2.6清屏清屏操作是一種常見(jiàn)的顯示函數(shù),利用這個(gè)函數(shù),可以進(jìn)行顯示器的初始化,以及畫(huà)面切換后的補(bǔ)充操作,防止有些變量殘留,影響之后其他代碼的運(yùn)行,造成bug。然而,清屏操作涉及到多個(gè)函數(shù),這些基本的函數(shù)都有自己基本的功能,會(huì)被其他更復(fù)雜的函數(shù)調(diào)用,因此,不會(huì)直接寫入清屏函數(shù)的里面,而是被其調(diào)用,在介紹清屏函數(shù)的時(shí)候,順便介紹這些基本的函數(shù)。首先,需要設(shè)置屏幕,AMPIRE有左右兩個(gè)半屏,需要先設(shè)置輸入在哪個(gè)半屏里,SelectScreen函數(shù)既是設(shè)置此功能的,只需要給予SelectScreen函數(shù)0或1或2,0表示全屏,1表示左半屏,2表示右半屏,通過(guò)控制CS1和CS2的組合實(shí)現(xiàn)。接著就可以利用一個(gè)循環(huán)進(jìn)行清屏,AMPIRE有八個(gè)引腳,列的最大項(xiàng)是64,因此,采用一個(gè)8x64的雙重循環(huán)。先設(shè)置起始頁(yè)和列,共有8頁(yè),從0到7每一頁(yè)都清除,每次都給Set_column傳入?yún)?shù)0,代表從0列開(kāi)始清除。在循環(huán)里,給AMPIRE注入0,即可讓屏幕顯示空白。通過(guò)write_LCD_Date函數(shù)來(lái)實(shí)現(xiàn)這一操作,在write_LCD_Date函數(shù)里,將RS設(shè)置為1,RW設(shè)置為0,即可寫入數(shù)據(jù),之后不斷的向write_LCD_Date函數(shù)里傳入0的參數(shù),就可以實(shí)現(xiàn)清屏操作。圖3.3.2.7初始化 圖3.3.2.8設(shè)置起止行初始化,也是類似的過(guò)程,甚至,初始化也調(diào)用了ClearScreen函數(shù),在其中傳入?yún)?shù)0,也就是說(shuō),清除整個(gè)屏幕。SetOnOff函數(shù)里,設(shè)置了0為打開(kāi)屏幕顯示,1為關(guān)閉屏幕顯示,InitLCD函數(shù)先在SetOnOff函數(shù)里先傳入了參數(shù)0,,打開(kāi)了屏幕,又傳入1,關(guān)閉了顯示,接著又將顯示的所有數(shù)據(jù)變?yōu)?,最后設(shè)置的起止行為第0行,AMPIRE回到剛打開(kāi)的狀態(tài)。圖圖3.3.2.9顯示漢字圖3.3.2.10顯示數(shù)字圖3.3.2.11顯示圖片數(shù)字、漢字和圖像的顯示是類似的。都由以下流程構(gòu)成:1,設(shè)置屏幕的左半屏或右半屏或全屏,設(shè)置所在頁(yè)數(shù),設(shè)置起止列,這些都由傳入的參數(shù)決定,程序不自主設(shè)置。2,傳入字模,在主程序中,已經(jīng)設(shè)置好了字模,只需要在主程序中輸入字模的下標(biāo),就可以在這里,利用循環(huán),一個(gè)個(gè)地將點(diǎn)陣序列傳入write_LCD_date函數(shù)中,在屏幕中顯示,數(shù)字、字幕和圖像不同,由于它們所占用的空間大小不等,故需要三個(gè)函數(shù)來(lái)完成這一類似的過(guò)程。矩陣鍵盤和引腳設(shè)置4.1引腳設(shè)置圖4.1.1矩陣鍵盤引腳設(shè)置如果每個(gè)按鍵都單獨(dú)接入單片機(jī),另一端接入電源或接地,那么4x4共16個(gè)按鍵,就需要16個(gè)引腳,而單片機(jī)一共只有3x8共24個(gè)引腳可以輸入數(shù)據(jù),這樣一來(lái),就會(huì)非常浪費(fèi),像本次制作多功能密碼鎖,AMPIRE就占用了13個(gè)引腳,如果按鈕再占用16個(gè),顯然引腳就不夠用,解決辦法可能是再接一個(gè)單片機(jī),一個(gè)單片機(jī)處理輸入的數(shù)字,將得到的信息輸入另一個(gè)單片機(jī),另一個(gè)單片機(jī)只負(fù)責(zé)顯示。這樣的解決方法是有效的,但卻是低效的,因此,本次多功能密碼鎖,使用具站鍵盤的思路來(lái)解決問(wèn)題,只需要將按鍵排成一個(gè)矩陣,并連接入8個(gè)引腳就能解決引腳的問(wèn)題,可以極大地節(jié)省資源。4.2矩陣鍵盤實(shí)現(xiàn)電流具有天然的流動(dòng)特性,就像水一樣,當(dāng)開(kāi)關(guān)的兩端電壓相同的時(shí)候,按下時(shí)不會(huì)有變化,就像水不會(huì)有落差時(shí)就不會(huì)流動(dòng)一樣。當(dāng)兩端的電壓不同時(shí),電就會(huì)從高電壓處流向低電壓處,從而平衡電壓,而流過(guò)之后,差別就消失了,兩端的電壓持平,都變成了低電平。圖4.2.1矩陣鍵盤代碼依據(jù)這個(gè)原理,矩陣鍵盤誕生了。先進(jìn)行一次延時(shí),由于手的抖動(dòng)會(huì)讓單片機(jī)檢測(cè)的時(shí)候檢測(cè)到多次,因此需要延時(shí),這樣當(dāng)檢測(cè)一次就停一段時(shí)間,重新檢測(cè)的時(shí)候手指已經(jīng)離開(kāi),就不會(huì)有重復(fù)。先進(jìn)行一次列掃描,也就是將GPIO_KEY的值設(shè)置為0x0F,00001111是換算成二進(jìn)制后的結(jié)果,于是,P1的引腳4到7都是0,都是低電平,P1.0到P1.3的引腳就是1,為高電平,P1.0到P1.3連接的是列,當(dāng)某一列的開(kāi)關(guān)被按下后,開(kāi)關(guān)的一端連接著列,是高電平,一端連接著行,是低電平,開(kāi)關(guān)接通后,兩端都變成了低電平,因此,如果某一列被按下,那么該列連接的單片機(jī)引腳就變成了低電平,GPIO_KEY的值就會(huì)改變,如開(kāi)關(guān)1連接著P1.3引腳,按下開(kāi)關(guān)1,就會(huì)讓P1.3的輸入為0,這樣,在列掃描中,GPIO_KEY的值就由0xF0變成0x70,也就是二進(jìn)制的00001111變?yōu)榱?0000111。第二次方向顛倒了一下,于是,行掃描就變成了列掃描,GPIO_KEY的值變?yōu)?xF0,也就是11110000,如果的確是開(kāi)關(guān)1被按下,那么在這一次行掃描中,開(kāi)關(guān)1的一端連接著P1.3的引腳,另一端連著著P1.7引腳,P1.7是高電平,P1.3是低電平,兩個(gè)引腳通過(guò)開(kāi)關(guān)連接到一起后,P1.7就會(huì)變成和P1.3一樣的低電平,因此,GPIO_KEY的值就會(huì)變成0x70,也就是01110000。圖4.2.2矩陣鍵盤輸入數(shù)字與結(jié)果4x4的矩陣鍵盤,一行有4個(gè)開(kāi)關(guān),一列也有四個(gè)開(kāi)關(guān),因此,在列中判斷了按下的開(kāi)關(guān)是第一列之后,給k值為0,確定k在第0個(gè)列,在行中繼續(xù)判斷,當(dāng)發(fā)現(xiàn)也是第一行時(shí),給k值k=k+4x0,也就是k本身。如果按下的是開(kāi)關(guān)4,那么第二次掃描結(jié)果的值就是0xb0,也就是10110000,因此開(kāi)關(guān)在第一列,第二行,那么第一次掃描給k值為0,第二次給k值為k=k+4x1,得k=k+4,也就是第4個(gè)位置。將開(kāi)關(guān)的位置編號(hào)設(shè)為0,從左往右,從上往下數(shù),每個(gè)開(kāi)關(guān)都會(huì)得到一個(gè)編號(hào),左右相鄰的開(kāi)關(guān)之間,由于是優(yōu)先數(shù)列,因此相差1,上下之間的開(kāi)關(guān),由于優(yōu)先數(shù)列,其次數(shù)行,因此,相差整整一行,也就是相差4。計(jì)算按鈕的結(jié)果可以采用公式:K=k0(列掃描值)+4xh(相差的行數(shù))通過(guò)編號(hào),按鍵檢測(cè)和計(jì)算出了k值,就知道按下了哪個(gè)鍵,接著,就可以利用switch函數(shù),將得到的每個(gè)值寫進(jìn)去,控制對(duì)應(yīng)的結(jié)果,其中,要想在AMPIRE上輸入密碼,就可以按下標(biāo)有數(shù)字0到9的十個(gè)數(shù)字按鈕,可以得到想要的結(jié)果?!癈LR”是清零鍵,按下時(shí),AMPIRE的輸入欄會(huì)重新變回6個(gè)“*”,輸入的數(shù)據(jù)會(huì)被清零,此時(shí),用戶可以重新輸入密碼。用戶如果密碼輸入錯(cuò)誤,可以采用DELETE鍵來(lái)刪除,用來(lái)接收密碼的變量password2就會(huì)除以10,password2是整數(shù),因此會(huì)失去最后一位,此時(shí)AMPIRE上就會(huì)少顯示一位數(shù)字。用戶回憶下自己的密碼,重新輸入正確的一位數(shù)字。開(kāi)關(guān)RESET是用來(lái)重設(shè)密碼的,當(dāng)用戶輸入正確的密碼之后,lock的值變?yōu)?,此時(shí),RESET的作用將被允許,當(dāng)用戶想要重設(shè)密碼時(shí),他可以在此時(shí)按下RESET鍵,此時(shí)輸入欄又變回6個(gè)“*”,用戶此時(shí)再次輸入六位新密碼,就會(huì)被儲(chǔ)存在password1中,也就是開(kāi)鎖的密碼。多功能密碼鎖代碼設(shè)計(jì)5.1以鍵盤輸入為主導(dǎo)的代碼圖5.1.1主函數(shù)在主函數(shù)中,先用InitLCD函數(shù)初始化,接著用ClearScreen函數(shù)初始化AMPIRE,然后就可以設(shè)置AMPIRE上的初始圖形,包括關(guān)閉的鎖、輸入框?yàn)榱鶄€(gè)“*”。接著使用while(1)形成一個(gè)無(wú)限循環(huán),在里面放入KeyScan函數(shù)檢測(cè)鍵盤輸入,times變量表示輸入錯(cuò)誤的次數(shù),如果輸入錯(cuò)誤的次數(shù)少于三次,則可以一直檢測(cè)用戶輸入,保護(hù)狀態(tài)沒(méi)有開(kāi)啟。在這下面的keyprotect函數(shù)是檢測(cè)多功能密碼鎖是否處于保護(hù)狀態(tài)的。圖5.1.2鍵盤檢測(cè)先進(jìn)行一次行檢測(cè),得到輸入的數(shù)字,然后在進(jìn)行列檢測(cè)。圖5.1.3輸入完畢用戶每輸入完成一次,times變量加一,表示輸入次數(shù)加一,接著進(jìn)行密碼比對(duì),變量password2里存放著剛剛輸入的密碼,變量password1里存放著用戶設(shè)置的密碼,變量password3里存放著管理員密碼,如果此時(shí)用戶輸入管理員密碼,那么password2在和password1比對(duì)失敗后,就會(huì)和password3比對(duì),如果是一樣的,則也能開(kāi)鎖成功。此時(shí),代表開(kāi)鎖成功的變量lock變?yōu)?,計(jì)算輸入次數(shù)的times清零,AMPIRE顯示屏上不再顯示關(guān)鎖圖案,而是開(kāi)鎖圖案。圖5.1.4延時(shí)函數(shù)delay的延時(shí)通過(guò)while循環(huán)實(shí)現(xiàn),循環(huán)一旦開(kāi)啟,運(yùn)行的代碼轉(zhuǎn)到delay函數(shù)上,而delay函數(shù)又沒(méi)什么可執(zhí)行的,于是,在空耗了一段時(shí)間,又轉(zhuǎn)回主函數(shù)。往delay()函數(shù)的括號(hào)里輸入多少,delay函數(shù)就會(huì)進(jìn)行多久的延時(shí)。開(kāi)鎖完成后,為了給用戶接下來(lái)的操作預(yù)留時(shí)間,需要插入一段延時(shí),在這過(guò)程中,用戶可以進(jìn)行自己想要的操作,如重設(shè)密碼等。在此之后,密碼鎖會(huì)重新上鎖。如果用戶輸入了錯(cuò)誤的密碼,那么用戶將會(huì)看到,“輸入密碼”幾個(gè)漢字變成了“密碼錯(cuò)誤”,第一次和第二次,用戶將能重新輸入,在第三次的時(shí)候,進(jìn)入密碼保護(hù)狀態(tài),此時(shí),用戶被禁止操作,過(guò)程持續(xù)到延時(shí)函數(shù)都執(zhí)行完畢。執(zhí)行完輸入的密碼檢測(cè)后,password2=0,即,將對(duì)輸入欄清零,以便于下一次輸入。5.2各種功能的實(shí)現(xiàn)5.2.1重設(shè)密碼圖5.2.1.1重設(shè)密碼在多功能密碼鎖的代碼中,設(shè)置了d作為輸入欄密碼寬度變量,初始值d=0,每次輸入一位數(shù)字,d加一,當(dāng)d等于6時(shí),則表明輸入了6位數(shù)字,此時(shí)開(kāi)始比對(duì)密碼是否正確。在比對(duì)了密碼是否正確之后,同時(shí)也意味著d大于5,此時(shí),檢測(cè)rst變量是否置一,如置一,則表明密碼輸入成功,且reset鍵被按下,此時(shí)就可以重設(shè)密碼。為了防止重復(fù)進(jìn)行重設(shè)密碼,先把密碼寬度變量d變?yōu)?,password2也變?yōu)榱悖€有rst,開(kāi)鎖成功后亮起的LED燈的控制變量lock。之后就是變更文字為“輸入密碼”,將輸入欄全變成“*”,圖片變?yōu)殛P(guān)鎖圖片。5.2.2密碼保護(hù)5.2.2.1主程序密碼保護(hù)部分無(wú)限循環(huán)里,當(dāng)輸入密碼錯(cuò)誤的次數(shù)小于3次的時(shí)候,一直正常檢驗(yàn)密碼和開(kāi)鎖,同時(shí)檢測(cè)是否進(jìn)入密碼保護(hù),一旦輸錯(cuò)密碼的次數(shù)等于和大于三次,則不再檢測(cè)密碼是否正確,通過(guò)keyprotect函數(shù)進(jìn)入密碼保護(hù)函數(shù)。5.2.2.2密碼保護(hù)開(kāi)始密碼保護(hù)函數(shù)中,檢測(cè)輸錯(cuò)密碼次數(shù)變量times,如果times大于2次,則進(jìn)入密碼保護(hù),啟動(dòng)Timer0_Routine函數(shù)作為定時(shí)器,檢測(cè)Timer0_Routine函數(shù)里的T0_Count值,如果T0_Count小于50,則打開(kāi)LED燈lock,使燈亮,同時(shí)控制蜂鳴器的變量buz置一,T0_Count的變化范圍是0到100,T0_Count的值小于50的時(shí)候,一直將LED燈和蜂鳴器打開(kāi),T0_Count等于50時(shí),lock和buz置零,關(guān)閉LED燈和蜂鳴器。接著將times加一,即時(shí)間過(guò)了1秒。圖5.2.2.3密碼保護(hù)結(jié)束因此,當(dāng)輸錯(cuò)密碼后,LED燈和蜂鳴器在前半秒打開(kāi),后半秒關(guān)閉,持續(xù)三秒鐘,當(dāng)times值大于等于6的時(shí)候,將times值置零,此時(shí),times的值已經(jīng)不再符合密碼保護(hù)函數(shù)的運(yùn)行,因此密碼保護(hù)程序到此結(jié)束,多功能密碼鎖重新進(jìn)入正常檢測(cè)輸入密碼的狀態(tài)。圖5.2.2.4管理員密碼如果用戶實(shí)在記不起自己的密碼,可以采用管理員密碼打開(kāi)鎖,管理員密碼和用戶自己設(shè)置的密碼不一樣,用戶設(shè)置的密碼在初始會(huì)有一個(gè)值,為6個(gè)6,用戶可以在第一次輸入成功后,可自行修改,管理員密碼的初始值為102401,且不可修在,它存在于代碼中,用戶沒(méi)有任何修改的渠道。5.3計(jì)時(shí)程序的設(shè)計(jì)圖5.3.1靜態(tài)變量圖5.3.2計(jì)時(shí)程序計(jì)時(shí)程序的變量T0_Count是一個(gè)靜態(tài)變量,在程序運(yùn)行前就會(huì)

溫馨提示

  • 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)論