單片機(jī)密碼鎖設(shè)計(jì)畢業(yè)論文_第1頁
單片機(jī)密碼鎖設(shè)計(jì)畢業(yè)論文_第2頁
單片機(jī)密碼鎖設(shè)計(jì)畢業(yè)論文_第3頁
單片機(jī)密碼鎖設(shè)計(jì)畢業(yè)論文_第4頁
單片機(jī)密碼鎖設(shè)計(jì)畢業(yè)論文_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南工業(yè)職業(yè)技術(shù)學(xué)院 電子密碼鎖設(shè)計(jì) 姓 名: -班 級(jí): -學(xué) 號(hào):-指導(dǎo)教師: - 2021年10月16日1 河南工業(yè)職業(yè)技術(shù)學(xué)院摘 要隨著人們生活水平的提高,如何實(shí)現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機(jī)械鎖由于其構(gòu)造的簡(jiǎn)單,安全性能低,無法滿足人們的需要。因此通過電子控制的密碼鎖應(yīng)運(yùn)而生,同時(shí)電子產(chǎn)品向智能化和微型化的不斷發(fā)展,單片機(jī)成為電子產(chǎn)品研制和開發(fā)中首選的控制器。本文從經(jīng)濟(jì)實(shí)用的角度出發(fā),采用美國(guó)atmel公司的單片機(jī)貼片at89c52與低功耗cmos型e2prom at24c02作為主控芯片與數(shù)據(jù)存儲(chǔ)器單元,結(jié)合外圍的鍵盤輸入、顯示、報(bào)警、開鎖等電路,用c語言編寫主控芯片

2、的控制程序,設(shè)計(jì)了一款可以多次更改密碼具有報(bào)警功能的電子密碼鎖。經(jīng)實(shí)驗(yàn)證明,該密碼鎖具有設(shè)計(jì)方法合理,簡(jiǎn)單易行,成本低,安全實(shí)用等特點(diǎn),符合住宅、辦公室用鎖要求,具有推廣價(jià)值。關(guān)鍵詞:密碼鎖;單片機(jī);報(bào)警 目 錄一、引言31.1 電子密碼鎖簡(jiǎn)介31.2、電子密碼鎖的發(fā)展趨勢(shì)3二、設(shè)計(jì)方案的選擇32.1 方案一:采用數(shù)字電路控制42.2 方案二:采用以單片機(jī)為核心的控制方案4三、 系統(tǒng)構(gòu)成53.1 設(shè)計(jì)原理53.2 電路總體構(gòu)成53.3 單片機(jī)電路部分63.4 鍵盤輸入部分73.5 密碼存儲(chǔ)部分83.7 晶振部分93.8 顯示部分103.9 報(bào)警部分113.10 開鎖部分11四、 主要元器件介紹

3、12五、 系統(tǒng)軟件設(shè)計(jì)16六、 結(jié)論29七、參考文獻(xiàn)及附錄實(shí)物圖29一、引言1.1 電子密碼鎖簡(jiǎn)介電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機(jī)械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。它的種類很多,有簡(jiǎn)易的電路產(chǎn)品,也有基于芯片的性價(jià)比較高的產(chǎn)品。現(xiàn)在應(yīng)用較廣的電子密碼鎖是以芯片為核心,通過編程來實(shí)現(xiàn)的。其性能和安全性已大大超過了機(jī)械鎖。其特點(diǎn)如下:1) 保密性好,編碼量多,遠(yuǎn)遠(yuǎn)大于彈子鎖。隨機(jī)開鎖成功率幾乎為零。2) 密碼可變,用戶可以隨時(shí)更改密碼,防止密碼被盜,同時(shí)也可以避免因人員的更替而使鎖的密級(jí)下降。3) 誤碼輸入保護(hù),當(dāng)輸入密碼多次錯(cuò)誤時(shí),報(bào)警系統(tǒng)自動(dòng)啟動(dòng)。4)

