基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課程設(shè)計(jì)報(bào)告LCD顯示電子密碼鎖設(shè)計(jì)(TheDesignofLCDElectronicPassword-Lock)

畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對(duì)本研究提供過幫助和做出過貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)說明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝?、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉?jī)?nèi)容。作者簽名:日期:

學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期:年月日學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名: 日期:年月日導(dǎo)師簽名:日期:年月日

注意事項(xiàng)1.設(shè)計(jì)(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(yè)(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結(jié)論7)參考文獻(xiàn)8)致謝9)附錄(對(duì)論文支持必要時(shí))2.論文字?jǐn)?shù)要求:理工類設(shè)計(jì)(論文)正文字?jǐn)?shù)不少于1萬(wàn)字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于1.2萬(wàn)字。3.附件包括:任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)。4.文字、圖表要求:1)文字通順,語(yǔ)言流暢,書寫字跡工整,打印字體及大小符合要求,無(wú)錯(cuò)別字,不準(zhǔn)請(qǐng)他人代寫2)工程設(shè)計(jì)類題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國(guó)家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準(zhǔn)用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁(yè)以上的雙面打印4)圖表應(yīng)繪制于無(wú)格子的頁(yè)面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔5.裝訂順序1)設(shè)計(jì)(論文)2)附件:按照任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)次序裝訂

指導(dǎo)教師評(píng)閱書指導(dǎo)教師評(píng)價(jià):一、撰寫(設(shè)計(jì))過程1、學(xué)生在論文(設(shè)計(jì))過程中的治學(xué)態(tài)度、工作精神□優(yōu)□良□中□及格□不及格2、學(xué)生掌握專業(yè)知識(shí)、技能的扎實(shí)程度□優(yōu)□良□中□及格□不及格3、學(xué)生綜合運(yùn)用所學(xué)知識(shí)和專業(yè)技能分析和解決問題的能力□優(yōu)□良□中□及格□不及格4、研究方法的科學(xué)性;技術(shù)線路的可行性;設(shè)計(jì)方案的合理性□優(yōu)□良□中□及格□不及格5、完成畢業(yè)論文(設(shè)計(jì))期間的出勤情況□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績(jī):□優(yōu)□良□中□及格□不及格(在所選等級(jí)前的□內(nèi)畫“√”)指導(dǎo)教師:(簽名)單位:(蓋章)年月日

