液晶顯示電子密碼鎖設(shè)計_第1頁
液晶顯示電子密碼鎖設(shè)計_第2頁
液晶顯示電子密碼鎖設(shè)計_第3頁
液晶顯示電子密碼鎖設(shè)計_第4頁
液晶顯示電子密碼鎖設(shè)計_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學(xué)號:02206069使用飛思卡爾MC9S08LL8的經(jīng)驗一:低功耗(原創(chuàng))[2010-9-217:40:00|By:飛翔]本次項目產(chǎn)品(電動汽車儀表)開發(fā)使用的單片機是MC9S08LL8(以下簡稱LL8),這個芯片的性能還是非常的棒!開發(fā)產(chǎn)品主要是考慮成本(在滿足性能指標(biāo)的前提下),并且盡可能有效利用單片機內(nèi)部的資源,例如:產(chǎn)品需要用到A/D,RTC,液晶驅(qū)動,EEPROM數(shù)據(jù)存儲等,在選型的時候看是否有滿足所有條件的,不過全部滿足一般都很難,取最主要的。言歸正傳,開發(fā)完產(chǎn)品后,體會到MC9S08LL8的妙處,我用到了它的flash模擬EEPROM、RTC、A/D和液晶驅(qū)動等功能。產(chǎn)品最終的功耗做得很小,在STOP3模式下功耗小于1uA,并且此時TOD是工作的(32.768kHz處于低功耗工作模式),25°左右環(huán)境,3.0V工作電源?,F(xiàn)總結(jié)如下:一、低功耗處理:眾所周知,對于電池設(shè)備來說,功耗是個重要的技術(shù)參數(shù),如何讓MCU運行的功耗最低,需要在設(shè)計電路是仔細考慮MCU的每一個引腳。對于MCU來說,其功耗主要和電源電壓及工作總線頻率有關(guān)。電源電壓越低,功耗越低(功耗與電壓是成平方關(guān)系);總線頻率越低,功耗越低,當(dāng)然MCU運行速度(指令執(zhí)行的快慢)也變慢了,所以需要折中考慮。LL8的低功耗主要從以下4個方面考慮:1)選擇停止模式:本次開發(fā)的產(chǎn)品有2個電源供電,外部供電和電池CR2032供電。在外部供電的情況下可以基本上不考慮單片機功耗,但是在外部斷電的情況下,要盡可能降低它的功耗。從LL8的封裝和電氣說明PDF手冊上查到(飛思卡爾的芯片手冊分為2個pdf文檔,一個是芯片內(nèi)部資源的詳細說明,一個是封裝和電氣特性說明),如圖1.1所示:圖1.1停止模式的電流特性LL8有2種停止模式,STOP2和STOP3。雖然STOP3在停止模式下(同等溫度、電源液晶顯示電子密碼鎖設(shè)計電壓條件下)功耗比STOP2略高一點,但是STOP3的喚醒啟動速率快,手冊上說6us!,并從圖1.2上可以看出,STOP2情況下flash電也斷了,喚醒的程序?qū)⑾喈?dāng)于重啟。并且產(chǎn)品有個實時時鐘,也就是說在外部供電停止的情況下,實時時鐘需要繼續(xù)運行,將由電池供電。因此,如果產(chǎn)品設(shè)計在停止模式下外部32.768kHz晶振需要繼續(xù)運行的話,建議用STOP3模式。坦白說,STOP2模式基本用不著,因為進入STOP2模式,只是RAM有電,并且單片機不做任何的事情,也就用不著電池供電,所以可以直接讓單片機上電重啟,不需要喚醒。圖1.2模式選擇2)單片機外圍I/O電路的設(shè)計這個部分其實很關(guān)鍵,需要對單片機每一個引腳的精雕細琢,因為其中一個引腳處理不當(dāng),可能就是幾十個uA以上。我在調(diào)試的過程中,也吃過不少苦頭。其實處理單片機的引腳可以按照以下幾種方式:(原則只有一個:讓單片機的每個引腳都有確定的電平,并讓每個引腳的壓差為0,即無任何電流包括不可預(yù)知的電流和通過I/O口倒流的電流)①懸空引腳:單片機某個引腳未接任何電路,相當(dāng)于這個引腳的電平是處于不定狀態(tài),需要通過程序給他一個固定的電平,一般采取內(nèi)部上拉并輸出1即可(或者輸出0),這樣既保證了引腳壓差為0,又保證了引腳有個確定的電平。②有外部上拉的輸入或輸出:這種情況是指:掉電情況下仍是外部上拉,因為必須注意到產(chǎn)品是否有2路電源供電,若是電池供電,則掉電情況下仍然屬于外部上拉,如果是外部供電,則掉電后就不再是外部上拉了,這個情況需要分開處理。在有外部上拉的情況下,則讓此I/O輸出高電平1可以實現(xiàn)理論上的0電流。對于外部電源供電的上拉,可以通過一個整流硅二極管后再上拉,如圖1.3:圖1.3I/O口處理這樣可以通過程序?qū)⒋薎/O口設(shè)置為輸出,并輸出0,可以實現(xiàn)0電流。③輸出(無外部上拉):單片機本來就是做輸出功能的引腳,可以直接設(shè)置為輸出并且輸出0。④輸入(無外部上拉):單片機可以設(shè)置成輸出,并輸出0。以上4情況可以總結(jié)為:大部分I/O口可以直接設(shè)置為輸出,并輸出0,只有有外部上拉的情況下,才需要特殊考慮。3)單片機電源的處理:主要針對雙電源供電,一般來說需要用整流二極管反向?qū)崿F(xiàn),如圖1.4圖1.4電源供電如果需要考慮幾個uA功耗的話,D200必須用硅二極管,如IN4148,不可用1N5819。由于IN4148的壓降近似0.7V,所以電源采用3.6V,這樣單片機的工作電源就只有2.9V左右了,也將導(dǎo)致電池電壓降到2.9V左右功耗將小于1uA。我開始用的電源是3.3V的,D200用的是IN5819,結(jié)果在STOP3模式下常溫的功耗有8uA左右,而我拔掉這液晶顯示電子密碼鎖設(shè)計個IN5819就小于1uA。經(jīng)查手冊發(fā)現(xiàn),一般肖特基二極管的反向最大漏電流有幾十個uA,甚至mA級別(和反向電壓和溫度有關(guān))。所以這里我選擇了1N4148,一般硅二極管的最大漏電流也只有0.1uA。對于電池經(jīng)過1N5819后到單片機電源,很多資料說二極管壓降太大,采用三極管或者其他方案,這個容易誤導(dǎo)大家,因為二極管的壓降也和其流過的電流有關(guān),在電流為幾個uA的情況下,壓降幾乎為0。我也試過飛思卡爾官網(wǎng)上關(guān)于電表方案對電池部分的處理,為了不要有0.3V左右的壓降(二極管的壓降),它就是采用三極管電路,但我經(jīng)過試驗發(fā)現(xiàn),這個電路不是很合理,因為在掉電的情況下有二十幾個uA,電流出現(xiàn)倒流了,此電路可能需要進一步的改進。4)關(guān)掉不用的外設(shè):這個對于降低功耗也很關(guān)鍵,其中也包括單片機運行時的功耗。每一款單片機可能不一樣,像AVR系列的ATMEGA88PA其模擬比較器是默認打開的,而如果電路里面沒有用到的話,則可以通過軟件將其關(guān)閉,以減小功耗。所以,軟件里面需要考慮到哪些模塊是默認打開的,默認打開的模塊有沒有用到,若沒有用到就通關(guān)軟件設(shè)置將其關(guān)閉,以減少沒必要的功耗。LL8里面的LVD功能默認在停止模式下是繼續(xù)工作的,而這個功能在停止模式下消耗的電流在100uA以上,所以停止模式必須將其關(guān)閉,以節(jié)省功耗。2010屆本科生畢業(yè)論文(設(shè)計)題目:液晶顯示電子密碼鎖設(shè)計學(xué)院(系):專業(yè)年級:學(xué)生姓名:指導(dǎo)教師:信息工程學(xué)院計算機科學(xué)與技術(shù)2006級完成日期:2010-6-10液晶顯示電子密碼鎖設(shè)計摘要單片機技術(shù)是智能化檢測與控制領(lǐng)域應(yīng)用非常普及并且具有很大潛力的技術(shù)。論文闡述一個基于單片機的液晶顯示電子密碼鎖的設(shè)計與實現(xiàn)。系統(tǒng)采用美國Atmel公司的AT89S52單片機作為系統(tǒng)核心,液晶顯示器LCD1602作為輸出設(shè)備顯示系統(tǒng)提示信息,4*4矩陣薄膜鍵盤作為輸入設(shè)備,CMOS串行E2PROM存儲器AT24C02作為數(shù)據(jù)存儲器,配合蜂鳴器、繼電器等電路構(gòu)成整個系統(tǒng)硬件;系統(tǒng)軟件采用匯編語言編寫。設(shè)計的系統(tǒng)液晶顯示,密碼修改方便,具有報警、鎖定等功能,使用便捷簡單,符合住宅、辦公用鎖需求,具有一定的實用價值。關(guān)鍵詞:密碼鎖;單片機;AT89S52;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;AT89S52;LCD1602;AT24C02目錄1引言..................................................................-1-2系統(tǒng)設(shè)計..............................................................-1-2.1功能設(shè)計.....................................................................................................................-1-2.2結(jié)構(gòu)設(shè)計.....................................................................................................................-2-3硬件設(shè)計..............................................................-3-3.1AT89S52簡介...............................................................................................................-3-3.2液晶顯示電路..............................................................................................................-5-3.2.1LCD1602簡介...................................................................................................-5-3.2.2LCD1602電路...................................................................................................-9-3.3發(fā)聲電路...................................................................................................................-10-3.4開鎖控制電路............................................................................................................-10-3.5密碼存儲電路............................................................................................................-11-3.5.1AT24C02簡介..................................................................................................-11-3.5.2AT24C02電路..................................................................................................-14-3.6鍵盤輸入電路............................................................................................................-14-3.7手動復(fù)位電路............................................................................................................-14-3.8晶振電路...................................................................................................................-15-4軟件設(shè)計.............................................................-16-4.1系統(tǒng)主程序...............................................................................................................-16-4.1.1初始化及按鍵識別..........................................................................................-16-4.1.2按鍵重定位.....................................................................................................-17-4.1.3保存密碼........................................................................................................-19-4.1.4確認鍵處理.....................................................................................................-19-4.1.5開鎖鍵處理.....................................................................................................-20-4.1.6改密鍵處理.....................................................................................................-21-4.1.7校驗新密碼.....................................................................................................-21-4.2系統(tǒng)相關(guān)子程序........................................................................................................-22-4.2.1按鍵識別子程序..............................................................................................-22-4.2.2液晶顯示子程序..............................................................................................-23-4.2.3AT24C02子程序..............................................................................................-23-5系統(tǒng)調(diào)試與測試.......................................................-25-6結(jié)論.................................................................-26-附錄.................................................................-29-1引言1引言鎖具是源流千古的社會性用品,主要用于日常生活和工作中,住宅與部門的安全防范。當(dāng)前門鎖的主流是彈子鎖,其保密性不強,鑰匙容易被仿制和意外丟失;且持有者需隨時攜帶鑰匙,使用不方便。保存貴重物件的保險箱主要用機械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高,成本高昂,且易出現(xiàn)故障。隨著科技、經(jīng)濟和社會的發(fā)展,當(dāng)今社會公共安全防范系統(tǒng)對鎖具的保密性、牢固性、可靠性、耐用性以及安裝使用等提出了新的更高的要求。針對原有鎖具的特點和缺陷,為滿足人們對鎖的使用需求,增加其安全性,用密碼代替鑰匙的電子密碼鎖應(yīng)運而生。早期開發(fā)的電子密碼鎖由于電子器件所限,種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關(guān)來實現(xiàn)的,制作簡單但不安全。后來多是基于EDA實現(xiàn),其電路結(jié)構(gòu)復(fù)雜,電子元件繁多,也有使用早先2051系列單片機來實現(xiàn)的,但密碼簡單,容易破解。隨著電子元件的進一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強大,使用更加方便,保密安全性更強;由以前的單密碼輸入發(fā)展到現(xiàn)在密碼加感應(yīng)元件,實現(xiàn)了真正的電子加密。電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比較高的產(chǎn)品。電子密碼鎖的出現(xiàn)給人們帶來了極大的方便,有很廣闊的市場前景。現(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖,特點有:●保密性好,編碼量多?!耠S機開鎖成功率幾乎為零?!衩艽a可變。用戶可以經(jīng)常更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降?!裾`碼輸入保護。當(dāng)輸入密碼多次錯誤時,報警系統(tǒng)自動啟動?!癫僮骱唵我仔?,一學(xué)即會。論文闡述基于美國Atmel公司的AT89S52單片機,采用液晶顯示器1602作為輸出顯示系統(tǒng)提示信息的電子密碼鎖的設(shè)計與實現(xiàn)。2系統(tǒng)設(shè)計2.1功能設(shè)計本系統(tǒng)擬采用單片機為主控芯片,由于單片機種類繁多,各種型號都有其各自特點,應(yīng)用于不同的環(huán)境,因此在選用時要多加比較。一般來說,在選取單片機時從下面幾個液晶顯示電子密碼鎖設(shè)計方面考慮:性能、存儲器、運行速度、I/O口、定時/計數(shù)器、串行/并行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性等等?;谝陨弦蛩乇驹O(shè)計選用單片機AT89S52作為本設(shè)計的核心元件,利用該單片機靈活的編程設(shè)計和豐富的I/O端口,及其控制的準確性,實現(xiàn)基本的密碼鎖功能。在單片機I/O接口上外接輸入鍵盤用于輸入和一些功能的控制??紤]到密碼的存在形式一般為數(shù)字或字母形式,而字母數(shù)量眾多,并且排列不規(guī)則,不能使用矩陣式鍵盤排列字母;并且按鍵過多會大大增加系統(tǒng)的體積,對適用性極為不利,故只使用數(shù)字作為密碼。阿拉伯?dāng)?shù)字不僅便于用戶記憶,而且通用性極強,是作為密碼的首選。10個數(shù)字需要1個不同的按鍵,故選用為4*4矩陣鍵盤;除去10個數(shù)字鍵,還剩6個按鍵可設(shè)置不同的功能。用戶使用電子密碼鎖開鎖的步驟為:用戶輸入數(shù)字密碼,輸入完畢后按確認鍵。如果密碼正確,再按開鎖鍵,即可開鎖。如果密碼錯誤則報警,如果密碼錯誤多次,還會鎖定鍵盤。這里需要蜂鳴器提示用戶按鍵已按下,開鎖需要繼電器開關(guān)。液晶顯示器則直觀顯示系統(tǒng)當(dāng)前狀態(tài)和提示用戶需要做的操作。用戶修改密碼步驟為:首先輸入舊密碼,輸入完畢后按確認鍵。如果密碼正確再按改密鍵。輸入兩次新密碼并確認。如果兩次密碼輸入長度一致,則密碼修改成功。如果兩次輸入不一致,則密碼修改失敗。失敗后只能重新輸入舊密碼才能繼續(xù)改密。為防止系統(tǒng)發(fā)生異常,還應(yīng)提供復(fù)位開關(guān),在系統(tǒng)無法正常運轉(zhuǎn)時手動復(fù)位。2.2結(jié)構(gòu)設(shè)計如圖2-1所示,整個系統(tǒng)以單片機為核心,輔以若干外圍電路。其中密碼存儲部分是輸入輸出雙向結(jié)構(gòu),保證密碼可以掉電保存,上電后讀出。其余都是單向輸入或輸出。電源部分為整個系統(tǒng)供電,采用5V直流電源。鍵盤輸入部分采用4*4矩陣行列鍵盤,需不斷掃描檢查有無按鍵按下。復(fù)位部分提供手動復(fù)位功能,當(dāng)系統(tǒng)發(fā)生異常或未知錯誤時可以由用戶手動復(fù)位單片機。晶振部分是提供外部石英晶體諧振器。系統(tǒng)輸出有:液晶顯示部分,為用戶顯示字符提示當(dāng)前操作狀態(tài)。蜂鳴器圖2-1系統(tǒng)結(jié)構(gòu)圖發(fā)聲,提示用戶按鍵已按下,以及密碼正確的提示音,錯誤的警告音等。開鎖電路部分2系統(tǒng)設(shè)計是控制繼電器,只有密碼正確并選擇開鎖后,繼電器內(nèi)部的電磁鐵才會吸合,發(fā)光二極管電路連通后發(fā)光,表示鎖已打開。3硬件設(shè)計根據(jù)上面的結(jié)構(gòu)設(shè)計思路,具體設(shè)計中選用一塊20cm*10cm的通用PCB板做為系統(tǒng)焊接板。單片機為Atmel公司的AT89S52,電源部分為直流4.5V,3節(jié)5號電池供電,實驗時也可以用直流5V電源供電。鍵盤輸入部分為4*4矩陣薄膜鍵盤,不需上拉電阻,但掃描時需先給行線或列線供電。液晶顯示器選用1602,可以顯示兩行,每行16個字符。蜂鳴器為有源5V。繼電器為5腳5V。密碼存儲選用串行AT24C02芯片,256B空間,足夠存儲密碼,采用串行傳輸可以極大減少連線數(shù)目。系統(tǒng)原理電路圖如圖3-1所示。下面按系統(tǒng)的結(jié)構(gòu)具體介紹一些電路及其所用的芯片。圖3-1系統(tǒng)原理電路圖3.1AT89S52簡介AT89S52是一款低功耗、高性能CMOS8位微控制器,具有8K可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳液晶顯示電子密碼鎖設(shè)計完全兼容。AT89S52具有以下標(biāo)準功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。其引腳如圖3-2所示,下面簡要介紹其引腳功能:VCC:電源。本設(shè)計中接電源正極。GND:地。本設(shè)計中接電源負極。P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫"1"時,引腳用作高阻抗輸入。P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P1端口寫"1"時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫"1"時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使圖3-2AT89S52引腳圖用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫"1"時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。RST:復(fù)位輸入。晶振工作時,RST腳持續(xù)2個機器周期高電平將使單片機復(fù)位??撮T狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復(fù)位高電平有效。EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。本設(shè)計中不需要外部程序存儲器,因此需接高電平。ALE/PROG:地址鎖存控制信號(ALE是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。PSEN:外部程序存儲器選通信號(PSEN是外部程序存儲器選通信號。當(dāng)AT89S52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。3硬件設(shè)計XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。以上是AT89S52的引腳功能介紹,下面簡要介紹AT89S52的存儲器結(jié)構(gòu)。AT89S52有單獨的程序存儲器和數(shù)據(jù)存儲器,外部程序存儲器和數(shù)據(jù)存儲器都可以64K尋址。程序存儲器:如果EA引腳接地,程序讀取只從外部存儲器開始。對于AT89S52,如果EA接VCC,程序讀寫先從內(nèi)部存儲器(地址為0000H~1FFFH開始,接著從外部尋址,尋址地址為:2000H~FFFFH。數(shù)據(jù)存儲器:AT89S52有256字節(jié)片內(nèi)數(shù)據(jù)存儲器。高128字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當(dāng)一條指令訪問高于7FH的地址時,尋址方式?jīng)Q定CPU訪問高128字節(jié)RAM還是特殊功能寄存器空間。3.2液晶顯示電路3.2.1LCD1602簡介字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片,HD44780是帶西文字庫的液晶顯示控制器,用戶只需要向HD44780送ASCII的字符碼,HD44780就按照內(nèi)置的ROM點陣發(fā)生器自動在LCD液晶顯示器上顯示出來。所以,HD44780主要適用于顯示西文ASCII字符內(nèi)容的液晶顯示。1602字符型LCD能夠同時顯示16*2即32個字符(16列2行。其內(nèi)置192種字符(160個5*7點陣字符和32個5*10點陣字符,具有64個字節(jié)的自定義字符RAM,可自定義8個5*8點陣字符或4個5*11點陣字符。1602通常有14條引腳線或16條引腳線兩種,多出來的2條線是背光電源線和地線,帶背光的比不帶背光的略厚,控制原理與14腳的LCD完全一樣,是否帶背光在應(yīng)用中并無差別。本設(shè)計中采用帶背光16引腳線的。其主要技術(shù)參數(shù)為:顯示容量:16×2個字符。芯片工作電壓:4.5-5.5V。工作電流:2.0mA(5.0V。模塊最佳工作電壓:5.0V。字符尺寸:2.95×4.35(W×Hmm。LCD1602的16個引腳可參照圖3-3,其引腳功能分別為:圖3-3LCD1602引腳圖液晶顯示電子密碼鎖設(shè)計VSS:電源地(GND。VCC:電源電壓(5V。V0:LCD驅(qū)動電壓,液晶顯示器對比度調(diào)整端。使用時可以通過一個10K的電位器調(diào)整對比度,接正電源時對比度最弱,接地電源時對比度最高。RS:寄存器選擇輸入端,選擇模塊內(nèi)部寄存器類型信號。RS=0,進行寫模塊操作時指向指令寄存器,進行讀模塊操作時指向地址計數(shù)器。RS=1,無論進行讀操作還是寫操作均指向數(shù)據(jù)寄存器。R/W:讀寫控制輸入端,選擇讀/寫模塊操作信號。R/W=0,讀操作;R/W=1,寫操作。本設(shè)計中只需往LCD里寫數(shù)據(jù)即可,寫時序見圖3-4。E:使能信號輸入端。讀操作時,高電平有效;寫操作時,下降沿有效DB0~DB7:數(shù)據(jù)輸入/輸出口,單片機與模塊之間的數(shù)據(jù)傳送通道。選擇4位方式通訊時,不使用DB0~DB3。BLA:背光的正端+5V。BLK:背光的負端0V。圖3-4LCD1602寫時序1602模塊內(nèi)部主要由LCD顯示屏、控制器、列驅(qū)動器和偏壓產(chǎn)生電路構(gòu)成??刂破鹘邮軄碜訫PU的指令和數(shù)據(jù),控制著整個模塊的工作。主要由顯示數(shù)據(jù)緩沖區(qū)DDRAM,字符發(fā)生器CGROM,字符發(fā)生器CGRAM,指令寄存器IR,地址寄存器DR,忙標(biāo)志BF,地址計數(shù)器AC以及時序發(fā)生電路組成。模塊通過數(shù)據(jù)總線DB0~DB7和E、R/W、RS三個輸入控制端與MPU接口。這三根控制線按照規(guī)定的時序相互協(xié)調(diào)作用,使控制器通過數(shù)據(jù)總線接受MPU發(fā)來的數(shù)據(jù)和指令,從CGROM中找到欲顯示字符的字符碼,送入DDRAM,在LCD顯示屏上與DDRAM存儲單元對應(yīng)的規(guī)定位置顯示出該字符??刂破鬟€可以根據(jù)MPU的指令,實現(xiàn)字符的顯示,閃爍和移位等顯示效果。CGROM內(nèi)提供的是內(nèi)置字符碼,CGRAM則是供用戶存儲自定義的點陣圖形字符。模塊字符在LCD顯示屏上的顯示位置與該字符的字符代碼在顯示緩沖區(qū)DDRAM內(nèi)的3硬件設(shè)計存儲地址一一對應(yīng)。LCD1602模塊內(nèi)部具有兩個8位寄存器:指令寄存器IR和地址寄存器DR,用戶可以通過RS和R/W輸入信號的組合選擇指定的寄存器,進行相應(yīng)的操作。表3-1中列出了組合選擇方式:表3-1寄存器選擇組合1602提供了較為豐富的指令設(shè)置,通過選擇相應(yīng)的指令設(shè)置,用戶可以實現(xiàn)多種字符顯示樣式。下面僅簡要介紹本次設(shè)計中需要用到的一些指令設(shè)置。●清屏指令Cleardisplay清顯示指令將空位字符碼20H送入全部DDRAM地址中,時DDRAM中的內(nèi)容全部清除,顯示消失,地址計數(shù)器AC=0,自動增一模式。顯示歸位,光標(biāo)閃爍回到原點(顯示屏左上角,但不改變移位設(shè)置模式。清屏指令碼見表3-2。表3-2清屏指令碼●進入模式設(shè)置指令Entrymodeset見表3-3,進入模式設(shè)置指令用于設(shè)定光標(biāo)移動方向和整體顯示是否移動。表3-3模式設(shè)置指令碼I/D:字符碼寫入或者讀出DDRAM后DDRAM地址指針AC變化方向標(biāo)志。I/D=1,完成一個字符碼傳送后,AC自動加1。I/D=0,完成一個字符碼傳送后,AC自動減1。S:顯示移位標(biāo)志。S=1,完成一個字符碼傳送后顯示屏整體向右(I/D=0或向左(I/D=1移位。S=0,完成一個字符碼傳送后顯示屏不移動?!耧@示開關(guān)控制指令Displayon/offcontrol液晶顯示電子密碼鎖設(shè)計指令碼見表3-4,該指令功能為控制整體顯示開關(guān),光標(biāo)顯示開關(guān)和光標(biāo)閃爍開關(guān)。表3-4顯示開關(guān)控制指令碼D:顯示開/關(guān)標(biāo)志。D=1,開顯示;D=0,關(guān)顯示。關(guān)顯示后,顯示數(shù)據(jù)仍保持在DDRAM中,開顯示即可再現(xiàn)。C:光標(biāo)顯示控制標(biāo)志。C=1,光標(biāo)顯示;C=0,光標(biāo)不顯示。不顯示光標(biāo)并不影響模塊其他顯示功能。顯示5*8點陣字體時,光標(biāo)在第八行顯示;顯示5*10點陣字符時,光標(biāo)在第11行顯示。B:閃爍顯示控制標(biāo)志。B=1,光標(biāo)所在位置會交替顯示全黑點陣和顯示字符,產(chǎn)生閃爍效果;B=0,光標(biāo)不閃爍?!窆δ茉O(shè)置指令Functionset功能設(shè)置指令用于設(shè)置接口數(shù)據(jù)位數(shù),顯示行數(shù)以及字形。指令碼見表3-5。表3-5功能設(shè)置指令碼DL:數(shù)據(jù)接口寬度標(biāo)志。DL=1,8位數(shù)據(jù)總線DB7~DB0;DL=0,4位數(shù)據(jù)總線DB7~DB4,DB3~DB0不使用,此方式傳送數(shù)據(jù)需分兩次進行。N:顯示行數(shù)標(biāo)志。N=0,顯示一行;N=1,顯示兩行。F:顯示字符點陣字體標(biāo)志。F=0,顯示5*7點陣字符;F=1,顯示5*10點陣字符。1602模塊內(nèi)部設(shè)有上電自動復(fù)位電路,當(dāng)外加電源電壓超過+4.5V時,自動對模塊進行初始化操作,將模塊設(shè)置為默認的顯示工作狀態(tài)。初始化大約持續(xù)10ms左右。初始化進行的指令操作為:●清顯示●功能顯示DL=1:8位數(shù)據(jù)接口。N=0:顯示一行。F=0:顯示5*8點陣字符字體。D=0:關(guān)顯示。C=0:不顯示光標(biāo)。B=0:光標(biāo)不閃爍。●顯示開/關(guān)控制●輸入模式設(shè)置3硬件設(shè)計I/D=1:AC自動增一。S=0:顯示不移位。但是需要特別注意的是,倘若供電電源達不到要求,模塊內(nèi)部復(fù)位電路無法正常工作,上電復(fù)位初始化就會失敗。因此,最好在系統(tǒng)初始化時通過指令設(shè)置對模塊進行手動初始化。3.2.2LCD1602電路如圖3-5,AT89S52的P0口接1602的8位數(shù)據(jù)線,通過輸出數(shù)據(jù)控制1602顯示不同的提示字符。1602本身內(nèi)置各種字符,還可以自定義顯示字符。本設(shè)計中根據(jù)不同場合1602會顯示各種提示字符,顯示內(nèi)容對應(yīng)含義見表3-6。P3.0~P3.2接1602控制端,其中P3.0接使能端E,寫操作時,使能端下降沿有效。P3.1接讀寫控制端R/W,R/W=0,讀操作;R/W=1,寫操作。P3.2接寄存器選擇端RS,RS=0,寫圖3-5液晶顯示電路圖操作時指向指令寄存器,讀操作時指向地址寄存器;RS=1,無論讀操作還是寫操作都指向數(shù)據(jù)寄存器。LCD1602的VSS為電源地,需接地;VDD為電源電壓;V0為LCD驅(qū)動電壓,接電位器,通過調(diào)節(jié)電位器控制顯示的亮度,使LCD顯示清晰而無黑影。背光電源線LCD正負兩端分別接電源和地即可。液晶顯示電子密碼鎖設(shè)計3.3發(fā)聲電路發(fā)聲部分的電路如圖3-6,就是用P2.1口控制一個有源蜂鳴器發(fā)聲,作為提示音或報警音。程序設(shè)定為每當(dāng)識別到有一位按鍵被按下時,蜂鳴器發(fā)聲0.1S;開鎖時停頓2S發(fā)聲2S,發(fā)聲3次;密碼錯誤時每次停頓0.5S發(fā)聲1S,錯誤5次以內(nèi)時錯N次發(fā)N聲,錯誤5次及以上發(fā)聲10次。圖3-6發(fā)聲電路圖蜂鳴器有兩個引腳,其中長腳為正極,短腳為負極。其發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它。由于單片機I/O引腳輸出的電流較小,基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路,一般使用三極管來放大電流就可以了。本設(shè)計中使用三極管9012,P2.1口高電平時三極管截至,蜂鳴器不發(fā)聲;P2.1口低電平時,三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制P2.1腳的電平來使蜂鳴器發(fā)出聲音和關(guān)閉。3.4開鎖控制電路開鎖控制電路如圖3-7,電路的功能就是在輸入正確的密碼后開鎖。系統(tǒng)使用單片機P2.0引腳發(fā)出信號,經(jīng)三極管放大之后,由繼電器驅(qū)動電磁閥將鎖打開。設(shè)計中用一個發(fā)光二極管模擬表現(xiàn)鎖的開關(guān),只有鎖打開之后,繼電器吸合至常開觸電,發(fā)光二極管才會亮起;實際應(yīng)用中用繼電器控制開鎖電路的開關(guān)。在現(xiàn)代自動控制設(shè)備中,都存在電子電路(弱電與電氣電路(強電的相互連接問題,一方面要使電子電路的控制信號能夠控制電氣電路的執(zhí)行元件(如電動機、電磁鐵、電燈等,另一方面又要為電子線路的電氣電路提供良好的電隔離,以保護電子電路和工作人員的人身的安全。繼電器便能完成這一橋梁作用。繼電器實際上是用較小的電流去控制較大電流的一種“自動開關(guān)”,在電路中起著自動調(diào)節(jié)、安全保護、轉(zhuǎn)換電路等作用。在大多數(shù)情況下,繼電器就是一個電磁鐵,這個電磁鐵的銜鐵可以閉合或斷開一個、數(shù)個觸點。當(dāng)電磁鐵的繞組中有電流通過時,銜鐵被電磁鐵吸引,因而就改變了觸點的狀態(tài)。繼電器也是感性器件,所以不能用單片機的I/O口直接控制,而且必須在三極管等控制器件上加反相保護電路。本設(shè)計中單片機通過P2.0引腳連接一只作為電子開關(guān)的圖3-7開鎖控制電路圖3硬件設(shè)計PNP型三極管9012來驅(qū)動繼電器,繼電器的開、關(guān)完全由三極管的基極電平進行控制。當(dāng)P2.0為高電平時,PNP型三極管截止,繼電器不工作;反之P2.0為低電平時,三極管導(dǎo)通,繼電器得電吸合。設(shè)計中使用的繼電器型號是松川833H,線圈工作電壓直流5V,有5個引腳,如圖3-8。其中1、3引腳是線圈兩端,一端接三極管,另一端接地,不分正負。4是常閉觸點,圖3-8松川833H引腳圖不工作時導(dǎo)通。5是常開觸點,繼電器吸合后才導(dǎo)通,接發(fā)光二極管正極。2是繼電器兩個觸點的公共極點,接個小電阻后連高電平。3.5密碼存儲電路3.5.1AT24C02簡介AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256*8位存儲空間,具有工作電壓寬(2.5V~5.5V,擦寫次數(shù)多(大于10000次,寫入速度快(小于10ms,抗干擾能力強,數(shù)據(jù)不易丟失,體積小等特點。并且它是采用I2C總線式進行數(shù)據(jù)讀寫的串行操作,只占用很少的資源和I/O線。AT24C02有一個16字節(jié)頁寫緩沖器,該器件通過I2C總線接口進行操作,還有一個專門的寫保護功能。AT24C02的引腳如圖3-9,各引腳功能如下:SCL:串行時鐘輸入管腳,用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘。SDA:雙向串行數(shù)據(jù)/地址管腳,用于器件所有數(shù)據(jù)的發(fā)送或接收。A0、A1、A2:器件地址輸入端。這些輸入腳用于多個器件級聯(lián)時設(shè)置器件地址,當(dāng)這些腳懸空時默認值為0。使用AT24C02最大可級聯(lián)8個器件,如果只有一個24C02被總線尋址,這三個地址輸入腳A0、A1、A2可懸空或連接到VSS。WP:寫保護。如果WP管腳連接到Vcc,所有的內(nèi)容都被寫保護,只能讀。當(dāng)WP管腳連接到Vss或懸空,允許器件進行正常的讀/寫操作。VSS:電源地(GND。VCC:電源電壓(5V。圖3-9AT24C02引腳圖AT24C02支持I2C總線數(shù)據(jù)傳送協(xié)議,I2C總線協(xié)議規(guī)定:任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器,任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號的主器件控制的,主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)發(fā)送或接收的模式。I2C總線協(xié)議定義如下:只有在總線空閑時才允許啟動數(shù)據(jù)傳送。液晶顯示電子密碼鎖設(shè)計在數(shù)據(jù)傳送過程中,當(dāng)時鐘線為高電平時,數(shù)據(jù)線必須保持穩(wěn)定狀態(tài),不允許有跳變,時鐘線為高電平時,數(shù)據(jù)線的任何電平變化將被看作總線的起始或停止信號。圖3-10AT24C02起始/停止時序如圖3-10所示,時鐘線保持高電平期間,數(shù)據(jù)線電平從高到低的跳變作為I2C總線的起始信號。時鐘線保持高電平期間,數(shù)據(jù)線電平從低到高的跳變作為I2C總線的停止信號。主器件通過發(fā)送一個起始信號啟動發(fā)送過程,然后發(fā)送它所要尋址的從器件的地址。8位從器件地址的高4位固定為1010(見表3-7,接下來的3位A2、A1、A0為器件的地址位,用來定義哪個器件以及器件的哪個部分被主器件訪問。從器件8位地址的最低位作為讀寫控制位。1表示對從器件進行讀操作,0表示對從器件進行寫操作。在主器件發(fā)送起始信號和從器件地址字節(jié)后,AT24C02監(jiān)視總線并當(dāng)其地址與發(fā)送的從地址相符時響應(yīng)一個應(yīng)答信號。通過SDA線AT24C02再根據(jù)讀寫控制位R/W的狀態(tài)進行讀或?qū)懖僮?。I2C總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號(見圖3-11。應(yīng)答的器件在第9個時鐘周期時將SDA線拉低,表示其已收到一個8位數(shù)據(jù)。AT24C02在接收到起始信號和從器件地址之后響應(yīng)一個應(yīng)答信號,如果器件已選擇了寫操作,則在每接收一個8位字節(jié)之后響應(yīng)一個應(yīng)答信號。當(dāng)AT24C02工作于讀模式時,在發(fā)送一個8位數(shù)據(jù)后釋放SDA線并監(jiān)視一個應(yīng)答信號。一旦接收到應(yīng)答信號,AT24C02繼續(xù)發(fā)送數(shù)據(jù),如主器件沒有發(fā)送應(yīng)答信號,器件停止傳送數(shù)據(jù)且等待一個停止信號。AT24C02的寫模式有字節(jié)寫和頁寫兩種。本設(shè)計中選擇字節(jié)寫模式,其時序見圖3-12。該模式下,主器件發(fā)送起始命令和從器件地址信息(R/W位置零給從器件。在從器件產(chǎn)生應(yīng)答信號后,主器件發(fā)送AT24C02的字節(jié)地址,主器件在收到從器件的另一個應(yīng)答信號后,再發(fā)送數(shù)據(jù)到被尋址的存儲單元。AT24C02再次應(yīng)答,并在主器件產(chǎn)生3硬件設(shè)計圖3-11AT24C02應(yīng)答時序圖3-12AT24C02字節(jié)寫時序停止信號后開始內(nèi)部數(shù)據(jù)的擦寫。在內(nèi)部擦寫過程中AT24C02不再應(yīng)答主器件的任何請求。對AT24C02讀操作的初始化方式和寫操作時一樣,僅把R/W位置為1。有三種不同的讀操作方式:立即地址讀、選擇讀和連續(xù)讀。設(shè)計中需要一次性讀出16字節(jié)的密碼,故用連續(xù)讀方式。連續(xù)讀操作可通過立即讀或選擇性讀操作啟動,在AT24C02發(fā)送完一個8位字節(jié)數(shù)據(jù)后,主器件產(chǎn)生一個應(yīng)答信號來響應(yīng),告知AT24C02主器件要求更多的數(shù)據(jù)。對應(yīng)每個主機產(chǎn)生的應(yīng)答信號,AT24C02將發(fā)送一個8位數(shù)據(jù)字節(jié);當(dāng)主器件不發(fā)送應(yīng)答信號而發(fā)送停止位時結(jié)束此操作。連續(xù)讀操作的時序可見圖3-13。圖3-13AT24C02連續(xù)讀時序液晶顯示電子密碼鎖設(shè)計3.5.2AT24C02電路如圖3-14所示,該部分電路的作用就是使用AT24C02保存密碼,使密碼在單片機掉電之后仍能保存。AT24C02只需要串行時鐘SCL引腳接P3.5,串行數(shù)據(jù)/地址SDA引腳接P3.6,即可完成數(shù)據(jù)和指令的傳送,比起并行傳輸節(jié)省I/O口資源。SCL和SDA各需接一個5.1K的上拉電阻。寫保護WP接地,使圖3-14密碼存儲電路圖AT24C02可進行正常讀寫。系統(tǒng)初始化時,從AT24C02中讀出密碼信息存儲到單片機中,用戶修改密碼后再將新密碼寫入AT24C02。這樣即便單片機掉電,重啟后仍能讀取用戶密碼,從而達到掉電存儲的目的。3.6鍵盤輸入電路本設(shè)計中采用的4*4矩陣鍵盤共有16個鍵位,4根行線連P1口低四位,4根列線連P1口高四位(見圖3-15所示。在按鍵未被按下時,每一條行線與線列線的交叉處互不相通,當(dāng)某個按鍵被按下后,該按鍵所在的行線和列線連通。這樣在P1口的高4位和低4位中各有一位互相連通。通過行列掃描檢測出這兩位,即可識別出被按下的鍵。具體識別方式和按鍵功能完圖3-15鍵盤輸入電路圖全由軟件自定義。系統(tǒng)具體使用的鍵盤是一體式薄膜鍵盤,更輕薄更便捷,有印刷字符,無需連接上拉電阻。但鍵盤內(nèi)部無電流通過,行掃描之前需給4根行線賦高電平,如果某行和某列相通,則高電平變低,可知該行有按鍵被按下。然后進行列掃描,同理可識別出按鍵所在列。確認行和列按鍵即被識別出來。3.7手動復(fù)位電路為確保系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分。無論是哪種類型的單片機,用戶在使用時都必須設(shè)計復(fù)位電路,以提高單片機在強磁場、電源尖峰等強干擾環(huán)境下的工作穩(wěn)定性或?qū)崿F(xiàn)從誤操作中正確恢復(fù)初試狀態(tài)。如果復(fù)位電路可靠性較差,將直接影響到整個單片機系統(tǒng)工作的穩(wěn)定性,造成系統(tǒng)調(diào)試成功后出現(xiàn)死機或“程3硬件設(shè)計序跑飛”等現(xiàn)象。單片機復(fù)位是使CPU和系統(tǒng)的其他功能部件都處在一個確定的初試狀態(tài),并從這個狀態(tài)開始工作,無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復(fù)位。完成復(fù)位操作共需24個狀態(tài)周期,復(fù)位結(jié)束后,單片機從地址0000H開始執(zhí)行程序。0000H~0002H是系統(tǒng)的啟動單元,而0003H~002AH是程序存儲器中的特殊保留單元,所以一般在啟動單元中存放一條無條件轉(zhuǎn)移指令,以便直接轉(zhuǎn)圖3-16手動復(fù)位電路圖去執(zhí)行指定的應(yīng)用程序。復(fù)位電路的基本功能是:系統(tǒng)上電時提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復(fù)位信號,以防止復(fù)位開關(guān)閉合過程中引起的抖動而影響復(fù)位。圖3-16所示的復(fù)位電路可以基本實現(xiàn)上述功能,該電路在最基本的復(fù)位電路基礎(chǔ)上增加了一個手動復(fù)位開關(guān),當(dāng)人為按下按鈕時,則Vcc的高電平就會直接加到RST端。由于人的動作再快也會使按鈕保持接通達數(shù)十毫秒,所以完全能夠滿足復(fù)位的時間要求。3.8晶振電路單片機本身是一個復(fù)雜的同步時序電路,為保證同步工作方式的實現(xiàn),必須提供時鐘信號,以使其系統(tǒng)在時鐘信號的控制下按時序協(xié)調(diào)工作。單片機的時鐘電路由振蕩電路和分頻電路組成,其中振蕩電路由反向器以及其并聯(lián)外接的石英晶體和電容構(gòu)成,用于產(chǎn)生振蕩脈沖。而分頻電路則用于把振蕩脈沖分頻,圖3-17晶振電路圖以得到所需要的時鐘信號。晶振是晶體振蕩器的簡稱,它用一種能把電能和機械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十,高級的精度更高。電路中的晶振即石英晶體振蕩器,它與電容構(gòu)成振蕩回路,為片內(nèi)放大器提供正反饋和振蕩所需的相移條件,從而構(gòu)成一個穩(wěn)定的自激振蕩器。如圖3-17所示,AT89S52芯片中的高增益反向放大器輸入端為引腳XTAL1,輸出端引腳為XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(一般取30pF。這兩個電容叫晶振的負載電容,它是根據(jù)晶振廠家提供的晶振要求負載電容選值的;換句話說,晶振的頻率就是在它提供的負載電容下測得的,能最大限度的保證頻率值的誤差,也能保證溫漂等誤差。液晶顯示電子密碼鎖設(shè)計4軟件設(shè)計系統(tǒng)的軟件設(shè)計采用匯編語言編碼。設(shè)計方法是先用文本編輯器編寫源碼,然后用軟件KeilC51編譯,如果沒有錯誤,可連接生成.HEX格式的文件(需事先在KeilC51中設(shè)置。如果有錯誤則無法連接,但可在生成的.OBJ文件中找到代碼錯誤的地方,便于修改。當(dāng)然也可以直接在Keil中編碼。生成的HEX文件是記錄文本行的ASCII文本文件,在HEX文件中,每一行是一個HEX記錄,由十六進制數(shù)組成的機器碼或者數(shù)據(jù)常量。HEX文件經(jīng)常被用于將程序或數(shù)據(jù)傳輸存儲到ROM、EPROM,大多數(shù)編程器和模擬器使用HEX文件。在Keil中生成的HEX文件需要燒寫到單片機ROM中,系統(tǒng)上電運行后才能看出程序運行的實際效果。燒寫需要的設(shè)備是燒寫器和配套軟件Superpro280,將單片機引腳放入燒寫器并卡緊,打開燒寫器,打開軟件,選定單片機的型號,AT89S52。燒寫之前需擦除ROM內(nèi)原有的內(nèi)容,然后載入上面生成的.HEX文件,選擇文件格式為Intel,然后寫入。完成后校驗,無誤后即可關(guān)掉燒寫器,取下單片機。4.1系統(tǒng)主程序系統(tǒng)的主程序如圖4-1所示。由于用戶在使用系統(tǒng)的過程中,可能在任何時刻按下任何按鍵,而程序都必須對此作出正確響應(yīng)。所以主程序流程的主要思路是是根據(jù)按鍵的不同進行不同的程序處理,下面具體介紹主程序的流程。圖4-1主程序流程圖4.1.1初始化及按鍵識別如圖4-2,系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,兩個定時/計數(shù)器的設(shè)定,液晶顯示模式的設(shè)定,密碼緩沖區(qū)的初始化,一些自定義數(shù)據(jù)空間的初始化,蜂鳴器初始化發(fā)聲等操作。4軟件設(shè)計如果AT24C02里沒有存儲密碼,或者讀取AT24C02失敗,則載入系統(tǒng)初始化密碼;如果AT24C02里有掉電存儲的密碼,則會讀出該密碼。系統(tǒng)初始化并讀取密碼完成后,液晶顯示"Password:",提示用戶可以輸入密碼。此時程序即不斷測試按鍵,檢查是否有按鍵被按下。如果有,則進行按鍵識別;行列掃描法識別出的鍵位與對應(yīng)BUFF的值如表4-1所示。如果沒有按鍵按下,或者按下的按鍵沒有被識別,BUFF賦值0FFH,并跳轉(zhuǎn)至按鍵測試。實際程序運行時,絕大部分時間都在測試按鍵,等待用戶輸入。圖4-2初始化及按鍵識別流程圖4.1.2按鍵重定位之所以要進行按鍵重定位,是因為按鍵識別子程序的功能只限于確認某個按鍵被按下,不包括確認按鍵的意義。根據(jù)表4-1可知,識別出的按鍵排列不符合用戶使用習(xí)慣,也不利于程序的后續(xù)處理,需要重新定位。對BUFF重新賦值,新的鍵位值見表4-2,按鍵左3列仿照手機的9宮格按鍵,便于用戶輸入密碼。剩下的6個按鍵為功能按鍵,各鍵位對應(yīng)的功能設(shè)定如表4-3。根據(jù)不同的按鍵,程序跳轉(zhuǎn)至不同的程序段,進行對應(yīng)按鍵處理,具體流程可見圖4-3。表4-1BUFF初值表4-2BUFF重賦值液晶顯示電子密碼鎖設(shè)計程序開始時,先驅(qū)動蜂鳴器發(fā)聲0.1秒,提示用戶程序已經(jīng)檢測到剛才的按鍵。然后根據(jù)BUFF的初始值進行一系列的對比。如果BUFF的值是0,1,2,4,5,6,8,9,D中的一個,則按鍵是屬于數(shù)字鍵。分別將BUFF重賦值為1,2,3,4,5,6,7,8,9,0。然后程序跳轉(zhuǎn)至保存密碼部分,將數(shù)字密碼保存至密碼緩沖區(qū)。除了兩個未定義功能鍵(BUFF=0BH或0FH程序不作任何處理,刪除鍵(BUFF=0EH程序直接清空密碼緩沖區(qū),表4-3按鍵對應(yīng)功能然后返回至按鍵測試之外,其他3個功能按鍵也有各自的處理程序段。確認鍵處理當(dāng)確認鍵按下后的程序流程,開鎖鍵處理當(dāng)開鎖鍵按下后的準備開鎖流程,改密處理當(dāng)確認鍵按下后的預(yù)備修改密碼流程,稍后將分別詳細介紹。圖4-3按鍵重定位流程圖4軟件設(shè)計4.1.3保存密碼如圖4-4,該程序段的功能是將密碼信息保存至對應(yīng)的緩沖區(qū)。程序設(shè)置了一個16字節(jié)的密碼緩沖區(qū)(PS1~PS16和一個16字節(jié)緩沖區(qū)存儲正確的密碼(AT1~AT16。為便于比較,第一次輸入的密碼保存至PS1,第二次輸入的密碼保存至PS2,依此類推。后面沒有輸入的位填充默認值0FFH。為保密起見,輸入的密碼不能在液晶顯示器上顯示出來,而以“*”號代替。每輸入一位密碼,增加一位星號,便于用戶直觀察覺已經(jīng)輸入的密碼位數(shù)。圖4-4保存密碼流程圖另外,密碼超長也在此程序段處理。因為密碼超長并不涉及其他功能鍵,在保存密碼之前可判斷當(dāng)前密碼的長度。如果超過緩沖區(qū)16位長度,即認為密碼超長,無法繼續(xù)保存密碼。此時清空密碼緩沖區(qū)所有密碼,等待重新輸入。4.1.4確認鍵處理該程序段就是在識別到按鍵為確認鍵之后程序的執(zhí)行流程,如圖4-5所示。輸入密碼完成后會按確認鍵,但是輸入的密碼有三種情況:舊密碼,新密碼第一次,新密碼第二次,三種情況所做的操作也不一樣。程序設(shè)置有新密碼第一次標(biāo)志位PS_NEW1和新密碼第二次標(biāo)志位PS_NEW2,默認都是0。如果PS_NEW1被置1,則表明輸入的密碼是新密碼第一次,需將緩沖區(qū)PS1~PS16的信息轉(zhuǎn)存至NEW1~NEW16,然后PS_NEW1清0,PS_NEW2置1,提示重新輸入新密碼第二次。如果PS_NEW2被置1,則輸入的密碼是新密碼第二次,會進行新密碼校驗,調(diào)用密碼校驗子程序判斷兩次輸入的新密碼是否一致,然后將PS_NEW2清0。如果兩個標(biāo)志位均沒有被置1,則沒有進行改密操作,程序進行密碼校驗,調(diào)用密碼校驗子程序判斷輸入密碼是否正確。密碼正確會有聲光提示,并且密碼正確標(biāo)志位PSW_F置1,然后提示用戶選擇開鎖(A還是改密(B。如果密碼錯誤,系統(tǒng)也有聲光警示,此時無法進行開鎖或改密操作。程序開始后會首先判別BUFF值是否匹配(BUFF=0F5H,如果BUFF值不匹配,說明程序異常,不是從按鍵重定位處跳轉(zhuǎn)過來的,應(yīng)重啟程序。以下幾個按鍵的處理程序段開頭也有類似的BUFF值檢測,不再做贅述。如果密碼長度小于等于2,則密碼太短,不進行任何比較,直接清空緩沖區(qū)重新檢液晶顯示電子密碼鎖設(shè)計測,可節(jié)省程序運行時間。圖4-5確認鍵處理流程圖4.1.5開鎖鍵處理該程序段是程序識別到開鎖鍵被按下后的流程,如圖4-6所示。此段并不需校驗密碼,這里只需檢查密碼正確標(biāo)志位PSW_F的狀態(tài)。如果PSW_F=1,則前面輸入的密碼正確,可以開鎖。如果PSW_F=0,說明密碼錯誤,甚至根本沒有校驗密碼(輸入密碼后沒圖4-6開鎖鍵處理流程圖有按確認鍵,或者直接按下開鎖鍵,此時提示用戶密碼錯誤,無法開鎖。開鎖過程就是將P2.0口置0,繼電器得到低電平就會自動吸合,點亮發(fā)光二極管;可以配合液晶顯示器和蜂鳴器發(fā)聲,提示用戶鎖已被打開。整個過程可持續(xù)若干時間,然后P2.0口置1,清空密碼緩沖區(qū),標(biāo)志位PSW_F清0,重新檢測新的按鍵。4軟件設(shè)計4.1.6改密鍵處理如圖4-7,可以看出,改密鍵的處理流程跟開鎖鍵類似,都需檢查密碼正確的標(biāo)志位,只有PSW_F被置1才可以進行改密。不同之處在于,如果密碼正確,程序會將新密碼第一次的標(biāo)志位PS_NEW1置位,這樣在下一次按確認鍵時,程序可以判別出此次輸入的密碼是新密碼第一次。4.1.7校驗新密碼新密碼的校驗用于當(dāng)新密碼第二次的標(biāo)志位PS_NEW2=1時,按下確認鍵后程序判定當(dāng)前新密碼已經(jīng)輸入兩次,繼而執(zhí)行新密碼校驗,即判斷兩次輸入的新密碼是否一致。如圖4-8所示,校驗兩次輸入的新密碼是否一致的方法仍然是調(diào)用密碼校驗子程序段。然后查詢密碼正確標(biāo)志位PSW_F,如果PSW_F=1,則表明兩次輸入的新密碼一致,可以修改密碼,即可調(diào)用AT24C02寫子程序保存新密碼。若PSW_F=0,則兩次輸入不一致,無法修改密碼;程序提示密碼修改失敗,清空密碼緩沖區(qū),重新測試按鍵。因為新密碼寫入存儲器的過程可能發(fā)生異常,故寫入后馬上調(diào)用AT24C02讀子程序讀出密碼,然后調(diào)用密碼校驗子程序進行對比,即可判斷密碼是否被正確寫入。如果PSW_F=1,則密碼寫入無誤,才提示用戶修改密碼成功。如果PSW_F=0,則表明讀出的密碼跟要用戶準備修改的密碼不一致,密碼修改異常。此時程序可嘗試調(diào)用AT24C02寫子程序圖4-8校驗新密碼流程圖圖4-7改密鍵處理流程圖重新寫一遍,再次讀出并對比。若仍然不一致,則只能調(diào)用系統(tǒng)初試密碼,這個密碼是系統(tǒng)最初寫入單片機ROM內(nèi)部的密碼,僅在AT24C02無法正常讀寫的時候啟用。液晶顯示電子密碼鎖設(shè)計4.2系統(tǒng)相關(guān)子程序4.2.1按鍵識別子程序圖4-9按鍵識別子程序流程圖按鍵識別子程序的功能是行列掃描矩陣鍵盤并識別按鍵送入BUFF值,如圖4-9所示。盡管進入子程序的前提條件是按鍵檢測子程序檢測到有按鍵被按下,但掃描前仍再次調(diào)用按鍵檢測子程序;因為人為按鍵的速度再快也會持續(xù)幾十毫秒,遠遠低于程序的處理速度,所以若是用戶正常按下按鍵,此處的按鍵檢測子程序仍可檢測到。此處調(diào)用按鍵檢測子程序可以防止因按鍵抖動產(chǎn)生的不必要識別。4軟件設(shè)計前面提到,薄膜按鍵沒有上拉電阻,掃描行列之前需先給行列寫1。程序的處理方法是在讀行線之前先給P1口低4位送高電平,然后再讀P1口低4位;被按下的按鍵所在行高電平會因為行列導(dǎo)通,高電平被拉低;故P1口低4位中低電平所在行就是被按下的行。同理,在讀列線之前先給P1口高4位送高電平,然后再讀出,低電平所在的列就是被按下的列。確定BUFF初值的方法是行掃描時送該行第一個按鍵的值入BUFF,4行的首個按鍵鍵值分別為00H,04H,08H,0CH。然后在列掃描時給BUFF加上按鍵所在列的值,分別加00H,01H,02H,03H。即可得到BUFF初值。至于BUFF的重賦值,則在按鍵重定位中根據(jù)初值對應(yīng)修改。4.2.2液晶顯示子程序液晶顯示子程序在每次更新顯示內(nèi)容時都會被調(diào)用,其流程如圖4-10所示。每次更新顯示內(nèi)容前,需清顯示清空LCD原先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。LCD1602要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要圖4-10液晶顯示子程序流程顯示的ASCII字符串。每次送一個字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最后將字符地址加一,LCD1602會將寫入的ASCII碼對應(yīng)的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時,即停止寫入,返回。LCD顯示的內(nèi)容在下次更新前會一直保持。4.2.3AT24C02子程序AT24C02的子程序包括從AT24C02中讀取信息和將信息寫入AT24C02,首先介紹AT24C02的讀程序。如圖4-11所示,單片機作為主器件,發(fā)送起始信號和要尋址的從器件的地址;因為此時即隨后的發(fā)送讀取地址操作都是單片機往AT24C02寫入控制信息,所以R/W要置液晶顯示電子密碼鎖設(shè)計0。本設(shè)計中只用一個AT24C02,從器件地址為0,對應(yīng)代碼為0A0H。AT24C02接收到信號后,發(fā)送應(yīng)答信號。單片機接收到應(yīng)答信號后,再發(fā)送要讀取信息在從器件上的地址;本設(shè)計中從0地址開始讀,則送00H。再次接收到從器件的應(yīng)答信號后,單片機重新發(fā)送起始信號和讀模式信號,將R/W位置1,對應(yīng)代碼為0A1H,正式開始讀取信息。本設(shè)計中需要連續(xù)讀取16字節(jié)的信息,所以選擇連續(xù)讀方式;即是單片機每接收到一字節(jié)的信息后,存入正確密碼緩沖區(qū)(AT1~AT16,然后產(chǎn)生一個應(yīng)答信號,告知AT24C02要求更多的數(shù)據(jù)。當(dāng)單片機不發(fā)送應(yīng)答信號而發(fā)送停止信號時表示讀取結(jié)束。圖4-11讀AT24C02子程序流程圖寫入AT24C02的子程序流程如圖4-12所示。單片機發(fā)送起始信號,接著發(fā)送從器件AT24C02所在地址(0A0H。這里與讀AT24C02子程序不同的是,從開始到結(jié)束都是單片機控制AT24C02寫入信息,所以R/W置1無需更改。對應(yīng)地址上的從器件AT24C02接收到地址信號后發(fā)送應(yīng)答信號。主器件在接收到應(yīng)答信號后,發(fā)送要寫入信息欲保存在從器件上的地址,本設(shè)計中從0地址開始保存,故地址為00H。單片機再次接收到從器件的應(yīng)答信號后即可開始寫入信息。本設(shè)計中采用字節(jié)寫模式,即AT24C02在每接收一個8位字節(jié)之后響應(yīng)一個應(yīng)答信號,單片機在接收到應(yīng)答信號后認為該字節(jié)成功寫入,便準備下一字節(jié)的數(shù)據(jù)。直到所有數(shù)據(jù)發(fā)送完畢,單片機發(fā)送停止信號,結(jié)束寫操作。4軟件設(shè)計圖4-12寫AT24C02子程序流程圖5系統(tǒng)調(diào)試與測試系統(tǒng)的軟硬件設(shè)計都完成后,還不能直接上電運行;需要對系統(tǒng)進行詳細的調(diào)試,以消除在設(shè)計過程中出現(xiàn)的各種錯誤。單片機系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,很多硬件錯誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進一步排除故障。所以硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計則是無從做起。當(dāng)硬件設(shè)計從布線到焊接安裝完成之后,就開始進入硬件調(diào)試階段。首先應(yīng)該確認電源電壓是否正常,用電壓表測量接地引腳跟電源引腳之間的電壓,看是否是電源電壓。接下來就是檢查復(fù)位引腳電壓是否正常。分別測量按下復(fù)位按鈕和放開復(fù)位按鈕的電壓值,看是否正確。然后再檢查晶振是否起振了,一般用示波器來看晶振引腳的波形,注意應(yīng)該使用示波器探頭的“X10”檔。另一個辦法是測量復(fù)位狀態(tài)下的IO口電平,按住復(fù)位鍵不放,然后測量IO口(沒接外部上拉的P0口除外的電壓,看是否是高電平,如果不是高電平,則多半是因為晶振沒有起振。另外還要注意的地方是,如果使用片內(nèi)ROM的話,一定要將EA引腳拉高,否則會出現(xiàn)程序亂跑的情況。如果系統(tǒng)運行不穩(wěn)定的話,有時是因為電源濾波不好導(dǎo)致的。在單片機的電源引腳跟地引腳之間接上一個0.1uF的電容會有所改善。如果電源沒有濾波電容的話,則需要再接一個更大濾波電容,例如220uF的。遇到系統(tǒng)不穩(wěn)定時,就可以并上電容,越靠近芯片越好。系統(tǒng)的鍵盤輸入電路,蜂鳴器發(fā)聲電路,AT24C02密碼存儲電路,繼電器開鎖電路,液晶顯示電路,這幾個部分在檢查硬件無誤后,需要結(jié)合軟件調(diào)試。可編寫單獨控制某液晶顯示電子密碼鎖設(shè)計一部分的程序,運行看是否可以正確控制。如蜂鳴器發(fā)聲電路,可編寫程序控制單片機P2.1口電平,上電運行看是否正常發(fā)聲。一些無法直接觀測出運行效果的電路,如鍵盤輸入電路和密碼存儲電路,則需結(jié)合液晶顯示器調(diào)試。如鍵盤輸入電路,需加上按鍵顯示程序顯示被按下按鍵的BUFF值。6結(jié)論本設(shè)計利用單片機AT89S52作為主控芯片,配合液晶顯示器LCD1602,串行傳輸存儲器AT24C02,4*4矩陣薄膜鍵盤,蜂鳴器,繼電器以及其他外圍電路,用單片機匯編語言編寫的控制程序,成功設(shè)計出一款利用密碼開鎖,可以隨時改密,豐富聲光提示信息,具有適用價值的電子密碼鎖。本系統(tǒng)發(fā)揮出單片機應(yīng)有的價值,完成了電子密碼鎖的基礎(chǔ)功能。利用單片機控制矩陣鍵盤輸入密碼,液晶顯示器顯示英文字符,繼電器開鎖,蜂鳴器發(fā)聲等部件都運轉(zhuǎn)良好,密碼鎖運行的效果也可以正確呈現(xiàn)。致謝致謝作為大學(xué)生涯里的最后一項重要課程,本次畢業(yè)設(shè)計歷時數(shù)月,收獲頗豐。從前期的功能設(shè)計,電路設(shè)計,親自去西安買系統(tǒng)元器件,到實驗室半個多月的辛勞;從硬件上每一條線路的焊接,到軟件上每一條語句的調(diào)試,期間遇到許許多多的難點,眾多意想不到的問題。克服這些困難,需要理論和實踐的結(jié)合,把知識融入到設(shè)計的每個角落。最終完成整個設(shè)計,做出實實在在的東西,自是欣喜不已。整個畢業(yè)設(shè)計中,我要感謝我的指導(dǎo)教師,張建鋒老師。他經(jīng)常詢問設(shè)計的進程,通過他的指導(dǎo),我才了解系統(tǒng)設(shè)計的要點;他還幫助我為系統(tǒng)所需的具體元件把關(guān),對電路圖進行核查。在繼電器開鎖電路無法工作,我一籌莫展的時候,是他指導(dǎo)我逐點檢測,找出錯誤原因。張老師嚴謹求實的作風(fēng)給我很大啟發(fā),我從心底感謝他。另外,我還要感謝實驗室的兩位老師,給我提供了良好的設(shè)計環(huán)境和各種實驗器材。我很感謝他們。液晶顯示電子密碼鎖設(shè)計參考文獻:[1]孫涵芳,徐愛卿。MCS-51/96系列單片機原理及應(yīng)用[M]。北京:北京航空航天大學(xué)出版社,1996[2]李廣弟,朱月秀,冷祖祁。單片機基礎(chǔ)[M]。北京:北京航空航天大學(xué)出版社,2007[3]董繼成。一種新型安全的單片機密碼鎖[J]。電子技術(shù),2004,(03[4]石文軒,宋薇?;趩纹瑱CMSC-51的智能密碼鎖設(shè)計[S]。武漢工程職業(yè)技術(shù)學(xué)院學(xué)報,2004,(01[5]吳春國,李文石。單片機控制電子鎖技術(shù)剖析[S]。東北林業(yè)大學(xué)學(xué)報,2002,(05[6]李景宏,馬學(xué)文。電子技術(shù)實驗教程[M]。沈陽:東北大學(xué)出版社,2004[7]賈正松。單片機系統(tǒng)復(fù)位電路設(shè)計[J]??萍假Y訊,2007,(36[8]袁新燕。淺談單片機應(yīng)用系統(tǒng)的調(diào)試[J]。自動化與儀器儀表,2000,(03[9]王暉,薛永存。基于MCS-51單片機的復(fù)位電路抗干擾分析與設(shè)計[J]?,F(xiàn)代電子技術(shù),2006,(08[10]datasheetofMicrocontrollerAT89S52.Atmel,Inc.[11]datasheetofSerialEEPROM2K(256*8AT24C02.Amel,Inc.[12]通用LCD1602液晶顯示模塊使用手冊(J/OL。偉納電子.[13]51單片機綜合學(xué)習(xí)系統(tǒng)——蜂鳴器、繼電器篇(J/OL。維普資訊.[14]單片機控制繼電器實驗(J/OL。電子驛站.[15]9012,9013,9014,9015,9018晶體三極管技術(shù)手冊(J/OL。電子愛好者.[16]蔡金生。SUPERPRO編程器使用指南(J/OL。滬生電子.附錄附錄;電子密碼鎖匯編源代碼;********************************BUFFEQU6FH;當(dāng)前輸入的密碼TIMERS2EQU6EH;密碼輸入錯誤的次數(shù)TIMERSEQU6DH;輸入數(shù)字的位數(shù);密碼輸入緩沖區(qū)PS1EQU6CHPS2EQU6BHPS3EQU6AHPS4EQU69HPS5EQU68HPS6EQU67HPS7EQU66HPS8EQU65HPS9EQU64HPS10EQU63HPS11EQU62HPS12EQU61HPS13EQU60HPS14EQU5FHPS15EQU5EHPS16EQU5DH;AT24C02讀取緩沖區(qū)AT1EQU5CHAT2EQU5BHAT3EQU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論