4、使用靈活性好,不像機(jī)械鎖必須佩帶鑰匙才能開鎖。5) 電子密碼鎖操作簡(jiǎn)單易行,一學(xué)即會(huì)。1.2、電子密碼鎖的發(fā)展趨勢(shì)在日常生活和工作中,住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來解決。目前門鎖主要用彈子鎖,其鑰匙容易丟失;保險(xiǎn)箱主要用機(jī)械密碼鎖,其結(jié)構(gòu)較為復(fù)雜,制造精度要求高,成本高,且易出現(xiàn)故障,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。針對(duì)這些鎖具給人們帶來的不便若使用機(jī)械式鑰匙開鎖,為滿足人們對(duì)鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。它的出現(xiàn)為人們的生活帶來了很大的方便,有很廣闊的市場(chǎng)前景。由于電子器件所

5、限,以前開發(fā)的電子密碼鎖,其種類不多,保密性差,最基本的就是只依靠最簡(jiǎn)單的模擬電子開關(guān)來實(shí)現(xiàn)的,制作簡(jiǎn)單但很不安全,在后為多是基于eda來實(shí)現(xiàn)的,其電路結(jié)構(gòu)復(fù)雜,電子元件繁多,也有使用早先的20引腳的2051系列單片機(jī)來實(shí)現(xiàn)的,但密碼簡(jiǎn)單,易破解。隨著電子元件的進(jìn)一步發(fā)展,電子密碼鎖也出現(xiàn)了很多的種類,功能日益強(qiáng)大,使用更加方便,安全保密性更強(qiáng),由以前的單密碼輸入發(fā)展到現(xiàn)在的,密碼加感應(yīng)元件,實(shí)現(xiàn)了真實(shí)的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的發(fā)展及人們對(duì)保密性需求的提高出現(xiàn)了越來越多的電子密碼鎖。1.3、本設(shè)計(jì)所要實(shí)現(xiàn)的目標(biāo)本設(shè)計(jì)采用單片機(jī)為主控芯片,結(jié)合外圍電

6、路,組成電子密碼鎖,用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開,密碼輸入錯(cuò)誤有提示,為了提高安全性,當(dāng)密碼輸入錯(cuò)誤三次將報(bào)警。密碼可以由用戶自己修改設(shè)定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時(shí)候需要二次確認(rèn),以防止誤操作。二、設(shè)計(jì)方案的選擇2.1 方案一:采用數(shù)字電路控制用以74ls112雙jk觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設(shè)了9個(gè)用戶輸入鍵,其中只有4個(gè)是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動(dòng)清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時(shí)間超過10秒(一般情況下,用戶不會(huì)超過10秒,若用

7、戶覺得不便,還可以修改)電路將報(bào)警20秒,若電路連續(xù)報(bào)警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作。采用數(shù)字電路設(shè)計(jì)的方案好處就是設(shè)計(jì)簡(jiǎn)單但控制的準(zhǔn)確性和靈活性差。故不采用2.2 方案二:采用以單片機(jī)為核心的控制方案由于單片機(jī)種類繁多,各種型號(hào)都有其一定的應(yīng)用環(huán)境,因此在選用時(shí)要多加比較,合理選擇,以期獲得最佳的性價(jià)比。一般來說在選取單片機(jī)時(shí)從下面幾個(gè)方面考慮:性能、存儲(chǔ)器、運(yùn)行速度、i/o口、定時(shí)/計(jì)、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最數(shù)器基本的比如:中斷源的數(shù)量和優(yōu)先級(jí)、工作溫度范圍、有沒有低電壓檢測(cè)功能、單片機(jī)內(nèi)有無時(shí)鐘振蕩

8、器、有無上電復(fù)位功能等。在開發(fā)過程中單片機(jī)還受到:開發(fā)工具、編程器、開發(fā)成本、開發(fā)人員的適應(yīng)性、技術(shù)支持和服務(wù)等等因素。2.3 最終方案基于以上因素:本設(shè)計(jì)選用單片機(jī)at89c52作為本設(shè)計(jì)的核心元件,利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的i/o端口,及其控制的準(zhǔn)確性,實(shí)現(xiàn)基本的密碼鎖功能。在單片機(jī)的外圍電路:外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接at24c02芯片用于密碼的存儲(chǔ),外接lcd1602顯示器用于顯示作用。當(dāng)用戶需要開鎖時(shí),先按鍵盤的數(shù)字鍵09輸入密碼。密碼輸完后按下確認(rèn)鍵,如果密碼輸入正確則開鎖,不正確顯示密碼錯(cuò)誤重新輸入密碼,當(dāng)三次密碼錯(cuò)誤則發(fā)出報(bào)警;當(dāng)用戶需要修改密碼時(shí),

