【單片機(jī)控制的防盜系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(附代碼)11000字(論文)】_第1頁
【單片機(jī)控制的防盜系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(附代碼)11000字(論文)】_第2頁
【單片機(jī)控制的防盜系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(附代碼)11000字(論文)】_第3頁
【單片機(jī)控制的防盜系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(附代碼)11000字(論文)】_第4頁
【單片機(jī)控制的防盜系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(附代碼)11000字(論文)】_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

頁第一章緒論1.1課題研究的背景與意義隨著社會(huì)的進(jìn)步和時(shí)間推移,人們?cè)谌粘I钪械奈镔|(zhì)水平越來越高,生活品質(zhì)條件也越來越好,所以人們對(duì)家庭財(cái)產(chǎn)保護(hù)的意識(shí)也逐漸加深,家居防盜安全問題也成為當(dāng)今社會(huì)最重視的問題之一。古往今來,守衛(wèi)我們房屋的第一道防線就是門,不管是以前的門閂還是如今的門鎖,都為我們的家庭提供了第一層屏障。但隨著時(shí)代的進(jìn)步和科技的發(fā)展,智能密碼鎖能夠更好的替代如今的普通的機(jī)械門鎖,它不僅能夠解決有時(shí)忘帶鑰匙的問題,還能更好的提高安全性,極大的降低了房門被撬的可能性。現(xiàn)如今,人們對(duì)智能密碼鎖的期望很高,其發(fā)展前景十分可觀。1.2單片機(jī)的概述單片機(jī)也被人們稱為一個(gè)單片式的微控制器,它不僅僅是一個(gè)能夠直接完成任何一項(xiàng)邏輯和數(shù)據(jù)處理功能的控制器或芯片,而是將一個(gè)計(jì)算機(jī)或者子系統(tǒng)直接集成在一個(gè)控制器或者電腦中,相當(dāng)于一個(gè)小型的微型計(jì)算機(jī)。如果和真正的計(jì)算機(jī)進(jìn)行對(duì)比,I/O設(shè)備是微型計(jì)算機(jī)唯一缺失的東西。總體上來講,一臺(tái)計(jì)算機(jī)被簡(jiǎn)化縮小變成了一個(gè)小型芯片,它不僅體積小,重量輕,價(jià)格低廉,而且想對(duì)電腦的工作原理和結(jié)構(gòu)進(jìn)行學(xué)習(xí)的話,單片機(jī)是最好的選擇。單片機(jī)技術(shù)早就在上世紀(jì)九十年代就發(fā)展起來了。隨著時(shí)代的進(jìn)步和科學(xué)技術(shù)的發(fā)展,這項(xiàng)技術(shù)的實(shí)際應(yīng)用已經(jīng)漸漸成熟,而且被廣泛應(yīng)用各個(gè)領(lǐng)域,包括家居設(shè)備,通訊設(shè)備等等。在智能電子技術(shù)中,單片機(jī)的開發(fā)和應(yīng)用越來越受到人們的重視。單片機(jī)的發(fā)展進(jìn)入了一個(gè)新的時(shí)代。無論是自動(dòng)測(cè)量還是智能儀器,我們都能看到一個(gè)芯片的微型計(jì)算機(jī)的身影,在如今我國(guó)工業(yè)和科學(xué)技術(shù)發(fā)展的歷史進(jìn)步過程中,電子工業(yè)已經(jīng)成為一個(gè)重要的新興產(chǎn)業(yè)。在工業(yè)制造業(yè)中,人們成功地運(yùn)用了電子信息技術(shù),使電子信息技術(shù)與單片機(jī)技術(shù)的集成能夠有效地提高單片機(jī)應(yīng)用的影響力,單片機(jī)技術(shù)在電子產(chǎn)品中的應(yīng)用,增強(qiáng)了電子產(chǎn)品的功能,為開發(fā)和使用智能電子設(shè)備、實(shí)施創(chuàng)新和開發(fā)智能電子設(shè)備提供了新的途徑。單片機(jī)又被稱為單片微控器,相當(dāng)于一個(gè)微型計(jì)算機(jī),通常包括ROM、CPU和RAM等,是屬于集成式電路芯片的一種,它不僅擁有多樣化的數(shù)據(jù)采集的方式,而且控制系統(tǒng)也是其特點(diǎn)之一,它通過這些特點(diǎn),可以使單片機(jī)非常簡(jiǎn)單的來直接完成各種復(fù)雜的計(jì)算運(yùn)算,無論是向系統(tǒng)發(fā)送下達(dá)的運(yùn)算指令,還是向控制運(yùn)算的符號(hào),這些都可以直接通過小小的單片機(jī)來進(jìn)行實(shí)現(xiàn)。單片機(jī)本身就是一個(gè)芯片,也可以說是一個(gè)系統(tǒng),能夠?qū)崿F(xiàn)高速的數(shù)據(jù)處理,就是利用了集成電路的技術(shù),可以把大量的數(shù)據(jù)在計(jì)算機(jī)中進(jìn)行運(yùn)算及處理操作直接集成在一個(gè)單片機(jī)中。

