任務十鍵盤接口-(2)電子教案_第1頁
任務十鍵盤接口-(2)電子教案_第2頁
任務十鍵盤接口-(2)電子教案_第3頁
任務十鍵盤接口-(2)電子教案_第4頁
任務十鍵盤接口-(2)電子教案_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

任務十鍵盤接口擴展任務分析:實現(xiàn)鍵盤接口擴展硬件獨立式鍵盤與行列式鍵盤的結構和原理軟件獨立式鍵盤查詢原理行列式鍵盤列掃描查詢原理編譯、下載、調試編譯軟件:keil下載軟件:STC-ISP按鍵及鍵盤鍵盤:由若干個按鍵組成的開關矩陣,是實現(xiàn)人機對話或人機通信的常用工具。根據(jù)按鍵的識別方式分:由硬件識別鍵的閉合—編碼鍵盤由軟件識別鍵的閉合—未編碼鍵盤按鍵開關:機械彈性開關,機械開關在閉合及斷開瞬間均伴隨有一連串的抖動

,時間一般為

5~10ms。按鍵及鍵盤鍵按下閉合穩(wěn)定前沿抖動后沿抖動釋放穩(wěn)定鍵釋放按鍵時的抖動消除鍵抖動可用硬件和軟件兩種方法硬件消抖:RS觸發(fā)器軟件消抖:延時10ms左右再檢測Vcc(+5V)Vcc(+5V)AB輸出RS觸發(fā)器消抖電路獨立式未編碼鍵盤接口

獨立式鍵盤:各按鍵相互獨立地接通一條輸入數(shù)據(jù)線。

查詢方式:輸入線平時為高電平;若有任意鍵按下時,輸入線為低電平。優(yōu)點:電路、編程簡單

缺點:按鍵較多時,占用較多I/O口線。K0K1K2例、用查詢方式編寫獨立式按鍵程序#include<reg51.h>unsignedcharkey_value;voidmain(void){P1=P1|0x07; //設置P1.0-P1.2為輸入狀態(tài) while(1){

key_value=P1&0x07; //讀P1.0-P1.2的狀態(tài) switch(key_value) {

case0x06:…;break; //K0按下

case0x05:…;break; //K1按下

case0x03:…;break; //K2按下

default:;break; }}}行列式未編碼鍵盤原理未編碼4*4行列式鍵盤行列式鍵盤列掃描查詢原理行列式鍵盤列掃描查詢原理先判別按鍵所在的行:由P2口輸出列掃描字0x0F,然后讀行線狀態(tài)到變量temp1中。如果有按鍵按下,則行輸入不全為1,即不等于0x0F;如果無按鍵按下,則行輸入全為1,即等于0x0F。再判別按鍵所在的列:由P2口輸出行掃描字0xF0,然后讀列線狀態(tài)到變量temp2中。將temp1和temp2的狀態(tài)相或得到按鍵的編碼,從而知道按鍵的值。#include<reg52.h>voidmDelay(unsignedintDelay);sbitLED_CS=P1^4;//延時子程序:由Delay參數(shù)決定延時時間voidmDelay(unsignedintDelay){unsignedinti;for(;Delay>0;Delay--){for(i=0;i<114;i++){;}}}//按鍵掃描子程序,有鍵按下,返回鍵值00-15;無鍵按下,返回0xff。unsignedcharMatrix_key(){unsignedcharkey,temp1,temp2;key=0xff; //初始化鍵值

P2=0x0f; //輸出列掃描字

if((P2&0x0F)!=0x0f) //讀行線狀態(tài),判斷是否有鍵按下{ mDelay(10); //延時消抖

P2=0x0f; //輸出列掃描字

temp1=P2&0x0f;//讀行線狀態(tài)到temp1中

if(temp1!=0x0f) //有鍵按下{P2=0xf0; //輸出行掃描字temp2=P2&0xf0; //讀列線狀態(tài)到temp2中switch(temp1|temp2){case0xee:key=0;break; case0xde:key=1;break;case0xbe:key=2;break;case0x7e:key=3;break;case0xed:key=4;break;case0xdd:key=5;break;case0xbd:key=6;break;case0x7d:key=7;break;case0xeb:key=8;break;case0xdb:key=9;break;case0xbb:key=10;break;case0x7b:key=11;break;case0xe7:key=12;break;case0xd7:key=13;break;case0xb7:key=14;break;case0x77:key=15;break;

default:key=0xff;break;}} }else{;}return(key);//返回鍵值}voidmain(void){unsignedcharkey_value;LED_CS=0;while(1){

key_value=Matrix_key();//調用按鍵識別子程序switch(key_value)//根據(jù)按鍵分支{

case0:P0=0xfe;break;//0號按鍵,LED1點亮

case1:P0=0xfd;break;//1號按鍵,LED2點亮

case2:P0=0xfb;break;//2號按鍵,LED3點亮

case3:P0=0xf7;break;//3號按鍵,LED4點亮

case4:P0=0xef;break;//4號按鍵,LED5點亮

case5:P0=0xdf;break;//5號按鍵,LED6點亮

case6:P0=0xbf;break;//6號按鍵,LED7點亮

case7:P0=0x7f;break;//7號按鍵,LED8點亮default:break;//無效按鍵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論