新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機教程:矩陣式鍵盤接口技術及程序設計

        51單片機教程:矩陣式鍵盤接口技術及程序設計

        作者: 時間:2012-08-07 來源:網絡 收藏

        系統中中按鈕數量較多時,為了減少I/O口的占用,常常將按鈕排列成矩陣形式,如圖1所示。在中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鈕加以連接。這樣,一個端口(如P1口)就能組成4*4=16個按鈕,比之直接將端口線用于多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就能組成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。

        本文引用地址:http://www.104case.com/article/171064.htm

        點擊瀏覽下一頁
        鍵盤及編程圖>

        結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,上圖中,列線通過電阻接正電源,并將行線所接的的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鈕沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。具體的識別及編程辦法如下所述。

        矩陣式鍵盤的按鈕識別辦法

        確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。

        行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鈕識別辦法,如上圖所示鍵盤,介紹過程如下。

        判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鈕之中。若所有列線均為高電平,則鍵盤中無鍵按下。

        判斷閉合鍵所在的位置 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其辦法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鈕就是閉合的按鈕。

        下面給出一個具體的例程:

        圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源+5V,并把列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。

        檢測當前是否有鍵被按下。檢測的辦法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全“1”,則無鍵閉合,不然有鍵閉合。

        DIY機械鍵盤相關社區:機械鍵盤DIY



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 富锦市| 桂东县| 呼伦贝尔市| 浙江省| 泰顺县| 石首市| 本溪| 汤阴县| 大竹县| 卓尼县| 西乌珠穆沁旗| 邻水| 丰原市| 开化县| 肥东县| 灵山县| 龙门县| 青州市| 青田县| 杨浦区| 任丘市| 聂拉木县| 高陵县| 襄城县| 石家庄市| 永昌县| 五常市| 桃园县| 江津市| 鱼台县| 文安县| 新泰市| 拉萨市| 凤阳县| 惠水县| 柞水县| 武清区| 正镶白旗| 禹州市| 湖南省| 平昌县|