新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 【E電路】4×4矩陣式鍵盤電路的改進(jìn)

        【E電路】4×4矩陣式鍵盤電路的改進(jìn)

        作者: 時間:2016-02-01 來源:網(wǎng)絡(luò) 收藏

          51單片機(jī)系統(tǒng)中,經(jīng)常使用4×4鍵盤,一般情況下,都是使用一個8位的接口,外接16個按鍵。

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

          下圖就是一個常規(guī)的4×4鍵盤電路圖。

            

         

          這種常規(guī)的矩陣鍵盤電路,相信大家都司空見慣了,好多人都會編寫它的驅(qū)動程序。

          圖中使用了P0口的8個引腳(P0.0~P0.7),分別驅(qū)動鍵盤的行和列。按鍵的編號,在圖中分別標(biāo)注了0~F。

          檢測按鍵的一般的思路是在四個列線,分別輸出一個低電平,然后輸入行線,逐行檢測是否存在低電平。

          如果在某行有低電平出現(xiàn),就說明該行、列的交叉點(diǎn)上的按鍵,被按下了。

          其實(shí),這些行、列引線,是“分時”工作的,當(dāng)在某一列輸出低電平的時候,其它的列,輸出的就是高電平。

          如果利用這些輸出高電平的列,進(jìn)行輸入,那么就可以極大的節(jié)省IO接口的引線數(shù)量。

          基于這個道理,在上圖中,下面的四個列驅(qū)動引線(P0.4~P0.7),就完全可以省去,只是使用行驅(qū)動的引腳(P0.0~P0.3)來分時輸出低電平即可。

          電路見下圖。

            

         

          為了對引腳之間進(jìn)行隔離,圖中加上了四個二極管,確保只有在引腳輸出低電平的時候,方可把鍵盤中相應(yīng)的列置為0。

          針對這個電路,對按鍵的檢測方法,和常規(guī)的4×4鍵盤檢測思路是相同的,例如:

          當(dāng)在P0.0輸出低電平,即最左邊的列為0,這時檢測P0.1、P0.2及P0.3是否為0,可以判斷最左邊的三個按鍵是否按下;

          當(dāng)在P0.1輸出低電平,即左邊第二列為0,這時檢測P0.0、P0.2及P0.3是否為0,可以判斷左邊第二列的三個按鍵是否按下;

          …………;

          這個檢測按鍵是否按下的思路非常簡單,會編寫常規(guī)4×4鍵盤驅(qū)動程序的網(wǎng)友,肯定都會編寫出來這種電路的驅(qū)動程序。

          因?yàn)樾泻土惺褂昧讼嗤腎O引線,實(shí)際上,連接在同一個引線的行、列交叉點(diǎn)處的按鍵,就已經(jīng)失效了,那么就把把原來的按鍵,移動出來,把二極管畫在交叉點(diǎn),電路如下所示。

            

         

          再把移出來四個按鍵連接在IO引線,另一端直接接地;把其它按鍵的編號,再整理一下,就成了下圖電路。

            

         

          這個電路比常規(guī)的4×4鍵盤電路僅僅多用了四個二極管,但是卻節(jié)省了四條IO接口引線,這個意義是十分巨大的。

          按照這個電路的設(shè)計(jì)思路,使用 n 條IO接口引線,就可以驅(qū)動 n×n 個按鍵。

          那么用5個IO引腳,就可以驅(qū)動5×5的鍵盤,這就足以滿足各種應(yīng)用了。

          網(wǎng)上也有一些其它類型的節(jié)省接口的鍵盤電路,但是都有不足,不是電路過于復(fù)雜,就是驅(qū)動的按鍵個數(shù)較少,遠(yuǎn)遠(yuǎn)不及本電路簡單實(shí)用。

          這是個完美的精簡接口的4×4鍵盤電路,不僅可以用在51單片機(jī)系統(tǒng),在使用其它MCU組建的電路中同樣適用。

          針對這個電路,已經(jīng)用匯編語言和C語言編寫出了驅(qū)動程序,因?yàn)閰R編語言可以使用“位操作”指令,所以程序的比較簡單;C語言的程序,就顯得累贅一些。



        關(guān)鍵詞: 矩陣式鍵盤

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 万州区| 叙永县| 中西区| 桑植县| 翁牛特旗| 衡山县| 蓝山县| 南宁市| 旅游| 莱芜市| 绥棱县| 乌兰浩特市| 平度市| 大田县| 新乐市| 平罗县| 南乐县| 高台县| 祁阳县| 通州区| 华池县| 克山县| 阿瓦提县| 黄石市| 乌苏市| 五大连池市| 泾川县| 乌审旗| 蒙阴县| 景德镇市| 剑川县| 察隅县| 长治市| 和林格尔县| 昭平县| 泌阳县| 庆云县| 遂川县| 海阳市| 鸡西市| 舟曲县|