




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店中餐擺臺(tái)培訓(xùn)
- 重卡銷售培訓(xùn)
- 痛風(fēng)病人飲食護(hù)理
- 職業(yè)安全健康管理
- 財(cái)會(huì)合規(guī)培訓(xùn)
- 腫瘤護(hù)理專家共識(shí)
- 銷售業(yè)績(jī)分解培訓(xùn)
- 加油站全流程診斷體系構(gòu)建
- 稽核監(jiān)察財(cái)務(wù)培訓(xùn)
- 互聯(lián)網(wǎng)+教育精準(zhǔn)扶貧:2025年實(shí)踐案例分析報(bào)告
- 2025年湖南湘西州花垣縣事業(yè)單位招聘工作人員71人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年高中歷史畢業(yè)會(huì)考全部基礎(chǔ)知識(shí)復(fù)習(xí)提綱(完整版)
- 電商平臺(tái)品牌授權(quán)使用協(xié)議
- 水泥土擠密樁的施工方案
- 急性粒-單核細(xì)胞白血病病因介紹
- 心外科手術(shù)進(jìn)修匯報(bào)
- 集團(tuán)公司資金池管理制度
- 瑤醫(yī)瑤藥文化
- 設(shè)計(jì)院項(xiàng)目設(shè)計(jì)流程與規(guī)范
- 西方哲學(xué)智慧2024-西方哲學(xué)智慧超星爾雅答案
- 黨內(nèi)法規(guī)學(xué)-形考任務(wù)一-國(guó)開(FJ)-參考資料
評(píng)論
0/150
提交評(píng)論