按鍵控制鍵盤檢測原理與應(yīng)用

上傳人:jun****875 文檔編號(hào):17810188 上傳時(shí)間:2020-12-07 格式:DOC 頁數(shù):7 大小:3.23MB
收藏 版權(quán)申訴 舉報(bào) 下載
按鍵控制鍵盤檢測原理與應(yīng)用_第1頁
第1頁 / 共7頁
按鍵控制鍵盤檢測原理與應(yīng)用_第2頁
第2頁 / 共7頁
按鍵控制鍵盤檢測原理與應(yīng)用_第3頁
第3頁 / 共7頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《按鍵控制鍵盤檢測原理與應(yīng)用》由會(huì)員分享,可在線閱讀,更多相關(guān)《按鍵控制鍵盤檢測原理與應(yīng)用(7頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、按鍵控制鍵盤檢測原理與應(yīng)用 一、任務(wù)目標(biāo): 認(rèn)知目標(biāo) 1、掌握按鍵分類及工作原理 2、掌握IF條件選擇結(jié)構(gòu)和使用方法 3、掌握循環(huán)結(jié)構(gòu)和使用原理 4、掌握獨(dú)立按鍵子函數(shù)的編寫原理及方法 1、 獨(dú)立鍵盤 在簡單的單片機(jī)應(yīng)用系統(tǒng)中,往往只需要幾個(gè)功能鍵就能滿足要求,此時(shí),可采用獨(dú)立式按鍵結(jié)構(gòu)。 獨(dú)立式按鍵是直接用I/O口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài)。獨(dú)立式按鍵的典型應(yīng)用如圖1.2.1所示。 獨(dú)立式按鍵示意圖 獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O口線,因此,在按鍵較

2、多時(shí),I/O口線浪費(fèi)較大,不宜采用。 程序開始,檢測按鍵是否被按下,若按下,則移動(dòng)機(jī)器人啟動(dòng),未被按下,繼續(xù)檢測。這里將程序分成三個(gè)部分,分別是延時(shí)子函數(shù)、按鍵子函數(shù)、主函數(shù)。 延時(shí)子函數(shù),通過參數(shù)t設(shè)置延時(shí)時(shí)間;按鍵模塊子函數(shù)需用到延時(shí)函數(shù),對(duì)按鍵進(jìn)行消抖;主函數(shù)主要調(diào)用按鍵檢測程序,實(shí)現(xiàn)對(duì)移動(dòng)機(jī)器人的控制。程序流程圖如圖1.2.2所示 程序流程圖 程序示例: 在編寫程序開始的部分,將系統(tǒng)頭文件“STC89C52RC.H”包含進(jìn)來,對(duì)常用的變量類型進(jìn)行宏定義,規(guī)劃各函數(shù)和變量,對(duì)變量進(jìn)行定義和初始化,對(duì)自定義子函數(shù)進(jìn)行聲明并添加相應(yīng)標(biāo)注,程序開始部分如下 sbit IN1=

3、P1^0; sbit IN2=P1^1; Void key(); 編寫主函數(shù),在主函數(shù)中就是調(diào)用按鍵檢測函數(shù)。 Void main() { key(); } 編寫key()按鍵檢測函數(shù),按鍵按下,輸出低電平,通過if語句檢測低電平,延時(shí)10ms后,再次檢測,若檢測為高電平,則表示為機(jī)械抖動(dòng),若檢測到低電平表示按鍵按下。 Void key() { if(IN1==0) { delay_ms(10); if(IN1==0) { while(IN1==0); IN2=~IN2; }

4、 } } 在上面的程序中,就只有一個(gè)檢查按鍵掃描的函數(shù)key(),key()函數(shù)是檢查有沒有按鍵按下編寫的。當(dāng)有按鍵下的時(shí)候P2口取反。 2、 矩陣鍵盤 (1)矩陣連接式鍵盤 在單片機(jī)系統(tǒng)中鍵盤中按鈕數(shù)量較多時(shí),為了減少I/O口的占用,常常將按鈕排列成矩陣形式,如下圖所示: 矩陣鍵盤形式 矩陣按鍵實(shí)物圖 矩陣連接式鍵盤鍵按矩陣排列,各鍵處于矩陣行/列的結(jié)點(diǎn)處,CPU通過對(duì)連在行(列)的I/O線送已知電平的信號(hào),然后讀取列(行)線的狀態(tài)信息。逐線掃描,得出鍵碼。其特點(diǎn)是鍵多時(shí)占用I/O口線少,硬件資源利用合理,但判斷按鍵速度慢。多用于設(shè)置

