跟我學51單片機(四):獨立-矩陣鍵盤應用與設計
二、電路詳解
電路圖如圖2 所示。
圖2
從圖2 中可知獨立式按鍵采用每個按鍵單獨占用一根I/O 口線結構。當按下和釋放按鍵時,輸入到單片機I/O 端口的電平是不一樣的,因此可以根據不同端口電平的變化判斷是否有按鍵按下以及是哪一個按鍵按下。從圖2(a) 中可以看出,按鍵和單片機引腳連接并加了上拉電阻,這樣當沒有按鍵按下的時候,I/O 輸入的電平是高電平,當有按鍵按下的時候,I/O 輸入的電平是低電平。
雖然獨立式按鍵電路配置靈活,軟件結構簡單,但每個按鍵必須占用一根I/O 口線,因此,在按鍵較多時,I/O 口線浪費較大。對于比較復雜的系統(tǒng)或按鍵比較多的場合,可以用到矩陣鍵盤,圖2(b) 中所示的為4×4的矩陣式鍵盤,其他矩陣式鍵盤的設計方法類似。
4×4 的矩陣式鍵盤由4 根行線和4 根列線交叉構成,按鍵位于行列的交叉點上,這樣就構成了16 個按鍵。其中交叉點的行列線是不連接的,當按鍵按下的時候,此交叉點處的行線和列線導通。圖2(b) 行線通過上拉電阻接到VCC 上。當無鍵按下時,行線處于高電平狀態(tài);當有鍵按下時,行、列線在交點導通,此時,行線電平將由與此行線相連的列線電平決定。這是識別按鍵是否按下的關鍵。然而,矩陣鍵盤中的每條行線與4 條列線相交,交點的按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,鍵分析時必須將行線、列線信號配合起來作適當處理,才能確定閉合鍵的位置。
值得注意的是本文介紹的矩陣鍵盤,在傳統(tǒng)的矩陣鍵盤的輸出端加了一個四輸入與門芯片74HC21。當四路輸入有一個為低電平的時候,輸出為低電平。將74HC21 的輸出端接到單片機的外部中斷0(P32 管腳)上,這樣在實時性要求較高的情況下,設P00~P03 為全低等待按鍵觸發(fā),當任何一個按鍵按下的情況下,系統(tǒng)都會進入中斷服務程序,提高了鍵盤響應時間,在系統(tǒng)實時性要求較高的情況下非常實用。本文的全部源程序見www.ele169.com。
三、程序設計
本文設計實例關鍵程序如下。
獨立按鍵程序
……
#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)
}
}
萬能遙控器相關文章:萬能遙控器代碼
51單片機相關文章:51單片機教程
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論