第二章方案的總體設(shè)計(jì)2.1總體設(shè)計(jì)思路本設(shè)計(jì)是一款用于防盜和報(bào)警的數(shù)字密碼鎖,具體功能如下。1.系統(tǒng)自帶六位密碼,密碼包括數(shù)字0-9和A、B、C、D,還有清除,確認(rèn)功能按鍵,由矩陣式鍵盤進(jìn)行輸入,如果輸入的密碼正確,則可以使密碼鎖打開。2.用戶在密碼鎖開啟狀態(tài)下可自行更換密碼,當(dāng)輸入第一次新密碼時(shí),需要再次輸入第二遍進(jìn)行確認(rèn),防止進(jìn)行誤操作。3.用戶利用矩陣式鍵盤進(jìn)行輸入密碼的操作,如果輸入的密碼與單片機(jī)內(nèi)部存儲(chǔ)的密碼不同時(shí),報(bào)警電路中的蜂鳴器會(huì)發(fā)出一聲警報(bào),如果失誤次數(shù)達(dá)到三次,那么鍵盤失效并且蜂鳴器會(huì)一直發(fā)出報(bào)警聲。4.為保護(hù)密碼安全,輸入密碼時(shí)屏幕上顯示的不是數(shù)字,而是*號(hào)。2.2設(shè)計(jì)方案的選用2.2.1控制系統(tǒng)的選擇方案一:使用數(shù)字電路控制對(duì)于密碼控制單元可以采用集成芯片74LS112雙JK的觸發(fā)器與外圍電路相結(jié)合以達(dá)到實(shí)現(xiàn)此單元功能的主要電路。方案二:使用單片機(jī)為核心進(jìn)行控制的電路用戶輸入密碼,經(jīng)過單片機(jī)控制器,如密碼正確,則系統(tǒng)進(jìn)行下一步操作,密碼鎖進(jìn)行開鎖。反之則返回第一步操作,如錯(cuò)誤出現(xiàn)三次,則自動(dòng)報(bào)警。因?yàn)榉桨敢浑m然設(shè)計(jì)起來比較簡(jiǎn)單,但是控制的準(zhǔn)確性和靈活性差,方案二準(zhǔn)確性高,控制靈活,保密性好,還能在此基礎(chǔ)上進(jìn)行更多操作。所以選擇方案二。2.2.2輸入方式的選擇方案一:獨(dú)立式鍵盤輸入采用獨(dú)立式鍵盤輸入的話,硬件結(jié)構(gòu)簡(jiǎn)單,容易編寫程序,但是如果按鍵數(shù)目多的情況下,每個(gè)按鍵都需使用一個(gè)I/O口。方案二:矩陣式鍵盤輸入采用矩陣式鍵盤輸入,必須檢掃描測(cè)按鍵狀況,編寫程序比較復(fù)雜,耗費(fèi)的時(shí)間也比較多,但是占用的I/O口少。因?yàn)榇嗽O(shè)計(jì)需要十二個(gè)按鍵,按鍵數(shù)目較多,為提高I/O口資源的利用率。故選擇方案二。2.2.3顯示模塊的選擇方案一:數(shù)碼管顯示使用數(shù)碼管,容易編寫程序,具有工作能耗低,使用壽命長(zhǎng)等特點(diǎn),但只能顯示一些簡(jiǎn)單字符和數(shù)字。方案二:液晶顯示液晶顯示器LCD是單片機(jī)控制系統(tǒng)的顯示模塊的最佳選擇,因?yàn)樗粌H僅能顯示數(shù)字與字符,就連漢字和圖形也能顯示。為保護(hù)用戶輸入密碼時(shí)的安全性,輸入密碼時(shí)顯示屏上不會(huì)出現(xiàn)數(shù)字,所以選擇方案二。2.3單片機(jī)的選擇使用單片機(jī)STC89C52作為本設(shè)計(jì)的控制芯片,它不僅僅在結(jié)構(gòu)設(shè)計(jì)上同時(shí)具有了功耗低,性能高的特點(diǎn),而且它還有8k的閃存,這樣就可以在線對(duì)系統(tǒng)應(yīng)用程序語言進(jìn)行快速編程。在以51系列單片機(jī)內(nèi)核不變的基礎(chǔ)下,通過對(duì)其他模塊的升級(jí)與改進(jìn),使得新款的STC89C52在處理運(yùn)算速度與存儲(chǔ)能力都有了全方面的提高。使得其不僅擁有51系列單片機(jī)的原有功能,還得到了之前所未曾擁有的很多新功能。在目前常用的嵌入式控制系統(tǒng)中,STC89C52是具有靈敏度高,運(yùn)算效率快的特點(diǎn),因?yàn)榫哂?位CPU和能夠進(jìn)行在線編程的閃存,這也是STC89C52能夠在市場(chǎng)占據(jù)一席之地的原因。T2EX/P1.1T2EX/P1.14039383736353433323130292827262524232221PDIP-40T2/P1.0P1.2P1.3P1.4P1.5P1.6P1.7RSTRXD/P3.0TXD/P3.1____INT0/P3.2____INT1/P3.3T0/P3.4T1/P3.5XTAL1XTAL2VSSVCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7__EA_____ALE/PROG____WR/P3.6____RD/P3.7____PSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.2/A10P2.1/A9P2.3/A11P2.0/A8圖2.1引腳排列2.4STC89C52引腳具體介紹主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源GND(Pin20):接地線外接晶振引腳(2根)XTAL1(Pin19):內(nèi)部振蕩電路的輸入端XTAL2(Pin20):內(nèi)部振蕩電路的輸出端控制引腳(4根)RST/VPP(Pin9):復(fù)位引腳,如果在RST處出現(xiàn)了連續(xù)24個(gè)時(shí)鐘周期的輸入都為1,那么單片機(jī)將接收信息,然后進(jìn)行復(fù)位。PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào)。ALE/PROG(Pin30):地址鎖存允許信號(hào)輸出引腳/編程脈沖輸入引腳。EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)部或外部選通,當(dāng)輸入為1時(shí),單片機(jī)將從內(nèi)部的程序儲(chǔ)存器進(jìn)行讀取指令的操作;當(dāng)輸入為0時(shí),單片機(jī)將從外部的程序儲(chǔ)存器進(jìn)行讀取指令的操作。