5、數(shù)字鍵,適用于鍵數(shù)多的場合。 (2)按鍵識(shí)別方法 ① 掃描法 第1步,識(shí)別鍵盤有無鍵按下;第2步,如有鍵被按下,識(shí)別出具體的鍵位。其工作過程為先把所有列線均置為0,然后檢查各行線電平是否都為高,如果不全為高,說明有鍵按下,否則無鍵被按下。再采用逐列掃描法,在某一時(shí)刻只讓1條列線處于低電平,其余所有列線處于高電平,識(shí)別出按鍵具體位置。 綜上所述,掃描法的思想是,先把某一列置為低電平,其余各列置為高電平,檢查各行線電平的變化,如果某行線電平為低電平,則可確定此行此列交叉點(diǎn)處的按鍵被按下。 ② 線反轉(zhuǎn)法 線反轉(zhuǎn)法的具體步驟為讓行線編程為輸入線,列線編程為輸出線,并使

6、輸出線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。再把行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。 程序編寫 矩陣式鍵盤最主要的是按鍵識(shí)別,按鍵識(shí)別是采用線翻轉(zhuǎn)的方法。線翻轉(zhuǎn)法是先讓P2= 0xf0;當(dāng)有按鍵按下時(shí)P2口的狀態(tài)就會(huì)改變不在是0xf0,當(dāng)按鍵按下時(shí),P2的狀態(tài)改變了,此時(shí)存儲(chǔ)當(dāng)前P2口的狀態(tài)1,然后讓P2=0xf0因?yàn)槌绦驁?zhí)行時(shí)間很短,此時(shí)按鍵還沒抬起來,由于按鍵按下的原因P2狀態(tài)不再是0xf0,存儲(chǔ)此時(shí)P2口的狀態(tài)2,把狀態(tài)1與狀態(tài)2的值相或,因?yàn)槊總€(gè)按鍵按下的值都是不一樣的,根據(jù)按鍵返回的值給數(shù)碼管賦

7、不同的斷碼值,從而達(dá)到顯示0~F的目的。利用線反轉(zhuǎn)法編寫程序流程如圖1.2.4所示: 程序流程圖 程序示例 編寫keyscan函數(shù)注釋,定義keyscan函數(shù)并編寫框架。keyscan函數(shù)主要負(fù)責(zé)掃描矩陣鍵盤是否被按下,并且根據(jù)按下的按鍵返回不同的值,所以應(yīng)該為無參、有返回值函數(shù)。因?yàn)橛邪存I按下時(shí)返回值是將兩次P2=0xf0和P2=0x0f的結(jié)果相或,無按鍵按下時(shí)返回值為0xff,所以將函數(shù)返回值定義為uchar型即可。 uchar keyscan(void) { uchar cord_h=0; uchar cord_l=0; P2=0xf0; if(P2

8、!=0xf0) { Delay_ms(10); if(P2!=0xf0) { cord_h=P2; P2=0x0f; cord_l=P2; return(cord_h|cord_l); } } return(0xff); } 編寫主函數(shù),系統(tǒng)從主函數(shù)開始執(zhí)行,首先點(diǎn)亮數(shù)碼管,將數(shù)字“0”的段碼賦值給P0口,然后進(jìn)入while無限循環(huán),在while循環(huán)里,調(diào)用keyscan函數(shù),并將返回值賦值給變量key,同時(shí)要定義變量可以。 void main() { uchar key; P0=0X

9、C0; while(1) { key=keyscan(); switch(key) { case 0xee:P0=LED_Val[0];break; case 0xed:P0=LED_Val[1];break; case 0xeb:P0=LED_Val[2];break; case 0xe7:P0=LED_Val[3];break; case 0xde:P0=LED_Val[4];break; case 0xdd:P0=LED_Val[5];break; case 0xdb:P0=LED_Val[6];break

10、; case 0xd7:P0=LED_Val[7];break; case 0xbe:P0=LED_Val[8];break; case 0xbd:P0=LED_Val[9];break; case 0xbb:P0=LED_Val[10];break; case 0xb7:P0=LED_Val[11];break; case 0x7e:P0=LED_Val[12];break; case 0x7d:P0=LED_Val[13];break; case 0x7b:P0=LED_Val[14];break; case 0x77

11、:P0=LED_Val[15];break; } } } 1、 實(shí)物調(diào)試 1)、電路連接 電路連接 2)、上電調(diào)試 上電測試 五、背景知識(shí): 在控制系統(tǒng)中,通常需利用按鍵進(jìn)行系統(tǒng)參數(shù)的設(shè)置。按鍵時(shí)單片機(jī)應(yīng)用系統(tǒng)中常用的輸入設(shè)備之一,線性鍵盤分為獨(dú)立按鍵、矩陣鍵盤兩種。 鍵盤是由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開關(guān)元件,也就是說鍵盤是一組規(guī)則排列的開關(guān)。鍵盤的工作方式有3種,即程序控制掃描、定時(shí)掃描和中斷掃描方式。 通常,按鍵的開關(guān)為機(jī)械彈性觸點(diǎn)開關(guān),它是利用機(jī)械觸點(diǎn)接觸和分離實(shí)現(xiàn)電路的通、斷。由于機(jī)械觸點(diǎn)的彈性作用,加上人們按鍵時(shí)的力度、方