9、先按下鍵盤設(shè)置鍵后輸入原來的密碼,只有當(dāng)輸入的原密碼正確后才能設(shè)置新密碼。新密碼輸入無誤后按確認(rèn)鍵使新密碼將得到存儲(chǔ),密碼修改成功。應(yīng)電0901at89c52貼片程序鍵盤輸入報(bào)警模塊繼電器模塊1602顯示24c02模塊方案框架圖:三、 系統(tǒng)構(gòu)成3.1 設(shè)計(jì)原理 設(shè)計(jì)原理:系統(tǒng)由硬件部分與軟件部分兩部分構(gòu)成。其中硬件部分由單片機(jī)、電源輸入部分、鍵盤輸入部分、密碼存儲(chǔ)部分、復(fù)位部分、晶振部分、顯示部分、報(bào)警部分、開鎖部分組成,軟件部分對(duì)應(yīng)的由主程序、初始化程序、lcd顯示程序、鍵盤掃描程序、啟動(dòng)程序、關(guān)閉程序、建功能程序、密碼設(shè)置程序、eeprom讀寫程序和延時(shí)程序等組成。其原理框圖如圖4-1所示

10、。at89c52鍵盤輸入復(fù)位電路密碼存儲(chǔ)電路晶振電路電源輸入顯示電路報(bào)警電路開鎖電路圖3-1 電子密碼鎖原理框圖3.2 電路總體構(gòu)成 根據(jù)系統(tǒng)要求畫出的設(shè)計(jì)圖總圖-如圖3-2:圖3-2 電電路原理圖電路由單片機(jī)、矩陣鍵盤、1602液晶顯示和24c02密碼存儲(chǔ)等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對(duì)用戶輸入的密碼與24c02保存的密碼進(jìn)行對(duì)比,從而判斷密碼是否正確,然后控制單片機(jī)各引腳的高低電平從而傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警,實(shí)際使用時(shí)只要將單片機(jī)的負(fù)載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當(dāng)然也可以

11、用繼電器的常開觸點(diǎn)去控制電磁鐵吸合線圈。3.3 單片機(jī)電路部分 本次設(shè)計(jì)采用at89c52貼片芯片,at89c52是一個(gè)低電壓,高性能cmos 8位單片機(jī),通過用keil軟件編寫程序,然后燒到單片機(jī)里面去,然后讓它對(duì)整個(gè)系統(tǒng)進(jìn)行信息的處理,如可以讓它處理矩陣鍵盤傳過來的信息,并根據(jù)編好的程序來確定哪個(gè)按鍵按下,并處理相應(yīng)按鍵對(duì)應(yīng)的功能,然后把相應(yīng)的信息反應(yīng)到單片機(jī)的各個(gè)引腳,來實(shí)現(xiàn)按鍵實(shí)現(xiàn)的現(xiàn)象,如:顯示是否開啟鎖,報(bào)警等。它的電路如圖3-3所示: 圖3-3 單片機(jī)電路3.4 鍵盤輸入部分由于本設(shè)計(jì)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行

12、列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多i/o口。本設(shè)計(jì)中使用的這個(gè)4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比如修改密碼功能等。鍵盤的每個(gè)按鍵功能在程序設(shè)計(jì)中已經(jīng)編寫好。其大體功能(看鍵盤按鍵上的標(biāo)記)及與單片機(jī)引腳接法如圖3-4所示:圖3-4 鍵盤輸入原理圖矩陣鍵盤采用“行列”掃描法,行掃描法又稱逐行掃描查詢法,是一種最常用的按鍵掃描方法,如上圖所示,開始時(shí)把行線p1.0-p1.3置為低電平,然后掃描列線,如果有一行列線為低電平,則去抖后判斷是否還有一行列線為低電平,如果還有,則這條列線為低電平,同時(shí)處在這條行線中的按鍵為低電