第三章系統(tǒng)硬件設(shè)計(jì)3.1總體設(shè)計(jì)方案1.單片機(jī)STC89C52:完成對(duì)整個(gè)系統(tǒng)的控制。2.矩陣式鍵盤:進(jìn)行密碼的輸入以及更換。3.顯示模塊:采用LCD1602,完成密碼的顯示。4.報(bào)警模塊:蜂鳴器報(bào)警,密碼輸入達(dá)到一定次數(shù)時(shí),進(jìn)行警報(bào)。圖3.1單片機(jī)控制密碼鎖原理圖3.2最小系統(tǒng)設(shè)計(jì)3.2.1設(shè)計(jì)原理用戶通過一個(gè)矩陣式鍵盤進(jìn)行輸入密碼的操作,輸入完畢后,單片機(jī)STC89C52將用戶已經(jīng)輸入的密碼和自身已經(jīng)保存的密碼數(shù)據(jù)進(jìn)行比對(duì),然后再次判斷輸出的密碼數(shù)據(jù)是否正確,如果輸出的密碼正確,開鎖電路會(huì)根據(jù)接收引腳所傳來的信號(hào)高低電平等信號(hào)來決定是否需要進(jìn)行單片機(jī)開鎖的操作,密碼不正確,報(bào)警電路將接收引腳的信號(hào)進(jìn)行報(bào)警操作。3.2.2單片機(jī)STC89C52時(shí)鐘電路:單片機(jī)在正常情況下通過兩種不同的方式來產(chǎn)生時(shí)鐘脈沖信號(hào),第一種是通過內(nèi)部時(shí)鐘方式來產(chǎn)生時(shí)鐘脈沖信號(hào),通過調(diào)用單片機(jī)的內(nèi)部時(shí)鐘振蕩器,與外圍電路中的外接晶振相結(jié)合,使之構(gòu)建成一個(gè)可以穩(wěn)定產(chǎn)生信號(hào)源的自激振蕩器,在外部晶振與單片機(jī)進(jìn)行連接時(shí),通常需要使用XTAL1和XTAL2兩個(gè)引腳并搭配指定規(guī)格的電容。在其單片機(jī)的內(nèi)部會(huì)產(chǎn)生一個(gè)時(shí)鐘脈沖信號(hào)并將信號(hào)直接輸送進(jìn)入內(nèi)部的時(shí)鐘工作電路。外接于晶振兩端的電容范圍一般都是控制在1.2MHz-12MHz之間。另一種是通過外部時(shí)鐘方式來產(chǎn)生時(shí)鐘脈沖信號(hào),通過在單片機(jī)的兩個(gè)引腳XTAL1和XTAL2中接入一個(gè)外部脈沖振蕩器來代替自激振蕩器以產(chǎn)生脈沖信號(hào)。因?yàn)楸敬卧O(shè)計(jì)的控制芯片采用的是單片機(jī)STC89C52,在其內(nèi)部存在著一個(gè)震蕩電路,所以選用前者來進(jìn)行設(shè)計(jì)時(shí)鐘電路,即使用內(nèi)部時(shí)鐘方式在電路中來生成時(shí)鐘脈沖信號(hào)。圖3.2內(nèi)部時(shí)鐘電路復(fù)位電路:單片機(jī)STC89C52的復(fù)位引腳RST,是單片機(jī)STC89C52的第9引腳,同時(shí)也是單片機(jī)復(fù)位信號(hào)的接收引腳,只在高電平的電壓作用下才能有效。當(dāng)單片機(jī)時(shí)鐘處于正常工作狀態(tài)時(shí),若24個(gè)時(shí)鐘周期內(nèi),單片機(jī)的此引腳一直保持在接收高電平的狀態(tài),那么單片機(jī)就將會(huì)進(jìn)行復(fù)位操作。復(fù)位電路中常用的復(fù)位方式一般有兩種,第一種為通過人工按下單片機(jī)最小系統(tǒng)內(nèi)設(shè)置的復(fù)位按鍵來進(jìn)行手動(dòng)復(fù)位,第二種則是上電復(fù)位。因?yàn)楸驹O(shè)計(jì)是通過矩陣鍵盤輸入密碼,所以采用手動(dòng)復(fù)位。利用復(fù)位引腳RST與電源Vcc相接實(shí)現(xiàn)手動(dòng)復(fù)位。圖3.3復(fù)位電路3.2.3輸入鍵盤本設(shè)計(jì)使用矩陣式鍵盤進(jìn)行輸入密碼的操作,鍵盤共16個(gè)按鍵,呈4行4列進(jìn)行分布。判斷哪個(gè)按鍵被按下的方法一般有逐行掃描和行列掃描兩種,本文所設(shè)計(jì)的按鍵中需要使用數(shù)目相對(duì)比較多,所以為了有效提高我們?cè)趩纹瑱C(jī)I/O口的利用率,本設(shè)計(jì)采用對(duì)按鍵矩陣進(jìn)行行列掃描方式來檢測(cè)用戶輸入的數(shù)據(jù)。其原理是先讓端口的高四位全部都輸出1,低四位都輸出0,如果處于這4行4列的按鍵中任一按鍵被按下,那么對(duì)應(yīng)一行的I/O口的電平會(huì)被降低,就可以得到按鍵的行數(shù),再讓端口高四位都輸出0,低四位都輸出1,那么對(duì)應(yīng)一列的I/O口的電平會(huì)被降低,可以得到按鍵的列數(shù),最終得到按下的按鍵具體位置。圖3.4鍵盤模塊3.2.4儲(chǔ)存系統(tǒng)本設(shè)計(jì)的儲(chǔ)存數(shù)據(jù)處理所使用的核心芯片是AT24C02,它是由美國(guó)Atmel公司所研發(fā)的具有2K位串行的低功耗CMOS型E2PROM,它可能夠存儲(chǔ)256個(gè)單位字節(jié),1.8V~6.0V是其正常的工作電壓范圍,高低電平復(fù)位信號(hào)的輸出,一百萬次的編程/擦除一定的時(shí)鐘周期,數(shù)據(jù)被存放和處理的時(shí)間可達(dá)100年。AT24C02支持I2C總線數(shù)據(jù)傳送協(xié)議,當(dāng)用戶在儲(chǔ)存芯片上讀取或者寫入一些數(shù)據(jù)信息時(shí),就是利用I2C總線進(jìn)行數(shù)據(jù)傳輸,所以通訊時(shí)鐘頻率能夠達(dá)到400KHz。VCC代表是芯片上的電源,VSS代表地,+1.8V~+6.0V都是正常工作時(shí)的電壓取值。A0、A1、A2是IC的地址選擇腳。WP是寫保護(hù)使能腳。SCL是I2C通訊時(shí)鐘引腳。SDA是I2C通訊數(shù)據(jù)引腳使用AT24C02作為存儲(chǔ)芯片非常方便的一點(diǎn)就是對(duì)數(shù)據(jù)可以直接進(jìn)行在線編程,而且對(duì)于數(shù)據(jù)的讀取或?qū)懭胍部梢詫?shí)時(shí)進(jìn)行,并且通過使用I2C總線的方式可以使儲(chǔ)存芯片對(duì)數(shù)據(jù)信息來進(jìn)行讀取或?qū)懭?,所以這樣就會(huì)占用很少的資源空間,能夠?qū)⒏嗟馁Y源和I/O口都應(yīng)用于其他方面。片內(nèi)的地址寄存器是該芯片元件內(nèi)重要的部分之一,它的功能是為了將數(shù)據(jù)信息直接寫入到芯片中,每當(dāng)一個(gè)數(shù)據(jù)字節(jié)被寫入或者被讀取,那么片內(nèi)地址寄存器會(huì)加一,這樣就可以有空間去進(jìn)行下一個(gè)數(shù)據(jù)的讀取寫入了。8個(gè)字節(jié)是目前該儲(chǔ)存芯片每進(jìn)行一次寫入操作的最大儲(chǔ)存數(shù)目,這樣可以對(duì)芯片寫入數(shù)據(jù)的時(shí)間進(jìn)行有效降低。I2C總線是一種二進(jìn)制總線。作為連接IC器件的一種方式,通過一個(gè)總線接口連接的每個(gè)接口器件可以采用一個(gè)串行輸出數(shù)據(jù)線和一個(gè)串行輸入時(shí)間數(shù)據(jù)線兩種連接方式之間進(jìn)行交互,每個(gè)連接器件都至少可以通過一個(gè)地址信號(hào)來連接實(shí)現(xiàn)信號(hào)識(shí)別。AT24C02和單片機(jī)采用I2C協(xié)議,主從雙向通信,可以同時(shí)工作在收發(fā)兩種狀態(tài)。3.2.5顯示模塊采用LCD1602,能夠保護(hù)用戶密碼的安全性。LCD1602液晶數(shù)字顯示器模塊是目前常見的一種采用數(shù)碼字符式的新型液晶數(shù)字顯示控制模塊。根據(jù)液晶的物理性質(zhì),采用輸入電壓的大小來控制顯示效果。輸入電壓后,顯示區(qū)打開,就可以顯示圖形。這就是液晶顯示的原理。液晶顯示器的因?yàn)槠涮攸c(diǎn)十分優(yōu)異,所以對(duì)于大規(guī)模的集成電路而言,用其進(jìn)行直接驅(qū)動(dòng)的效果將會(huì)十分顯著,還大大減少了顯示器的厚度與質(zhì)量,降低了占用的體積和空間,而且顯示也可以十分簡(jiǎn)單的去設(shè)計(jì)與實(shí)現(xiàn),如今液晶顯示器不僅僅已經(jīng)在便攜式電腦領(lǐng)域上得到青睞,就連相機(jī)、移動(dòng)通信等眾多應(yīng)用領(lǐng)域也受到了極大的歡迎。圖3.5顯示模塊液晶顯示器LCD1602引腳接口說明如下。第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高??梢岳靡粋€(gè)合適的的電位器來進(jìn)行改善,可以有效改善對(duì)比度過高時(shí)所產(chǎn)生的不良現(xiàn)象。第4腳:RS為寄存器選擇,0代表輸入指令,1代表輸入數(shù)據(jù)。第5腳:R/W為讀寫信號(hào)線,0代表向LCD中寫入指令或數(shù)據(jù),1代表從LCD中讀取信息。第6腳:E端為使能端,1時(shí)接收讀取信息,1→0,即下降沿時(shí)執(zhí)行指令。第7~14腳:數(shù)據(jù)總線,其中第7引腳是最低位,第14引腳是最高位。第15腳:背光源正極。第16腳:背光源負(fù)極。1602液晶模塊主要功能用于對(duì)液晶顯示器信號(hào)進(jìn)行指令式自動(dòng)編程和對(duì)屏幕與液晶光標(biāo)等裝置進(jìn)行控制。(1代表高電平、0代表低電平)指令1:清空屏幕顯示指令,地址計(jì)數(shù)器的值將自動(dòng)歸0,光標(biāo)會(huì)退回屏幕的左上方。指令2:光標(biāo)歸位指令,功能:把光標(biāo)撤回到顯示器的左上方;把地址計(jì)數(shù)器AC的值設(shè)置為0。指令3:進(jìn)入模式設(shè)置指令,設(shè)定每次定入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個(gè)字符是否移動(dòng)。I/D:0代表寫入新數(shù)據(jù)光標(biāo)左移,1代表寫入新數(shù)據(jù)光標(biāo)右移;S:0代表寫入新數(shù)據(jù)后顯示屏不移動(dòng),1代表寫入新數(shù)據(jù)后顯示屏整體向右移動(dòng)一個(gè)字符。指令4:顯示開關(guān)控制指令??刂破聊伙@示器的開啟與關(guān)閉,光標(biāo)的顯示以及屏幕上的光標(biāo)是否出現(xiàn)閃爍現(xiàn)象。D:0代表顯示功能關(guān),1代表顯示功能開;C:0代表無光標(biāo),1代表有光標(biāo);B:0代表光標(biāo)閃爍,1代表光標(biāo)不閃爍。指令5:使光標(biāo)移位或者使整個(gè)顯示屏幕移位指令,當(dāng)S/C與R/L都為0時(shí),光標(biāo)左移一格并且A/C值減一;當(dāng)S/C與R/L都為1時(shí),顯示屏字符全部右移一格且光標(biāo)位置不變;當(dāng)S/C為1,R/L為0時(shí),顯示屏字符全部左移一格且光標(biāo)位置不變;當(dāng)S/C為0,R/L為1時(shí),光標(biāo)右移一格并且A/C值加一。指令6:功能設(shè)定指令,DL:0代表數(shù)據(jù)總線為四位,1代表數(shù)據(jù)總線為八位,N:0表示只顯示一行,1表示顯示兩行,F(xiàn):0表示顯示5乘7的點(diǎn)陣/每字符,1表示顯示5乘10的點(diǎn)陣/每字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀取忙信號(hào)或AC地址指令:讀取忙碌信號(hào)BF,BF=1代表液晶顯示器忙,暫時(shí)無法接收單片機(jī)送來的指令或數(shù)據(jù),BF=0表示液晶顯示器不忙,這時(shí)可以接收單片機(jī)送來的指令或數(shù)據(jù)指令。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)3.2.6蜂鳴器模塊蜂鳴器主要用途是一種用于利用直流源和電壓信號(hào)來對(duì)其進(jìn)行信號(hào)供電的各種一體化機(jī)械結(jié)構(gòu)的小型電子訊號(hào)音響器,作為一種普遍常見的電子發(fā)聲控制器件,使其在娛樂設(shè)備,報(bào)警設(shè)備,通訊設(shè)備,以及辦公設(shè)備等方面大受歡迎,占據(jù)市場(chǎng)的主導(dǎo)地位。壓電式蜂鳴器與電磁式蜂鳴器是目前市場(chǎng)通用的兩大類蜂鳴器。蜂鳴器一般認(rèn)為是在電路中直接使用"H"或"HA"來進(jìn)行表述。按照其中的驅(qū)動(dòng)控制方法和使用途徑不同,我們大致可以把蜂鳴器大致可以劃分為內(nèi)部有源驅(qū)動(dòng)蜂鳴器和外部無源蜂鳴器,當(dāng)其中通過沒有內(nèi)部元件具有電路驅(qū)動(dòng)控制電路的為內(nèi)部有源驅(qū)動(dòng)蜂鳴器,通過外部元件進(jìn)行電路驅(qū)動(dòng)的為外部無源蜂鳴器。根據(jù)其構(gòu)造形式的差異,我們可以把它劃分為兩種類型,即電磁機(jī)械式的蜂鳴器和高壓機(jī)械式的蜂鳴器。根據(jù)它們的封裝形式不同,我們可以把它們劃分為兩種:一是插針型的蜂鳴器,另一種是貼片型的蜂鳴器。根據(jù)每個(gè)通入容器電流的不同,可將它們進(jìn)行劃分分別為直流式的主動(dòng)蜂鳴器和主動(dòng)交流式的被動(dòng)蜂鳴器。圖3.6蜂鳴器電路3.2.7繼電器模塊作為開關(guān),能夠驅(qū)動(dòng)負(fù)載。圖3.7繼電器控制負(fù)載電路

