單片機(jī)之鍵盤工作原理_第1頁
單片機(jī)之鍵盤工作原理_第2頁
單片機(jī)之鍵盤工作原理_第3頁
單片機(jī)之鍵盤工作原理_第4頁
單片機(jī)之鍵盤工作原理_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、鍵盤工作原理鍵盤工作原理1. 按鍵輸入的特點按鍵輸入的特點 鍵盤實質(zhì)上是一組按鍵開關(guān)的組合。通常使用的是觸鍵盤實質(zhì)上是一組按鍵開關(guān)的組合。通常使用的是觸點式的機(jī)械彈性開關(guān)。利用機(jī)械觸點的通斷,實現(xiàn)點式的機(jī)械彈性開關(guān)。利用機(jī)械觸點的通斷,實現(xiàn)按下按下時開關(guān)導(dǎo)通,釋放時開關(guān)斷開時開關(guān)導(dǎo)通,釋放時開關(guān)斷開的功能。的功能。 按鍵觸點的一端和單片機(jī)的按鍵觸點的一端和單片機(jī)的I/OI/O端口引腳連接,另一端口引腳連接,另一端與電壓信號相連,觸點的通斷即可引起端口引腳上的端與電壓信號相連,觸點的通斷即可引起端口引腳上的電壓變化,單片機(jī)通過程序讀入電壓變化,單片機(jī)通過程序讀入I/OI/O端口引腳電平信號端口引

2、腳電平信號便可判斷按鍵的狀態(tài)。如下圖所示。便可判斷按鍵的狀態(tài)。如下圖所示。當(dāng)按鍵未按下壓時,當(dāng)按鍵未按下壓時,Px.nPx.n端口為高電平端口為高電平; ;按壓按鍵后為按壓按鍵后為低電平。低電平。按鍵在閉合和斷開時,觸點會存在抖動現(xiàn)象:按鍵在閉合和斷開時,觸點會存在抖動現(xiàn)象: 圖為鍵閉合時列線電壓波形。鍵閉合和斷開過程中存在抖圖為鍵閉合時列線電壓波形。鍵閉合和斷開過程中存在抖動期動期( (呈現(xiàn)一串負(fù)脈沖呈現(xiàn)一串負(fù)脈沖) ),抖動時間長短與開關(guān)的機(jī)械特性有關(guān),抖動時間長短與開關(guān)的機(jī)械特性有關(guān),一般為一般為5 51010msms之間之間;穩(wěn)定閉合期由操作員的按鍵動作所確定,;穩(wěn)定閉合期由操作員的按

3、鍵動作所確定,一般為數(shù)百毫秒到幾秒。為了保證一般為數(shù)百毫秒到幾秒。為了保證CPUCPU對鍵的閉合做一次處理對鍵的閉合做一次處理,必須去除抖動必須去除抖動,在鍵的穩(wěn)定閉合或斷開時,讀鍵的狀態(tài)。,在鍵的穩(wěn)定閉合或斷開時,讀鍵的狀態(tài)。軟件消抖方法:當(dāng)判別到鍵盤上有鍵閉合后,延時一段時間再軟件消抖方法:當(dāng)判別到鍵盤上有鍵閉合后,延時一段時間再 判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤 上有一個鍵處于穩(wěn)定的閉合狀態(tài),否則認(rèn)為鍵上有一個鍵處于穩(wěn)定的閉合狀態(tài),否則認(rèn)為鍵 抖動。抖動。 鍵盤有兩種結(jié)構(gòu):獨立式按鍵和矩陣式按鍵。鍵盤有兩種結(jié)構(gòu):獨立式按鍵和矩陣式按鍵。 1

4、.1.獨立式按鍵獨立式按鍵 獨立式鍵盤中每個按鍵都單獨連接到單片機(jī)的一個獨立式鍵盤中每個按鍵都單獨連接到單片機(jī)的一個I/OI/O端口引腳上。端口引腳上。特點是電路簡單,但占用特點是電路簡單,但占用I/OI/O口線較多。口線較多。例:按下按鍵,對應(yīng)的例:按下按鍵,對應(yīng)的LED燈亮燈亮#includevoid delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-) for(y=125;y0;y-);void main() unsigned char key; P2=0 x00; P0=0 x01; while(1) key=P0; if(key!=

5、0 x01) delay(10); if(key!=0 x01) P2=key; 實例實例 獨立按鍵識別獨立按鍵識別【要求要求】采用獨立按鍵方式實現(xiàn)下述功能:開機(jī)時采用獨立按鍵方式實現(xiàn)下述功能:開機(jī)時LEDLED全熄,全熄,然后根據(jù)按鍵動作使相應(yīng)燈亮,并將亮燈保持到按壓其它鍵然后根據(jù)按鍵動作使相應(yīng)燈亮,并將亮燈保持到按壓其它鍵時為止。時為止。做輸入,做輸入,先寫先寫1 1 按鍵的閉合電平為按鍵的閉合電平為0, 0, 但但LEDLED的驅(qū)動電平為的驅(qū)動電平為1 1,故不能直接將,故不能直接將P0P0口的狀態(tài)送到口的狀態(tài)送到P2P2口,而應(yīng)使口,而應(yīng)使其先取反再送出;其先取反再送出; 使按鍵按下使

