第13講51單片機(jī)按鍵電路_第1頁(yè)
第13講51單片機(jī)按鍵電路_第2頁(yè)
第13講51單片機(jī)按鍵電路_第3頁(yè)
第13講51單片機(jī)按鍵電路_第4頁(yè)
第13講51單片機(jī)按鍵電路_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、標(biāo)題:鍵盤(pán)接口電路教學(xué)目標(biāo)與要求:1 .鍵盤(pán)去抖動(dòng)和連接、控制方式2 .獨(dú)立式按鍵及其接口電路3 .矩陣式鍵盤(pán)及其接口電路授課時(shí)數(shù):2教學(xué)重點(diǎn):.矩陣式鍵盤(pán)及其接口電路 教學(xué)內(nèi)容及過(guò)程: 一、鍵盤(pán)接口概述1、按鍵開(kāi)關(guān)去抖動(dòng)問(wèn)題機(jī)械式按鍵再按下或釋放時(shí), 由于機(jī)械彈性作用的影響, 通常伴隨有一定時(shí)間的觸點(diǎn)機(jī) 械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來(lái)。其抖動(dòng)過(guò)程如圖 9-11所示,抖動(dòng)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī) 械特性有關(guān),一般為 5 10 msk按下鍵增開(kāi)用8鍵輸入鍵抖動(dòng)09-11鍵幌作和鍵抖動(dòng)在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò),即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的

2、。為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測(cè)誤判,必須采取去抖動(dòng)措施。這一點(diǎn)可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時(shí),可采用硬件去抖,而當(dāng)鍵數(shù)較多時(shí),采用軟件去抖。在硬件上可采用在鍵輸出端加R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動(dòng)電路。圖9-12是一種由R-S觸發(fā)器構(gòu)成的去抖動(dòng)電路,當(dāng)觸發(fā)器一旦翻轉(zhuǎn),觸點(diǎn)抖動(dòng)不會(huì)對(duì)其產(chǎn)生任何影響。礴態(tài)悄撲電路單穩(wěn)態(tài)消抖電路圖*12硬件消科申,路4-SV以濾樹(shù)肖抖儂§軟件上采取的措施是:在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè) 10 ms左右(具體時(shí)間應(yīng)視所使用的按鍵進(jìn)行調(diào)整) 的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確

3、認(rèn)該鍵處于閉合狀態(tài)。同理,在檢測(cè)到該鍵釋放后,也應(yīng)采用相同的步驟進(jìn)行確認(rèn),從而可消除抖動(dòng)的影響。2.編制鍵盤(pán)程序一個(gè)完善的鍵盤(pán)控制程序應(yīng)具備以下功能:(1) 檢測(cè)有無(wú)按鍵按下,并采取硬件或軟件措施,消除鍵盤(pán)按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。(2) 有可靠的邏輯處理辦法。每次只處理一個(gè)按鍵,其間對(duì)任何按鍵的操作對(duì)系統(tǒng)不產(chǎn)生影響,且無(wú)論一次按鍵時(shí)間有多長(zhǎng),系統(tǒng)僅執(zhí)行一次按鍵功能程序。(3) 準(zhǔn)確輸出按鍵值(或鍵號(hào)) ,以滿足跳轉(zhuǎn)指令要求。二、獨(dú)立式按鍵單片機(jī)控制系統(tǒng)中,往往只需要幾個(gè)功能鍵,此時(shí),可采用獨(dú)立式按鍵結(jié)構(gòu)。1 . 獨(dú)立式按鍵結(jié)構(gòu)獨(dú)立式按鍵是直接用 I/O 口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵

4、單獨(dú)占用一根I/O 口線,每個(gè)按鍵的工作不會(huì)影響其它 I/O 口線的狀態(tài)。獨(dú)立式按鍵的典型應(yīng)用如圖 7.4 所示。 獨(dú)立式按鍵電路配置靈活, 軟件結(jié)構(gòu)簡(jiǎn)單, 但每個(gè)按鍵必須占用一根I/O 口線, 因此,在按鍵較多時(shí), I/O 口線浪費(fèi)較大,不宜采用。2 .矩陣式鍵盤(pán)I/O 端線分為行線和列線, 按鍵跨接在行線和列線上, 按鍵按下時(shí), 行線與列線發(fā)生短路。特點(diǎn):占用 I/O 端線較少;軟件結(jié)構(gòu)教復(fù)雜。適用于按鍵較多的場(chǎng)合。3 .鍵盤(pán)掃描控制方式 程序控制掃描方式鍵處理程序固定在主程序的某個(gè)程序段。特點(diǎn):對(duì) CPU 工作影響小,但應(yīng)考慮鍵盤(pán)處理程序的運(yùn)行間隔周期不能太長(zhǎng),否則會(huì)影響對(duì)鍵輸入響應(yīng)的及