第四章系統(tǒng)軟件設(shè)計(jì)4.1主程序設(shè)計(jì)本設(shè)計(jì)對(duì)操作系統(tǒng)的軟件應(yīng)用程序組合設(shè)計(jì)主要包括有以下幾個(gè)基本步驟:對(duì)整個(gè)應(yīng)用程序包括軟件的操作主程序,初始化的操作程序,鍵盤上的掃描操作程序和顯示屏幕上的顯示器掃描程序等幾個(gè)步驟一并進(jìn)行程序組合設(shè)計(jì)構(gòu)成。圖4.1主程序流程圖4.2顯示程序調(diào)用電子鎖的初始化函數(shù)lcd_init,對(duì)顯示模塊LCD1602進(jìn)行了初始化設(shè)置,使用了字符顯示函數(shù),提醒所有用戶的電子鎖已經(jīng)打開,可以直接輸入密碼。4.3鍵盤掃描程序圖4.2鍵盤掃描流程圖4.4密碼更換程序當(dāng)輸入新密碼后按下的確認(rèn)鍵是功能鍵D。圖4.3新密碼設(shè)定流程圖4.5開鎖程序圖4.4開鎖流程圖

第五章系統(tǒng)仿真與實(shí)物測(cè)試5.1Proteus簡(jiǎn)介Proteus軟件是由一家英國(guó)LabCenterElectronics公司自主研發(fā)和發(fā)行出版的一個(gè)EDA應(yīng)用工具資源管理軟件。它不僅同時(shí)可以具有其它如EDA等工具軟件的性能仿真處理功能,還甚至可以直接用來對(duì)各種單片式主機(jī)和外圍電子元件系統(tǒng)進(jìn)行性能仿真。其中這個(gè)基于數(shù)字化虛擬處理器電路仿真設(shè)計(jì)軟件主要功能支持8051、HC11等,而且在2010年增加了Cortex和DSP兩個(gè)系列的處理器,之后將會(huì)繼續(xù)不斷進(jìn)行更新增加其他幾個(gè)系列的數(shù)字處理器仿真模型。在編譯器的技術(shù)方面,它也包含了IAR、Keil和MATLAB等多種編譯器。5.2Keil簡(jiǎn)介KeilC51是由美國(guó)KeilSoftware公司自主研發(fā)和生產(chǎn)推銷的一款51系列全新的可兼容各種型號(hào)的專用單片上主機(jī)它是c方言語言的應(yīng)用軟件開發(fā)系統(tǒng)管理操作系統(tǒng)。作為一家世界上最大和最具全球性最領(lǐng)先的應(yīng)用微控制器和應(yīng)用軟件開發(fā)研究所和開發(fā)工具的生產(chǎn)專業(yè)化的和獨(dú)立生產(chǎn)供應(yīng)商,其開發(fā)的系統(tǒng)與其他相比具有明顯的優(yōu)勢(shì)。c語言與匯編語言的對(duì)比來講,前者不僅僅在性能上、結(jié)構(gòu)框架、可讀性上勝于后者、而且還容易進(jìn)行維護(hù),所以選擇C語言便于學(xué)習(xí)和使用。keil還為您提供了一個(gè)能夠具有一套符合不同行業(yè)標(biāo)準(zhǔn)的各種c語言編譯器、宏文件匯編器、連接器、調(diào)試器、倉庫資源管理以及一個(gè)功能強(qiáng)大的包括模擬軟件仿真器和調(diào)試器等在內(nèi)的完整主要軟件開發(fā)應(yīng)用解決模式方案,借助于一個(gè)主要軟件開發(fā)集成系統(tǒng)開發(fā)的應(yīng)用環(huán)境把這些主要軟件和應(yīng)用設(shè)備的基本結(jié)構(gòu)都可以組合使用到一起。5.3系統(tǒng)仿真1.在Proteus中畫好電子鎖的基本功能電路,然后將寫好的程序Keil軟件中進(jìn)行編譯,得到hex文件,并將其加載到單片機(jī)中,下圖為在Proteus中所繪制的仿真電路。圖5.12.接通電源后,顯示屏LCD1602上面一行顯示字符,示意用戶進(jìn)行輸入密碼的操作,下面一行用于輸入密碼。3.在仿真電路中輸入正確密碼,已經(jīng)輸入的密碼用*表示,密碼全部輸入完成后,顯示屏LCD1602顯示顯示“OPEN!”。圖5.24.開鎖成功后,如果再次輸入密碼,也進(jìn)行密碼更換。圖5.35.更換新密碼需要連續(xù)輸入兩次才可以被儲(chǔ)存。6.密碼輸入后,顯示屏LCD1602出現(xiàn)“PASSWORDERROR”,并自動(dòng)發(fā)出相應(yīng)的警報(bào)聲,如果您在其中輸入的密碼錯(cuò)誤超過三次,則會(huì)一直報(bào)警。5.4實(shí)物展示1.將實(shí)物連接電源圖5.42.輸入密碼圖5.53.輸入密碼成功圖5.64.設(shè)置新密碼圖5.75.輸入密碼錯(cuò)誤圖5.85.5焊接注意事項(xiàng)進(jìn)行實(shí)物焊接時(shí),首先要檢查每一個(gè)器件是否破損,尤其是引腳處,是否出現(xiàn)斷裂的情況。取一塊主板,要保證主板干凈整潔無異物,這樣才能保證焊接的順利進(jìn)行,單片機(jī)也要清潔干凈。在焊接之前可以在主板和單片機(jī)引腳處上一點(diǎn)焊錫,切記不能上厚焊錫,要保證單片機(jī)引腳能夠順利進(jìn)入主板孔。因?yàn)閱纹瑱C(jī)STC89C52的芯片內(nèi)部很容易高溫所破壞,所以在焊接的時(shí)候要格外注意,最好使用點(diǎn)焊的方式進(jìn)行焊接,烙鐵的功率也不要太大,最好能控制在恒溫300度左右。確定好單片機(jī)的安裝位置后,按照正確的引腳方向進(jìn)行安裝,檢查好后進(jìn)行下一步焊接??梢韵葘纹瑱C(jī)四個(gè)角的引腳和中間兩端的引腳,共六個(gè)引腳進(jìn)行焊接,這樣可以將單片機(jī)穩(wěn)穩(wěn)地固定在主板之上,同時(shí)使用跳躍式焊接法進(jìn)行焊接,這樣可以有效的將熱量分布,防止引腳過熱從而損壞芯片。焊接時(shí),注意烙鐵給每個(gè)引腳上錫的時(shí)間,最好控制在三秒之內(nèi)完成。完成焊接后,檢查單片機(jī)是否在主板上固定好,有無虛焊的地方,將多余的焊錫在主板上刮凈,最后再用萬用表測(cè)試每一個(gè)引腳是否短路。對(duì)于其他元器件的焊接注意事項(xiàng):要注意每個(gè)元器件焊接時(shí)的溫度,還有加熱的時(shí)間,防止損傷器件。當(dāng)將各個(gè)元器件連接起來時(shí),注意將導(dǎo)線的兩端橡膠去除一部分,露出銅線,然后按照最開始畫好的電路圖進(jìn)行元件之間的連接。電烙鐵在預(yù)熱時(shí)和使用完畢后必須放在烙鐵架上,防止?fàn)C傷皮膚或者元器件及其線路,電烙鐵使用完畢后,需要在烙鐵頭上涂一薄層焊錫,這樣可以有效的延長(zhǎng)電烙鐵的使用時(shí)間,防止其與空氣長(zhǎng)時(shí)間接觸而導(dǎo)致被氧化。