13、平,然后判斷是哪個(gè)按鍵按下,如果列線全部為高電平,則表示沒有按鍵按下,往復(fù)循環(huán)掃描。3.5 密碼存儲(chǔ)部分 用eprom芯片at24c02存儲(chǔ)密碼。at24c02是美國(guó)atmel公司的低功耗cmos型e2prom,內(nèi)含2568位存儲(chǔ)空間,通過單片機(jī)對(duì)24c02芯片進(jìn)行密碼存儲(chǔ),存儲(chǔ)好密碼后,通過按鍵輸入密碼與存儲(chǔ)芯片里面的數(shù)據(jù)進(jìn)行對(duì)比,根據(jù)數(shù)據(jù)是否一致,來執(zhí)行相應(yīng)的操作,還可以根據(jù)按鍵操作來執(zhí)行是否更換數(shù)據(jù)。電路連接圖如圖3-5所示: 圖3-5 密碼存儲(chǔ)電路原理圖圖中at24c02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。它們都接地,第8腳和第4腳分別為正、負(fù)電源。第5腳sda為串行數(shù)

14、據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向i2c總線串行傳送,與單片機(jī)的p1.5連接。第6腳scl為串行時(shí)鐘輸入線,與單片機(jī)的p1.6連接。sda和scl都需要和正電源間各接一個(gè)5.1k的電阻上拉。第7腳需要接地。3.6 復(fù)位部位 單片機(jī)復(fù)位是使cpu和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后pc0000h,使單片機(jī)從第個(gè)單元取指令。無論是在單片機(jī)剛開始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位。在復(fù)位期間(即rst為高電平期間),p0口為高組態(tài),p1p3口輸出高電平;外部程序存儲(chǔ)器讀選通信號(hào)psen無效。地址鎖存信號(hào)ale也為高電平。根據(jù)實(shí)際情況選擇如圖3-6所示

15、的復(fù)位電路。圖3-6 復(fù)位電路原理圖3.7 晶振部分at89c52引腳xtal1和xtal2與晶體振蕩器及電容c5、c6按圖3-7所示方式連接。晶振、電容c5c6及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,振蕩信號(hào)頻率與晶振頻率及電容c5、c6的容量有關(guān),但主要由晶振頻率決定,范圍在033mhz之間,電容c5、c6取值范圍在530pf之間。根據(jù)實(shí)際情況,本設(shè)計(jì)中采用12mhz做為系統(tǒng)的外部晶振。電容取值為30pf。如圖3-7所示:3-7 晶振電路3.8 顯示部分為了提高密碼鎖的密碼顯示效果能力。本設(shè)計(jì)的顯示部分由液晶顯示器lcd1602取代普通的數(shù)碼管來完成。開始時(shí)顯示器將一直處

16、于初始狀態(tài),當(dāng)需要對(duì)密碼鎖進(jìn)行開鎖時(shí),按下數(shù)字鍵09輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,最多顯示6位。當(dāng)密碼輸入完成時(shí),按下確認(rèn)鍵,如果輸入的密碼正確的話, lcd子顯示“right open”,單片機(jī)其中p1.3引角會(huì)輸出低電平,使三極管導(dǎo)通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,lcd顯示屏?xí)@示“error retry”,p1.3輸出的是高電平,電子密碼鎖不能被打開。通過lcd顯示屏,可以清楚的判斷出鎖所處的狀態(tài)。其顯示部分引腳接口如圖4-8所示:圖3-8 顯示電路原理圖3.9 報(bào)警部分 報(bào)警部分由蜂鳴器及外圍電路組成,加電后不發(fā)聲,當(dāng)密碼輸入錯(cuò)誤三次時(shí),單片機(jī)的p

17、1.4引腳為低電平,三極管導(dǎo)通執(zhí)行蜂鳴器警車聲子程序發(fā)出警笛報(bào)警。如圖3-9所示:圖3-9 報(bào)警電路原理圖3.10 開鎖部分開鎖用戶通過鍵盤任意設(shè)置密碼,并儲(chǔ)存在eeprom中作為鎖碼指令。開鎖步驟如下:首先按下鍵盤數(shù)字鍵09輸入密碼,最后按下確認(rèn)鍵。當(dāng)用戶輸入一密碼后,單片機(jī)自動(dòng)識(shí)碼,如果識(shí)碼不符,則提示重新輸入,如果超過三次則報(bào)警。如果正確,系統(tǒng)使單片機(jī)其中一引腳線發(fā)出信號(hào),經(jīng)三極管放大后,由繼電器驅(qū)動(dòng)電磁閥動(dòng)作將鎖打開,實(shí)物中用led代替繼電器。 圖3-10 開鎖電路原理圖四、 主要元器件介紹4.1 主控芯片at89c524.1.1 at89c52性能簡(jiǎn)介at89c52為8 位通用微處理

