任務(wù)十鍵盤(pán)課件_第1頁(yè)
任務(wù)十鍵盤(pán)課件_第2頁(yè)
任務(wù)十鍵盤(pán)課件_第3頁(yè)
任務(wù)十鍵盤(pán)課件_第4頁(yè)
任務(wù)十鍵盤(pán)課件_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、任務(wù)十任務(wù)十 鍵盤(pán)接口擴(kuò)展鍵盤(pán)接口擴(kuò)展u 任務(wù)分析:實(shí)現(xiàn)任務(wù)分析:實(shí)現(xiàn)鍵盤(pán)接口鍵盤(pán)接口擴(kuò)展擴(kuò)展u 硬件硬件獨(dú)立式獨(dú)立式鍵盤(pán)鍵盤(pán)的的結(jié)構(gòu)和原理結(jié)構(gòu)和原理矩陣式鍵盤(pán)矩陣式鍵盤(pán)的的結(jié)構(gòu)和原理結(jié)構(gòu)和原理 u 軟件軟件鍵盤(pán)鍵盤(pán)驅(qū)動(dòng)驅(qū)動(dòng)u 編譯、下載、調(diào)試編譯、下載、調(diào)試按鍵及鍵盤(pán)按鍵及鍵盤(pán)u鍵盤(pán):由若干個(gè)鍵盤(pán):由若干個(gè)按鍵按鍵組成的組成的開(kāi)關(guān)矩陣開(kāi)關(guān)矩陣,是實(shí)現(xiàn)人機(jī),是實(shí)現(xiàn)人機(jī)對(duì)話(huà)或人機(jī)通信的常用工具。對(duì)話(huà)或人機(jī)通信的常用工具。u 根據(jù)按鍵的識(shí)別方式分:根據(jù)按鍵的識(shí)別方式分:編碼鍵盤(pán)編碼鍵盤(pán) 鍵的識(shí)別由專(zhuān)用的硬件譯碼器實(shí)現(xiàn),并產(chǎn)生鍵編號(hào)或鍵鍵的識(shí)別由專(zhuān)用的硬件譯碼器實(shí)現(xiàn),并產(chǎn)生鍵編號(hào)或鍵值,如值,如BC

2、D碼鍵盤(pán)、碼鍵盤(pán)、ASCII碼鍵盤(pán),碼鍵盤(pán), 非編碼鍵盤(pán)非編碼鍵盤(pán) 只提供按鍵開(kāi)關(guān)的行列矩陣,按鍵的識(shí)別、鍵碼的確定只提供按鍵開(kāi)關(guān)的行列矩陣,按鍵的識(shí)別、鍵碼的確定以及去抖動(dòng)等功能由軟件完成以及去抖動(dòng)等功能由軟件完成u按鍵開(kāi)關(guān):機(jī)械彈性開(kāi)關(guān),機(jī)械開(kāi)關(guān)在閉合及斷按鍵開(kāi)關(guān):機(jī)械彈性開(kāi)關(guān),機(jī)械開(kāi)關(guān)在閉合及斷開(kāi)瞬間均伴隨有一連串的開(kāi)瞬間均伴隨有一連串的抖動(dòng)抖動(dòng) ,時(shí)間一般為,時(shí)間一般為 510ms。按鍵及鍵盤(pán)按鍵及鍵盤(pán)鍵按下閉合穩(wěn)定前沿抖動(dòng)后沿抖動(dòng)釋放穩(wěn)定鍵釋放按鍵時(shí)的抖動(dòng)按鍵時(shí)的抖動(dòng)u 消除鍵抖動(dòng)可用消除鍵抖動(dòng)可用硬件硬件和和軟件軟件兩種方法兩種方法硬件硬件消抖:消抖:RS觸發(fā)器觸發(fā)器軟件軟件消抖:

