單片機(jī)常用按鍵電路
但如果端口非雙向,或按鍵數(shù)量大,端口數(shù)緊張需進(jìn)一步減少端口時(shí),也許就需要?jiǎng)e的方式來(lái)解決。
由圖可以看出,同樣按鍵數(shù),增加一個(gè)138譯碼器之后,CPU所用端口數(shù)就減為5了。
Px口的3位只需輸出0到7,譯碼器輸出就能得到和前面一樣的行掃描信號(hào)。這時(shí)候的程序處理流程,和上面的略有不同,主要是行的表示上不同。上面是行數(shù)的對(duì)應(yīng)位表示對(duì)應(yīng)行,下面的是行數(shù)的對(duì)應(yīng)值就是對(duì)應(yīng)行。程序框圖如所示。
逐行掃描還有另外一個(gè)用處,就是當(dāng)系統(tǒng)中有需要?jiǎng)討B(tài)掃描的裝置比如LED數(shù)碼管或點(diǎn)陣時(shí),行掃描線就可以為其提供動(dòng)態(tài)掃描信號(hào),這樣也是為了減少端口使用數(shù)量,達(dá)到信號(hào)復(fù)用并減少代碼量的目的。
除了上面提到的幾種按鍵電路,還有一種按鍵電路,使用更少的端口數(shù)量,如圖
該電路同矩陣式按鍵電路一樣,所不同的是行列端口使用的是同一個(gè)端口,并且矩陣的一條對(duì)角線上按鍵由二極管代替。如此圖所示,
按鍵數(shù)Knum=Pnum*(Pnum-1),其中Pnum就是使用的端口數(shù)。
以4個(gè)端口數(shù)為例,
一對(duì)一連接方式只能是4個(gè)按鍵;
不帶譯碼器最多4個(gè)按鍵,
使用2-4譯碼器或3-8譯碼器方式最多8個(gè)按鍵
而這種電路可以達(dá)到12個(gè)按鍵。此電路程序部分和不帶譯碼器的一樣,只是注意對(duì)角線上被二極管替代的地方?jīng)]有按鍵。
評(píng)論