獨立按鍵及矩陣鍵盤控制LED燈匯編_第1頁
獨立按鍵及矩陣鍵盤控制LED燈匯編_第2頁
獨立按鍵及矩陣鍵盤控制LED燈匯編_第3頁
獨立按鍵及矩陣鍵盤控制LED燈匯編_第4頁
獨立按鍵及矩陣鍵盤控制LED燈匯編_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、鍵盤接口 鍵盤是單片機應(yīng)用系統(tǒng)中使用最廣泛的一種 數(shù)據(jù)輸入設(shè)備。鍵盤是一組按鍵的組合。鍵通常是一種常開型按鈕開關(guān),常態(tài)下鍵的兩個觸點處于斷開狀態(tài),按下鍵時它們才閉合(短路)。 非編碼鍵盤按組成結(jié)構(gòu)又可分為獨立式鍵盤和矩陣式鍵盤。獨立式鍵盤的工作過程與矩陣式鍵盤類似,無論是硬件結(jié)構(gòu)還是軟件設(shè)計都比較簡單,。 通常,鍵盤有編碼和非編碼兩種。編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼和一個選通脈沖。選通脈沖可作為CPU的中斷請求信號。這種鍵盤使用方便,所需程序簡單,但硬件電路復(fù)雜,常不被單片機采用。 S1S4S3S2 P1.4 P1.5 P1.6 P1.7 89S52+5V圖8.1 獨立式鍵盤接口特點:

2、每個按鍵占用一條I/O線,當按鍵數(shù)量較多時,I/O口利用率不高,但程序編制簡單。適用于所需按鍵較少的場合。特點:電路連接復(fù)雜,但提高了I/O口利用率,軟件編程較復(fù)雜。適用于需使用大量按鍵的場合。 89s52P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V圖8.2 矩陣式鍵盤接口K99K10AK15FP10P11P12P13P14P15P16P17EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P063

3、3P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10VCC40GND20U189S52P10P11P12P13P14P15P16P17K00K11K22K33K55K66K77K88K44K11BK12CK13DK14E掃描法 和線反轉(zhuǎn)法 89s52P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V圖8.2 矩陣式鍵盤接口 0123 ee debe7e 4567 edddbd7d 89AB ebdbbb7b CDEF e7d7b777鍵盤控制流程 單片機對矩陣式鍵盤接口處理的一般過程如圖8

4、.3所示。鍵掃描消抖求鍵碼等待釋放鍵掃描消除抖動有鍵按下?鍵掃描確有鍵按下?求鍵值按鍵處理鍵釋放?YYYNN等待鍵釋放N開始返回按鍵處理圖8.3 鍵盤處理流程框圖1. 鍵掃描 鍵掃描就是要判斷有無鍵按下,當掃描到有鍵按下時再進行下一步處理,否則退出鍵盤處理程序。獨立式鍵盤掃描只需讀取IO口狀態(tài),而矩陣式鍵盤描通常有兩種實現(xiàn)方法:逐行掃描法和線反轉(zhuǎn)法。 (1) 逐行掃描法。依次從第一至最末行線上發(fā)出低電平信號, 如果該行線所連接的鍵沒有按下的話, 則列線所接的端口得到的是全“1”信號, 如果有鍵按下的話, 則得到非全“1”信號。 89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6

5、P1.7+5V01111 1 1 110111 1 1 011011 1 1 111101 1 1 1設(shè)第2行第4列鍵按下行線輸出列線輸入0 1 1 11 1 1 11 0 1 11 1 1 01 1 0 11 1 1 11 1 1 01 1 1 1 (2)線反轉(zhuǎn)法。 線反轉(zhuǎn)法也是識別閉合鍵的一種常用方法, 該法比行掃描速度快, 但在硬件上要求行線與列線外接上拉電阻。 先將行線作為輸出線, 列線作為輸入線, 行線輸出全“0”信號, 讀入列線的值, 那么在閉合鍵所在的列線上的值必為0;然后從列線輸出全“0”信號,再讀取行線的輸入值,閉合鍵所在的行線值必為 0。這樣,當一個鍵被按下時, 必定可讀到

6、一對唯一的行列值。再由這一對行列值可以求出閉合鍵所在的位置。 00001 1 1 00 0 0 01011 89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V設(shè)第2行第4列鍵按下列值:1110行值:1011 由于按鍵按下時的機械動作,在按鍵被按下或松開的瞬間,其輸出電壓會產(chǎn)生波動,稱為鍵的抖動。鍵按下前沿抖動后沿抖動 2.消抖 為確保每按一次鍵單片機只進行一次處理,使鍵盤可靠地工作,必須消除按鍵抖動。消抖方法有硬件消抖和軟件延時兩種。 圖8.5 鍵閉合及斷開時的抖動+5V&QQ (1)硬件消抖法:就是在鍵盤中附加去抖動電路,從根上消除抖動產(chǎn)生的可能性。右圖所示電路

