新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 跟我學(xué)51單片機(四):獨立-矩陣鍵盤應(yīng)用與設(shè)計

跟我學(xué)51單片機(四):獨立-矩陣鍵盤應(yīng)用與設(shè)計

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

二、電路詳解

  電路圖如圖2 所示。

圖2

  從圖2 中可知獨立式按鍵采用每個按鍵單獨占用一根I/O 口線結(jié)構(gòu)。當按下和釋放按鍵時,輸入到單片機I/O 端口的電平是不一樣的,因此可以根據(jù)不同端口電平的變化判斷是否有按鍵按下以及是哪一個按鍵按下。從圖2(a) 中可以看出,按鍵和單片機引腳連接并加了上拉電阻,這樣當沒有按鍵按下的時候,I/O 輸入的電平是高電平,當有按鍵按下的時候,I/O 輸入的電平是低電平。

  雖然獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O 口線,因此,在按鍵較多時,I/O 口線浪費較大。對于比較復(fù)雜的系統(tǒng)或按鍵比較多的場合,可以用到,圖2(b) 中所示的為4×4的矩陣式鍵盤,其他矩陣式鍵盤的設(shè)計方法類似。

  4×4 的矩陣式鍵盤由4 根行線和4 根列線交叉構(gòu)成,按鍵位于行列的交叉點上,這樣就構(gòu)成了16 個按鍵。其中交叉點的行列線是不連接的,當按鍵按下的時候,此交叉點處的行線和列線導(dǎo)通。圖2(b) 行線通過上拉電阻接到VCC 上。當無鍵按下時,行線處于高電平狀態(tài);當有鍵按下時,行、列線在交點導(dǎo)通,此時,行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。然而,中的每條行線與4 條列線相交,交點的按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,鍵分析時必須將行線、列線信號配合起來作適當處理,才能確定閉合鍵的位置。

  值得注意的是本文介紹的,在傳統(tǒng)的矩陣鍵盤的輸出端加了一個四輸入與門芯片74HC21。當四路輸入有一個為低電平的時候,輸出為低電平。將74HC21 的輸出端接到單片機的外部中斷0(P32 管腳)上,這樣在實時性要求較高的情況下,設(shè)P00~P03 為全低等待按鍵觸發(fā),當任何一個按鍵按下的情況下,系統(tǒng)都會進入中斷服務(wù)程序,提高了鍵盤響應(yīng)時間,在系統(tǒng)實時性要求較高的情況下非常實用。本文的全部源程序見www.ele169.com。

  三、程序設(shè)計

  本文設(shè)計實例關(guān)鍵程序如下。

  獨立按鍵程序

  ……

  #define keyio P0 ( 1)

  #define key1 P0_3 ( 2)

  ……

  keyio|=0X0F; ( 3)

  if(key1==0) ( 4)

  {

  delay_nms(20); ( 5)

  if(key1==0) ( 6)

  {

  while(key1==0); ( 7)

  return 1; ( 8)

  }

  }

萬能遙控器相關(guān)文章:萬能遙控器代碼


51單片機相關(guān)文章:51單片機教程


單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理




關(guān)鍵詞: 51單片機 矩陣鍵盤

評論


相關(guān)推薦

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

關(guān)閉