總結(jié)本系統(tǒng)是主要是以單片機(jī)STC89C52作為設(shè)計(jì)核心來構(gòu)建的最小系統(tǒng)控制電路已完成對(duì)整個(gè)系統(tǒng)的控制,采用儲(chǔ)存芯片AT24C02來進(jìn)行對(duì)數(shù)據(jù)信息的寫入與讀取,并且還使用一種新型液晶顯示器LCD1602為核心來搭建的顯示電路,再加上矩陣式的鍵盤電路,以及蜂鳴器電路,開鎖電路等為基礎(chǔ),研究開發(fā)的一款智能防盜電子鎖。將所有元件進(jìn)行焊接,能夠得到最后實(shí)物,可以成功完成預(yù)期的開鎖,報(bào)警,密碼更換等功能。從本次設(shè)計(jì)的開始到結(jié)束,我意識(shí)到自己對(duì)此方面的相關(guān)知識(shí)存在這很大的不足,還包括考驗(yàn)動(dòng)手能力的焊接操作,這些都需要我去不斷學(xué)習(xí)和熟練運(yùn)用。以單片機(jī)STC89C52為基礎(chǔ)的防盜系統(tǒng)設(shè)計(jì)不僅容易設(shè)計(jì),易于開發(fā),使用方便,安全性高,并且性價(jià)比高,可以廣泛應(yīng)用與家庭,商場(chǎng),工作場(chǎng)所等各種環(huán)境,可以有效的起到安全防盜的功能,保障人們的財(cái)產(chǎn)安全。