3、消抖:延時(shí)延時(shí)10ms左右再左右再檢測(cè)檢測(cè)Vcc(+5V)Vcc(+5V)AB輸出RS觸發(fā)器消抖電路觸發(fā)器消抖電路鍵盤(pán)掃描控制方式鍵盤(pán)掃描控制方式u 程序控制方式程序控制方式:鍵盤(pán)處理程序固定在主程序的某個(gè)程序:鍵盤(pán)處理程序固定在主程序的某個(gè)程序段。段。特點(diǎn):對(duì)特點(diǎn):對(duì)CPU工作影響小工作影響小應(yīng)考慮鍵盤(pán)處理程序運(yùn)行間隔周期不能太長(zhǎng),否則影響對(duì)鍵盤(pán)輸應(yīng)考慮鍵盤(pán)處理程序運(yùn)行間隔周期不能太長(zhǎng),否則影響對(duì)鍵盤(pán)輸入響應(yīng)的及時(shí)性。入響應(yīng)的及時(shí)性。u 定時(shí)控制掃描方式定時(shí)控制掃描方式:利用定時(shí):利用定時(shí)/計(jì)數(shù)器每隔一段時(shí)間產(chǎn)計(jì)數(shù)器每隔一段時(shí)間產(chǎn)生定時(shí)中斷,生定時(shí)中斷,CPU響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描。響應(yīng)中

4、斷后對(duì)鍵盤(pán)進(jìn)行掃描。特點(diǎn):采用定時(shí)特點(diǎn):采用定時(shí)/計(jì)數(shù)器定時(shí)控制掃描間隔。計(jì)數(shù)器定時(shí)控制掃描間隔。定時(shí)時(shí)間不能太長(zhǎng),否則影響對(duì)鍵盤(pán)輸入響應(yīng)的及時(shí)性。定時(shí)時(shí)間不能太長(zhǎng),否則影響對(duì)鍵盤(pán)輸入響應(yīng)的及時(shí)性。u 中斷控制方式中斷控制方式:利用外部中斷源,響應(yīng)鍵盤(pán)輸入信號(hào)。:利用外部中斷源,響應(yīng)鍵盤(pán)輸入信號(hào)。特點(diǎn):能及時(shí)處理鍵盤(pán)輸入,又能提高特點(diǎn):能及時(shí)處理鍵盤(pán)輸入,又能提高CPU運(yùn)行效率運(yùn)行效率要占用一個(gè)中斷資源。要占用一個(gè)中斷資源。獨(dú)立式未編碼鍵盤(pán)接口獨(dú)立式未編碼鍵盤(pán)接口u 獨(dú)立式獨(dú)立式鍵盤(pán):各按鍵鍵盤(pán):各按鍵相互獨(dú)立相互獨(dú)立地接通一條地接通一條輸入輸入數(shù)據(jù)線數(shù)據(jù)線 。u 圖中采用中斷響應(yīng)、圖中采用中

5、斷響應(yīng)、軟件查詢(xún)軟件查詢(xún)方式:方式:輸入線平時(shí)為輸入線平時(shí)為高電平高電平;若有任意若有任意鍵按下鍵按下時(shí),輸時(shí),輸入線為入線為低電平低電平。u 優(yōu)點(diǎn):電路、編程優(yōu)點(diǎn):電路、編程簡(jiǎn)單簡(jiǎn)單 u 缺點(diǎn):按鍵較多時(shí),占缺點(diǎn):按鍵較多時(shí),占用用較多較多I/OI/O口線??诰€。K0K1K2 例、用查詢(xún)方式編寫(xiě)?yīng)毩⑹桨存I程序例、用查詢(xún)方式編寫(xiě)?yīng)毩⑹桨存I程序# include unsigned char key_value;void main(void) while(1) key_value=P1&0 x07;/讀讀P1.0-P1.2的狀態(tài)的狀態(tài) switch(key_value) case 0 x06: ;

6、 break;/K0按下按下case 0 x05: ; break; /K1按下按下case 0 x03: ; break; /K2按下按下 default: ; break; 任務(wù)十鍵盤(pán)課件矩陣式鍵盤(pán)44的行、列結(jié)構(gòu)可構(gòu)成的行、列結(jié)構(gòu)可構(gòu)成16個(gè)按鍵的鍵盤(pán),占用個(gè)按鍵的鍵盤(pán),占用8位的位的I/O口線。口線。 列線為輸出口,行線為輸入口,行線通過(guò)上拉電阻接到列線為輸出口,行線為輸入口,行線通過(guò)上拉電阻接到5V上。上。任務(wù)十鍵盤(pán)課件按鍵識(shí)別按鍵的識(shí)別:采用掃描法(1)第一步,判斷有無(wú)鍵按下?)第一步,判斷有無(wú)鍵按下?從列線輸出口輸出全掃描字從列線輸出口輸出全掃描字0000,讀入行線輸入口的狀態(tài)。