5、時(shí)性。 定時(shí)控制掃描方式利用定時(shí)/計(jì)數(shù)器每隔一段時(shí)間產(chǎn)生定時(shí)中斷,CPU 響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描。特點(diǎn): 與程序控制掃描方式的區(qū)別是,在掃描間隔時(shí)間內(nèi), 前者用 CPU 工作程序填充,后者用定時(shí)/計(jì)數(shù)器定時(shí)控制。定時(shí)控制掃描方式也應(yīng)考慮定時(shí)時(shí)間不能太長(zhǎng),否則會(huì)影響對(duì)鍵輸入響應(yīng)的及時(shí)性。 中斷控制方式中斷控制方式是利用外部中斷源,響應(yīng)鍵輸入信號(hào)。特點(diǎn):克服了前兩種控制方式可能產(chǎn)生的空掃描和不能及時(shí)響應(yīng)鍵輸入的缺點(diǎn),既能及時(shí)處理鍵輸入,又能提高 CPU 運(yùn)行效率,但要占用一個(gè)寶貴的中斷資源。三、獨(dú)立式按鍵及其接口電路1、按鍵直接與I/O 口連接圖9-13獨(dú)立式按鍵接口電路【例9-8】按圖9-13

6、(a)、(b),試分別編制按鍵掃描子程序。解:按圖9-13編程如下:KEYA:ORLP1,#07H;置P1.0P1.2為輸入態(tài)MOVA,P1;讀鍵值,鍵閉合相應(yīng)位為0CPLA;取反,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無(wú)鍵閉合,返回LCALLDY10ms;非全0,有鍵閉合,延時(shí)10ms,軟件去抖動(dòng)MOVA,P1;重讀鍵值,鍵閉合相應(yīng)位為0CPLA;取反,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無(wú)鍵閉合,返回;非全0,確認(rèn)有鍵閉合JBAcc.0,KA0 ;轉(zhuǎn)0#鍵功能程

7、序JBAcc.1,KA1;轉(zhuǎn)1#鍵功能程序JBAcc2 KA2;轉(zhuǎn)2#鍵功能程序GRET:RETKA0: LCALLWORK0;執(zhí)行0健功能子程序RETKA1: LCALLWORK1;執(zhí)行1#鍵功能子程序RETKA2: LCALLWORK2;執(zhí)行2健功能子程序RET按圖9-13(b)編程如下:KEYB:ORLP1,#07H;置P1.0P1.2為輸入態(tài)MOVA,P1;讀鍵值,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無(wú)鍵閉合,返回LCALLDY10ms;非全0,有鍵閉合,延時(shí)10ms,軟件去抖動(dòng)MOVA,P1;重讀鍵值,鍵閉合相應(yīng)位為1

8、ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位JZGRET;全0,無(wú)鍵閉合,返回;非全0,確認(rèn)有鍵閉合JBAcc.0,KB0;轉(zhuǎn)0#鍵功能程序JBAcc.1,KB1JBAcc2 KB2GRET:RETKB0: LCALLWORK0RETKB1: LCALLWORK1RETKB2: LCALL WORK2RET;轉(zhuǎn)1#鍵功能程序;轉(zhuǎn)2#鍵功能程序;執(zhí)行0#鍵功能子程序;執(zhí)行1#鍵功能子程序;執(zhí)行2#鍵功能子程序四、矩陣式鍵盤(pán)及其接口電路80C5LF1. 0Pl. 1P1. 2F1. 3P1. 4P1. 5P1. 6P1, 7K1K1附KlS1K1, 口1K2 Uk3圖A15矩