參考文獻(xiàn)王英輝,劉世行,黃英凡,等.一種智能密碼鎖的設(shè)計(jì)與研究[J].中國(guó)新技術(shù)新產(chǎn)品,2019,000(001):9-10.趙建領(lǐng),薛園園.51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解[M].電子工業(yè)出版社,2009.陳中,朱代忠.基于STC89C52單片機(jī)的控制系統(tǒng)設(shè)計(jì)[M].清華大學(xué)出版社,2015.王守中.一讀就通51單片機(jī)開發(fā)[M].電子工業(yè)出版社,2011.田豐春,楊種學(xué).C語言程序設(shè)計(jì)[M].南京大學(xué)出版社,2016.郭天祥.新概念51單片機(jī)C語言教程——入門、提高、開發(fā)、拓展全攻略[M].北京:電子工業(yè)出版社,2010.姜永利,鄢宇,朱毅,等.一種新型家庭智能防盜報(bào)警系統(tǒng)的設(shè)計(jì)[J].黑龍江科技信息,2016,26(26):106-106.徐錦俊.電子工程技術(shù)在單片機(jī)中的技術(shù)應(yīng)用解析[J].數(shù)字通信世界,2019,000(003):194,202.唐穎,程菊花,任條娟.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)[M].北京:北京大學(xué)出版社,2008.張毅剛,趙光權(quán),劉旺.單片機(jī)原理及應(yīng)用.第3版[M].高等教育出版社,2016.解翔宇,項(xiàng)遠(yuǎn)輝,林健誼,等.智能電子密碼鎖設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2019,015(012):176-180.張曉鄉(xiāng).89C51單片機(jī)實(shí)用教程[M].電子工業(yè)出版社,2010.

