<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 4×4矩陣鍵盤(pán)的工作原理與編程

4×4矩陣鍵盤(pán)的工作原理與編程

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

本文引用地址:http://dyxdggzs.com/article/201611/321762.htm

一、硬件工作原理的簡(jiǎn)單介紹

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

1、4×4矩陣鍵盤(pán)的工作原理

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

圖1為ME300B矩陣鍵盤(pán)電路圖,行線(xiàn)接P1.4-P1.7,列線(xiàn)接P1.0-P1.3。

圖1矩陣鍵盤(pán)電路

圖2按鍵排列

2、數碼管動(dòng)態(tài)掃描顯示電路

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

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

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

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

圖3數碼管電路

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

在ME300B單片機開(kāi)發(fā)系統中使用數碼管來(lái)顯示信息時(shí),要將JP2的2、3端短接。見(jiàn)圖3

二、演示程序的編程方法

1、4×4矩陣鍵盤(pán)的編程方法:

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

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

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

假設“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)值進(jìn)行邏輯或運算就得到其按鍵的特征編碼為“EDH”。

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

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

將用上述方法得到的16個(gè)按鍵的特征編碼按圖2按鍵排列的順序排成一張特征編碼與順序編碼的對應關(guān)系表,然后用當前讀得的特征編碼來(lái)查表,當表中有該特征編碼時(shí),它所在的位置就是對應的順序編碼。

1.3、矩陣鍵盤(pán)鍵值查找程序的具體編程

這個(gè)演示程序的主要功能有:

1、識別鍵盤(pán)有無(wú)按鍵按下,若無(wú)鍵按下返回。

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


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 4×4矩陣鍵盤(pán)單片

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>