新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)常用按鍵電路

單片機(jī)常用按鍵電路

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

但如果端口非雙向,或按鍵數(shù)量大,端口數(shù)緊張需進(jìn)一步減少端口時,也許就需要別的方式來解決。

還是拿上面的電路做例子,全行全列掃描是在檢測到有按鍵按下時,先檢測列然后再確定行。

換種檢測方式,就是先給定行,再檢測列。比如行端口Px每次輸出不是全部,而是只有一位輸出為低,也就是預(yù)先給定了行,那么對應(yīng)行有按鍵按下時,Py讀回的值就代表按鍵所在列。Px口按位逐一輸出低,每次讀回Py值,這樣的處理方式,更貼近掃描的含義。因為按鍵是機(jī)械動作,相對單片機(jī)運行速度來說,一次掃描流程足夠檢測到按鍵按下的動作。這種掃描方式就是逐行全列掃描。見流程圖。

這種掃描方式的特點是逐行掃描,有多少行就掃多少次,當(dāng)有按鍵按下時,行列數(shù)就確定了。雖然顯得麻煩點,但好處是Px只需是輸出而Py只是輸入,Px輸出每次只有唯一的一位為低,這樣的特點就可以對端口數(shù)進(jìn)行簡化,比如使用譯碼器。如圖所示:

由圖可以看出,同樣按鍵數(shù),增加一個138譯碼器之后,CPU所用端口數(shù)就減為5了。




Px口的3位只需輸出0到7,譯碼器輸出就能得到和前面一樣的行掃描信號。這時候的程序處理流程,和上面的略有不同,主要是行的表示上不同。上面是行數(shù)的對應(yīng)位表示對應(yīng)行,下面的是行數(shù)的對應(yīng)值就是對應(yīng)行。程序框圖如所示。

逐行掃描還有另外一個用處,就是當(dāng)系統(tǒng)中有需要動態(tài)掃描的裝置比如LED數(shù)碼管或點陣時,行掃描線就可以為其提供動態(tài)掃描信號,這樣也是為了減少端口使用數(shù)量,達(dá)到信號復(fù)用并減少代碼量的目的。


除了上面提到的幾種按鍵電路,還有一種按鍵電路,使用更少的端口數(shù)量,如圖


該電路同矩陣式按鍵電路一樣,所不同的是行列端口使用的是同一個端口,并且矩陣的一條對角線上按鍵由二極管代替。如此圖所示,

按鍵數(shù)Knum=Pnum*(Pnum-1),其中Pnum就是使用的端口數(shù)。

以4個端口數(shù)為例,

一對一連接方式只能是4個按鍵;

不帶譯碼器最多4個按鍵,

使用2-4譯碼器或3-8譯碼器方式最多8個按鍵

而這種電路可以達(dá)到12個按鍵。此電路程序部分和不帶譯碼器的一樣,只是注意對角線上被二極管替代的地方?jīng)]有按鍵。


上一頁 1 2 下一頁

關(guān)鍵詞: 單片機(jī)按鍵電

評論


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

關(guān)閉