經(jīng)典的矩陣鍵盤掃描程序_第1頁
經(jīng)典的矩陣鍵盤掃描程序_第2頁
經(jīng)典的矩陣鍵盤掃描程序_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、-作者xxxx-日期xxxx經(jīng)典的矩陣鍵盤掃描程序【精品文檔】   鍵盤是單片機常用輸入設(shè)備,在按鍵數(shù)量較多時,為了節(jié)省I/O口等單片機資源,一般采取掃描的方式來識別到底是哪一個鍵被按下。即通過確定被按下的鍵處在哪一行哪一列來確定該鍵的位置,獲取鍵值以啟動相應(yīng)的功能程序。        4*4矩陣鍵盤的結(jié)構(gòu)如圖1(實物參考見萬用板矩陣鍵盤制作技巧)。在本例中,矩陣鍵盤的四列依次接到單片機的P1.0P1.3,四行依次接到單片機的P1.4P1.7;同時,將列線上拉,通過10K電阻接電源。查找哪個按鍵被按下的方

2、法為:一個一個地查找。        先第一行輸出0,檢查列線是否非全高;        否則第二行輸出0,檢查列線是否非全高;        否則第三行輸出0,檢查列線是否非全高;        如果某行輸出0時,查到列線非全高,則該行有按鍵按下;      

3、;  根據(jù)第幾行線輸出0與第幾列線讀入為0,即可判斷在具體什么位置的按鍵按下。下面是具體程序:void Check_Key(void)    unsigned char row,col,tmp1,tmp2;    tmp1 = 0x10;            /tmp1用來設(shè)置P1口的輸出,取反后使P1.4P1.7中有一個為0    for(row=0;row<4;row+)&#

4、160;  / 行檢測         P1 = 0x0f;            / 先將p1.4P1.7置高        P1 =tmp1;            / 使P1.4p1.7中有一個為0

5、60;       tmp1*=2;             / tmp1左移一位        if (P1 & 0x0f) < 0x0f)    / 檢測P1.0P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進(jìn)入列檢測     

6、60; tmp2 = 0x01;     / tmp2用于檢測出哪一列為0   for(col =0;col<4;col+)   / 列檢測         if(P1 & tmp2)=0x00)  / 該列如果為低電平則可以判定為該列          

7、key_val =key_Map row*4 +col ; / 獲取鍵值,識別按鍵;key_Map為按鍵的定義表     return;     / 退出循環(huán)       tmp2*=2;      / tmp2左移一位               &

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論