鍵盤接口技術_第1頁
鍵盤接口技術_第2頁
鍵盤接口技術_第3頁
鍵盤接口技術_第4頁
鍵盤接口技術_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

鍵盤接口技術獨立式鍵盤矩陣式鍵盤訓練項目鍵盤由一組規(guī)則排列的按鍵組成,一個按鍵實際上是一個開關元件。在單片機外圍電路中,通常用到的按鍵是機械觸點式彈性開關,其主要功能是把機械上的通斷轉換為電氣上的邏輯關系(1和0),當開關閉合(0)時,線路導通,開關斷開(1)時,線路斷開。常見的鍵盤種類有獨立式鍵盤和矩陣式鍵盤。一、獨立式鍵盤1、獨立式鍵盤結構鍵盤實際上是一組按鍵開關的集合,平時按鍵開關總是處于斷開狀態(tài),當按下鍵時它才閉合。每個按鍵單獨占用一根I/O口線,每個按鍵工作不會影響其他I/O口線的狀態(tài)。多用于所需鍵盤不多的場合。2、獨立式鍵盤接口結構簡單,每個按鍵接單片機的一條I/O線,通過對輸入線的查詢,可以識別每個按鍵的狀態(tài)。3、按鍵觸點的機械抖動機械式按鍵在按下或釋放時,由于機械彈性作用的影響,通常伴隨有一定時間的觸點機械抖動,然后其觸點才穩(wěn)定下來。抖動時間的長短與開關的機械特性有關,一般為5—10ms。4、消抖方法為了克服按鍵觸點機械抖動所致的檢測誤判,必須采取去抖動措施,可從硬件、軟件兩方面予以考慮。在鍵數較少時,可采用硬件消抖;而當鍵數較多時,采用軟件消抖。①硬件消抖②軟件消抖軟件上采取的措施是在檢測到有按鍵按下時,執(zhí)行一個10—20ms左右(具體時間應視所使用的按鍵進行調整)的延時程序,再確認該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認該鍵處于閉合狀態(tài);同理,在檢測到該鍵釋放后,也應采用相同的步驟進行確認,從而消除抖動的影響。二、矩陣式鍵盤1、矩陣式鍵盤結構2、鍵盤掃描方式(1)掃描法

掃描法是在判定有鍵按下后逐列(或逐行)置低電平,同時讀入行(或列)的狀態(tài),如果行(或列)的狀態(tài)出現非全1狀態(tài),這時0狀態(tài)的行、列交點的鍵就是所按下的鍵。

掃描法需要逐列掃描查詢,當被按下的鍵處于最后一列時,則需要經過多次掃描才能獲得此鍵所處的行列值

(a)將行線編程為輸入線,列線為輸出線,并使輸出線輸出為全零,行線變?yōu)榈碗娖降臑榘存I所在行。(b)將列線編程為輸入線,行線為輸出線,并使輸出線輸出為全零,列線變?yōu)榈碗娖降臑榘存I所在列。(a)線反轉法第一步(b)線反轉法第二步

(2)反轉法三、訓練項目1、簡易數字調節(jié)器(1)訓練目的①了解獨立式鍵盤的結構與工作原理。②掌握按鍵的檢測與軟件消抖方法。③學會通過獨立式按鍵操作設置參數的編程方法。(3)任務引導(2)訓練任務本項目要完成的任務是設計一個簡易數字調節(jié)器。用兩位數碼管顯示數值,變化范圍00—59。開始時顯示00,每按下key1鍵一次,數值加1;每按下key2鍵一次,數值減1;每按下key3鍵一次,數值歸零;按下key4鍵一次,利用定時器功能使數值開始自動每秒加1,再次按下key4鍵,數值停止自動加1,保持原來的數。Key1—key4鍵均采用獨立式按鍵。由獨立式鍵盤工作原理知,要通過四個按鍵實現不同的數字顯示,只需要依次檢測key1—key4鍵是否有鍵按下,若有,延時10—20ms消抖后再判斷是否有鍵按下,若確認有,再轉去執(zhí)行相應的按鍵動作即可。(4)任務實施①硬件電路設計②軟件設計#include<reg52.h>//52系列單片機頭文件#include<stdio.h>//標準I/O庫函數頭文件#defineucharunsignedchar //宏定義#defineuintunsignedintucharcodeBitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//8字節(jié)位選碼ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};//共陽極0~F字段碼sbitkey1=P3^2;//定義按鍵sbitkey2=P3^3;sbitkey3=P3^4;sbitkey4=P3^5;ucharnumt0,num;voiddelayms(uintxms)//xms延時函數{ uinti,j; for(i=xms;i>0;i--) for(j=110;j>0;j--);} voiddisplay(ucharnumdis) //顯示子函數{ ucharshi,ge; //將要顯示的2位數分離成十位、個位 shi=numdis/10;//十位數 ge=numdis%10;//個位數 P0=table[shi]; //送十位數段選碼 P2=0x02; //送位選 delayms(5); //延時 P2=0x00;//消隱 P0=table[ge]; //送個位數段選碼 P2=0x01;//送位選 delayms(5);//延時 P2=0x00;//消隱}voidT0_init()//定時器T0初始化函數{ TMOD=0x01; //設置定時器T0為工作方式1(00000001) TH0=(65536-50000)/256; //裝初值50ms中斷一次 TL0=(65536-50000)%256; EA=1; //開總中斷 ET0=1; //開定時器0中斷 }voidkeyscan()//鍵盤掃描子函數{ if(key1==0) { delayms(10);//消抖 if(key1==0) { num++;//數值加1 if(num==60)//當到60時重新歸0 num=0; while(!key1); //等待按鍵釋放 } } if(key2==0) { delayms(10);//消抖 if(key2==0) { if(num==0) //當到0時重新歸60 num=60; num--; //數值減1

while(!key2); } } if(key3==0) { delayms(10);//消抖 if(key3==0) { num=0;//數值歸0 while(!key3); } } if(key4==0) { delayms(10);//消抖 if(key4==0) { while(!key4);//等待按鍵釋放 TR0=~TR0; //啟動或停止定時器T0 } }}voidmain(){ T0_init(); while(1) { keyscan(); display(num); }}voidT0_time()interrupt1//T0中斷服務函數{ TH0=(65536-50000)/256; //重裝初值 TL0=(65536-50000)%256; numt0++; if(numt0==20) //如果中斷次數到20次,說明1s時間到 { numt0=0; //numt0清0,

溫馨提示

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

評論

0/150

提交評論