18、器,采用工業(yè)標(biāo)準(zhǔn)的c51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主ic 內(nèi)部寄存器、數(shù)據(jù)ram及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)ir的接收解碼及與主板cpu通信等。主要管腳有:xtal1(19 腳)和xtal2(18 腳)為振蕩器輸入輸出端口,外接12mhz 晶振。rst/vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。vcc(40 腳)和vss(20 腳)為供電端口,分別接+5v電源的正負(fù)端。p0p3 為可編程通用i/o 腳,其功能用途由軟件定義,在本設(shè)計(jì)中,p0 端口(3239 腳

19、)被定義為n1 功能控制端口,分別與n1的相應(yīng)功能管腳相連接,13 腳定義為ir輸入端,10 腳和11腳定義為i2c總線控制端口,分別連接n1的sdas(18腳)和scls(19腳)端口,12 腳、27 腳及28 腳定義為握手信號(hào)功能端口,連接主板cpu 的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)及會(huì)聚調(diào)整狀態(tài)進(jìn)入的控制功能。如圖4-1 4-1圖 單片機(jī)引腳 其主要功能特性: 兼容mcs-51指令系統(tǒng);4k可反復(fù)擦寫(1000次)isp flash ;rom32個(gè)雙向i/o口; 4.5-5.5v工作電壓;2個(gè)16位可編程定時(shí)/計(jì)數(shù)器時(shí)鐘頻率0-33mhz 全雙工uart串行中斷口線 128x8 bit內(nèi)

20、部ram 2個(gè)外部中斷源 低功耗空閑和省電模式 中斷喚醒省電模式 3級(jí)加密位 看門狗(wdt)電路 軟件設(shè)置空閑和省電功能 靈活的isp字節(jié)和分頁編程 雙數(shù)據(jù)寄存器指針 4.2 存儲(chǔ)芯片at24c02at24c02是美國(guó)atmel公司的低功耗cmos型e2prom,內(nèi)含2568位存儲(chǔ)空間,具有工作電壓寬(2.55.5 v)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10 ms)、抗干擾能力強(qiáng)、數(shù)據(jù)不易丟失、體積小等特點(diǎn)。而且他是采用了i2c總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和io線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)的存取十分方便。at24c02中帶有的片內(nèi)地址寄存器。每寫入或讀出

21、一個(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)生開始和停止的條件。無論是主機(jī)還是從機(jī),接收到一個(gè)字節(jié)后必須發(fā)出一個(gè)確認(rèn)信號(hào)ac