6、按鍵按下LEDLED點亮,松開點亮,松開時保持不變。時保持不變?!痉治龇治觥?includevoid delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-) for(y=125;y0;y-);void main() unsigned char key; P2=0 x00; P0=0 x0f; while(1) key=P0; if(key!=0 x0f) delay(10); if(key!=0 x0f) P2=key; 實例實例 鍵控流水燈鍵控流水燈 【要求要求】 K1 K1為為“啟動鍵啟動鍵”,按壓,按壓K1K1可產(chǎn)生可產(chǎn)生“自下向上自下向

7、上” 的流水燈運動的流水燈運動; ; K2 K2 為為“方向鍵方向鍵”,按壓,按壓K2K2可產(chǎn)生可產(chǎn)生“自下向上自下向上”運動。運動。啟動啟動停止停止run(=1)(=0)dir(=1)(=0)獲取按下鍵值(鍵值函數(shù))流程獲取按下鍵值(鍵值函數(shù))流程鍵值:鍵值:按壓按壓K1K1xxxx xx10 xxxx xx10(0 x020 x02)按壓按壓K2K2xxxx xx01xxxx xx01(0 x010 x01)無按鍵無按鍵0000 xx110000 xx11(0 x030 x03)按鍵動作判斷按鍵動作判斷(P0 & 0 x03P0 & 0 x03)是否等于)是否等于 0 x0

8、30 x03若是,則無按鍵動作,反之則有按鍵動作若是,則無按鍵動作,反之則有按鍵動作則由得到的鍵值對應(yīng)確定則由得到的鍵值對應(yīng)確定dun、dir的值,用的值,用switch語句實現(xiàn)。語句實現(xiàn)。 temp=P0&0 x03;switch(temp)case 0 x02:run=1; dir=1; break;case 0 x01:dir=0;break;亮燈亮燈P2P2輸出輸出:xxxx 0001xxxx 0001xxxx 0010 xxxx 0010 xxxx 0100 xxxx 0100 xxxx 1000 xxxx 1000LEDLED循環(huán)流程循環(huán)流程LEDLED狀態(tài)碼數(shù)組狀態(tài)碼數(shù)組

9、 = 0 x01= 0 x01,0 x020 x02,0 x040 x04,0 x080 x08分析分析搞清全部邏輯關(guān)系搞清全部邏輯關(guān)系總體關(guān)系(主函數(shù))流程總體關(guān)系(主函數(shù))流程( (鍵值函數(shù)鍵值函數(shù)) ) 參考程序:參考程序: #includeunsigned char led=0 x01,0 x02,0 x04,0 x08; /從上到下的流水燈bit run,dir;unsigned char temp,i;void delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-) for(y=125;y0;y-); void main() whi

10、le(1) temp=P0&0 x03; switch(temp) case 0 x02: run=1;dir=1; /啟動,自上往下 break; case 0 x01:dir=0; /自下往上 break; if(run=1) if(dir=1) for(i=0;i=1;i-) P2=ledi-1; delay(200); else P2=0;實例實例 采用共陰極的數(shù)碼管采用共陰極的數(shù)碼管實現(xiàn)功能要求:當(dāng)按鍵按下時顯示實現(xiàn)功能要求:當(dāng)按鍵按下時顯示“ “ L2L2”,松開時顯示,松開時顯示“H3H3”獨立按鍵獨立按鍵+ +數(shù)碼管綜合數(shù)碼管綜合算出算出L2H3L2H3的段碼分別為:的

11、段碼分別為:0 x38,0 x5b,0 x76,0 x4f0 x38,0 x5b,0 x76,0 x4f位選信號構(gòu)成位碼:位選信號構(gòu)成位碼:0 xfe,0 xfd0 xfe,0 xfd參考程序參考程序 #include#define uint unsigned int#define uchar unsigned charuchar duan=0 x38,0 x5b,0 x76,0 x4f; /共陰L2H3uchar wei=0 xfe,0 xfd;sbit button=P16;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=125;y0;y-);

12、void main() uchar i; while(1) if(button=0) delay(10); if(button=0) for(i=0;i2;i+)P3=weii;P2=duani;delay(10);elsefor(i=0;i2;i+)P3=weii; P2=duani+2;delay(10); 運行運行效果效果2 2、 行列式鍵盤原理與編程行列式鍵盤原理與編程 獨立式鍵盤的電路簡單,易于編程,但占用的獨立式鍵盤的電路簡單,易于編程,但占用的IOIO口線較多,口線較多,當(dāng)需要較多按鍵時可能產(chǎn)生當(dāng)需要較多按鍵時可能產(chǎn)生IOIO資源緊張問題。資源緊張問題。獨立式鍵盤獨立式鍵盤 P1

