項目五 任務2-線反轉法按鍵檢測_第1頁
項目五 任務2-線反轉法按鍵檢測_第2頁
項目五 任務2-線反轉法按鍵檢測_第3頁
項目五 任務2-線反轉法按鍵檢測_第4頁
項目五 任務2-線反轉法按鍵檢測_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目五簡易電子琴的設計行列掃描法按鍵檢測任務一線反轉法按鍵檢測任務二單片機發“哆瑞咪”任務三簡易電子琴的設計任務四任務二線反轉法按鍵檢測任務描述本任務要求是認識4*4矩陣鍵盤,通過線反轉掃描編程,檢測到按鍵并通過顯示器顯示出來。知識鏈接線反轉法識別按鍵線反轉法識別按鍵

首先我們給P1口賦值0x0f,即00001111,假設0鍵按下了,則這時P1口的實際值為00001110;

接著我們給P1口再賦值0xf0,即11110000,如果0鍵按下了,則這時P1口的實際值為11100000;

最后我們把兩次P1口的實際值相加得11101110,即0xee。

由此,我們便得到了按下0鍵時所對應的數值0xee,以此類推可得出其他15個按鍵對應的數值,有了這種對應關系,矩陣鍵盤編程問題也就解決了,也就是程序的算法已經有了。反轉法矩陣鍵盤的各個按鍵的計算值ucharcodetable[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};需要時可直接使用“行列掃描法”與“線反轉法”

識別按鍵上有何異同?行列掃描法的步驟:1.判斷有無按鍵按下2.列掃描確定所在列3.行掃描確定所在行4.行列確定則按鍵位置確定線反轉法的步驟:1.將列線作為輸出線,行線作為輸入線。置輸出線全部為0,此時行線中呈低電平0的為按鍵所在行,如果全部都不是0,則沒有按鍵按下。2.將第一步反過來,即將行線作為輸出線,列線作為輸入線。置輸出線全部為0,此時列線呈低電平的為按鍵所在的列。這樣,就可以確定了按鍵的位置(X,Y)。3.行列確定則按鍵位置確定任務實施1.硬件電路2.程序設計1.硬件電路2.程序設計#include<reg52.h>//包含單片機寄存器的頭文件#defineucharunsignedchar //宏定義,定義uchar為無符號字符型#defineuintunsignedint //宏定義,定義uint為無符號整型ucharkey,n; //定義變量ucharcodetable[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};

ucharcodeyin[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; /**************延時程序*************/voiddelay(uinti){while(i--);}/**************線反轉法按鍵掃描程序*************/voidkeyscan(){ucharlow,height,i; //定義局部變量,用low得出低4位的值,用height得出高4位的值

P3=0x0f; //給P3賦值00001111low=P3&0x0f;if(low!=0x0f){delay(100);if(low!=0x0f) low=P3&0x0f; //若有鍵按下,得出低四位的值

}P3=0xf0; //給P3賦值11110000,實際上對0x0f的取反

height=P3&0xf0;if(height!=0xf0){delay(100);if(height!=0xf0) height=P3&0xf0; //若有鍵按下,得出高4位的值

}key=low+height; //高4位的值與低4位的值相加

for(i=0;i<16;i++) {if(key==table[i]) //通過查表得出n的值

n=i; }}/**************主程序*************/voidmain(){while(1){ keyscan(); //按鍵掃描

P0=yin[n]; //在數碼管上顯示相應的鍵值

}}}}elseP3=0xff; //沒有任何鍵按下,P3口全部置為高電平

return(16);}main(){P0=0x40; //數碼管顯示"-"P3=0xff; while(1){keyscan(); //調用鍵盤掃描子程序

}}知識總結線反轉法比較簡潔,它通過先將4行全部置0(0xf0),然后讀列的狀態,接著將列全部置0(0x0f),讀行的狀態,通過(行|列)就能確定整個行列的狀態了。綜合評價課后作業如圖所示,4×4

溫馨提示

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

最新文檔

評論

0/150

提交評論