項(xiàng)目五 任務(wù)2-線反轉(zhuǎn)法按鍵檢測(cè)_第1頁(yè)
項(xiàng)目五 任務(wù)2-線反轉(zhuǎn)法按鍵檢測(cè)_第2頁(yè)
項(xiàng)目五 任務(wù)2-線反轉(zhuǎn)法按鍵檢測(cè)_第3頁(yè)
項(xiàng)目五 任務(wù)2-線反轉(zhuǎn)法按鍵檢測(cè)_第4頁(yè)
項(xiàng)目五 任務(wù)2-線反轉(zhuǎn)法按鍵檢測(cè)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目五簡(jiǎn)易電子琴的設(shè)計(jì)行列掃描法按鍵檢測(cè)任務(wù)一線反轉(zhuǎn)法按鍵檢測(cè)任務(wù)二單片機(jī)發(fā)“哆瑞咪”任務(wù)三簡(jiǎn)易電子琴的設(shè)計(jì)任務(wù)四任務(wù)二線反轉(zhuǎn)法按鍵檢測(cè)任務(wù)描述本任務(wù)要求是認(rèn)識(shí)4*4矩陣鍵盤,通過線反轉(zhuǎn)掃描編程,檢測(cè)到按鍵并通過顯示器顯示出來。知識(shí)鏈接線反轉(zhuǎn)法識(shí)別按鍵線反轉(zhuǎn)法識(shí)別按鍵

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

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

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

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

識(shí)別按鍵上有何異同?行列掃描法的步驟:1.判斷有無(wú)按鍵按下2.列掃描確定所在列3.行掃描確定所在行4.行列確定則按鍵位置確定線反轉(zhuǎn)法的步驟:1.將列線作為輸出線,行線作為輸入線。置輸出線全部為0,此時(shí)行線中呈低電平0的為按鍵所在行,如果全部都不是0,則沒有按鍵按下。2.將第一步反過來,即將行線作為輸出線,列線作為輸入線。置輸出線全部為0,此時(shí)列線呈低電平的為按鍵所在的列。這樣,就可以確定了按鍵的位置(X,Y)。3.行列確定則按鍵位置確定任務(wù)實(shí)施1.硬件電路2.程序設(shè)計(jì)1.硬件電路2.程序設(shè)計(jì)#include<reg52.h>//包含單片機(jī)寄存器的頭文件#defineucharunsignedchar //宏定義,定義uchar為無(wú)符號(hào)字符型#defineuintunsignedint //宏定義,定義uint為無(wú)符號(hào)整型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}; /**************延時(shí)程序*************/voiddelay(uinti){while(i--);}/**************線反轉(zhuǎn)法按鍵掃描程序*************/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,實(shí)際上對(duì)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]; //在數(shù)碼管上顯示相應(yīng)的鍵值

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

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

}}知識(shí)總結(jié)線反轉(zhuǎn)法比較簡(jiǎn)潔,它通過先將4行全部置0(0xf0),然后讀列的狀態(tài),接著將列全部置0(0x0f),讀行的狀態(tài),通過(行|列)就能確定整個(gè)行列的狀態(tài)了。綜合評(píng)價(jià)課后作業(yè)如圖所示,4×4

溫馨提示

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

評(píng)論

0/150

提交評(píng)論