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