9、陣式鍵盤(pán)的結(jié)構(gòu)矩陣式鍵盤(pán)中,行、列線分別連接到按鍵開(kāi)關(guān)的兩端,行線通過(guò)上拉電阻接到+ 5V上。當(dāng)無(wú)鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將 由與此行線相連的列線電平?jīng)Q定。這是識(shí)別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤(pán)中的行線、 列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號(hào)配合起來(lái)作適當(dāng)處理,才能確定閉合鍵的位置。2 .矩陣式鍵盤(pán)按鍵的識(shí)別識(shí)別按鍵的方法很多,其中,最常見(jiàn)的方法是掃描法。下面以圖7.5中8號(hào)鍵的識(shí)別為例來(lái)說(shuō)明掃描法識(shí)別按鍵的過(guò)程。按鍵按下時(shí),與此鍵相連的行線與列線導(dǎo)通,行線在無(wú)鍵按下

10、時(shí)處在高電平。顯然,如果讓所有的列線也處在高電平,那么,按鍵按下與否不會(huì)引起行線電平的變化,因此, 必須使所有列線處在低電平。 只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會(huì)由高電平變?yōu)榈?電平。CPU根據(jù)行電平的變化,便能判定相應(yīng)的行有鍵按下。8號(hào)鍵按下時(shí),第2行一定為低電平。然而,第 2行為低電平時(shí),能否肯定是 8號(hào)鍵按下呢?回答是否定的,因?yàn)?9、10、11號(hào)鍵按下,同樣會(huì)使第 2行為低電平。為進(jìn)一步確定具體鍵,不能使所有列線在同一時(shí)刻都處在低電平,可在某一時(shí)刻只讓一條列線處于低電平,其余列線均處于高電平,另一時(shí)刻,讓下一列處在低電平,依此循環(huán),這種依次輪流每次選通一列的工作方式稱為鍵盤(pán)掃

11、描。 采用鍵盤(pán)掃描后, 再來(lái)觀察 8 號(hào)鍵按下時(shí)的工作過(guò)程, 當(dāng) 第 0 列處于低電平時(shí),第2 行處于低電平,而第1 、 2 、 3 列處于低電平時(shí),第2 行卻處在高電平,由此可判定按下的鍵應(yīng)是第 2 行與第 0 列的交叉點(diǎn),即 8 號(hào)鍵。3 . 鍵盤(pán)的編碼對(duì)于獨(dú)立式按鍵鍵盤(pán),因按鍵數(shù)量少,可根據(jù)實(shí)際需要靈活編碼。 對(duì)于矩陣式鍵盤(pán),按鍵的位置由行號(hào)和列號(hào)惟一確定, 因此可分別對(duì)行號(hào)和列號(hào)進(jìn)行二進(jìn)制編碼, 然后將兩值合成一個(gè)字節(jié),高 4 位是行號(hào),低4 位是列號(hào)。如圖 9-15 中的 8 號(hào)鍵,它位于第 2 行,第 0列,因此,其鍵盤(pán)編碼應(yīng)為20H 。采用上述編碼對(duì)于不同行的鍵離散性較大,不利于

12、散轉(zhuǎn)指令對(duì)按鍵進(jìn)行處理。因此,可采用依次排列鍵號(hào)的方式對(duì)按排進(jìn)行編碼。以圖7.5中的4X4鍵盤(pán)為例,可將鍵號(hào)編碼為:01H、02H、03H、0EH、0FH、10H等16個(gè)鍵號(hào)。編碼相互轉(zhuǎn)換可通過(guò)計(jì)算或查表的方法實(shí)現(xiàn)?!纠?9-10】按圖 9-15 及圖9-16,試編制矩陣式鍵盤(pán)掃描程序。解:KEY:MOVP1,#0F0H; 行線置低電平,列線置輸入態(tài)KEY0:MOVA,P1; 讀列線數(shù)據(jù)CPLA;數(shù)據(jù)取反,“1”有效ANLA,#0F0H; 屏蔽行線, 保留列線數(shù)據(jù)MOVR1,A;存列線數(shù)據(jù) (R1 高 4 位)JZGRET; 全0, 無(wú)鍵按下,返回KEY1:MOVP1,#0FH;行線置輸入態(tài),

13、列線置低電平MOVA, P1; 讀行線數(shù)據(jù)CPLA;數(shù)據(jù)取反,“1”有效ANLA, #0FH; 屏蔽列線,保留行線數(shù)據(jù)MOVR2,A;存行線數(shù)據(jù) (R2 低 4 位)JZGRET; 全0, 無(wú)鍵按下,返回JBCF0,WAIT; 已有消抖標(biāo)志, 轉(zhuǎn)SETBF0; 無(wú)消抖標(biāo)志,置消抖標(biāo)志LCALLDY10ms;調(diào)用 10ms 延時(shí)子程序(參閱例4.13),消抖SJMPKEY0; 重讀行線列線數(shù)據(jù)GRET:RETWAIT:MOVA,P1;等待按鍵釋放CPLA;ANLA,#0FH;JNZWAIT; 按鍵未釋放, 繼續(xù)等待KEY2:MOVA,R1;取列線數(shù)據(jù)(高 4 位 )MOVR1,#03H;取列線編