22、k。at24c02的控制字由8位二進(jìn)制數(shù)構(gòu)成,在開始信號(hào)發(fā)出以后,主機(jī)便會(huì)發(fā)出控制字,以選擇從機(jī)并控制總線傳送的方向。 soic pdip 圖4-2 at24c02的兩種引腳圖 24c02中帶有片內(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 lcd1602顯示器 現(xiàn)在的字符型液晶模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型lcd顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型lcd可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線d0d7和r

23、s,r/w,en三個(gè)控制端口,工作電壓為5v,并且具有字符對(duì)比度調(diào)節(jié)和背光功能。4.3.1 接口信號(hào)說明1602型lcd的接口信號(hào)說明如表4-3所示: 編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1vss電源地9d2data i/o2vdd電源正極10d3data i/o3v0液晶顯示偏壓信號(hào)11d4data i/o4rs數(shù)據(jù)/命令選擇端(h/l)12d5data i/o5r/w讀寫選擇端(h/l)13d6data i/o6e使能信號(hào)14d7data i/o7d0data i/o15bla背光源正極8d1data i/o16blk背光源負(fù)極 表4-3 1602型lcd的接口信號(hào)說明4.3.2 主要技術(shù)參數(shù)

24、1602型lcd的主要技術(shù)參數(shù)如下表所示: 顯示容量16x2個(gè)字符芯片工作電壓4.55.5v工作電流2.0ma(5.0v)模塊最佳工作電壓5.0v字符尺寸2.95x4.35(wxh)mm 表4-4 1602型lcd的主要技術(shù)參數(shù) 4.3.3 基本操作程序讀狀態(tài):輸入:rs=l,rw=l, e=h 輸出:d0d7=狀態(tài)字讀數(shù)據(jù):輸入:rs=h,rw=h, e=h 輸出:無寫指令:輸入:rs=l,rw=l, d0d7=指令碼,e=高脈沖 輸出:d0d7=數(shù)據(jù)寫數(shù)據(jù):輸入:rs=h,rw=l, d0d7=數(shù)據(jù), e=高脈沖 輸出:無4.4 晶體振蕩器石英晶體振蕩器是利用石英晶體(二氧化硅的結(jié)晶體)的

25、壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片(簡(jiǎn)稱為晶片,它可以是正方形、矩形或圓形等),在它的兩個(gè)對(duì)應(yīng)面上涂敷銀層作為電極,在每個(gè)電極上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器,簡(jiǎn)稱為石英晶體或晶體、晶振。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。只要在晶體振子板極上施加交變電壓,就會(huì)使晶片產(chǎn)生機(jī)械變形振動(dòng),此現(xiàn)象即所謂逆壓電效應(yīng)。當(dāng)外加電壓頻率等于晶體諧振器的固有頻率時(shí),就會(huì)發(fā)生壓電諧振,從而導(dǎo)致機(jī)械變形的振幅突然增大。晶體振蕩器,簡(jiǎn)稱晶振,其作用在于產(chǎn)生原始的時(shí)鐘頻率,這個(gè)頻率經(jīng)過頻率發(fā)生器的放大或縮小后就成了電

26、腦中各種不同的總線頻率。以聲卡為例,要實(shí)現(xiàn)對(duì)模擬信號(hào)44.1khz或48khz的采樣,頻率發(fā)生器就必須提供一個(gè)44.1khz或48khz的時(shí)鐘頻率。如果需要對(duì)這兩種音頻同時(shí)支持的話,聲卡就需要有兩顆晶振。但是現(xiàn)在的娛樂級(jí)聲卡為了降低成本,通常都采用scr將輸出的采樣頻率固定在48khz,但是src會(huì)對(duì)音質(zhì)帶來損害,而且現(xiàn)在的娛樂級(jí)聲卡都沒有很好地解決這個(gè)問題?,F(xiàn)在應(yīng)用最廣泛的是石英晶體振蕩器。 石英晶體振蕩器是一種高精度和高穩(wěn)定度的振蕩器,石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選擇頻率,是一種可以取代lc諧振回路的晶體諧振元件。石英晶體振蕩器廣泛地應(yīng)用在電視機(jī)、影碟機(jī)、錄像機(jī)、無線

27、通訊設(shè)備、電子鐘表、單片機(jī)、數(shù)字儀器儀表等電子設(shè)備中。為數(shù)據(jù)處理設(shè)備產(chǎn)生時(shí)鐘信號(hào)和為特定系統(tǒng)提供基準(zhǔn)信號(hào)。在單片機(jī)中為其提供時(shí)鐘頻率。五、 系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)軟件設(shè)計(jì)由主程序、初始化程序、lcd顯示程序程序、鍵盤掃描程序、鍵盤功能程序、密碼設(shè)置程序、eeprom讀寫程序和延時(shí)程序等組成。主要程序設(shè)計(jì)流程圖如下所示:1、先執(zhí)行初始化程序,然后啟動(dòng)程序,執(zhí)行鍵盤掃描程序,根據(jù)各個(gè)功能鍵執(zhí)行相應(yīng)的功能。開始初始化鍵盤程序啟動(dòng)程序鍵盤掃描鍵功能程序結(jié)束關(guān)閉程序 圖5-1 主程序流程圖2、鍵盤功能程序 :先掃描各個(gè)io口,根據(jù)各個(gè)io口確定哪個(gè)鍵按下,然后設(shè)置各個(gè)鍵的功能。 鍵功能程序鍵值09?鍵值開鎖