7、讀入行線輸入口的狀態(tài)。沒(méi)鍵按下,行線全為沒(méi)鍵按下,行線全為1有鍵按下,行線必有一根為有鍵按下,行線必有一根為0若有鍵按下,進(jìn)行列掃描,判斷是那一列發(fā)生,輸出列掃描字。若有鍵按下,進(jìn)行列掃描,判斷是那一列發(fā)生,輸出列掃描字。 列掃描是對(duì)要掃描的列送列掃描是對(duì)要掃描的列送0,其它列送,其它列送1,依次為,依次為0111、1011、1101、1110。每掃描一列讀入行線狀態(tài),全。每掃描一列讀入行線狀態(tài),全1則不在該列,有則不在該列,有0則必在該列。則必在該列。(2)第二步,判斷哪列鍵按下?)第二步,判斷哪列鍵按下?任務(wù)十鍵盤(pán)課件(3) 逐行檢查是哪根行線為逐行檢查是哪根行線為0,即可查出是哪個(gè)鍵按下

8、,即可查出是哪個(gè)鍵按下,按鍵出現(xiàn)在哪行哪列。按鍵出現(xiàn)在哪行哪列。(4)按鍵編碼)按鍵編碼 每個(gè)按鍵要給一個(gè)編號(hào),例如每個(gè)按鍵要給一個(gè)編號(hào),例如44鍵盤(pán)的鍵盤(pán)的16個(gè)鍵編號(hào)為個(gè)鍵編號(hào)為015,對(duì)按鍵進(jìn)行的編碼稱(chēng)為鍵值。,對(duì)按鍵進(jìn)行的編碼稱(chēng)為鍵值。 有許多按鍵編碼方法,如高有許多按鍵編碼方法,如高4位為行號(hào),低位為行號(hào),低4位為列號(hào),合成為一個(gè)位為列號(hào),合成為一個(gè)字節(jié)。例如:第字節(jié)。例如:第2行第行第0列的鍵,編碼為列的鍵,編碼為20H(0010 0000B)-我們不用。我們不用。 也可以采用順序編號(hào)的方法,使鍵值與鍵號(hào)一致,也可以采用順序編號(hào)的方法,使鍵值與鍵號(hào)一致,其計(jì)算公式:其計(jì)算公式: 鍵

9、值行首值列號(hào)鍵值行首值列號(hào)任務(wù)十鍵盤(pán)課件(5)判斷按鍵釋放)判斷按鍵釋放 得到鍵值后應(yīng)判斷按鍵是否釋放,否則有可能識(shí)別為兩次按得到鍵值后應(yīng)判斷按鍵是否釋放,否則有可能識(shí)別為兩次按鍵,引起誤操作。鍵,引起誤操作。如右圖如右圖44鍵盤(pán):鍵盤(pán): 行首值為行首值為0、4、8、12 列號(hào)為列號(hào)為0,1,2,3即:即:第第0行行首值為行行首值為0第第1行行首值為行行首值為4第第2行行首值為行行首值為8第第3行行首值為行行首值為12例:若第例:若第2行第行第1列發(fā)生按鍵列發(fā)生按鍵則鍵值為:則鍵值為:8+1=9任務(wù)十鍵盤(pán)課件鍵盤(pán)掃描流程任務(wù)十鍵盤(pán)課件LAB6000實(shí)驗(yàn)箱怎樣呢?注意:該圖注意:該圖4條行線實(shí)際