13、.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 +5V 10k 10k 10k 10k 89S51 當(dāng)鍵盤上沒有鍵閉合時,所有的行線和列線斷開,列線都呈當(dāng)鍵盤上沒有鍵閉合時,所有的行線和列線斷開,列線都呈高電平。當(dāng)鍵盤上某一個鍵閉合時,則該鍵所對應(yīng)的列線與行線高電平。當(dāng)鍵盤上某一個鍵閉合時,則該鍵所對應(yīng)的列線與行線短路。此時列線的電平由相應(yīng)的行線的電位所決定。短路。此時列線的電平由相應(yīng)的行線的電位所決定。行列式鍵盤行列式鍵盤將將IOIO口分為行線和列線,按鍵跨接在行線口分為行線和列線,按鍵跨接在行線和列線上,列線通過上拉電阻接正電源。和列線上,列線通過上拉電阻接正電

14、源。 和行線連接的單片機(jī)和行線連接的單片機(jī)端口,作為端口,作為輸出輸出和列線連接的單片機(jī)端和列線連接的單片機(jī)端口,作為口,作為輸入輸入鍵盤掃描原理鍵盤掃描原理(以(以P3P3口接口接4 44 4鍵盤為例)鍵盤為例)判斷是否有鍵壓下判斷是否有鍵壓下 寫寫P3P3端口端口0 xf00 xf0(行線電平(行線電平=0=0,列線電平,列線電平=1=1) 讀讀P3P3端口:若端口:若P3 = 0 xf0P3 = 0 xf0無按鍵壓下無按鍵壓下, ,不必后續(xù)判斷不必后續(xù)判斷; ; 若若P3 P3 0 xf0 0 xf0 有鍵壓下有鍵壓下鍵盤掃描原理鍵盤掃描原理(以(以P3P3口接口接4 44 4鍵盤為例)

15、鍵盤為例)去除鍵的機(jī)械抖動去除鍵的機(jī)械抖動 其方法為:當(dāng)判別到鍵盤上有鍵閉合后,延時一段時其方法為:當(dāng)判別到鍵盤上有鍵閉合后,延時一段時間再判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤上有一間再判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤上有一個鍵處于穩(wěn)定的閉合狀態(tài),否則認(rèn)為鍵抖動。個鍵處于穩(wěn)定的閉合狀態(tài),否則認(rèn)為鍵抖動。判別閉合鍵的鍵值判別閉合鍵的鍵值 其方法為:對鍵盤的行線進(jìn)行掃描,其方法為:對鍵盤的行線進(jìn)行掃描,P3P3口依次循環(huán)輸口依次循環(huán)輸出出0 xfe0 xfe、0 xfd0 xfd、0 xfb0 xfb和和0 xf70 xf7,相應(yīng)地讀,相應(yīng)地讀P3P3口,若高口,若高4 4位位P3.7

16、P3.7P3.4P3.4全為全為“1 1”,則說明該行上沒有鍵閉合;否則,則說明該行上沒有鍵閉合;否則,這一行上有鍵閉合,而且就是行線為這一行上有鍵閉合,而且就是行線為0 0,列線為,列線為0 0的交叉鍵。的交叉鍵。高高4 4位和低四位合并即得到鍵模。位和低四位合并即得到鍵模。鍵模鍵模按鍵壓下時形成的電平編碼值按鍵壓下時形成的電平編碼值 鍵值鍵值按鍵的人為定義值按鍵的人為定義值整個整個4x44x4鍵盤的鍵模:鍵盤的鍵模:0 xee0 xee、0 xde0 xde、0 xbe0 xbe、0 x7e0 x7e0 xed0 xed、0 xdd0 xdd、0 xbd0 xbd、0 x7d0 x7d0

17、xeb0 xeb、0 xdb0 xdb、0 xbb0 xbb、0 x7b0 x7b0 xe70 xe7、0 xd70 xd7、0 xb70 xb7、0 x770 x77第一行的鍵模:第一行的鍵模:1110111011101110、1101111011011110、1011111010111110、0111111001111110 形成壓下鍵的鍵模形成壓下鍵的鍵模將各鍵的鍵模依次存放在一個數(shù)組中,其順序號就是鍵值。將各鍵的鍵模依次存放在一個數(shù)組中,其順序號就是鍵值。 利用循環(huán)變量利用循環(huán)變量i i控制控制比對過程比對過程,兩者相等時的,兩者相等時的i i就是閉合鍵的鍵值就是閉合鍵的鍵值。行列式鍵

18、盤的特點行列式鍵盤的特點:占用:占用IOIO口線少,但軟件過程復(fù)雜。口線少,但軟件過程復(fù)雜。Unsigned char key_val=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d, 0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77for(i=0;i16;i+)if(key_vali=P3)return i;實例實例 行列式鍵盤行列式鍵盤 要求按下任意按鍵后,數(shù)碼管上顯示該鍵的鍵值(要求按下任意按鍵后,數(shù)碼管上顯示該鍵的鍵值(0 0F F) 參考程序參考程序 #includeunsigned char duan=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f, 0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char key_val=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb, 0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77;unsi

溫馨提示

  • 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

提交評論