28、?鍵值清除?鍵值設(shè)置?鍵值確認(rèn)?密碼輸入程序設(shè)置程序清除程序開鎖程序確認(rèn)程序yyyyynnnn返回n 圖5-2 鍵功能流程圖設(shè)置程序初始化按下設(shè)置鍵輸舊密碼確認(rèn)程序所輸入舊密碼正確?輸新密碼確認(rèn)程序設(shè)置成功輸入次數(shù)加1次數(shù)3?報(bào)警程序nyny返回確認(rèn)程序再次輸新密碼兩次新密碼輸入相同?ny 圖5-3 密碼設(shè)置流程圖初始化按開鎖鍵輸入密碼確認(rèn)程序所輸入密碼正確?y開鎖成功開鎖程序輸入次數(shù)加1次數(shù)3?報(bào)警程序返回nyn 圖5-4 開鎖流程圖程序清單:1602子程序:/*-名稱:lcd1602 作者:應(yīng)用電子 引腳定義如下:1-vss 2-vdd 3-v0 4-rs 5-r/w 6-e 7-14 d

29、b0-db7 15-bla 16-blk-*/#include 1602.h#include delay.h#define check_busysbit rs = p10; /定義端口 sbit rw = p11;sbit en = p12;#define rs_clr rs=0 #define rs_set rs=1#define rw_clr rw=0 #define rw_set rw=1 #define en_clr en=0#define en_set en=1#define dataport p2/*- 判忙函數(shù)-*/ bit lcd_check_busy(void) #ifdef

30、 check_busy dataport= 0xff; rs_clr; rw_set; en_clr; _nop_(); en_set; return (bit)(dataport & 0x80);#else return 0;#endif /*- 寫入命令函數(shù)-*/ void lcd_write_com(unsigned char com) / while(lcd_check_busy(); /忙則等待 delayms(5); rs_clr; rw_clr; en_set; dataport= com; _nop_(); en_clr; /*- 寫入數(shù)據(jù)函數(shù)-*/ void lcd_writ