10、對(duì)應(yīng)條行線實(shí)際對(duì)應(yīng)D3D0,圖示為,圖示為 D5D2任務(wù)十鍵盤(pán)課件觀察上面電路,觀察上面電路,LAB6000也是矩陣鍵盤(pán),也是矩陣鍵盤(pán),4X6結(jié)構(gòu),結(jié)構(gòu),行讀入地址為行讀入地址為KEY_IN(0 x001h)列輸出地址與列輸出地址與LED數(shù)碼管公用,為數(shù)碼管公用,為OUTBIT(0 x002h) 所以仿照上面原理所以仿照上面原理,可以對(duì)其進(jìn)行鍵盤(pán)掃描??梢詫?duì)其進(jìn)行鍵盤(pán)掃描。任務(wù)十鍵盤(pán)課件#include #define LEDLen 6unsigned char xdata OUTBIT _at_ 0 x8002 ;/顯示的位碼地址;鍵盤(pán)的列線地顯示的位碼地址;鍵盤(pán)的列線地址;址;unsign

11、ed char xdata OUTSEG _at_ 0 x8004;/顯示的段碼地址;顯示的段碼地址;unsigned char xdata IN _at_ 0 x8001 ; / 鍵盤(pán)讀入口鍵盤(pán)讀入口unsigned char dis_bufLEDLen; / 顯示緩沖顯示緩沖unsigned char const dis_tab = / 八段管顯示碼八段管顯示碼0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x7d, 0 x07,0 x7f, 0 x6f, 0 x77, 0 x7c, 0 x39, 0 x5e, 0 x79, 0 x71 ;void

12、mDelay(unsigned int Delay) unsigned int i; for( ;Delay0; Delay-) for(i=0;i114;i+) ; void DisplayLED()unsigned char data i;unsigned char data Pos;unsigned char data LED;Pos = 0 x20; / 從左邊開(kāi)始顯示從左邊開(kāi)始顯示for (i = 0; i = 1; / 顯示下一位顯示下一位unsigned char const KeyTable = / 鍵碼定義鍵碼定義0 x16, 0 x15, 0 x14, 0 xff,0 x1

13、3, 0 x12, 0 x11, 0 x10,0 x0d, 0 x0c, 0 x0b, 0 x0a,0 x0e, 0 x03, 0 x06, 0 x09,0 x0f, 0 x02, 0 x05, 0 x08,0 x00, 0 x01, 0 x04, 0 x07;unsigned char TestKey()OUTBIT = 0; / 輸出線置為輸出線置為0return (IN & 0 x0f); / 讀入鍵狀態(tài)讀入鍵狀態(tài) (高四位不用高四位不用)unsigned char GetKey() unsigned char Pos; unsigned char data i;unsigned cha

14、r data k;i = 6;Pos = 0 x20; / 找出鍵所在列找出鍵所在列do OUTBIT = Pos;Pos = 1;k = IN & 0 x0f; while (-i != 0) & (k = 0);/ 鍵值鍵值 = 列列 X 4 + 行行if (k != 0) i*=4;if(k&2)i+=1;else if (k&4)i+=2;else if (k&8)i+= 3;OUTBIT = 0;do mDelay(1); while (TestKey(); / 等鍵釋放等鍵釋放return(KeyTablei); / 取出鍵碼取出鍵碼 else return(0 xff);void

15、 main() char key_val; while (1) DisplayLED(); if (TestKey() key_val= GetKey() & 0 x0f; dis_buf5 = key_val; dis_buf3 = key_val; 任務(wù)十鍵盤(pán)課件課堂練習(xí):課堂練習(xí): 1 、鍵盤(pán)掃描和、鍵盤(pán)掃描和LED顯示程序不變,改寫(xiě)主程序?qū)崿F(xiàn):顯示程序不變,改寫(xiě)主程序?qū)崿F(xiàn): 每次按鍵,最新值顯示在屏幕最右端,舊的內(nèi)容左移;每次按鍵,最新值顯示在屏幕最右端,舊的內(nèi)容左移;進(jìn)一步實(shí)現(xiàn)最新值顯示在屏幕最左端,舊的內(nèi)容右移;進(jìn)一步實(shí)現(xiàn)最新值顯示在屏幕最左端,舊的內(nèi)容右移;2、P1口接口接4根線到根線到LED燈,實(shí)現(xiàn):燈,實(shí)現(xiàn):a、按、按0鍵,鍵,LED燈循環(huán)左移燈循環(huán)左移b、按、按1鍵,鍵,LED燈循環(huán)右移燈循環(huán)右移c、按、按2鍵,鍵,LED燈燈1s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論