附錄#include<REG52.h>#include<intrins.h>#defineLCM_DataP0#defineucharunsignedchar#defineuintunsignedintsbitlcd1602_rs=P2^7;sbitlcd1602_en=P2^6;sbitScl=P2^0; //24C02串行時(shí)鐘sbitSda=P2^1; //24C02串行數(shù)據(jù)sbitALAM=P3^6; //報(bào)警 sbitKEY=P3^2; //開鎖bitoperation=0; //操作標(biāo)志位bitpass=0; //密碼正確標(biāo)志bitReInputEn=0; //重置輸入充許標(biāo)志 bits3_keydown=0; //3秒按鍵標(biāo)志位bitkey_disable=0; //鎖定鍵盤標(biāo)志unsignedcharcountt0,second; //t0中斷計(jì)數(shù)器,秒計(jì)數(shù)器//解碼變量unsignedcharIm[4]={0x00,0x00,0x00,0x00};//全局變量ucharf;unsignedlongm,Tc;unsignedcharIrOK;unsignedcharcodea[]={0xFE,0xFD,0xFB,0xF7};//控盤掃描控制表unsignedcharcodestart_line[] ={"password:"};unsignedcharcodename[] ={"===CodedLock==="}; //顯示名稱unsignedcharcodeCorrect[] ={"correct"}; //輸入正確unsignedcharcodeError[] ={"error"}; //輸入錯(cuò)誤unsignedcharcodecodepass[] ={"pass"};unsignedcharcodeLockOpen[] ={"open"}; //OPENunsignedcharcodeSetNew[] ={"SetNewWordEnable"};unsignedcharcodeInput[] ={"input:"}; //INPUTunsignedcharcodeResetOK[] ={"ResetPasswordOK"};unsignedcharcodeinitword[] ={"Initpassword..."};unsignedcharcodeEr_try[] ={"error,tryagain!"};unsignedcharcodeagain[] ={"inputagain"};unsignedcharInputData[6]; //輸入密碼暫存區(qū)unsignedcharCurrentPassword[6]={1,3,1,4,2,0}; //當(dāng)前密碼值unsignedcharTempPassword[6];unsignedcharN=0; //密碼輸入位數(shù)記數(shù)unsignedcharErrorCont; //錯(cuò)誤次數(shù)計(jì)數(shù)unsignedcharCorrectCont; //正確輸入計(jì)數(shù)unsignedcharReInputCont; //重新輸入計(jì)數(shù)unsignedcharcodeinitpassword[6]={0,0,0,0,0,0};//5ms延時(shí)voidDelay5Ms(){unsignedintTempCyc=5552;while(TempCyc--);} //400ms延時(shí)voidDelay400Ms(){unsignedcharTempCycA=5;unsignedintTempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);}}//24C02voidmDelay(uintt)//延時(shí){uchari;while(t--){for(i=0;i<125;i++){;}}}voidNop() //空操作{_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;elseSda=0;Scl=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);Scl=0;}/*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/ucharRead(){uchartemp=0;uchartemp1=0;ucharBitCounter=8;Sda=1;do{Scl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}voidWrToROM(ucharData[],ucharAddress,ucharNum){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);}}voidRdFromROM(ucharData[],ucharAddress,ucharNum){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();}}//LCD1602#defineyi0x80//LCD第一行的初始位置,因?yàn)長(zhǎng)CD1602字符地址首位D7恒定為1(100000000=80)#defineer0x80+0x40//LCD第二行初始位置(因?yàn)榈诙械谝粋€(gè)字符位置地址是0x40)//延時(shí)函數(shù),后面經(jīng)常調(diào)用voiddelay(uintxms)//延時(shí)函數(shù),有參函數(shù){uintx,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);}//寫指令voidwrite_1602com(ucharcom)//****液晶寫入指令函數(shù)****{lcd1602_rs=0;//數(shù)據(jù)/指令選擇置為指令// lcd1602_rw=0;//讀寫選擇置為寫P0=com;//送入數(shù)據(jù)delay(1);lcd1602_en=1;//拉高使能端,為制造有效的下降沿做準(zhǔn)備delay(1);lcd1602_en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}//寫數(shù)據(jù)voidwrite_1602dat(uchardat)//***液晶寫入數(shù)據(jù)函數(shù)****{lcd1602_rs=1;//數(shù)據(jù)/指令選擇置為數(shù)據(jù)// lcd1602_rw=0;//讀寫選擇置為寫P0=dat;//送入數(shù)據(jù)delay(1);lcd1602_en=1;//en置高電平,為制造下降沿做準(zhǔn)備delay(1);lcd1602_en=0;//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}//初始化voidlcd_init(){write_1602com(0x38);//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)write_1602com(0x0c);//開顯示不顯示光標(biāo)write_1602com(0x06);//整屏不移動(dòng),光標(biāo)自動(dòng)右移write_1602com(0x01);//清顯示}//將按鍵值編碼為數(shù)值unsignedcharcoding(unsignedcharhh) {unsignedchark;switch(hh){case(0):k=1;break;case(1):k=2;break;case(2):k=3;break;case(3):k='A';break;case(4):k=4;break;case(5):k=5;break;case(6):k=6;break;case(7):k='B';break;case(8):k=7;break;case(9):k=8;break;case(10):k=9;break;case(11):k='C';break;case(12):k='*';break;case(13):k=0;break;case(14):k='#';break;case(15):k='D';break;}return(k);}unsignedcharKeyMemory;//按鍵行定義sbitKeyLine_1 = P1^7;sbitKeyLine_2 = P1^5;sbitKeyLine_3 = P1^3;sbitKeyLine_4 = P1^1;//按鍵列定義sbitKeylist_1 = P1^0; sbitKeylist_2 = P1^2; sbitKeylist_3 = P1^4; sbitKeylist_4 = P1^6; voidKeyOut(unsignedchari){KeyLine_1=1;KeyLine_2=1;KeyLine_3=1;KeyLine_4=1;switch(i){case0:KeyLine_1=0;break;case1:KeyLine_2=0;break;case2:KeyLine_3=0;break;case3:KeyLine_4=0;break;} }unsignedcharKeyIn(unsignedchari){staticunsignedchara=1;switch(i){case0:a=Keylist_1;break;case1:a=Keylist_2;break;case2:a=Keylist_3;break;case3:a=Keylist_4;break;} returna;}//函數(shù):u8update_key(void)//應(yīng)用:key=u8update_key();//描述:掃描并返回按下的按鍵值, //參數(shù)://返回:按下的鍵值,0-15;無按下返回0xff;unsignedcharkeynum(void){unsignedcharkey_rt=0xff;//按鍵返回值unsignedchari,j;for(i=0;i<4;i++)//i是輸出口,依次置高電平{KeyOut(i);for(j=0;j<4;j++)//j是輸入口,當(dāng)鍵按下時(shí)導(dǎo)通被置為高電平//在1路輸出高電平的時(shí)候輸入掃描,并儲(chǔ)存{if(KeyIn(j)==0) //如果有按鍵按下{Delay5Ms();Delay5Ms();if(KeyIn(j)==0) //如果有按鍵按下{KeyMemory=(1<<i)*16+(1<<j);}}while(KeyIn(j)==0); //松手檢測(cè),假如有按鍵按下則等待,沒有按下或松開則通過}}for(i=0;i<4;i++){if((KeyMemory/16)>>i==0x01){for(j=0;j<4;j++){ if((KeyMemory%16)>>j==0x01){KeyMemory=0;key_rt=i*4+j;}}}}returnkey_rt;}//一聲提示音,表示有效輸入voidOneAlam(){ALAM=0;Delay5Ms();ALAM=1;}//二聲提示音,表示操作成功voidTwoAlam(){ALAM=0;Delay5Ms();ALAM=1;Delay5Ms();ALAM=0;Delay5Ms();ALAM=1;}//聲提示音,表示錯(cuò)誤voidThreeAlam(){ALAM=0;Delay5Ms();ALAM=1;Delay5Ms();ALAM=0;Delay5Ms();ALAM=1;Delay5Ms();ALAM=0;Delay5Ms();ALAM=1;}//顯示提示輸入voidDisplayChar(){unsignedchari;if(pass==1){write_1602com(er);for(i=0;i<16;i++){write_1602dat(LockOpen[i]); }}else{if(N==0){write_1602com(er);for(i=0;i<16;i++){write_1602dat(Error[i]); }}else{write_1602com(er);for(i=0;i<16;i++){write_1602dat(start_line[i]); }}}}//重置密碼voidResetPassword(){unsignedchari; unsignedcharj;if(pass==0){pass=0;DisplayChar();ThreeAlam();}else{if(ReInputEn==1){if(N==6){ReInputCont++; if(ReInputCont==2){for(i=0;i<6;){if(TempPassword[i]==InputData[i]) //將兩次輸入的新密碼作對(duì)比i++;else{write_1602com(er);for(j=0;j<16;j++){write_1602dat(Error[j]); }ThreeAlam(); //錯(cuò)誤提示 pass=0;ReInputEn=0; //關(guān)閉重置功能,ReInputCont=0;DisplayChar();break;}}if(i==6){write_1602com(er);for(j=0;j<16;j++){write_1602dat(ResetOK[j]); }TwoAlam(); //操作成功提示W(wǎng)rToROM(TempPassword,0,6); //將新密碼寫入24C02存儲(chǔ)ReInputEn=0;}ReInputCont=0;CorrectCont=0;}else{OneAlam();write_1602com(er);for(j=0;j<16;j++){write_1602dat(again[j]); } for(i=0;i<6;i++){TempPassword[i]=InputData[i]; //將第一次輸入的數(shù)據(jù)暫存起來 }}N=0; //輸入數(shù)據(jù)位數(shù)計(jì)數(shù)器清零}}}}//輸入密碼錯(cuò)誤超過三過,報(bào)警并鎖死鍵盤voidAlam_KeyUnable(){P1=0x00;{ALAM=~ALAM;Delay5Ms();}}//取消所有操作voidCancel(){ unsignedchari;unsignedcharj;write_1602com(er);for(j=0;j<16;j++){write_1602dat(start_line[j]); }TwoAlam(); //提示音for(i=0;i<6;i++){InputData[i]=0;}KEY=1; //關(guān)閉鎖ALAM=1; //報(bào)警關(guān)operation=0; //操作標(biāo)志位清零pass=0; //密碼正確標(biāo)志清零ReInputEn=0; //重置輸入充許標(biāo)志清零CorrectCont=0; //密碼正確輸入次數(shù)清零ReInputCont=0; //重置密碼輸入次數(shù)清零s3_keydown=0;key_disable=0;N=0; //輸入位數(shù)計(jì)數(shù)器清零}//確認(rèn)鍵,并通過相應(yīng)標(biāo)志位執(zhí)行相應(yīng)功能voidEnsure(){ unsignedchari,j;RdFromROM(CurrentPassword,0,6); //從24C02里讀出存儲(chǔ)密碼if(N==6){if(ReInputEn==0) //重置密碼功能未開啟{for(i=0;i<6;){ if(CurrentPassword[i]==InputData[i]){i++;}else{i=7; ErrorCont++;if(ErrorCont>=3&&KEY==1) //錯(cuò)誤輸入計(jì)數(shù)達(dá)三次時(shí),報(bào)警并鎖定鍵盤{write_1602com(er);for(i=0;i<16;i++){write_1602dat(Error[i]); }Alam_KeyUnable();TR0=1; //開啟定時(shí)key_disable=1; //鎖定鍵盤pass=0;break; }}}if(i==6){CorrectCont++;if(CorrectCont==1) //正確輸入計(jì)數(shù),當(dāng)只有一次正確輸入時(shí),開鎖,{write_1602com(er);for(j=0;j<16;j++){write_1602dat(LockOpen[j]); }TwoAlam(); //操作成功提示音ErrorCont=0;KEY=0; //開鎖pass=1; //置正確標(biāo)志位TR0=1; //開啟定時(shí)for(j=0;j<6;j++) //將輸入清除{InputData[i]=0;}} else //當(dāng)兩次正確輸入時(shí),開啟重置密碼功能{write_1602com(er);for(j=0;j<16;j++){write_1602dat(SetNew[j]); }TwoAlam(); //操作成功提示ReInputEn=1; //允許重

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論