|
目錄
數(shù)碼管顯示4x4矩陣鍵盤的鍵號(hào) 2
摘要 2
關(guān)鍵詞 2
第一章 硬件 2
AT89C51 2
4*4鍵盤 6
第二章 軟件 9
KEIL4 9
匯編程序 10
Proteus 15
仿真電路圖 17
第三章 實(shí)物 17
材料 17
實(shí)物展示 18
課程設(shè)計(jì)心得 19
參考文獻(xiàn) 20
摘要:1、設(shè)計(jì)要求:?jiǎn)纹瑱C(jī)的p1口的p1.0-p1.7連接4x4矩陣鍵盤,p0口控制一只數(shù)碼管,當(dāng)4x4矩陣鍵盤中的某一按鍵按下時(shí),數(shù)碼管上顯示對(duì)應(yīng)的鍵號(hào)。例如,1號(hào)鍵按下時(shí),數(shù)碼管顯示“1”;九號(hào)鍵按下時(shí),數(shù)碼管顯示“9”,等等。原理說明:本設(shè)計(jì)的關(guān)鍵點(diǎn)是如何進(jìn)行鍵盤掃描,并計(jì)算出鍵號(hào),然后把鍵號(hào)送數(shù)碼管顯示。
4*4矩陣式鍵盤 矩陣式鍵盤(或者叫行列式鍵盤)常應(yīng)用在按鍵數(shù)量比較多的系統(tǒng)之中。這種鍵盤由行線和列線組成,按鍵設(shè)置在行、列結(jié)構(gòu)的交叉點(diǎn)上,行、列線分別接在按鍵開關(guān)的兩端。行列式鍵盤可分為非編碼鍵盤和編碼鍵盤兩大類。編碼鍵盤內(nèi)部設(shè)有鍵盤編碼器,被按下鍵的鍵號(hào)由鍵盤編碼器直接給出,同時(shí)具有防抖和解決重鍵的功能。非編碼鍵盤通常采用軟件的方法,逐行逐列檢查鍵盤狀態(tài),當(dāng)有鍵按下時(shí),通過計(jì)算或查表的方法獲取該鍵的鍵值,通常,計(jì)算機(jī)通過程序控制對(duì)鍵盤掃描,從而獲取鍵值,根據(jù)計(jì)算機(jī)掃描的方法可以分為定時(shí)掃描法和中斷掃描法兩種。 本系統(tǒng)中的4*4矩陣式鍵盤結(jié)構(gòu)簡(jiǎn)單,按鍵數(shù)較少,采用非編碼式鍵盤,當(dāng)有鍵按下時(shí),由單片機(jī)通過程序掃描確定鍵值,并將獲得的鍵值通過LED數(shù)碼管顯示出來。鍵盤掃描原理 :本設(shè)計(jì)采用中斷式掃描法,這樣可以節(jié)約單片機(jī)開銷,提高單片機(jī)工作效率,使得單片機(jī)在沒有鍵盤輸入時(shí)可以處理其他工作,其具體工作過程為: 在沒有鍵按下時(shí)矩陣鍵盤行線接高電平,列線接低電平,當(dāng)某個(gè)鍵被按下時(shí),該按鍵所在行線電位被拉低,觸發(fā)單片機(jī)的外部中斷INT0,進(jìn)入中斷子程序,在中斷程序中,單片機(jī)對(duì)矩陣鍵盤進(jìn)行掃描以確定按下的鍵值,掃描過程如下:1、檢測(cè)行線電平,確定是否有按鍵被按下;2、延時(shí)去抖動(dòng); [7]3、重新確認(rèn)是否有按鍵被按下,若有,掃描鍵值,若沒有,返回主程序;4、掃描鍵值,首先行線接高電平,列線接低電平,對(duì)行線電平進(jìn)行檢測(cè), 以確定按下的鍵所在的行; 5、行線接低電平,列線接高點(diǎn)平,對(duì)列線電平進(jìn)行檢測(cè),確定按下的鍵所 在的列; 6、將掃描所得的按鍵值送入LED數(shù)碼管顯示。LED數(shù)碼管 本設(shè)計(jì)中使用的是七段共陰極LED數(shù)碼管。 如下圖所示為七段共陰極LED顯示器件的結(jié)構(gòu)及外形圖。七段LED顯示器件就是將7個(gè)發(fā)光二極管按一定的方式組合在一起,如下圖所示。 下表給出了共陽極7段LED顯示器件所能顯示的部分字符與7段控制顯示代碼的對(duì)應(yīng)關(guān)系 下表給出了共陽段LED顯示器件所能顯示的部分字符與7段控制顯示代碼的對(duì)應(yīng)關(guān)系顯示字符 | 控制顯示代碼(十[8]六進(jìn)制) | 顯示字符 | 控制顯示代碼(十六進(jìn)制) | 1 | F9H | A | 88H | 2 | A4H | B | 83H | 3 | B0H | C | C6H | 4 | 99H | D | A1H | 5 | 92H | E | 86H | 6 | 82H | F | 8EH | 7 | F8H | 不顯示 | FFH | 8 | 80H |
|
| 9 | 90H |
|
| 0 | C0H |
|
| 在本設(shè)計(jì)中,4*4鍵盤共有16個(gè)鍵,對(duì)其編號(hào)0~9,A~F,所以用一個(gè)7段數(shù)碼管靜態(tài)顯示即可滿足即時(shí)顯示按鍵信息的要求。所謂靜態(tài)顯示,就是當(dāng)顯示器件顯示某個(gè)字符時(shí),相[9]應(yīng)的顯示段(發(fā)光二級(jí)管)恒定地導(dǎo)通或截止,直到顯示另一個(gè)字符為止。這種顯示方式顯示一個(gè)字符時(shí),只需要微處理器送一次代碼,因此占用機(jī)時(shí)少,而且顯示穩(wěn)定可靠,其缺點(diǎn)是,使用元器件相對(duì)較多,且線路比較復(fù)雜,相對(duì)而言成本較高,比較適合顯示位數(shù)較少的情況。第二章 軟件部分KeilKeil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會(huì)更加深刻。Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面,并將這些部分組合在一起。其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。 系統(tǒng)概述 :Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。 Keil C51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu) C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目[10]標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。使用獨(dú)立的Keil仿真器時(shí),注意事項(xiàng) 仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。仿真器上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng)。 仿真芯片的31腳(/EA)已接至高電平,所以仿真時(shí)只能使用片內(nèi)ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴(kuò)展有外部ROM(其CPU的/EA引腳接至低電平)的目標(biāo)系統(tǒng)中使用。
匯編程序如下:
scan_code EQU 30H
ORG 0000H
JMP start
ORG 0030H
start:
MOV P0,#0FFH ;初始化p0口,使輸出無顯示
loop: ; 循環(huán)調(diào)用read—key獲取鍵盤信息,若鍵盤按下,
CALL read_[11]key ; 則用R7返回鍵值信息
CJNE R7,#0FFH,next ; 若R7返回值不為0xff,則調(diào)用顯示函數(shù)
JMP loop
next: ;顯示程序
MOV A,R7
MOV DPTR,#disp_code
MOVC A,@A+DPTR
MOV P0,A
JMP loop
read_key:
MOV scan_code,#7FH
MOV P1,#0FH
MOV A,P1
MOV R7,#0FFH
CJNE A,#0FH,wait_key ;鍵盤按下則p1的值會(huì)改變
JMP end_key
wait_key:[12]
CALL delay_10ms ;延時(shí)10ms,若p1口仍右鍵按下,則跳到scan—key
MOV A,P1
MOV R7,#0FFH
MOV R6,#4
CJNE A,#0FH,scan_key
JMP end_key
scan_key:
MOV P1,scan_code ;將0x7f循環(huán)右移并賦給P1
MOV A,P1
CJNE A,scan_code,get_key;p1的值改變則確定出其行數(shù)
RR A
MOV scan_code,A
DJNZ R6,scan_key
JMP end_key
get_key:
; MOV P1,#0FH
; MOV R1,P1
; CJNE R1,#0FH,$[13]
MOV R7,#4
get_key0:
JNB ACC.0,add_r6;移位循環(huán)判斷最低位,為0則確定其列數(shù)
RR A
DJNZ R7,get_key0
MOV R7,#0FFH
JMP end_key
add_r6:
DEC R6 ;從第0個(gè)鍵盤數(shù)起,數(shù)滿(R6-1)*4個(gè)鍵盤,再加上第R6行
MOV A,R6 ;的列數(shù)R7-1,便得第幾個(gè)鍵盤按下
MOV B,#4
MUL AB
DEC R7
ADD A,R7
MOV R7,A
end_key:
RET[14]
delay_10ms:
MOV R7,#10
delay0:
MOV R6,#0FAH
delay1:
NOP ; 1us
NOP ; 1us
DJNZ R6,delay1 ; 2us+R6循環(huán)250次,延時(shí)250*4us
DJNZ R7,delay0 ;2us+R7循環(huán)10次,延時(shí)10*250*4us=10ms
RET
disp_code:
DB 40H,79H,24H,30H
DB 19H,12H,02H,78H
DB 00H,18H,08H,03H
DB 46H,21H,06H,0EH
END
使用Proteus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì),是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力;在單片機(jī)課程設(shè)計(jì)和全國大學(xué)生電子設(shè)計(jì)競(jìng)賽中,我們使用 Proteus 開發(fā)環(huán)境對(duì)學(xué)生進(jìn)行培訓(xùn),在不需要硬件投入的條件下,學(xué)生普遍反映,對(duì)單片機(jī)的學(xué)習(xí)比單純學(xué)習(xí)書本知識(shí)更容易接受,更容易提高。實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。因此,Proteus 有較高的推廣利用價(jià)值。仿真電路圖如下: 第三章 實(shí)物材料:材料名稱 | 晶振 | 22pf電容 | 10uf電容 | 按鍵 | C51芯片 | 芯片卡槽 | 數(shù)碼管 | USB接口 | 杜邦線 | 數(shù)量 | 1 | 2[18] | 1 | 17 | 1 | 1 | 1 | 1 | 若干 | 實(shí)物展示:第四章 心得體會(huì)通過本次單片機(jī)課程設(shè)計(jì),我不僅加深了對(duì)單片機(jī)理論知識(shí)的理解,學(xué)會(huì)了學(xué)以致用的重要性;而且還學(xué)會(huì)了如何去加強(qiáng)鍛煉創(chuàng)新精神,同時(shí)也提高了自身的動(dòng)手能力,讓我深刻的意識(shí)到理論與實(shí)際結(jié)合的重要性。 在本次設(shè)計(jì)過程中,雖然設(shè)計(jì)的題目不是很難,但在實(shí)際操作過程當(dāng)中也遇到了不少困難,通過遇到的困難[19]也讓我不斷地去查找資料,不斷地詢問同學(xué),不斷地去開動(dòng)自己的腦子,從而也不斷地超越自我,讓自己的知識(shí)能夠得到不斷地完善;同時(shí)更重要的是,在這一設(shè)計(jì)過程當(dāng)中,讓我懂得了在學(xué)習(xí)的道路上會(huì)遇到很多的阻礙,但關(guān)鍵的是能做到堅(jiān)持不懈,不輕易放棄;最終達(dá)到自己想要的目標(biāo)。 單片機(jī)的學(xué)習(xí)對(duì)于我們專業(yè)來說非常的重要,通過本次設(shè)計(jì)也讓我更加清晰了對(duì)專業(yè)的了解,理論知識(shí)再豐富,沒有實(shí)際的操作經(jīng)驗(yàn)也是不行的;本次設(shè)計(jì)也運(yùn)用到了proteus仿真軟件,由于之前沒有學(xué)過該仿真軟件,所以在操作的過程中遇到了很多困難,但慶幸的是通過不斷的學(xué)習(xí),對(duì)proteus軟件也有了很大的了解,也學(xué)會(huì)了一些簡(jiǎn)單的操作,所以也讓我意識(shí)到,如果你想學(xué)好,通過自己的努力就一定會(huì)學(xué)好。 當(dāng)然在本次設(shè)計(jì)過程中,也遇到了很多的困難,比如很多關(guān)于單片機(jī)的基礎(chǔ)知識(shí)學(xué)的不是很好。當(dāng)然在設(shè)計(jì)過程中也少不了同學(xué)們的互相幫助,要是沒有同學(xué)幫助的幫助,我想我一個(gè)人也不可能在短時(shí)間內(nèi)完成設(shè)計(jì)要求;所以在此也要感謝在設(shè)計(jì)中給予我?guī)椭闹笇?dǎo)老師和同學(xué)們。
0.png (16.76 KB, 下載次數(shù): 77)
下載附件
2018-12-25 22:14 上傳
全部資料51hei下載地址:
數(shù)碼管顯示4x4矩陣鍵盤的鍵號(hào).zip
(149.2 KB, 下載次數(shù): 122)
2018-12-25 10:08 上傳
點(diǎn)擊文件名下載附件
包括仿真文件 下載積分: 黑幣 -5
課設(shè)數(shù)碼管顯示4x4矩陣鍵盤的鍵號(hào).doc
(103 KB, 下載次數(shù): 32)
2018-12-25 10:07 上傳
點(diǎn)擊文件名下載附件
設(shè)計(jì)報(bào)告 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|