評(píng)閱教師評(píng)閱書評(píng)閱教師評(píng)價(jià):一、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績(jī):□優(yōu)□良□中□及格□不及格(在所選等級(jí)前的□內(nèi)畫“√”)評(píng)閱教師:(簽名)單位:(蓋章)年月日本自動(dòng)化071班張志達(dá)34號(hào)教研室(或答辯小組)及教學(xué)系意見教研室(或答辯小組)評(píng)價(jià):一、答辯過程1、畢業(yè)論文(設(shè)計(jì))的基本要點(diǎn)和見解的敘述情況□優(yōu)□良□中□及格□不及格2、對(duì)答辯問題的反應(yīng)、理解、表達(dá)情況□優(yōu)□良□中□及格□不及格3、學(xué)生答辯過程中的精神狀態(tài)□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格評(píng)定成績(jī):□優(yōu)□良□中□及格□不及格教研室主任(或答辯小組組長(zhǎng)):(簽名)年月日教學(xué)系意見:系主任:(簽名)年月日摘要單片機(jī)技術(shù)是智能化檢測(cè)與控制領(lǐng)域應(yīng)用非常普及并且具有很大潛力的技術(shù)。論文闡述一個(gè)基于單片機(jī)的液晶顯示電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)采用美國(guó)Atmel公司的AT89S52單片機(jī)作為系統(tǒng)核心,液晶顯示器LCD1602作為輸出設(shè)備顯示系統(tǒng)提示信息,4*4矩陣薄膜鍵盤作為輸入設(shè)備,CMOS串行E2PROM存儲(chǔ)器AT24C02作為數(shù)據(jù)存儲(chǔ)器,配合蜂鳴器、繼電器等電路構(gòu)成整個(gè)系統(tǒng)硬件;系統(tǒng)軟件采用匯編語(yǔ)言編寫。設(shè)計(jì)的系統(tǒng)液晶顯示,密碼修改方便,具有報(bào)警、鎖定等功能,使用便捷簡(jiǎn)單,符合住宅、辦公用鎖需求,具有一定的實(shí)用價(jià)值。關(guān)鍵詞:密碼鎖;單片機(jī);STC89C52;LCD1602;AT24C02TheDesignofLCDElectronicPassword-LockAbstractSCMtechnologyisverypopularandhasgreatpotentialinapplicationofintelligentdetectionandcontrolfield.ThisthesisdescribesthedesignandimplementationofLCDelectronicpassword-locksystembasedonSCM.ThesystemusestheproductofAmericaAtmelcorporationAT89S52asthecoreofsystem,liquidcrystalmonitor1602astheoutputdevicedisplayingthepromptinformationofsystem,4*4matrixmembranekeyboardastheinputdevice,serialE2PROMmemoryAT24C02asthedatastorage,withbuzzer,relay,andothercircuitstogetherconstitutethesystemhardware.Thesoftwareofthesystemiswritteninassemblylanguage.ThedesignedsystemdisplayinLCD,changepasswordeasily,hasthefunctionofalarming,locking,andsoon.Thissystemissimpleandeasytouse,meetsthedemandofresidential,officelockneeds,hassomepracticalvalue.Keywords:Password-Lock;SCM;STC89C52;LCD1602;AT24C02 目錄摘要 IAbstract II目錄 III第一章引言 11.1課題設(shè)計(jì)背景 11.2課題設(shè)計(jì)目標(biāo) 1第二章系統(tǒng)方案論證 22.1主控部分的選擇 22.2密碼輸入方式的選擇 2第三章系統(tǒng)總體設(shè)計(jì)和主要芯片介紹 33.1系統(tǒng)總體設(shè)計(jì) 53.2主要芯片介紹 63.2.1AT89S52 63.2.2存儲(chǔ)芯片AT24C02 83.2.2LCD1602顯示器 9第四章硬件設(shè)計(jì) 114.1鍵盤輸入模塊 114.2密碼存儲(chǔ)模塊 124.3復(fù)位部分 134.4晶振部分 134.5顯示模塊 144.6報(bào)警部分 154.7開鎖部分 15第五章系統(tǒng)軟件設(shè)計(jì) 175.1系統(tǒng)程序流程圖 175.1.1主程序流程圖 175.1.2鍵功能程序流程圖 185.1.3開鎖程序流程圖 195.2子程序舉例 205.2.1開鎖子程序 205.2.2按鍵掃描子程序 225.2.3密修改碼子程序 23第六章畢業(yè)設(shè)計(jì)總結(jié) 28致謝 29參考文獻(xiàn) 30附錄一總電路原理圖 31附錄二實(shí)物圖 32附錄三元器件清單 33附錄四系統(tǒng)總體程序 34第一章引言1.1設(shè)計(jì)背景鎖具是源流千古的社會(huì)性用品,主要用于日常生活和工作中,住宅與部門的安全防范。當(dāng)前門鎖的主流是彈子鎖,其保密性不強(qiáng),鑰匙容易被仿制和意外丟失;且持有者需隨時(shí)攜帶鑰匙,使用不方便。保存貴重物件的保險(xiǎn)箱主要用機(jī)械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高,成本高昂,且易出現(xiàn)故障。隨著科技、經(jīng)濟(jì)和社會(huì)的發(fā)展,當(dāng)今社會(huì)公共安全防范系統(tǒng)對(duì)鎖具的保密性、牢固性、可靠性、耐用性以及安裝使用等提出了新的更高的要求。針對(duì)原有鎖具的特點(diǎn)和缺陷,為滿足人們對(duì)鎖的使用需求,增加其安全性,用密碼代替鑰匙的電子密碼鎖應(yīng)運(yùn)而生。早期開發(fā)的電子密碼鎖由于電子器件所限,種類不多,保密性差,最基本的就是只依靠最簡(jiǎn)單的模擬電子開關(guān)來實(shí)現(xiàn)的,制作簡(jiǎn)單但不安全。后來多是基于EDA實(shí)現(xiàn),其電路結(jié)構(gòu)復(fù)雜,電子元件繁多,也有使用早先2051系列單片機(jī)來實(shí)現(xiàn)的,但密碼簡(jiǎn)單,容易破解。隨著電子元件的進(jìn)一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強(qiáng)大,使用更加方便,保密安全性更強(qiáng);由以前的單密碼輸入發(fā)展到現(xiàn)在密碼加感應(yīng)元件,實(shí)現(xiàn)了真正的電子加密。電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡(jiǎn)易的電路產(chǎn)品,也有基于芯片的性價(jià)比較高的產(chǎn)品。電子密碼鎖的出現(xiàn)給人們帶來了極大的方便,有很廣闊的市場(chǎng)前景?,F(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的。本系統(tǒng)采用STC89C52單片機(jī),應(yīng)用液晶顯示器1602作為輸出顯示系統(tǒng)提示信息的電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)。1.2課題設(shè)計(jì)目標(biāo)保密性好,編碼量多。隨機(jī)開鎖成功率幾乎為零。密碼可變。用戶可以經(jīng)常更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降。誤碼輸入保護(hù)。當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。操作簡(jiǎn)單易行,一學(xué)即會(huì)。本自動(dòng)化071班張志達(dá)34號(hào)第二章系統(tǒng)方案論證2.1主控部分的選擇方案一:采用數(shù)字電路控制用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,將密碼保存在JK觸發(fā)器中,與輸入密碼通過比較器比較,判斷結(jié)果是否相符合[4]。采用數(shù)字電路設(shè)計(jì)的方案好處就是設(shè)計(jì)簡(jiǎn)單,但控制的準(zhǔn)確性和靈活性差,故不采用。方案二:采用以單片機(jī)為核心的控制方案選用單片機(jī)作為系統(tǒng)的核心部件,實(shí)現(xiàn)控制與處理的功能。單片機(jī)具有資源豐富、速度快、編程容易等優(yōu)點(diǎn)。利用單片機(jī)內(nèi)部的隨機(jī)存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)及其引腳資源,外接液晶顯示(LCD),鍵盤輸入等實(shí)現(xiàn)數(shù)據(jù)的處理傳輸和顯示功能,基本上能實(shí)現(xiàn)設(shè)計(jì)指標(biāo),因此綜合考慮,本系統(tǒng)采用方案二。2.2密碼輸入方式的選擇方案一:指紋輸入識(shí)別指紋識(shí)別技術(shù)主要涉及四個(gè)功能:讀取指紋圖像、提取特征、保存數(shù)據(jù)和比對(duì)。通過指紋讀取設(shè)備讀取到人體指紋的圖像,然后要對(duì)原始圖像進(jìn)行初步的處理,使之更清晰,再通過指紋辨識(shí)軟件建立指紋的特征數(shù)據(jù)。軟件從指紋上找到被稱為“節(jié)點(diǎn)”(minutiae)的數(shù)據(jù)點(diǎn),即指紋紋路的分叉、終止或打圈處的坐標(biāo)位置,這些點(diǎn)同時(shí)具有七種以上的唯一性特征。通常手指上平均具有70個(gè)節(jié)點(diǎn),所以這種方法會(huì)產(chǎn)生大約490個(gè)數(shù)據(jù)。這些數(shù)據(jù),通常稱為模板。通過計(jì)算機(jī)模糊比較的方法,把兩個(gè)指紋的模板進(jìn)行比較,計(jì)算出它們的相似程度,最終得到兩個(gè)指紋的匹配結(jié)果,從而判斷輸入結(jié)果的正確與否[5]??紤]到本方案軟硬件太過復(fù)雜,而且成本也高,故不采用。方案二:矩陣鍵盤輸入識(shí)別由各按鍵組成的矩陣鍵盤每條行線和列線都對(duì)應(yīng)一條I/O口線,鍵位設(shè)在行線和列線的交叉點(diǎn),當(dāng)一個(gè)鍵按下就會(huì)有某一條行線與某一條列線接觸,只要確定接觸的是哪兩條線,即哪兩個(gè)I/O口線,就可以確定哪一個(gè)鍵被觸動(dòng)。行線設(shè)計(jì)成上拉口線,初始時(shí)被置高電位,列線懸空,初始置低。通過不斷讀行線口線,或者中斷方式觸發(fā)鍵位掃描。當(dāng)發(fā)現(xiàn)有鍵按下,將列線逐一置低,其他列線置高,讀行線口線。當(dāng)某條列線置低時(shí),某條行線也被拉低,則確定這兩條線的交點(diǎn)處的按鈕被按下。每個(gè)按鍵都可通過程序賦予功能,從而完成密碼識(shí)別[8]。本方案簡(jiǎn)單易行,故采用。第三章系統(tǒng)總體設(shè)計(jì)和主要芯片介紹3.1系統(tǒng)總體設(shè)計(jì)本設(shè)計(jì)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲(chǔ)等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對(duì)用戶輸入的密碼與自己保存的密碼進(jìn)行對(duì)比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警,實(shí)際使用時(shí)只要將單片機(jī)的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可。系統(tǒng)整體框圖如圖3-1所示。 鍵盤輸入模塊開鎖電路密碼存儲(chǔ)模塊晶振電路STC89C52LED顯示電路LCD顯示模塊蜂鳴器報(bào)警電路復(fù)位電路復(fù)位電路圖3-1系統(tǒng)結(jié)構(gòu)框圖 ●各模塊功能如下:1.鍵盤輸入模塊:分為密碼輸入按鍵與幾個(gè)功能按鍵,用于完成密碼鎖輸入功能。2.密碼存儲(chǔ)模塊:用于完成掉電存儲(chǔ)功能,使修改的密碼斷電后仍能保存。3.蜂鳴器報(bào)警電路:用于完成輸錯(cuò)密碼時(shí)候的警報(bào)功能。4.晶振電路:用于單片機(jī)的起振。5.復(fù)位電路:完成系統(tǒng)的復(fù)位。6.顯示模塊:用于完成對(duì)系統(tǒng)狀態(tài)顯示及操作提示功能。7.LED顯示模塊:用于輔助報(bào)警與輸入提示。8.開鎖電路:應(yīng)用繼電器及發(fā)光二極管模擬開鎖,完成開鎖及開鎖提示。3.2主要芯片介紹3.2.1STC89C52STC89C52單片機(jī)是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含8KBytesISP(In-systemprogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的STC89C52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案[10]。STC89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。AT89S52的管腳分布如圖3-2所示。P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入STC89C52芯片管腳此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P3口作為STC89C52的一些特殊功能管腳備選功能,P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)STC89C52主要特性如表3-1所示。表3-1STC89C52主要特性兼容MCS-51指令系統(tǒng)8k可反復(fù)擦寫(>1000次)ISPFlashROM32個(gè)雙向I/O口4.5-5.5V工作電壓3個(gè)16位可編程定時(shí)/計(jì)數(shù)器時(shí)鐘頻率0-33MHz全雙工UART串行中斷口線256x8bit內(nèi)部RAM2個(gè)外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級(jí)加密位看門狗(WDT)電路軟件設(shè)置空閑和省電功能靈活的ISP字節(jié)和分頁(yè)編程雙數(shù)據(jù)寄存器指針3.2.2存儲(chǔ)芯片AT24C02AT24C02是美國(guó)Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲(chǔ)空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了I2C總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。AT24C02中帶有的片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識(shí)別每個(gè)器件。AT24C02正是運(yùn)用了I2C規(guī)程,使用主/從機(jī)雙向通信,主機(jī)(通常為單片機(jī))和從機(jī)(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機(jī)產(chǎn)生串行時(shí)鐘信號(hào)(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無(wú)論是主機(jī)還是從機(jī),接收到一個(gè)字節(jié)后必須發(fā)出一個(gè)確認(rèn)信號(hào)ACK。AT24C02的控制字由8位二進(jìn)制數(shù)構(gòu)成,在開始信號(hào)發(fā)出以后,主機(jī)便會(huì)發(fā)出控制字,以選擇從機(jī)并控制總線傳送的方向。管腳描述:●SCL為串行時(shí)鐘:串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘這是一個(gè)輸入管腳?!馭DL為串行數(shù)據(jù)/地址:雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收SDL,是一個(gè)開漏輸出管腳可與其它開漏輸出或集電極開路輸出進(jìn)行線?!馎0、A1、A2為器件地址輸入端:當(dāng)使用24C02時(shí)最大可級(jí)聯(lián)8個(gè)器件,如果只有一個(gè)24C02被總線尋址,這三個(gè)地址輸入腳A0、A1、A2可懸空或連接到Vss?!馱P為寫保護(hù):如果WP管腳連接到Vcc所有的內(nèi)容都被寫保護(hù)只能讀當(dāng)WP,管腳連接到Vss或懸空,允許器件進(jìn)行正常的讀/寫操作[12]。管腳圖如圖3-3所示。圖3-3AT24C02引腳3.2.3LCD1602顯示器現(xiàn)在的字符型液晶模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個(gè)控制端口,工作電壓為5V,并且具有字符對(duì)比度調(diào)節(jié)和背光功能。LCD器件引腳圖如下:顯示地址如下:接口信號(hào)說明:1602型LCD的接口信號(hào)說明如表3-2所示。表3-21602型LCD的接口信號(hào)說明第1腳VSS電源地第9腳D2雙向數(shù)據(jù)線第2腳VDD+5V電源第10腳D3雙向數(shù)據(jù)線第3腳VEE液晶顯示偏壓信號(hào)第11腳D4雙向數(shù)據(jù)線第4腳RS數(shù)據(jù)/命令選擇端第12腳D5雙向數(shù)據(jù)線第5腳R/W讀/寫選擇端第13腳D6雙向數(shù)據(jù)線第6腳E使能端第14腳D7雙向數(shù)據(jù)線第7腳D0雙向數(shù)據(jù)線第15腳BLA背光源正極第8腳D1雙向數(shù)據(jù)線第16腳BLK背光源負(fù)極主要技術(shù)參數(shù):1602型LCD的主要技術(shù)參數(shù)如表3-3所示。表3-31602型LCD的主要技術(shù)參數(shù)顯示容量16×2個(gè)字符芯片工作電壓4.5~5.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95×4.35(WXH)mm基本操作程序:讀狀態(tài):令RS=L,RW=L,E=H 輸出:D0~D7=狀態(tài)字讀數(shù)據(jù):令RS=H,RW=H,E=H 輸出:無(wú)寫指令:令RS=L,RW=L,D0~D7=指令碼,E=高脈沖輸出:D0~D7=數(shù)據(jù)寫數(shù)據(jù):令RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖輸出:無(wú)第四章硬件設(shè)計(jì)本系統(tǒng)外圍電路包括鍵盤輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、顯示部分、報(bào)警部分、開鎖部分組成,根據(jù)實(shí)際情況鍵盤輸入部分選擇4×4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲(chǔ)部分選用AT24C02芯片來完成。其原理圖如圖4-1所示。圖4-1電路原理圖4.1鍵盤輸入模塊由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行和列組成,也稱行列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多I/O口。本設(shè)計(jì)中使用的這個(gè)4×4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用。鍵盤的每個(gè)按鍵功能在程序設(shè)計(jì)中設(shè)置。它與單片機(jī)的連接如圖4-2所示。圖4-2鍵盤輸入模塊4.2密碼存儲(chǔ)模塊圖4-3所示AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89S51試驗(yàn)開發(fā)板上它們都接地,第5腳和第8腳分別為正、負(fù)電源。第8腳SDL為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,在AT89S52試驗(yàn)開發(fā)板上和單片機(jī)的P3.6連接。第6腳SCL為串行時(shí)鐘輸入線,在AT89S52試驗(yàn)開發(fā)板上和單片機(jī)的P3.7連接。SDL和SCL都需要和正電源間各接一個(gè)5.1K的電阻上拉。第6腳接P3.5。AT24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。圖4-3密碼存儲(chǔ)電路4.3復(fù)位部分單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。該電路在最簡(jiǎn)單的復(fù)位電路下增加了手動(dòng)復(fù)位按鍵,在接通電源瞬間,電容C1上的電壓很小,復(fù)位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當(dāng)RST端的電壓小于某一數(shù)值后,CPU脫離復(fù)位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時(shí)間大于24個(gè)振蕩周期,CPU能夠可靠復(fù)位。增加手動(dòng)復(fù)位按鍵是為了避免死機(jī)時(shí)無(wú)法可靠復(fù)位。當(dāng)復(fù)位按鍵按下后電容C1通過R5放電。當(dāng)電容C1放電結(jié)束后,RST端的電位由R5與R6分壓比決定。由于R5<<R6因此RST為高電平,CPU處于復(fù)位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復(fù)位狀態(tài)。R5的作用在于限制按鍵按下瞬間電容C1的放電電流,避免產(chǎn)生火花,以保護(hù)按鍵觸電。其電路如圖4-4所示。圖4-4復(fù)位電路4.4晶振部分AT89S52引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C3按圖4-5所示方式連接。晶振、電容C2/C3及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,振蕩信號(hào)頻率與晶振頻率及電容C2、C3的容量有關(guān),但主要由晶振頻率決定,范圍在0~33MHz之間,電容C2、C3取值范圍在5~30pF之間。根據(jù)實(shí)際情況,本設(shè)計(jì)中采用12MHZ作為系統(tǒng)的外部晶振。電容取值為10pF。其電路圖如圖4-5所示。圖4-5晶振電路4.5顯示模塊顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管完成。開鎖時(shí),按下鍵盤上的開鎖按鍵后,利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話,LCD顯示“DOOROPEN”,單片機(jī)其中P2.0引腳會(huì)輸出低電平,使三極管T2導(dǎo)通,電磁鐵吸合,繼電器開關(guān)跳轉(zhuǎn),電子密碼鎖被打開,如果密碼不正確,LCD顯示屏?xí)@示“CODEWRONG”,P2.0輸出的是高電平,電子密碼鎖不能打開。通過LCD顯示屏,可以清楚地判斷出密碼鎖所處的狀態(tài)。電路圖如圖4-6所示。圖4-6顯示電路4.6報(bào)警部分報(bào)警部分由陶瓷壓電發(fā)聲裝置及外圍電路組成,加電后不發(fā)聲,當(dāng)有鍵按下時(shí),“?!甭暎堪匆幌?,發(fā)聲一次,密碼正確時(shí),不發(fā)聲直接開鎖,當(dāng)密碼輸入錯(cuò)誤時(shí),單片機(jī)的P2.1引腳為低電平,三極管T3導(dǎo)通蜂鳴器發(fā)出噪聲報(bào)警。如圖4-7所示。圖4-7報(bào)警電路

圖4-7報(bào)警電路4.7開鎖部分開鎖控制電路的功能是當(dāng)輸入正確的密碼后將鎖打開。系統(tǒng)使用單片機(jī)其中一引腳線發(fā)出信號(hào),經(jīng)三極管放大后,由繼電器驅(qū)動(dòng)電磁閥動(dòng)作將鎖打開。用戶通過鍵盤任意設(shè)置密碼,并儲(chǔ)存在E2PROM中作為鎖碼指令。只有用戶操作鍵盤時(shí),單片機(jī)的電源端才能得到3V電源,否則,單片機(jī)處于節(jié)電工作方式。開鎖步驟如下:首先按下鍵盤上的開鎖按鍵,然后利用鍵盤上的數(shù)字鍵0-9輸入密碼,最后按下確認(rèn)鍵。當(dāng)用戶輸入密碼后,單片機(jī)自動(dòng)識(shí)別密碼,如果密碼不符,則報(bào)警。只有當(dāng)密碼正確,單片機(jī)才能使繼電器處于開鎖狀態(tài)。具體電路如圖4-8所示。圖4-8開鎖電路第五章系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件設(shè)計(jì)采用匯編語(yǔ)言編碼。設(shè)計(jì)方法是先用文本編輯器編寫源碼,然后用軟件KeilC51編譯,如果沒有錯(cuò)誤,可連接生成.HEX格式的文件(需事先在KeilC51中設(shè)置)。如果有錯(cuò)誤則無(wú)法連接,但可在生成的.OBJ文件中找到代碼錯(cuò)誤的地方,便于修改。當(dāng)然也可以直接在Keil中編碼。生成的HEX文件是記錄文本行的ASCII文本文件,在HEX文件中,每一行是一個(gè)HEX記錄,由十六進(jìn)制數(shù)組成的機(jī)器碼或者數(shù)據(jù)常量。HEX文件經(jīng)常被用于將程序或數(shù)據(jù)傳輸存儲(chǔ)到ROM、EPROM,大多數(shù)編程器和模擬器使用HEX文件。5.1系統(tǒng)主程序開始初始化開始初始化密碼正確輸入舊密碼出錯(cuò)報(bào)警開鎖原密碼相同設(shè)新密碼返回開鎖修改YNNYNNY5.1.2初始化及按鍵識(shí)別如圖5-2,系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,兩個(gè)定時(shí)/計(jì)數(shù)器的設(shè)定,液晶顯示模式的設(shè)定,密碼緩沖區(qū)的初始化,一些自定義數(shù)據(jù)空間的初始化,蜂鳴器初始化發(fā)聲等操作。果AT24C02里沒有存儲(chǔ)密碼,或者讀取AT24C02失敗,則載入系統(tǒng)初始化密碼;如果AT24C02里有掉電存儲(chǔ)的密碼,則會(huì)讀出該密碼。系統(tǒng)初始化并讀取密碼完成后,液晶顯示"ThePassword:is",提示用戶可以輸入密碼。此時(shí)程序即不斷測(cè)試按鍵,檢查是否有按鍵被按下。如果有,則進(jìn)行按鍵識(shí)別;行列掃描法識(shí)別出的鍵位與對(duì)應(yīng)BUFF的值如表4-1所示。如果沒有按鍵按下,或者按下的按鍵沒有被識(shí)別,kevyal賦值0FFH,并跳轉(zhuǎn)至按鍵測(cè)試。實(shí)際程序運(yùn)行時(shí),絕大部分時(shí)間都在測(cè)試按鍵,等待用戶輸入。圖5-2初始化及按鍵識(shí)別流程圖有按鍵按下?否是按鍵測(cè)試子程序按鍵識(shí)別子程序按鍵重定位圖5-2初始化及按鍵識(shí)別流程圖有按鍵按下?否是按鍵測(cè)試子程序按鍵識(shí)別子程序按鍵重定位延時(shí)0.5S否識(shí)別成功?是開始系統(tǒng)初始化讀取密碼提示輸入密碼讀取成功?否是載入初始密碼5.1.3開鎖處理首先LCD初始化,輸入密碼,密碼正確則使開鎖電路動(dòng)作,繼電器得電,開鎖指示燈亮。開鎖程序流程圖如圖5-3所示。LCD初始化LCD初始化按開鎖鍵按開鎖鍵輸入密碼輸入密碼確認(rèn)程序開鎖確認(rèn)程序開鎖N輸入密碼正確?N輸入密碼正確?報(bào)警程序報(bào)警程序 開鎖成功返回 Y 開鎖成功返回圖5-3開鎖流程圖5.1.4改密處理如圖5-4,可以看出,改密鍵的處理流程跟開鎖鍵類似,都需檢查密碼是否正確,錯(cuò)誤的話,提示重新輸入,只有輸入密碼正確才可以進(jìn)行改密。然后再按更改鍵,密碼更改程序被調(diào)用,進(jìn)而更改密碼,此過程,LCD都會(huì)顯示信息。輸入密碼再次輸入新密碼重新輸入密碼錯(cuò)誤開始密碼正確輸入密碼再次輸入新密碼重新輸入密碼錯(cuò)誤開始密碼正確兩次輸入對(duì)比相同NNY更改成功提示輸入新密碼Y更改成功提示輸入新密碼圖5-4改密流程圖圖5-4改密流程圖開始清顯示寫指令入IR字符地址入DPTR字符=00H?否是字符代碼送入P0口寫數(shù)據(jù)入DR地址+1開始清顯示寫指令入IR字符地址入DPTR字符=00H?否是字符代碼送入P0口寫數(shù)據(jù)入DR地址+1返回寫結(jié)束圖5-5液晶顯示子程序流程圖液晶顯示子程序在每次更新顯示內(nèi)容時(shí)都會(huì)被調(diào)用,其流程如圖5-5所示。每次更新顯示內(nèi)容前,需清顯示清空LCD原先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。LCD1602要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個(gè)字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最后將字符地址加一,LCD1602會(huì)將寫入的ASCII碼對(duì)應(yīng)的字符依次顯示出來。由于顯示字符串的長(zhǎng)度不盡相同,約定每串字符以00H結(jié)尾;程序檢測(cè)到字符碼為00H時(shí),即停止寫入,返回。LCD顯示的內(nèi)容在下次更新前會(huì)一直保持。5.1.6AAT24C02的子程序包括從AT24C02中讀取信息和將信息寫入AT24C02,首先介紹AT24C02的讀程序。如圖5-6所示,單片機(jī)作為主器件,發(fā)送起始信號(hào)和要尋址的從器件的地址;因?yàn)榇藭r(shí)即隨后的發(fā)送讀取地址操作都是單片機(jī)往AT24C02寫入控制信息,所以R/W要置0。本設(shè)計(jì)中只用一個(gè)AT24C02,從器件地址為0,對(duì)應(yīng)代碼為0A0H。AT24C02接收到信號(hào)后,發(fā)送應(yīng)答信號(hào)。單片機(jī)接收到應(yīng)答信號(hào)后,再發(fā)送要讀取信息在從器件上的地址;本設(shè)計(jì)中從0地址開始讀,則送00H。再次接收到從器件的應(yīng)答信號(hào)后,單片機(jī)重新發(fā)送起始信號(hào)和讀模式信號(hào),將R/W位置1,對(duì)應(yīng)代碼為0A1H,正式開始讀取信息。本設(shè)計(jì)中需要連續(xù)讀取16字節(jié)的信息,所以選擇連續(xù)讀方式;即是單片機(jī)每接收到一字節(jié)的信息后,存入正確密碼緩沖區(qū)(AT1~AT16),然后產(chǎn)生一個(gè)應(yīng)答信號(hào),告知AT24C02要求更多的數(shù)據(jù)。當(dāng)單片機(jī)不發(fā)送應(yīng)答信號(hào)而發(fā)送停止信號(hào)時(shí)表示讀取結(jié)束。圖圖5-6讀AT24C02子程序流程圖發(fā)送讀取地址接收應(yīng)答信號(hào)成功?是否開始發(fā)送起始信號(hào)發(fā)送從器件地址寫模式接收應(yīng)答信號(hào)成功?是否發(fā)送起始信號(hào)發(fā)送讀模式信號(hào)接收應(yīng)答信號(hào)成功?否是讀一字節(jié)數(shù)據(jù)發(fā)送應(yīng)答信號(hào)地址+1讀完成?否是提示讀取失敗不發(fā)送應(yīng)答信號(hào)發(fā)送停止信號(hào)提示讀取成功返回寫入AT24C02的子程序流程如圖5-7所示。單片機(jī)發(fā)送起始信號(hào),接著發(fā)送從器件AT24C02所在地址(0A0H)。這里與讀AT24C02子程序不同的是,從開始到結(jié)束都是單片機(jī)控制AT24C02寫入信息,所以R/W置1無(wú)需更改。對(duì)應(yīng)地址上的從器件AT24C02接收到地址信號(hào)后發(fā)送應(yīng)答信號(hào)。主器件在接收到應(yīng)答信號(hào)后,發(fā)送要寫入信息欲保存在從器件上的地址,本設(shè)計(jì)中從0地址開始保存,故地址為00H。單片機(jī)再次接收到從器件的應(yīng)答信號(hào)后即可開始寫入信息。本設(shè)計(jì)中采用字節(jié)寫模式,即AT24C02在每接收一個(gè)8位字節(jié)之后響應(yīng)一個(gè)應(yīng)答信號(hào),單片機(jī)在接收到應(yīng)答信號(hào)后認(rèn)為該字節(jié)成功寫入,便準(zhǔn)備下一字節(jié)的數(shù)據(jù)。直到所有數(shù)據(jù)發(fā)送完畢,單片機(jī)發(fā)送停止信號(hào),結(jié)束寫操作。圖5-7寫AT24C02子程序流程圖發(fā)送寫入地址接收應(yīng)答信號(hào)成功?圖5-7寫AT24C02子程序流程圖發(fā)送寫入地址接收應(yīng)答信號(hào)成功?是否成功?是否開始發(fā)送起始信號(hào)發(fā)送從器件地址寫模式接收應(yīng)答信號(hào)提示寫入失敗發(fā)送停止信號(hào)提示寫入成功返回地址+1寫完成?否是成功?否是接收應(yīng)答信號(hào)寫一字節(jié)數(shù)據(jù)第六章系統(tǒng)調(diào)試與測(cè)試系統(tǒng)的軟硬件設(shè)計(jì)都完成后,還不能直接上電運(yùn)行;需要對(duì)系統(tǒng)進(jìn)行詳細(xì)的調(diào)試,以消除在設(shè)計(jì)過程中出現(xiàn)的各種錯(cuò)誤。單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,很多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進(jìn)一步排除故障。所以硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計(jì)則是無(wú)從做起。當(dāng)硬件設(shè)計(jì)從布線到焊接安裝完成之后,就開始進(jìn)入硬件調(diào)試階段。首先應(yīng)該確認(rèn)電源電壓是否正常,用電壓表測(cè)量接地引腳跟電源引腳之間的電壓,看是否是電源電壓。接下來就是檢查復(fù)位引腳電壓是否正常。分別測(cè)量按下復(fù)位按鈕和放開復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來看晶振引腳的波形,注意應(yīng)該使用示波器探頭的“X10”檔。另一個(gè)辦法是測(cè)量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測(cè)量IO口(沒接外部上拉的P0口除外)的電壓,看是否是高電平,如果不是高電平,則多半是因?yàn)榫д駴]有起振。另外還要注意的地方是,如果使用片內(nèi)ROM的話,一定要將EA引腳拉高,否則會(huì)出現(xiàn)程序亂跑的情況。如果系統(tǒng)運(yùn)行不穩(wěn)定的話,有時(shí)是因?yàn)殡娫礊V波不好導(dǎo)致的。在單片機(jī)的電源引腳跟地引腳之間接上一個(gè)0.1uF的電容會(huì)有所改善。如果電源沒有濾波電容的話,則需要再接一個(gè)更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時(shí),就可以并上電容,越靠近芯片越好。系統(tǒng)的鍵盤輸入電路,蜂鳴器發(fā)聲電路,AT24C02密碼存儲(chǔ)電路,繼電器開鎖電路,液晶顯示電路,這幾個(gè)部分在檢查硬件無(wú)誤后,需要結(jié)合軟件調(diào)試??删帉憜为?dú)控制某一部分的程序,運(yùn)行看是否可以正確控制。如蜂鳴器發(fā)聲電路,可編寫程序控制單片機(jī)P3..6口電平,上電運(yùn)行看是否正常發(fā)聲。一些無(wú)法直接觀測(cè)出運(yùn)行效果的電路,如鍵盤輸入電路和密碼存儲(chǔ)電路,則需結(jié)合液晶顯示器調(diào)試。如鍵盤輸入電路,需加上按鍵顯示程序顯示被按下按鍵的keyval值。第七章總結(jié)在著手本次課程設(shè)計(jì)時(shí),通過查閱網(wǎng)絡(luò)與圖書館搜集到的資料,再加上指導(dǎo)老師指點(diǎn),結(jié)合生活中對(duì)密碼鎖的功能特性要求,設(shè)計(jì)出了這一套電子密碼鎖系統(tǒng)的主要硬件結(jié)構(gòu)和軟件結(jié)構(gòu),基本完成了課題的要求。不過由于了解的專業(yè)知識(shí)尚淺,對(duì)課題的研究經(jīng)驗(yàn)的不足,使得在技術(shù)的解決與運(yùn)用上顯得粗糙了一些,特別是功能按鍵的設(shè)定。所幸該系統(tǒng)能基本上完成一個(gè)電子密碼鎖應(yīng)有的功能特性:開鎖提示,輸錯(cuò)報(bào)警,密碼修改,掉電存儲(chǔ)。本系統(tǒng)用的是6位密碼輸入,有106種密碼輸入方案,相較于機(jī)械鎖具,防盜能力已經(jīng)相當(dāng)不俗。這個(gè)系統(tǒng)軟硬件設(shè)計(jì)簡(jiǎn)單,易于開發(fā),成本較低,安全可靠,操作方便。本次設(shè)計(jì)的電子密碼鎖是以手動(dòng)鍵盤輸入密碼的,通過這兩個(gè)星期對(duì)電子密碼鎖的研究學(xué)習(xí),發(fā)覺這種密碼輸入方式可以進(jìn)行改革。在越來越高科技化的今天,遙控控制顯的愈發(fā)重要,今后的電子密碼鎖應(yīng)該具有以紅外技術(shù)或無(wú)線電技術(shù)為輔助的密碼按鍵輸入遠(yuǎn)程交互技術(shù),這樣就能遠(yuǎn)程輸入密碼完成操作。也可以放棄傳統(tǒng)的按鍵輸入密碼模式,借助傳感器技術(shù)運(yùn)用聲控來實(shí)現(xiàn)密碼輸入,又或者人臉識(shí)別技術(shù),還有一種就是用戶指紋輸入方式,這些都可以使開鎖的時(shí)間更短更方便。電子密碼鎖產(chǎn)業(yè)將向靜態(tài)功耗更低,外圍電路更簡(jiǎn)化,可提供的功能或控制口更多,更人性化高科技化的方向發(fā)展。通過本次課程設(shè)計(jì)的鍛煉,我學(xué)到了很多有關(guān)電子密碼鎖的設(shè)計(jì)方法與工作原理,鞏固了單片機(jī)知識(shí)。期間也碰到不少問題,比如如何去模擬實(shí)現(xiàn)開鎖這一功能,解決辦法是找了個(gè)微型電磁繼電器作為鎖具,其內(nèi)部電磁開關(guān)特性符合開鎖的現(xiàn)象。再到后來的焊接工作,由于粗心大意,焊接出錯(cuò)的情況不在少數(shù),往往在調(diào)試的時(shí)候才得以發(fā)現(xiàn),特別是4×4矩陣鍵盤的焊接,改了不下10次。系統(tǒng)調(diào)試時(shí)碰到過按鍵不靈敏的問題。后來增加了鍵盤列位置上的電阻,增加了電平,效果得到改善。慢工出細(xì)活,過程是很重要的,只有耐心細(xì)心努力地去把握過程,才能得到可喜的結(jié)果。參考文獻(xiàn):[1]孫涵芳,徐愛卿。MCS-51/96系列單片機(jī)原理及應(yīng)用[M]。北京:北京航空航天大學(xué)出版社,1996[2]李廣弟,朱月秀,冷祖祁。單片機(jī)基礎(chǔ)[M]。北京:北京航空航天大學(xué)出版社,2007[3]董繼成。一種新型安全的單片機(jī)密碼鎖[J]。電子技術(shù),2004,(03)[4]石文軒,宋薇?;趩纹瑱C(jī)MSC-51的智能密碼鎖設(shè)計(jì)[S]。武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,(01)[5]吳春國(guó),李文石。單片機(jī)控制電子鎖技術(shù)剖析[S]。東北林業(yè)大學(xué)學(xué)報(bào),2002,(05)[6]李景宏,馬學(xué)文。電子技術(shù)實(shí)驗(yàn)教程[M]。沈陽(yáng):東北大學(xué)出版社,2004[7]賈正松。單片機(jī)系統(tǒng)復(fù)位電路設(shè)計(jì)[J]。科技資訊,2007,(36)[8]袁新燕。淺談單片機(jī)應(yīng)用系統(tǒng)的調(diào)試[J]。自動(dòng)化與儀器儀表,2000,(03)[9]王暉,薛永存?;贛CS-51單片機(jī)的復(fù)位電路抗干擾分析與設(shè)計(jì)[J]?,F(xiàn)代電子技術(shù),2006,(08)[10]datasheetofMicrocontrollerAT89S52.Atmel,Inc.[11]datasheetofSerialEEPROM2K(256*8)AT24C02.Amel,Inc.[12]通用LCD1602液晶顯示模塊使用手冊(cè)(J/OL)。偉納電子.[13]51單片機(jī)綜合學(xué)習(xí)系統(tǒng)——蜂鳴器、繼電器篇(J/OL)。維普資訊.[14]單片機(jī)控制繼電器實(shí)驗(yàn)(J/OL)。電子驛站.[15]9012,9013,9014,9015,9018晶體三極管技術(shù)手冊(cè)(J/OL)。電子愛好者.[16]蔡金生。SUPERPRO編程器使用指南(J/OL)。滬生電子.附錄一總電路原理圖附錄二實(shí)物圖附錄程序//矩陣式鍵盤實(shí)現(xiàn)的電子密碼鎖#include<reg52.h>//包含51單片機(jī)寄存器定義的頭文件#include<intrins.h>#definesomenop();{_nop_();_nop_();_nop_();_nop_();_nop_();}//定義空指令#defineucharunsignedcharsbitRS=P3^0;//寄存器選擇位,將RS位定義為P2.0引腳sbitRW=P3^1;//讀寫選擇位,將RW位定義為P2.1引腳sbitE=P3^2;//使能信號(hào)位,將E位定義為P2.2引腳sbitji=P3^6;sbitSCl=P3^4;//24c02時(shí)鐘線sbitSDA=P3^5;//24C02數(shù)據(jù)線sbitBF=P0^7;//忙碌標(biāo)志位,,將BF位定義為P0.7引腳sbitP14=P1^4;//將P14位定義為P1.4引腳sbitP15=P1^5;//將P15位定義為P1.5引腳sbitP16=P1^6;//將P16位定義為P1.6引腳sbitP17=P1^7;//將P17位定義為P1.7引腳sbitsound=P3^7;//將sound位定義為P3.7voidi2c_writebyte(ucharadd,uchardat);voiddelay1ms();voiddelayn(ucharn);voiddelay_zx1ms(unsignedintz);ucharBusyTest(void);voidWriteInstruction(uchardictate);voidWriteAddress(ucharx);voidWriteData(uchary);voidLcdInitiate(void);voidshuru(void);voidjinbao(void);voiddelay_zx1ms(unsignedintz);ucharcodegit[]={""};ucharcodedigit[]={"******"};ucharcodestring[]={"Thepasswordis"};ucharcodestr[]={"Newpasswordis"};ucharcodeing[]={"Repeatagain:"};ucharcodeting[]={"Inputerror!!!"};ucharcodesting[]={"Repeatagain:"};ucharcodestting[]={"error!errr!"};ucharcodesttting[]={"ModifyError!"};ucharcodestttting[]={"Hello,wlecome!"};ucharcodesttttting[]={"Modifysucceed!"};ucharcodestttttting[]={"Congratulations!"};ucharkeyval,C[]={0,1,2,3,4,5,6,7,8,9},i,j=0;//儲(chǔ)存按鍵值ucharA[10],M[7],N[6],F[6],G[6],D[6];unsignedintcou,sou,tone;unsignedinto,b,q;/*****************************************************函數(shù)功能:延時(shí)若干毫秒入口參數(shù):n***************************************************/voiddelayn(ucharn){uchari; for(i=0;i<n;i++) delay_zx1ms(1);}/*************************************************************函數(shù)功能:延時(shí)輸出音頻**************************************************************/voiddelay1(intcnt){inti;for(i=0;i<cnt;i++);}voiddelay(void){uchari; for(i=0;i<200;i++) ;}voiddelay_zx1ms(unsignedintz){unsignedinti,j; for(i=z;i>0;i--) for(j=249;j>0;j--);}voidjinbao(void){ for(q=0;q<cou;q++)/*發(fā)聲的次數(shù)循環(huán)*/{ P2=~P2;/*反相輸出,使LED閃爍*/ for(o=0;o<sou;o++)/*音長(zhǎng)的循環(huán)*/{sound=~sound;for(b=0;b<tone;b++);/*音調(diào)*/}delay_zx1ms(200);/*停留一段時(shí)間*/}}/*****************************************************函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙***************************************************/ucharBusyTest(void){bitresult; RS=0;//根據(jù)規(guī)定,RS為低電平,RW為高電平時(shí),可以讀狀態(tài)RW=1;E=1;//E=1,才允許讀寫_nop_();//空操作_nop_();_nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 result=BF;//將忙碌標(biāo)志電平賦給result E=0;returnresult;}/*****************************************************函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊入口參數(shù):dictate***************************************************/voidWriteInstruction(uchardictate){while(BusyTest()==1);//如果忙就等待 RS=0;//根據(jù)規(guī)定,RS和R/W同時(shí)為低電平時(shí),可以寫入指令 RW=0; E=0;//E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖,//就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" _nop_(); _nop_();//空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 P0=dictate;//將數(shù)據(jù)送入P0口,即寫入指令或地址 _nop_(); _nop_(); _nop_(); _nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1;//E置高電平 _nop_(); _nop_(); _nop_(); _nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0;//當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令}/*函數(shù)功能:指定字符顯示的實(shí)際地址入口參數(shù):x***************************************************/voidWriteAddress(ucharx){WriteInstruction(x|0x80);//顯示位置的確定方法規(guī)定為"80H+地址碼x"}/*****************************************************函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入液晶模塊入口參數(shù):y(為字符常量)***************************************************/voidWriteData(uchary){while(BusyTest()==1); RS=1;//RS為高電平,RW為低電平時(shí),可以寫入數(shù)據(jù) RW=0; E=0;//E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖,//就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" P0=y;//將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊 _nop_(); _nop_(); _nop_();_nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1;//E置高電平 _nop_(); _nop_(); _nop_(); _nop_();//空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0;//當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令}/*****************************************************函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化設(shè)置***************************************************/voidLcdInitiate(void){delayn(15);//延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長(zhǎng)的反應(yīng)時(shí)間WriteInstruction(0x38);//顯示模式設(shè)置:16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口 delayn(5);//延時(shí)5ms WriteInstruction(0x38); delayn(5); WriteInstruction(0x38); delayn(5); WriteInstruction(0x0f);//顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍 delayn(5); WriteInstruction(0x06);//顯示模式設(shè)置:光標(biāo)右移,字符不移 delayn(5); WriteInstruction(0x01);//清屏幕指令,將以前的顯示內(nèi)容清除 delayn(5);}/******************************//函數(shù):i2c_start()//輸入://返回://功能:啟動(dòng)i2c*******************************/voidi2c_start(){SDA=1;SCl=1;somenop();//起始信號(hào)建立時(shí)間大于4.7usSDA=0;somenop();//起始信號(hào)保持時(shí)間大于4usSCl=0;}/******************************//函數(shù):i2c_stop()//輸入://返回://功能:停止i2c*******************************/voidi2c_stop(){SDA=0;SCl=1;somenop();//停止信號(hào)建立時(shí)間大于4usSDA=1;}/******************************//函數(shù):i2c_ACK(bitck)//輸入:ck//返回://功能:ck為1時(shí)發(fā)送應(yīng)答信號(hào)ACK,ck為0時(shí)不發(fā)送ACK*******************************/voidi2c_ACK(ucharck){if(ck)SDA=0;elseSDA=1;somenop();//SCK低電平保持時(shí)間大于4.7usSCl=1;somenop();//SCK高電平保持時(shí)間大于4usSCl=0;SDA=1;//ACK后要對(duì)總線進(jìn)行釋放,somenop();}/******************************//函數(shù):i2c_waitACK()//輸入://返回:1,0//功能:返回為1時(shí)收到ACK返回為0時(shí)沒收到ACK*******************************/biti2c_waitACK(){SDA=1;somenop();SCl=1;somenop();if(SDA)//SDA為1沒接收到ACK{SCl=0;i2c_stop();return0;}else//SDA為0接收到ACK{SCl=0;return1;}}/******************************//函數(shù):i2c_sendbyte(ucharbt)//輸入:bt//返回://功能:將輸入的一字節(jié)數(shù)據(jù)bt發(fā)送*******************************/voidi2c_sendbyte(ucharbt){uchari;for(i=0;i<8;i++){if(bt&0x80)SDA=1;elseSDA=0;somenop();SCl=1;bt=bt<<1;somenop();SCl=0;}}/******************************//函數(shù):i2c_recbyte()//輸入://返回:dee//功能:從總線上接收1字節(jié)數(shù)據(jù)*******************************/uchari2c_recbyte(){uchardee;ucharj;for(j=0;j<8;j++){SCl=1;somenop();dee=dee<<1;if(SDA)dee=dee|0x01;SCl=0;somenop();}returndee;}/******************************//函數(shù):i2c_readbyte//輸入:add//返回:hep//功能:字節(jié)讀,在指定的地址(add)讀出一字節(jié)數(shù)據(jù)*******************************/uchari2c_readbyte(ucharadd){ucharhep;i2c_start();i2c_sendbyte(0xa0);i2c_waitACK();i2c_sendbyte(add);i2c_waitACK();i2c_start();i2c_sendbyte(0xa1);i2c_waitACK();hep=i2c_recbyte();i2c_ACK(0);i2c_stop();returnhep;}/******************************//函數(shù):i2c_serwrite//輸入:slave,add,p,num//返回://功能:頁(yè)寫,在指定的地址(add)開始連續(xù)寫入8字節(jié)數(shù)據(jù)slave為器件地址p為寫入的數(shù)據(jù)指針num為寫入的字節(jié)數(shù)<=8*******************************/i2c_serwrite(ucharslave,ucharadd,uchar*p,ucharnum){ucharn;i2c_start();i2c_sendbyte(slave);i2c_waitACK();i2c_sendbyte(add);i2c_waitACK();for(n=0;n<num;n++){i2c_sendbyte(*p);i2c_waitACK();p++;}i2c_stop();delay1(124);//24C02寫周期最大10MS,此處為2MS}/******************************//函數(shù):i2c_serread//輸入:slave,add,k,num//返回://功能:連續(xù)讀,從指定的地址(add)開始連續(xù)讀num個(gè)字節(jié)數(shù)據(jù)slave為器件地址k為存儲(chǔ)數(shù)據(jù)指針*******************************/voidi2c_serread(ucharslave,ucharadd,uchar*k,ucharnum){ucharn;i2c_start();i2c_sendbyte(slave);i2c_waitACK();i2c_sendbyte(add);i2c_waitACK();i2c_start();i2c_sendbyte(slave+1);i2c_waitACK();for(n=0;n<num-1;n++){*k=i2c_recbyte();i2c_ACK(1);k++;}*k=i2c_recbyte();i2c_ACK(0);i2c_stop();}voidshuru(void){ ucharcount=0,H[]={12,13,11,14,9}; keyval=0xff; count=0; LcdInitiate();//調(diào)用LCD初始化函數(shù)delayn(10);//延時(shí)10ms,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteAddress(0x00);//從第1行第3列開始顯示i=0;//指向字符數(shù)組的第1個(gè)元素 for(j=0;j<15;j++) { WriteData(string[i]); i++;//指向下字符數(shù)組一個(gè)元素 } WriteAddress(0xc4); WriteInstruction(0x0f);//顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍 delayn(5); while(1){ delay_zx1ms(20); if(keyval==C[0]){A[count]=C[0]; count++; keyval=0xff; P2=0xfe;delay_zx1ms(200); P2=0xff; } if(keyval==C[1]) {A[count]=C[1]; count++; keyval=0xff; P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[2]) {A[count]=C[2]; count++; keyval=0xff;P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[3]) {A[count]=C[3]; count++; keyval=0xff; P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[4]) {A[count]=C[4]; count++; keyval=0xff; P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[5]) {A[count]=C[5]; count++; keyval=0xff; P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[6]) {A[count]=C[6]; count++; keyval=0xff; P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[7]) {A[count]=C[7]; count++; keyval=0xff;P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[8]) {A[count]=C[8]; count++; keyval=0xff;P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==C[9]) {A[count]=C[9]; count++; keyval=0xff; P2=0xfe; delay_zx1ms(200); P2=0xff; } if(keyval==H[1])

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論