12、向的不同,按鍵開關(guān)從按下到接觸穩(wěn)定要經(jīng)過數(shù)毫秒的彈跳抖動(dòng),既在按下的幾十毫秒時(shí)間里會(huì)連續(xù)產(chǎn)生多個(gè)脈沖。釋放按 鍵時(shí),電路也不會(huì)一下斷開,同樣會(huì)產(chǎn)生抖動(dòng)。這兩次抖動(dòng)的時(shí)間分別為 10.20ms 左右,而按鍵的穩(wěn)定閉合期通常大于 0.3.0.5 秒。因此,為了確保 MCU 對(duì)一次按鍵動(dòng)作只確認(rèn)一次,在確認(rèn)按鍵是否閉合時(shí),必須要進(jìn)行消抖處理。否則,由于 MCU 軟件執(zhí)行的速度很快,非??赡軐⒍秳?dòng)產(chǎn)生的多個(gè)脈沖誤認(rèn)為多次的按鍵。 消除按鍵的抖動(dòng)既可采用硬件方法,也可采用軟件的方法。使用硬件消抖的方式,需要在按鍵連接的硬件設(shè)計(jì)上增加硬件消抖電路,如采用 R.S 觸發(fā)器或 RC 積分電路等。采用硬件消

13、抖方式增加了系統(tǒng)的成本,而利用軟件方式消抖則是比較經(jīng)濟(jì)的做法,但增加了軟件設(shè)計(jì)的復(fù)雜性。 軟件方式消抖的基本原理是在軟件中對(duì)按鍵進(jìn)行兩次測試確認(rèn),既在第一次檢測到按鍵按下后,間隔 10ms 左右再次檢測該按鍵是否按下,只有在兩次都測到按鍵按下時(shí)才最終確認(rèn)有鍵按下,從而消除了抖動(dòng)的影響。在按鍵接口軟件中,除了要考慮按鍵消抖外,一般還要判別按鍵的釋放,只有檢測到按鍵釋放以后,才能確定為一次完整的按鍵動(dòng)作完成。 按鍵識(shí)別方法分為三種,分別是程序控制掃描方式、定時(shí)掃描方式和中斷掃描方式。 ①程序控制掃描方式 程序控制掃描方式是指單片機(jī)在空閑時(shí),才調(diào)用鍵盤掃描子程序,并反復(fù)地掃描鍵盤,直到用戶

14、從鍵盤上輸入命令或數(shù)據(jù),而在執(zhí)行鍵入命令或處理鍵入數(shù)據(jù)過程中,CPU將不再響應(yīng)鍵入要求,直到CPU重新掃描鍵盤為止。 過程如下: ⑴判斷有無鍵按下; ⑵延時(shí)后判斷是否確實(shí)有鍵按下。如果有,確認(rèn)有鍵按下,如果沒有,那么確認(rèn)為鍵抖動(dòng); ⑶判斷是哪個(gè)鍵被按下(鍵掃描獲得閉合鍵的行、列值); ⑷等待按鍵被釋放。如果沒有釋放,繼續(xù)等待;如果釋放,轉(zhuǎn)到相應(yīng)的處理程序進(jìn)行處理。 ②定時(shí)掃描方式 定時(shí)掃描方式就是每隔一定時(shí)間對(duì)鍵盤掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定的時(shí)間的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷,CPU響應(yīng)中斷后對(duì)鍵盤進(jìn)行掃描,并在有鍵按下時(shí)識(shí)別出該鍵執(zhí)行響應(yīng)的鍵功能程序。 ③中斷掃描方式 鍵盤工作在程序控制掃描方式時(shí),當(dāng)無鍵按下時(shí)CPU要不間斷的掃描鍵盤,直到有鍵按下為止。如果CPU要處理很多事情,這種方式將不能適應(yīng)。定時(shí)掃描方式只要時(shí)間一到,CPU就去掃描鍵盤,工作效率有了進(jìn)一步的提高。但這兩種方式常使CPU處于空掃狀態(tài),而中斷方式下,CPU可以一直處理自己的工作,知道有鍵閉合時(shí)發(fā)出中斷申請(qǐng),CPU響應(yīng)中斷,執(zhí)行相應(yīng)的中斷服務(wù)程序,才對(duì)鍵盤進(jìn)行掃描,從而提高了CPU的工作效率。

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