31、e_data(unsigned char data) /while(lcd_check_busy(); /忙則等待 delayms(5); rs_set; rw_clr; en_set; dataport= data; _nop_(); en_clr; /*- 清屏函數(shù)-*/ void lcd_clear(void) lcd_write_com(0x01); delayms(5); /*- 寫入字符串函數(shù)-*/ void lcd_write_string(unsigned char x,unsigned char y,unsigned char *s) while (*s) lcd_write

32、_char(x,y,*s); s +; x+; /*- 寫入字符函數(shù)-*/void lcd_write_char(unsigned char x,unsigned char y,unsigned char data) if (y = 0) lcd_write_com(0x80 + x); else lcd_write_com(0xc0 + x); lcd_write_data( data); /*- 初始化函數(shù)-*/ void lcd_init(void) lcd_write_com(0x38); /*顯示模式設(shè)置*/ delayms(5); lcd_write_com(0x38); dela

33、yms(5); lcd_write_com(0x38); delayms(5); lcd_write_com(0x38); lcd_write_com(0x08); /*顯示關(guān)閉*/ lcd_write_com(0x01); /*顯示清屏*/ lcd_write_com(0x06); /*顯示光標(biāo)移動(dòng)設(shè)置*/ delayms(5); lcd_write_com(0x0c); /*顯示開及光標(biāo)設(shè)置*/ 延時(shí)函數(shù)子程序:#include delay.h/*- us延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號(hào)字符變量,其值的范圍是 025

34、5 這里使用晶振12m,精確延時(shí)請(qǐng)使用匯編,大致延時(shí) 長(zhǎng)度如下 t=tx2+5 us -*/void delayus2x(unsigned char t) while(-t);/*- ms延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號(hào)字符變量,其值的范圍是 0255 這里使用晶振12m,精確延時(shí)請(qǐng)使用匯編-*/void delayms(unsigned char t) while(t-) /大致延時(shí)1ms delayus2x(245); delayus2x(245); 按鍵掃描子程序:/*- 名稱:矩陣鍵盤 作者 :應(yīng)用電子 -*/#

35、include /包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#includekeyboard.h#includedelay.hsbit p1_4=p14;#define keyport p0/*-按鍵掃描函數(shù),返回掃描鍵值-*/unsigned char keyscan(void) /鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法 unsigned char cord_h,cord_l;/行列值中間變量 keyport=0x0f; /行線輸出全為0 cord_h=keyport&0x0f; /讀入列線值 if(cord_h!=0x0f) /先檢測(cè)有無按鍵按下 delayms(10); /

36、去抖 if(keyport&0x0f)!=0x0f) p1_4=0;delayms(75);p1_4=1; cord_h=keyport&0x0f; /讀入列線值 keyport=cord_h|0xf0; /輸出當(dāng)前列線值 cord_l=keyport&0xf0; /讀入行線值 while(keyport&0xf0)!=0xf0);/等待松開并輸出 return(cord_h+cord_l);/鍵盤最后組合碼值 return(0xff); /返回該值/*-按鍵值處理函數(shù),返回掃鍵值-*/unsigned char keypro(void) switch(keyscan() case 0x7e:

37、return 0;break;/0 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值 case 0x7d:return 1;break;/1 case 0x7b:return 2;break;/2 case 0x77:return 3;break;/3 case 0xbe:return 4;break;/4 case 0xbd:return 5;break;/5 case 0xbb:return 6;break;/6 case 0xb7:return 7;break;/7 case 0xde:return 8;break;/8 case 0xdd:return 9;break;/9 case 0xdb:retur

38、n 10;break;/a case 0xd7:return 11;break;/b case 0xee:return 12;break;/c case 0xed:return 13;break;/d case 0xeb:return 14;break;/e case 0xe7:return 15;break;/f default:return 0xff;break; 主函數(shù):/*- 名稱:液1602晶顯示密碼鎖 -*/#include /頭文件,頭文件包含特殊功能寄存器的定義 #include#include1602.h#includedelay.h#includekeyboard.h#in

39、cludelaba.hunsigned char code password=1,2,3,4,5,6,;/可以更改此密碼做多組測(cè)試/定義密碼,實(shí)際上密碼需要存在eeprom中,可以通過程序更改。請(qǐng)用戶自行添加/*- 主程序 -*/main() unsigned char num,i,k,j,m,n=10; unsigned char passwordtemp16; /最大輸入16個(gè) unsigned char inputtimes; /密碼輸入錯(cuò)誤次數(shù) unsigned char passwordlength,plen; /輸入密碼長(zhǎng)度,實(shí)際密碼長(zhǎng)度 bit flag; plen=sizeof

40、(password)/sizeof(password0);/用于計(jì)算出實(shí)際密碼長(zhǎng)度 lcd_init(); /初始化液晶屏 delayms(10); /延時(shí)用于穩(wěn)定,可以去掉 lcd_clear(); /清屏 lcd_write_string(0,0, hello welcome! ); /寫入第一行信息,主循環(huán)中不再更改此信息,所以在while之前寫入 lcd_write_string(0,1, please input!); /寫入第二行信息,提示輸入密碼while (1) /主循環(huán) num=keypro(); /掃描鍵盤 if(num!=0xff) /如果掃描是按鍵有效值則進(jìn)行處理 if

41、(i=0) /輸入是第一個(gè)字符的時(shí)候需要把改行清空,方便觀看密碼 lcd_write_string(0,1, );/清除該行 lcd_write_string(0,0, hello welcome! ); if(i16) passwordtempi=num; if(k6) i=6;if(15=num)/輸入按鍵值15或者密碼輸入到最大值16,表示輸入結(jié)束,需要進(jìn)行比對(duì) passwordlength=i; /計(jì)算輸入密碼長(zhǎng)度 i=0; /計(jì)數(shù)器復(fù)位 k=0;/*標(biāo)志位復(fù)位 if(passwordlength=plen)/長(zhǎng)度相等則比較,否則直接輸出錯(cuò)誤 flag=1;/先把比較位置1 for(j=0;j);/密碼正確顯示的信息lcd_write_string(0,0,nice to meet you );/清除該行 inputtimes=0;/輸入正確則次數(shù)清零,重新計(jì)數(shù) flag=0; /清除正確標(biāo)志 else lcd_write_string(0,1, );/清除該行l(wèi)cd_write_string(0,1,error! retry!);/密碼錯(cuò)誤,提示重新輸入inputtimes+;/連續(xù)輸入錯(cuò)誤,則次數(shù)累加if(inputtimes=3) lcd_wri

溫馨提示

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