找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1728|回復(fù): 4
收起左側(cè)

51單片機關(guān)于矩形按鍵中斷掃描的問題

[復(fù)制鏈接]
ID:1109540 發(fā)表于 2024-1-17 20:52 | 顯示全部樓層 |閱讀模式
void InterruptTimer0() interrupt 1
{
unsigned char i;
static unsigned char keyout = 0; //矩陣按鍵掃描輸出索引
static unsigned char keybuf[4][4] = { //矩陣按鍵掃描緩沖區(qū)
{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}
};
TH0 = 0xFC; //重新加載初值
TL0 = 0x67;
//將一行的 4 個按鍵值移入緩沖區(qū)
keybuf[keyout][0] = (keybuf[keyout][0] << 1) | KEY_IN_1;
keybuf[keyout][1] = (keybuf[keyout][1] << 1) | KEY_IN_2;
keybuf[keyout][2] = (keybuf[keyout][2] << 1) | KEY_IN_3;
keybuf[keyout][3] = (keybuf[keyout][3] << 1) | KEY_IN_4;
//消抖后更新按鍵狀態(tài)
for (i=0; i<4; i++) //每行 4 個按鍵,所以循環(huán) 4 次
{
if ((keybuf[keyout][i ] & 0x0F) == 0x00)
[i ]{ //連續(xù) 4 次掃描值為 0,即 4*4ms 內(nèi)都是按下狀態(tài)時,可認為按鍵已穩(wěn)定的按下
[i ]KeySta[keyout][i ] = 0;
}
else if ((keybuf[keyout][i ] & 0x0F) == 0x0F)
{ //連續(xù) 4 次掃描值為 1,即 4*4ms 內(nèi)都是彈起狀態(tài)時,可認為按鍵已穩(wěn)定的彈起
KeySta[keyout][i ] = 1;
}
}
//執(zhí)行下一次的掃描輸出
keyout++; //輸出索引遞增
keyout = keyout & 0x03; //索引值加到 4 即歸零
switch (keyout) //根據(jù)索引,釋放當(dāng)前輸出引腳,拉低下次的輸出引腳
{
case 0: KEY_OUT_4 = 1; KEY_OUT_1 = 0; break;
case 1: KEY_OUT_1 = 1; KEY_OUT_2 = 0; break;
case 2: KEY_OUT_2 = 1; KEY_OUT_3 = 0; break;
case 3: KEY_OUT_3 = 1; KEY_OUT_4 = 0; break;
default: break;
}
}請問比如我按了第4行第2個鍵,就是output4為0,keyln2為0,在代碼中是怎么體現(xiàn)的我按的這個鍵?
2024.1.13.1.png
2024.1.13.2.png
回復(fù)

使用道具 舉報

ID:161164 發(fā)表于 2024-1-17 22:20 | 顯示全部樓層
這里是不是都缺了?
2024-01-17_221821.png

回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2024-1-18 08:34 | 顯示全部樓層
矩陣按鍵不需要寫這么繁瑣,只要對行列各掃描一次就行了。
回復(fù)

使用道具 舉報

ID:924942 發(fā)表于 2024-1-18 10:07 來自觸屏版 | 顯示全部樓層
金沙灘的教程,視頻里講得很清楚,不懂多看幾遍
回復(fù)

使用道具 舉報

ID:226055 發(fā)表于 2024-1-18 10:37 | 顯示全部樓層
    1、矩陣按鍵的檢測確實比較成熟,原理有多種,下介紹的是比較常用的一種方式。
矩陣原理1.jpg

    2、提供下STC8A8K64D4的例子,基于下圖艾克姆的IK-64D4開發(fā)板。應(yīng)該也是很方便你移植程序的。
實物連接1.jpg



matrix_keyboard_4x4.rar

22.67 KB, 下載次數(shù): 2

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表