<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 4×4矩陣鍵盤的工作原理與編程

          4×4矩陣鍵盤的工作原理與編程

          作者: 時間:2016-11-26 來源:網(wǎng)絡 收藏
          本文介紹如何在ME300B型51/AVR單片機學習開發(fā)系統(tǒng)上使用數(shù)碼管顯示4×4矩陣鍵盤的鍵值。

          本文引用地址:http://www.ex-cimer.com/article/201611/321762.htm

          一、硬件工作原理的簡單介紹

          該實驗使用ME300B上的8位數(shù)碼管顯示電路和4×4矩陣鍵盤電路?,F(xiàn)將這二部分的電路工作原理進行簡單的介紹:

          1、4×4矩陣鍵盤的工作原理

          矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點上,設置一個按鍵。這樣鍵盤中按鍵的個數(shù)是4×4個。這種行列式鍵盤結構能夠有效地提高單片機系統(tǒng)中I/O口的利用率。

          圖1為ME300B矩陣鍵盤電路圖,行線接P1.4-P1.7,列線接P1.0-P1.3。

          圖1矩陣鍵盤電路

          圖2按鍵排列

          2、數(shù)碼管動態(tài)掃描顯示電路

            在ME300B開發(fā)系統(tǒng)中,采用了8位數(shù)碼管動態(tài)掃描顯示。它將所有數(shù)碼管的8個段線相應地并接在一起,并接到AT89S51的P0口,由P0口控制字段輸出。而各位數(shù)碼管的共陽極由AT89S51的P2口控制Q20-Q27來實現(xiàn)8位數(shù)碼管的位輸出控制。

          這樣,對于一組數(shù)碼管動態(tài)掃描顯示需要由兩組信號來控制:一組是字段輸出口輸出的字形代碼,用來控制顯示的字形,稱為段碼;另一組是位輸出口輸出的控制信號,用來選擇第幾位數(shù)碼管工作,稱為位碼。

          由于各位數(shù)碼管的段線并聯(lián),段碼的輸出對各位數(shù)碼管來說都是相同的。因此,同一時刻如果各位數(shù)碼管的位選線都處于選通狀態(tài)的話,8位數(shù)碼管將顯示相同的字符。若要各位數(shù)碼管能夠顯示出與本位相應的字符,就必須采用掃描顯示方式。即在某一時刻,只讓某一位的位選線處于導通狀態(tài),而其它各位的位選線處于關閉狀態(tài)。同時,段線上輸出相應位要顯示字符的字型碼。這樣同一時刻,只有選通的那一位顯示出字符,而其它各位則是熄滅的,如此循環(huán)下去,就可以使各位數(shù)碼管顯示出將要顯示的字符。

          雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其它各位熄滅,但由于數(shù)碼管具有余輝特性和人眼有視覺暫留現(xiàn)象,只要每位數(shù)碼管顯示間隔足夠短,給人眼的視覺印象就會是連續(xù)穩(wěn)定地顯示。

          圖3數(shù)碼管電路

          數(shù)碼管不同位顯示的時間間隔可以通過調(diào)整延時程序的延時長短來完成。數(shù)碼管顯示的時間間隔也能夠確定數(shù)碼管顯示時的亮度,若顯示的時間間隔長,顯示時數(shù)碼管的亮度將亮些,若顯示的時間間隔短,顯示時數(shù)碼管的亮度將暗些。若顯示的時間間隔過長的話,數(shù)碼管顯示時將產(chǎn)生閃爍現(xiàn)象。所以,在調(diào)整顯示的時間間隔時,即要考慮到顯示時數(shù)碼管的亮度,又要數(shù)碼管顯示時不產(chǎn)生閃爍現(xiàn)象。

          在ME300B單片機開發(fā)系統(tǒng)中使用數(shù)碼管來顯示信息時,要將JP2的2、3端短接。見圖3

          二、演示程序的編程方法

          1、4×4矩陣鍵盤的編程方法:

          1.1、先讀取鍵盤的狀態(tài),得到按鍵的特征編碼。

          先從P1口的高四位輸出低電平,低四位輸出高電平,從P1口的低四位讀取鍵盤狀態(tài)。再從P1口的低四位輸出低電平,高四位輸出高電平,從P1口的高四位讀取鍵盤狀態(tài)。將兩次讀取結果組合起來就可以得到當前按鍵的特征編碼。使用上述方法我們得到16個鍵的特征編碼。

          舉例說明如何得到按鍵的特征編碼:

          假設“1”鍵被按下,找其按鍵的特征編碼。

          從P1口的高四位輸出低電平,即P1.4-P1.7為輸出口。低四位輸出高電平,即P1.0-P1.3為輸入口。讀P1口的低四位狀態(tài)為“1101”,其值為“0DH”。

          再從P1口的高四位輸出高電平,即P1.4-P1.7為輸入口。低四位輸出低電平,即P10-P13為輸出口,讀P1口的高四位狀態(tài)為“1110”,其值為“E0H”。

          將兩次讀出的P0口狀態(tài)值進行邏輯或運算就得到其按鍵的特征編碼為“EDH”。

          用同樣的方法可以得到其它15個按鍵的特征編碼。

          1.2、根據(jù)按鍵的特征編碼,查表得到按鍵的順序編碼。

          將用上述方法得到的16個按鍵的特征編碼按圖2按鍵排列的順序排成一張?zhí)卣骶幋a與順序編碼的對應關系表,然后用當前讀得的特征編碼來查表,當表中有該特征編碼時,它所在的位置就是對應的順序編碼。

          1.3、矩陣鍵盤鍵值查找程序的具體編程

          這個演示程序的主要功能有:

          1、識別鍵盤有無按鍵按下,若無鍵按下返回。

          2、如果有鍵按下,找出具體的按鍵值(順序碼)。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();