版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、按鍵控制鍵盤檢測原理與應(yīng)用一、任務(wù)目標:認知目標1、掌握按鍵分類及工作原理2、掌握IF條件選擇結(jié)構(gòu)和使用方法3、掌握循環(huán)結(jié)構(gòu)和使用原理4、掌握獨立按鍵子函數(shù)的編寫原理及方法1、 獨立鍵盤在簡單的單片機應(yīng)用系統(tǒng)中,往往只需要幾個功能鍵就能滿足要求,此時,可采用獨立式按鍵結(jié)構(gòu)。獨立式按鍵是直接用I/O口線構(gòu)成的單個按鍵電路,其特點是每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。獨立式按鍵的典型應(yīng)用如圖1.2.1所示。獨立式按鍵示意圖獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O口線,因此,在按鍵較多時,I/O口線浪費較大,不宜采用。 程序開始,檢測
2、按鍵是否被按下,若按下,則移動機器人啟動,未被按下,繼續(xù)檢測。這里將程序分成三個部分,分別是延時子函數(shù)、按鍵子函數(shù)、主函數(shù)。延時子函數(shù),通過參數(shù)t設(shè)置延時時間;按鍵模塊子函數(shù)需用到延時函數(shù),對按鍵進行消抖;主函數(shù)主要調(diào)用按鍵檢測程序,實現(xiàn)對移動機器人的控制。程序流程圖如圖1.2.2所示程序流程圖程序示例:在編寫程序開始的部分,將系統(tǒng)頭文件“STC89C52RC.H”包含進來,對常用的變量類型進行宏定義,規(guī)劃各函數(shù)和變量,對變量進行定義和初始化,對自定義子函數(shù)進行聲明并添加相應(yīng)標注,程序開始部分如下sbit IN1=P10;sbit IN2=P11;Void key();編寫主函數(shù),在主函數(shù)中就
3、是調(diào)用按鍵檢測函數(shù)。Void main() key(); 編寫key()按鍵檢測函數(shù),按鍵按下,輸出低電平,通過if語句檢測低電平,延時10ms后,再次檢測,若檢測為高電平,則表示為機械抖動,若檢測到低電平表示按鍵按下。 Void key() if(IN1=0) delay_ms(10); if(IN1=0) while(IN1=0); IN2=IN2; 在上面的程序中,就只有一個檢查按鍵掃描的函數(shù)key(),key()函數(shù)是檢查有沒有按鍵按下編寫的。當有按鍵下的時候P2口取反。2、 矩陣鍵盤(1)矩陣連接式鍵盤 在單片機系統(tǒng)中鍵盤中按鈕數(shù)量較多時,為了減少I/O口的占用,常常將按鈕排列成矩陣
4、形式,如下圖所示:矩陣鍵盤形式 矩陣按鍵實物圖矩陣連接式鍵盤鍵按矩陣排列,各鍵處于矩陣行/列的結(jié)點處,CPU通過對連在行(列)的I/O線送已知電平的信號,然后讀取列(行)線的狀態(tài)信息。逐線掃描,得出鍵碼。其特點是鍵多時占用I/O口線少,硬件資源利用合理,但判斷按鍵速度慢。多用于設(shè)置數(shù)字鍵,適用于鍵數(shù)多的場合。 (2)按鍵識別方法 掃描法第1步,識別鍵盤有無鍵按下;第2步,如有鍵被按下,識別出具體的鍵位。其工作過程為先把所有列線均置為0,然后檢查各行線電平是否都為高,如果不全為高,說明有鍵按下,否則無鍵被按下。再采用逐列掃描法,在某一時刻只讓1條列線處于低電平,其余所有列線處于高電平,識別出按鍵
5、具體位置。綜上所述,掃描法的思想是,先把某一列置為低電平,其余各列置為高電平,檢查各行線電平的變化,如果某行線電平為低電平,則可確定此行此列交叉點處的按鍵被按下。 線反轉(zhuǎn)法線反轉(zhuǎn)法的具體步驟為讓行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。再把行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。程序編寫矩陣式鍵盤最主要的是按鍵識別,按鍵識別是采用線翻轉(zhuǎn)的方法。線翻轉(zhuǎn)法是先讓P2= 0xf0;當有按鍵按下時P2口的狀態(tài)就會改變不在是0xf0,當按鍵按下時,P2的狀態(tài)改變了,此時存儲當前P2
6、口的狀態(tài)1,然后讓P2=0xf0因為程序執(zhí)行時間很短,此時按鍵還沒抬起來,由于按鍵按下的原因P2狀態(tài)不再是0xf0,存儲此時P2口的狀態(tài)2,把狀態(tài)1與狀態(tài)2的值相或,因為每個按鍵按下的值都是不一樣的,根據(jù)按鍵返回的值給數(shù)碼管賦不同的斷碼值,從而達到顯示0F的目的。利用線反轉(zhuǎn)法編寫程序流程如圖1.2.4所示:程序流程圖程序示例 編寫keyscan函數(shù)注釋,定義keyscan函數(shù)并編寫框架。keyscan函數(shù)主要負責掃描矩陣鍵盤是否被按下,并且根據(jù)按下的按鍵返回不同的值,所以應(yīng)該為無參、有返回值函數(shù)。因為有按鍵按下時返回值是將兩次P2=0xf0和P2=0x0f的結(jié)果相或,無按鍵按下時返回值為0xf
7、f,所以將函數(shù)返回值定義為uchar型即可。uchar keyscan(void)uchar cord_h=0;uchar cord_l=0;P2=0xf0;if(P2!=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í)行,首先點亮數(shù)碼管,將數(shù)字“0”的段碼賦值給P0口,然后進入while無限循環(huán),在while循環(huán)里,調(diào)用keyscan函數(shù),并將返回值賦值給變量key,同時要定義變量可以。void main()uch
8、ar key;P0=0XC0;while(1)key=keyscan();switch(key) case 0xee:P0=LED_Val0;break; case 0xed:P0=LED_Val1;break; case 0xeb:P0=LED_Val2;break; case 0xe7:P0=LED_Val3;break; case 0xde:P0=LED_Val4;break; case 0xdd:P0=LED_Val5;break; case 0xdb:P0=LED_Val6;break; case 0xd7:P0=LED_Val7;break; case 0xbe:P0=LED_Va
9、l8;break; case 0xbd:P0=LED_Val9;break; case 0xbb:P0=LED_Val10;break; case 0xb7:P0=LED_Val11;break; case 0x7e:P0=LED_Val12;break; case 0x7d:P0=LED_Val13;break; case 0x7b:P0=LED_Val14;break; case 0x77:P0=LED_Val15;break; 1、 實物調(diào)試1)、電路連接電路連接2)、上電調(diào)試上電測試五、背景知識:在控制系統(tǒng)中,通常需利用按鍵進行系統(tǒng)參數(shù)的設(shè)置。按鍵時單片機應(yīng)用系統(tǒng)中常用的輸入設(shè)備之一,
10、線性鍵盤分為獨立按鍵、矩陣鍵盤兩種。鍵盤是由一組規(guī)則排列的按鍵組成,一個按鍵實際上是一個開關(guān)元件,也就是說鍵盤是一組規(guī)則排列的開關(guān)。鍵盤的工作方式有3種,即程序控制掃描、定時掃描和中斷掃描方式。通常,按鍵的開關(guān)為機械彈性觸點開關(guān),它是利用機械觸點接觸和分離實現(xiàn)電路的通、斷。由于機械觸點的彈性作用,加上人們按鍵時的力度、方向的不同,按鍵開關(guān)從按下到接觸穩(wěn)定要經(jīng)過數(shù)毫秒的彈跳抖動,既在按下的幾十毫秒時間里會連續(xù)產(chǎn)生多個脈沖。釋放按 鍵時,電路也不會一下斷開,同樣會產(chǎn)生抖動。這兩次抖動的時間分別為 10.20ms 左右,而按鍵的穩(wěn)定閉合期通常大于 0.3.0.5 秒。因此,為了確保 MCU 對一次按
11、鍵動作只確認一次,在確認按鍵是否閉合時,必須要進行消抖處理。否則,由于 MCU 軟件執(zhí)行的速度很快,非??赡軐⒍秳赢a(chǎn)生的多個脈沖誤認為多次的按鍵。 消除按鍵的抖動既可采用硬件方法,也可采用軟件的方法。使用硬件消抖的方式,需要在按鍵連接的硬件設(shè)計上增加硬件消抖電路,如采用 R.S 觸發(fā)器或 RC 積分電路等。采用硬件消抖方式增加了系統(tǒng)的成本,而利用軟件方式消抖則是比較經(jīng)濟的做法,但增加了軟件設(shè)計的復(fù)雜性。軟件方式消抖的基本原理是在軟件中對按鍵進行兩次測試確認,既在第一次檢測到按鍵按下后,間隔 10ms 左右再次檢測該按鍵是否按下,只有在兩次都測到按鍵按下時才最終確認有鍵按下,從而消除了抖動的影響
12、。在按鍵接口軟件中,除了要考慮按鍵消抖外,一般還要判別按鍵的釋放,只有檢測到按鍵釋放以后,才能確定為一次完整的按鍵動作完成。按鍵識別方法分為三種,分別是程序控制掃描方式、定時掃描方式和中斷掃描方式。程序控制掃描方式程序控制掃描方式是指單片機在空閑時,才調(diào)用鍵盤掃描子程序,并反復(fù)地掃描鍵盤,直到用戶從鍵盤上輸入命令或數(shù)據(jù),而在執(zhí)行鍵入命令或處理鍵入數(shù)據(jù)過程中,CPU將不再響應(yīng)鍵入要求,直到CPU重新掃描鍵盤為止。過程如下:判斷有無鍵按下;延時后判斷是否確實有鍵按下。如果有,確認有鍵按下,如果沒有,那么確認為鍵抖動;判斷是哪個鍵被按下(鍵掃描獲得閉合鍵的行、列值);等待按鍵被釋放。如果沒有釋放,繼續(xù)等待;如果釋放,轉(zhuǎn)到相應(yīng)的處理程序進行處理。定時掃描方式定時掃描方式就是每隔一定時間對鍵盤掃描一次,它利用單片機內(nèi)部的定時器產(chǎn)生一定的時間的定時,當定時時間到就產(chǎn)生定時器溢出中斷,CPU響應(yīng)中斷后對鍵盤進行掃描,并在有鍵按下時識別出該鍵執(zhí)行響應(yīng)的鍵功能程序。中斷掃描方式鍵盤工作在程序
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年運動鞋品牌校園代理銷售及培訓合同3篇
- 二零二五年度個人住房公積金貸款房產(chǎn)抵押合同范本3篇
- 2024年路燈改造與城市環(huán)境美化工程合同3篇
- 2024年簡化版貨物銷售協(xié)議樣本版
- 2024房屋聯(lián)建協(xié)議范本:權(quán)益分配明細版
- 二零二五年度二手電動自行車買賣與品牌營銷合同2篇
- 2024年白糖采購正式合同
- 2024年離婚財產(chǎn)分配審計合同
- 萬兆工廠試點實施的階段性規(guī)劃策略
- 2024年版權(quán)許可合同:電子書數(shù)字版權(quán)的分級授權(quán)
- 醫(yī)療企業(yè)未來三年戰(zhàn)略規(guī)劃
- 急診科運用PDCA循環(huán)降低急診危重患者院內(nèi)轉(zhuǎn)運風險品管圈QCC專案結(jié)題
- 2024年統(tǒng)編版新教材語文小學一年級上冊全冊單元測試題及答案(共8單元)
- 醫(yī)務(wù)人員職業(yè)暴露預(yù)防及處理課件(完整版)
- DB11T 1470-2022 鋼筋套筒灌漿連接技術(shù)規(guī)程
- 護士急診科進修匯報
- 2025年統(tǒng)編版中考語文課內(nèi)文言文《湖心亭看雪》三年中考試題+模擬題(解析版)
- 2024學年四川省成都天府新區(qū)九年級上學期一診數(shù)學模擬試題(原卷版)
- 倉庫勞務(wù)外包方案
- 2024至2030年中國頸部按摩器行業(yè)發(fā)展戰(zhàn)略規(guī)劃及市場規(guī)模預(yù)測報告
- 人教版英語2024七年級上冊全冊單元測試卷
評論
0/150
提交評論