- 註冊時間
- 2009-8-6
- 最後登錄
- 2023-12-29
- 主題
- 查看
- 積分
- 216
- 閱讀權限
- 50
- 文章
- 230
- 相冊
- 0
- 日誌
- 0
 
狀態︰
離線
|
本帖最後由 Jackchen00 於 2011-9-15 17:36 編輯
大大
首先你必須先將鍵盤及LCM的介面搞清楚
4x4的鍵盤基本上都是用掃描的方式讀取
也就是說需要4IN+4OUT的接腳
你可以用一個PORT來處理鍵盤的掃描
將該PORT設定成4IN/4OUT的模式
然後設計一個timer來輪流掃描/讀取鍵盤值
例如 P0.0~0.3讀取,P0.4~0.7掃描
令 P0 = 0xef;//設初始值
if ((P0 | 0xf0) != 0xff) //如果 P0 | 0xf0 的值不等於 0xff 表示有第一排的按鍵被按下
{
.....//判斷是哪一個按鍵
}
當timer time-up時(以T0或T1計時產生中斷)
令 P0 = 0xdf;
if ((P0 | 0xf0) != 0xff) //如果 P0 | 0xf0 的值不等於 0xff 表示有第二排的按鍵被按下
{
.....//判斷是哪一個按鍵
}
下一次的中斷
再令 P0 = 0xbf;
if ((P0 | 0xf0) != 0xff) //如果 P0 | 0xf0 的值不等於 0xff 表示有第三排的按鍵被按下
{
.....//判斷是哪一個按鍵
}
下一次的中斷
再令 P0 = 0x7f;
if ((P0 | 0xf0) != 0xff) //如果 P0 | 0xf0 的值不等於 0xff 表示有第四排的按鍵被按下
{
.....//判斷是哪一個按鍵
}
四個動作循環,就可讀出16個按鍵了
當然程式中還得加上debounce及判斷按鍵是否放開的程式 |
-
總評分: 威望 + 2
查看全部評分
|