7、實際上是由R-S觸發(fā)器構(gòu)成的單脈沖電路。當按鈕開關(guān)按下時Q端輸出低電平,當開關(guān)松開時Q端恢復(fù)高電平,即輸出一個負脈沖,以此消除抖動。圖8.6 硬件去抖動電路 (2)軟件消抖法:鍵按下的時間與操作者的按鍵動作有關(guān),約為十分之幾到幾秒不等。而鍵抖動時間與按鍵的機械特性有關(guān),一般為510ms不等。軟件消抖法即是采用延時(一般延時1020ms)的方法,以避開按鍵的抖動,即在按鍵已穩(wěn)定地閉合或斷開時才讀出其狀態(tài)。 100ms10ms10ms鍵抖動時間 圖8.7 軟件消抖法延時區(qū)間示意圖3. 計算鍵碼 鍵碼是每個按鍵的標識。被按鍵確定下來之后,接下來的工作是計算閉合鍵的鍵碼,然后才能根據(jù)鍵碼進行對應(yīng)的操作

8、。 為編程方便,鍵碼通常都是以鍵的排列順序安排,按照從左到右、從上向下的順序編排。鍵碼可根據(jù)行號列號以查表求得,也可通過計算得到。我們將結(jié)合實例加以介紹。 4.等待釋放 等待釋放是為了保證鍵的一次閉合僅進行一次處理。求得鍵碼后,然后通過不斷進行鍵掃描,如有鍵按下,則繼續(xù)掃描,否則認為鍵已釋放。 5.按鍵處理 根據(jù)系統(tǒng)功能要求,利用單片機控制完成特定操作。 鍵盤接口的控制方式 在單片機的運行過程中,何時進行鍵盤掃描和處理,可有下列三種情況:1.查詢方式:單片機通過調(diào)用鍵盤掃描子程序,查詢有無鍵按下。2.定時掃描方式:每隔一定時間執(zhí)行一次鍵盤掃描子程序。3.中斷方式:每當有鍵閉合時才向CPU發(fā)出中

9、斷請求,中斷服務(wù)時進行鍵盤掃描和處理。if語句if語句是C51中的一個基本條件選擇語句,它通常有三種格式:(1)if (表達式) 語句;(2)if (表達式) 語句1; else 語句2;(3)if (表達式1) 語句1;else if (表達式2) (語句2;)else if (表達式3) (語句3;)else if (表達式n-1) (語句n-1;)else 語句n【例】 if語句的用法。(1)if (x!=y) printf(“x=%d,y=%dn”,x,y);執(zhí)行上面語句時,如果x不等于y,則輸出x的值和y的值。(2)if (xy) max=x;else max=y; 執(zhí)行上面語句時,

10、如x大于y成立,則把x送給最大值變量max,如x大于y不成立,則把y送給最大值變量max。使max變量得到x、y中的大數(shù)。(3)if (score=90) printf(“Your result is an An”);else if (score=80) printf(“Your result is an Bn”);else if (score=70) printf(“Your result is an Cn”);else if (score=60) printf(“Your result is an Dn”);else printf(“Your result is an En”); 執(zhí)行上面

11、語句后,能夠根據(jù)分數(shù)score分別打出A、B、C、D、E五個等級。switch/case語句 if語句通過嵌套可以實現(xiàn)多分支結(jié)構(gòu),但結(jié)構(gòu)復(fù)雜。switch是C51中提供的專門處理多分支結(jié)構(gòu)的多分支選擇語句。它的格式如下:switch (表達式)case 常量表達式1:語句1;break;case 常量表達式2:語句2;break;case 常量表達式n:語句n;break;default:語句n+1;說明如下:(1)switch后面括號內(nèi)的表達式,可以是整型或字符型表達式。(2)當該表達式的值與某一“case”后面的常量表達式的值相等時,就執(zhí)行該“case”后面的語句,然后遇到break語句退

12、出switch語句。若表達式的值與所有case后的常量表達式的值都不相同,則執(zhí)行default后面的語句,然后退出switch結(jié)構(gòu)。(3)每一個case常量表達式的值必須不同否則會出現(xiàn)自相矛盾的現(xiàn)象。(4)case語句和default語句的出現(xiàn)次序?qū)?zhí)行過程沒有影響。(5)每個case語句后面可以有“break”,也可以沒有。有break語句,執(zhí)行到break則退出switch結(jié)構(gòu),若沒有,則會順次執(zhí)行后面的語句,直到遇到break或結(jié)束?!纠?switch/case語句的用法。 對學(xué)生成績劃分為AD,對應(yīng)不同的百分制分數(shù),要求根據(jù)不同的等級打印出它的對應(yīng)百分數(shù)??梢酝ㄟ^下面的switch/c

溫馨提示

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

最新文檔

評論

0/150

提交評論