版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)原理及應(yīng)用課程設(shè)計(jì) 題 目: 電子密碼鎖 學(xué)院(系): 煤炭工程學(xué)院 年級(jí)專業(yè): 自動(dòng)化 學(xué) 號(hào): 100806021517 學(xué)生姓名: 田亞琴 指導(dǎo)教師: 王桂花 摘要:本系統(tǒng)由單片機(jī)系統(tǒng)、矩陣鍵盤、led 顯示和報(bào)警系統(tǒng)組成。系統(tǒng)能完成開鎖、超時(shí)報(bào)警、密碼錯(cuò)誤報(bào)警基本的密碼鎖的功能。除上述基本的密碼鎖功能外,還具有l(wèi)ed顯示功能,本系統(tǒng)成本低廉,功能實(shí)用。關(guān)鍵詞:at89c51,lcd, 電子密碼鎖,矩陣鍵盤,報(bào)警器第1章 系統(tǒng)概述1系統(tǒng)功能 隨著科技的發(fā)展和人們生活水平的提高,如何實(shí)現(xiàn)保密防盜這一問(wèn)題變的尤其的突出,傳統(tǒng)的機(jī)械鎖由于其構(gòu)造的簡(jiǎn)單,失效的事件屢見不鮮,電子鎖由于其保密
2、性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶的親昵。at89c51實(shí)現(xiàn)一基于單片機(jī)的電子密碼鎖的設(shè)計(jì),其主要具有如下功能:(1)設(shè)置8位密碼,密碼通過(guò)鍵盤輸入,若密碼正確,則將鎖打開。(2)狀態(tài)指示、報(bào)警、lcd顯示。密碼輸入正確時(shí)有very good!,welcome to you _等提示信息、密碼輸入錯(cuò)誤數(shù)碼顯示器會(huì)出現(xiàn)錯(cuò)誤提示,顯示“the code is flase!”電子密碼鎖的設(shè)計(jì)主要由三部分組成:鍵盤接口電路、密碼鎖的控制電路、輸出lcd顯示電路。報(bào)警蜂鳴器等。第2章 硬件電路方案(系統(tǒng)框圖)論證分析設(shè)計(jì)的要求是要實(shí)現(xiàn)密碼固定在rom中,設(shè)計(jì)的基本思路是,將密碼固化,放入表中
3、,在得到按鍵后,查表比較密碼,如果正確,顯示” very good!, welcome to you _ ”提示,如果密碼錯(cuò)誤,打開報(bào)警,同時(shí)屏幕閃爍以提示密碼錯(cuò)誤“the code is flase!”。下圖2-1是電子密碼鎖的總體框架圖:電路分為五個(gè)部分,顯示,鍵盤輸入,報(bào)警輸出等。2.1單片機(jī)系統(tǒng):此次課題采用一種是用以80c51為核心的單片機(jī)控制方案。利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的io端口,及其控制的準(zhǔn)確性,進(jìn)行電子密碼鎖的設(shè)計(jì)。此次課題用單片機(jī)p1口與鍵盤相連,做輸入口,p0口與顯示器相連,做顯示,p2口做顯示器掃描。 at89c51lcd顯示蜂鳴器led輸入鍵盤復(fù)位電路 系統(tǒng)總框
4、圖 圖212.2鍵盤接口電路: 此次課程設(shè)計(jì)采用i/o鍵盤,與p1口相連,采用掃描法。設(shè)有09十個(gè)數(shù)字密碼,和一個(gè)確認(rèn)鍵。開機(jī)顯示input code,等待密碼輸入,輸入8個(gè)密碼,按確認(rèn)鍵后,密碼比較。2.3 lcd顯示:此次課程設(shè)計(jì)8密碼lcd顯示器,按鍵后即顯示,液晶顯示。p0口送示數(shù)據(jù),p2口顯示掃描,根據(jù)按鍵次數(shù),第一位顯示器顯示第一次按的密碼,第二位顯示器顯示第二次按的密碼,第三位顯示器顯示第三次按的密碼,依此8位顯示器顯示第8次按的密碼,按鍵完成后按確認(rèn)鍵后,密碼對(duì)則執(zhí)行相關(guān)動(dòng)作,不同則顯示器清零,提示重新輸入。2.4報(bào)警系統(tǒng):此次課程設(shè)計(jì),當(dāng)輸入密碼或密碼錯(cuò)誤時(shí),系統(tǒng)報(bào)警,報(bào)警裝
5、置由一揚(yáng)聲器實(shí)現(xiàn),從p3.7口輸出脈沖,使揚(yáng)聲器鳴報(bào)警。第3章 硬件設(shè)計(jì)3.1按鍵電路設(shè)計(jì)由于設(shè)計(jì)要求使用矩陣鍵盤,所以本設(shè)計(jì)就采用行列式鍵盤,同時(shí)也能減少鍵盤單片機(jī)接口時(shí)所占用的i/o線的數(shù)目,在按鍵比較多的時(shí)候,通常采用這樣方法。如圖3-2 圖 3-23.2指示燈及報(bào)警蜂鳴器的電路設(shè)計(jì)指示燈及報(bào)警蜂鳴器的電路如下圖所示,當(dāng)輸入的密碼正確時(shí),燈亮 圖3-33.3顯示電路設(shè)計(jì) 將p0與顯示的數(shù)據(jù)端相連,使其它能動(dòng)態(tài)的傳輸要顯示的數(shù)據(jù),將p3的第六位與位選通端相連,選通相應(yīng)的位。 接線如圖34所示 圖3-4第四章 程序代碼設(shè)計(jì)分析(程序流程圖與源代碼)4.1 主程序初始化 主程序主要完成初始化、
6、檢查有無(wú)按鍵按下、以及調(diào)用顯示、指示燈等等。具體模塊包括:1、按鍵識(shí)別與編碼設(shè)計(jì)2、顯示程序設(shè)計(jì)3、密碼正確返回程序設(shè)計(jì)4.2按鍵識(shí)別與編碼設(shè)計(jì)當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過(guò)一個(gè)按鍵來(lái)連通,利用這種行列式矩陣結(jié)構(gòu)只需要n條行線和m條列線,即可組成具有nm個(gè)按鍵的鍵盤。在這種行列式矩陣鍵盤非鍵盤編碼的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無(wú)按鍵按下的程序段。當(dāng)確認(rèn)有按鍵按下后,下一步就要識(shí)別哪一個(gè)按鍵按下。對(duì)鍵的識(shí)別通常有兩種方法:一種是常用的逐行掃描查詢法;另
7、一種是速度較快的線反轉(zhuǎn)法。 對(duì)照?qǐng)D4.2所示的43鍵盤,說(shuō)明掃描法原理。首先辨別鍵盤中有無(wú)鍵按下,有單片機(jī)i/o口向鍵盤送全掃描字,然后讀入行線狀態(tài)來(lái)判斷。把每個(gè)鍵都分成水平和垂直的兩端接入,比如說(shuō)掃描碼是從垂直的入,那就代表那一行所接收到的掃描碼是同一個(gè)bit,而讀入掃描碼的則是水平,掃描的動(dòng)作是先輸入掃描碼,再去讀取輸入的值,經(jīng)過(guò)比對(duì)之后就可知道是哪個(gè)鍵被按下。比如說(shuō)掃描碼送入11101111,前面的1110是代表此時(shí)掃描第三行p1.0列,而后面的1111是讓讀取的4列接腳先設(shè)高,若此時(shí)第三行的第一列按鍵被按下,那讀取的結(jié)果就會(huì)變成11101110(注意1111變成1110),其中l(wèi)sb的
8、第三個(gè)bit會(huì)由1變成0,這是因?yàn)檫@個(gè)按鍵被按下之后,會(huì)被垂直的掃描碼電位short,而把讀取的lsb的bit電位拉到0,此即為掃描原理。由于這種按鍵是機(jī)械式的開關(guān),當(dāng)按鍵被按下時(shí),鍵會(huì)震動(dòng)一小段時(shí)間才穩(wěn)定,我們必須在偵測(cè)到有按鍵被按下,就delay一小段時(shí)間,使鍵盤以達(dá)穩(wěn)定狀態(tài),再去判讀所按下的鍵,防抖動(dòng);為了避免讓89c51誤判為多次輸入同一按鍵,要加入按鍵是否松開,就可以讓鍵盤的輸入穩(wěn)定。按鍵的操作面板如下圖所示。共計(jì)數(shù)字鍵10個(gè),功能鍵1個(gè)。如圖,10個(gè)數(shù)字鍵用來(lái)輸入密碼,enter鍵用來(lái)進(jìn)行輸入密碼的確認(rèn). 圖4-2 按鍵操作電路4.3整體流程圖設(shè)計(jì)開始顯示input code輸入密
9、碼密碼正確否?顯示the code is flase!蜂鳴器響顯示very good!welcome to you _led亮ny4.3.1 開始等待流程系統(tǒng)開始一直顯示提示“input code”,并判斷有否按鍵,當(dāng)有鍵按下跳出等待開始顯示“input code”判斷是否有按鍵?結(jié)束noyes4.3.2密碼比較及對(duì)錯(cuò)處理: 密碼輸入完成之后,進(jìn)行密碼比較,即將設(shè)定密碼單元40h-48h 的密碼與輸入密碼31h-39h的密碼進(jìn)行一一比較,如果相同,則密碼正確,p3.2置高電平,led亮,同時(shí)lcd顯示very good!,welcome to you _,如果密碼錯(cuò)誤,則顯示器顯示the co
10、de is flase!,同時(shí)蜂鳴器報(bào)警。4.4源程序代碼;=rs bit p2.7 rw bit p2.6 e bit p2.5 enter bit 22h.0 open bit p3.6 speak bit p3.7 passbuf equ 40h keynumber equ 41h ;存放識(shí)別后的按鍵號(hào) org 0000h ajmp main org 0003h jmp key_int org 000bh ajmp intt0 org 001bh ajmp intt1 org 0030h;= 主程序開始 =main: mov 30h,#08h ;輸入密碼為8位 mov 42h,#200
11、;設(shè)定報(bào)警的時(shí)間,42h單元里的數(shù)*50ms mov 43h,#250 ;設(shè)定啟動(dòng)時(shí)間 14的倍數(shù)(實(shí)際上液晶顯示器執(zhí)行指令占用了時(shí)間,開門時(shí)間會(huì)比14*250ms大) mov 44h,#00h ;44h號(hào)單元存放輸入錯(cuò)誤的次數(shù) mov 45h,#00h ;45h為定時(shí)器0中斷次數(shù) mov 46h,#00h ;46h為定時(shí)器1中斷次數(shù) mov 47h,#250 ;輸入密碼時(shí)間設(shè)定,50ms倍數(shù) mov sp,#60h clr open clr speak ;初始化輸出設(shè)備 clr enter ;標(biāo)志位初始化 mov tmod,#11h ;定時(shí)器工作方式2 mov th0,#3ch ;初值50m
12、s mov tl0,#0bh mov th1,#3ch mov tl1,#0bh setb ea setb et0 setb et1 mov tcon,#00000000b ;電平觸發(fā)start: mov r0,30h mov r1,#31hss1: mov r1,#00hi nc r1 djnz r0,ss1 ;將輸入密碼緩沖單元清零 mov p1,#0fh ;初始化按鍵口 mov r1,#31h ;從31號(hào)單元開始存放按建輸入的密碼 clr 20h ;報(bào)警標(biāo)志清零 clr 21h ;密碼超時(shí)標(biāo)志 mov 46h,#00h ;超時(shí)后對(duì)定時(shí)器中斷次數(shù)清零,便于下一輪重新計(jì)時(shí)init: acal
13、l sellcd ;設(shè)定液晶工作方式 acall line1 ;在第一行顯示 mov dptr,#mes_p ;顯示請(qǐng)輸入密碼 acall display setb ex0 ; 開中斷,允許鍵盤輸入keyin: jb 21h,err ;超時(shí)轉(zhuǎn)到錯(cuò)誤程序 jnb enter,keyin ;等待enter按下 clr enter clr ex0 ;密碼輸入完后鎖定鍵盤;當(dāng)使用邊沿觸發(fā)時(shí)用上面的指令為什么禁止不了中斷?;= 密碼判斷程序 =comp: mov dptr,#pass mov r4,30h ;密碼的長(zhǎng)度 mov a,#0 mov r1,#31h loop: mov r5,a movc a
14、,a+dptr mov passbuf,a ;取出系統(tǒng)設(shè)定的密碼 mov a,r1 ;從31號(hào)單元開始取出輸入的密碼 cjne a,passbuf,err ;比較 mov a,r5 inc a inc r1 ;取下一位 djnz r4,loop;正確match: mov a,#01h acall enable ;清屏,光標(biāo)復(fù)位 acall line1 ;從第一行開始顯示 mov dptr,#mes_c acall display ;顯示請(qǐng)進(jìn) acall line2 mov dptr,#tab_1 acall display setb open ;開門 mov 44h,#00h ;輸入錯(cuò)誤次數(shù)清
15、零 mov r6,43h acall delay clr open ;復(fù)位 jmp start ;錯(cuò)誤err: acall back mov r6,#03h acall delay acall back ;輸錯(cuò)提示音,鳴兩下 mov a,#01h acall enable acall line1 mov dptr,#mes_e acall display ;顯示錯(cuò)誤 mov r6,#40h acall delay inc 44h mov a,44h cjne a,#03h,ee0ee0: jc errout ;輸錯(cuò)不到三次返回 mov 44h,#00h ;清零 acall wraning ;報(bào)
16、警errout: jmp start= 按鍵中斷服務(wù)程序 =key_int: push acc push psw clr ex0 acall delay10ms ;延時(shí)消抖 setb tr1 ;啟動(dòng)定時(shí)器 acall smkey ;按鍵識(shí)別 mov a,keynumber ;返回按鍵號(hào) acall back ;按鍵發(fā)聲 mov r3,a cjne r3,#0bh,k1 ;enter是否按下 setb enter clr tr1 ;按下確認(rèn)后關(guān)畢定時(shí)器 mov 446h, jmp key_rtnk1: add a,#30h ;將按鍵號(hào)轉(zhuǎn)換為asc碼 mov r1,a ;將輸入的密碼存入緩沖單元
17、inc r1 ;修改地址 acall wrdata key_rtn: pop psw pop acc setb ex0 reti= 按鍵識(shí)別程序 =smkey: mov a,p1 anl a,#0fhwkey: mov b,a ;反轉(zhuǎn)法查詢 mov p1,#0f0h nop mov a,p1 anl a,#0f0h orl a,b mov p1,#0fh ;還原p1口初態(tài) cjne a,#0eeh,wkey1 mov keynumber,#00h ajmp returnwkey1: cjne a,#0edh,wkey2 mov keynumber,#01h ajmp returnwkey2:
18、cjne a,#0ebh,wkey3 mov keynumber,#02h ajmp returnwkey3: cjne a,#0e7h,wkey4 mov keynumber,#03h ajmp returnwkey4: cjne a,#0deh,wkey5 mov keynumber,#04h ajmp returnwkey5: cjne a,#0ddh,wkey6 mov keynumber,#05h ajmp returnwkey6: cjne a,#0dbh,wkey7 mov keynumber,#06h ajmp returnwkey7: cjne a,#0d7h,wkey8 m
19、ov keynumber,#07h ajmp returnwkey8: cjne a,#0beh,wkey9 mov keynumber,#08h ajmp returnwkey9: cjne a,#0bdh,wkey10 mov keynumber,#09hajmp returnwkey10: cjne a,#0bbh,wkey11 mov keynumber,#0ah ajmp returnwkey11: cjne a,#0b7h,return mov keynumber,#0bh ;判斷哪個(gè)鍵按下,返回相應(yīng)按鍵號(hào)碼return: mov p1,#0fh nop nop mov a,p1
20、cpl a anl a,#0fh jnz return ;等待按鍵松開 ret;= 液晶工作方式設(shè)置 =sellcd: mov a,#01h ;清屏,光標(biāo)復(fù)位 acall enable mov a,#38h ;設(shè)置顯示模式,8位兩行,5*7點(diǎn)陣 acall enable mov a,#0dh ;顯示器開,允許內(nèi)爍 acall enable mov a,#06h ;文字不動(dòng),光標(biāo)右移 acall enable ret;= 液晶執(zhí)行指令 =enable: clr rs clr rw ;rs,rw同為低電平時(shí)寫入指令 mov p0,a clr e ;e由高變低時(shí)執(zhí)行指令 acall wait set
21、b e ret;= wait =;判斷液晶是否忙的子程序wait: mov p0,#0ffh clr rs setb rw ;rw為高,rs為低時(shí)可讀忙信號(hào) clr e nop setb e jb p0.7,waitret;= 顯示的起始地址 =;在第一行l(wèi)ine1: mov a,#80h acall enable ret;在第二行l(wèi)ine2: mov a,#0c0h acall enable ret= 顯示程序 =display: mov r7,#00hnext: mov a,r7 movc a,a+dptr cjne a,#10h,dsp retdsp: acall wrdata inc
22、r7 ajmp next;= 將a里面的數(shù)據(jù)寫入液晶 =wrdata: setb rs clr rw mov p0,a clr e acall wait setb e ret;= 報(bào)警程序 = wraning: setb tr0 acall back mov r4,#00h acall d2 jb 20h, wraning ret;= 發(fā)聲程序 = back: mov r0,#100kk1: cpl speak lcall delay2ms djnz r0,kk1 ;不斷取反p3.7使其產(chǎn)生一定頻率的方波推動(dòng)揚(yáng)聲器 ret ;延時(shí)的長(zhǎng)短可以改變輸出的頻率 ;= intt0 = ;報(bào)警時(shí)間設(shè)定i
23、ntt0: push acc push psw mov th0,#3ch mov tl0,#0bh inc 45h mov a,45h cjne a,42h,intt0out mov 45h,#00h setb 20h ;置標(biāo)志位 clr tr0 ;關(guān)閉定時(shí)器intt0out:pop psw pop acc reti;= intt1 = ;輸入超時(shí)intt1: push acc push psw inc 46h mov a,46h cjne a,47h,intt1out clr tr1 ;關(guān)閉定時(shí)器 setb 21h ;時(shí)間到置標(biāo)志位 mov 47h,#00h ;中斷次數(shù)清零intt1out:
24、pop psw pop acc reti ;= 延時(shí)程序 =delay: mov r4,#38hd1: mov r5,#0f9h djnz r5,$ djnz r4,d1 djnz r6,delay ;14*r6毫秒 retdelay2ms: mov r4,#02hd2: mov r5,#0f0h djnz r5,$ djnz r4,d2 ret delay10ms: mov r4,#20d3: mov r5,#248 djnz r5,$ djnz r4,d3 retpass: db 08353028mes_p: db input code,10hmes_c: db very good!,10
25、hmes_e: db the code is flase!,10htab_1: db welcome to you _,10hend第五章 仿真電路圖與效果圖5.1 仿真電路圖 原理圖 5.2 仿真效果圖 輸入正確密碼圖 輸入正確密碼顯示圖 輸入錯(cuò)誤密碼圖 輸入錯(cuò)誤密碼顯示圖 第六章 pcb圖與3d視圖6.1 pcb圖6.2 3d視圖6.3 元器件清單:元件名稱所屬類別所屬子類別at89c51microprocessor ics8051 familycrystalmiscellaneous-ceramic33pcapacitorsceramic discgenelect100u16vcapacitorsradial electrolytic3watt10kresistor3 watt wirewound3watt1kresistor3 watt wirewoundrespack8resistorsresistor packsbuttonswitches & relaaysswitches74s140ttl 74 seriesbuffers & diverslm032loploelectronicsalphanumeric lcdsled-redoptoelectronicsledss
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畜牧獸醫(yī)院校校長(zhǎng)聘用合同
- 電動(dòng)滑板車租賃合同內(nèi)容
- 物流倉(cāng)儲(chǔ)聘用合同證明
- 義務(wù)教育學(xué)校標(biāo)準(zhǔn)化建設(shè)培訓(xùn)課件(A)
- 遼寧省遼陽(yáng)市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版專題練習(xí)(上學(xué)期)試卷及答案
- 青海省玉樹藏族自治州(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版階段練習(xí)(上學(xué)期)試卷及答案
- 小學(xué)語(yǔ)文國(guó)培培訓(xùn)心得體會(huì)5篇
- 工會(huì)拔河活動(dòng)總結(jié)
- 英語(yǔ)期中考試總結(jié)(25篇)
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題集錦
- 小學(xué)體育水平一《走與游戲》教學(xué)設(shè)計(jì)
- 秋日私語(yǔ)(完整精確版)克萊德曼(原版)鋼琴雙手簡(jiǎn)譜 鋼琴譜
- 辦公室室內(nèi)裝修工程技術(shù)規(guī)范
- 鹽酸安全知識(shí)培訓(xùn)
- 萬(wàn)盛關(guān)于成立醫(yī)療設(shè)備公司組建方案(參考模板)
- 消防安全巡查記錄臺(tái)帳(共2頁(yè))
- 科技特派員工作調(diào)研報(bào)告
- 中波廣播發(fā)送系統(tǒng)概述
- 縣疾控中心中層干部競(jìng)聘上崗實(shí)施方案
- 急性心肌梗死精美PPt完整版
- 物業(yè)日常巡查記錄表.doc
評(píng)論
0/150
提交評(píng)論