14、號(hào)初值MOVR3,#03H;置循環(huán)數(shù)CLRC;KEY3:RLCA; 依次左移入 C 中JCKEY4;C=1,該列有鍵按下,(列線編號(hào)存R1)DECR1;C=0, 無(wú)鍵按下, 修正列編號(hào)DJNZR3,KEY3; 判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的列線KEY4:MOVA,R2;取行線數(shù)據(jù)(低 4 位)MOVR2,#00H;置行線編號(hào)初值MOVCLRR3,#03HC;置循環(huán)數(shù) ;KEY5:RRCA;依次右移入C中JCKEY6;C=1,該行有鍵按下,(行線編號(hào)存R2)INCR2;C=0,無(wú)鍵按下,修正行線編號(hào)DJNZR3,KEY5;判循環(huán)結(jié)束否?木結(jié)束繼續(xù)尋找肩鍵按下的行線KEY6:MOVA,R2

15、;取行線編號(hào)CLRC;RLCA,仃編p八 2RLCA,仃編人4ADDA,R1/丁編入4+歹U編一按鍵編KEY7:CLRC;RLCA;按鍵編號(hào)X 2RLCA;按鍵編號(hào)X 4(LCALL+ REI 共4字節(jié))MOVDPTR,#TABJ;JMPA+DPTR;散轉(zhuǎn),執(zhí)行相應(yīng)鍵功能子程序TABJ:LCALLRETWORK0;調(diào)用執(zhí)行0#鍵功能子程序;LCALLRETWORK1;調(diào)用執(zhí)行1#鍵功能子程序;LCALLRETWORK15;調(diào)用執(zhí)行15#鍵功能子程序【例9-11按圖9-17,試編制中斷方式鍵盤(pán)掃描程序,將鍵盤(pán)序號(hào)存入內(nèi) RAM 30H 。INTOFl. 7圖17工作于中斷方式的矩陣式鍵盤(pán)接口電路

16、解:ORG0000H;復(fù)位地址LJMPSTAT;轉(zhuǎn)初始化ORG0003H;中斷入口地址LJMPPINT0;轉(zhuǎn)中斷服務(wù)程序ORG0100H;初始化程序首地址STAT: MOVSP,#60H;置堆棧指針SETBIT0; 置為邊沿觸發(fā)方式MOVIP,#00000001B ;置為高優(yōu)先級(jí)中斷MOVP1,#00001111B ;置 P1.0P1.3輸入態(tài),置 P1.4P1.7 輸出 0SETBEA;CPU 開(kāi)中SETBEX0; 開(kāi)中LJMPMAIN;轉(zhuǎn)主程序,并等待有鍵按下時(shí)中斷OGR2000H;中斷服務(wù)程序首地址PINT0: PUSHAcc; 保護(hù)現(xiàn)場(chǎng)PUSHPSW;MOVA,P1;讀行線(P1.0P

17、1.3)數(shù)據(jù)CPLA;數(shù)據(jù)取反, “1”有效ANLA, #0FH;屏蔽列線,保留行線數(shù)據(jù)MOVR2,A;存行線(P1.0P1.3)數(shù)據(jù)(R2低4位)MOVP1,#0F0H;行線置低電平,列線置輸入態(tài)MOVA,P1;讀列線(P1.4P1.7)數(shù)據(jù)CPLA;數(shù)據(jù)取反, “1”有效ANLA,#0F0H;屏蔽行線,保留列線數(shù)據(jù)(A 中高 4 位)MOVR1,#03H;取列線編號(hào)初值MOVR3,#03H;置循環(huán)數(shù)CLRC;PINT01:RLCA; 依次左移入 C 中JCPINT02;C=1,該列有鍵按下,(列線編號(hào)存 R1)DECR1;C=0,無(wú)鍵按下,修正列編號(hào)DJNZR3,PINT01; 判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下列線PINT02:MOVA,R

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論