標(biāo)題:
單片機(jī)16矩陣鍵盤掃描程序,懂的拿走
[打印本頁]
作者:
brew9
時(shí)間:
2018-10-9 16:55
標(biāo)題:
單片機(jī)16矩陣鍵盤掃描程序,懂的拿走
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
//定義鍵盤連接的端口,設(shè)置鍵盤編碼數(shù)組
#define keyboard_px P3
u8 code key_tab[]={0xEE,0xDE,0xBE,0x7E,0xED,0xDD,0xBD,0x7D,0xEB,0xDB,0xBB,0x7B,0xE7,0xD7,0xB7,0x77};
//延時(shí)1ms函數(shù)(晶振11.0592MHz)
void delay(u16 num)
{
u16 x,y;
for(x=num; x>0; x--){for(y=113; y>0; y--);}
}
//掃描函數(shù),獲取按鍵對(duì)應(yīng)的索引值
u8 key_scan(void)
{
u8 temp1, temp2, i;
keyboard_px = 0xf0;
delay(5);
if(keyboard_px != 0xf0)
{
delay(5);
if(keyboard_px != 0xf0)
{
//獲取按鍵編碼
temp1 = keyboard_px;
keyboard_px = 0x0f;
delay(5);
temp2 = keyboard_px;
temp1 |= temp2;
//提取按鍵編碼對(duì)應(yīng)的數(shù)碼管編碼(或者返回i值,用于對(duì)其它數(shù)組的數(shù)值提。
for (i=0; i<16; i++)
{
if (key_tab[i] == temp1)
{
return i;
break;
}
}
}
}else{
return 0xff;
}
}
復(fù)制代碼
作者:
SHANWAZI
時(shí)間:
2021-3-23 22:31
非常感謝提供我已經(jīng)理解了您的程序思路了并且已經(jīng)
作者:
SHANWAZI
時(shí)間:
2021-3-23 22:38
在您的程序基礎(chǔ)上修改以下不知道是否可以?
把行號(hào)和列號(hào)分別取出來然后再做或運(yùn)算是否可以???
上程序請(qǐng)看 但是有一個(gè)問題貌似此時(shí)按鍵按下按鍵響應(yīng)速度明顯變慢了而且是跟KEY_Cnt消抖變量成正比這是什么情況呢???
void Matrix_KEY4x4_Scan_Drive()
{
static idata uint8 temp1,temp2;
static idata uint8 KEY_Cnt;
Matrix_KEY4x4_GPIO=0x0f;
temp1=Matrix_KEY4x4_GPIO;
if(Matrix_KEY4x4_GPIO!=0x0f)
{
KEY_Cnt++;
if(KEY_Cnt>=200)
{
KEY_Cnt=0;
if(Matrix_KEY4x4_GPIO!=0x0f)
{
temp1=Matrix_KEY4x4_GPIO&0x0f;//取低四位或取列號(hào)
Matrix_KEY4x4_GPIO=0xf0; //反轉(zhuǎn)
temp2=Matrix_KEY4x4_GPIO&0xf0;//取高四位獲取行號(hào)
switch(temp1|temp2)
{
case(0x7e):Key_Value=0x01;break;
case(0x7d):Key_Value=0x02;break;
case(0x7b):Key_Value=0x03;break;
case(0x77):Key_Value=0x04;break;
case(0xbe):Key_Value=0x05;break;
case(0xbd):Key_Value=0x06;break;
case(0xbb):Key_Value=0x07;break;
case(0xb7):Key_Value=0x08;break;
case(0xde):Key_Value=0x09;break;
case(0xdd):Key_Value=0x10;break;
case(0xdb):Key_Value=0x11;break;
case(0xd7):Key_Value=0x12;break;
case(0xee):Key_Value=0x13;break;
case(0xed):Key_Value=0x14;break;
case(0xeb):Key_Value=0x15;break;
case(0xe7):Key_Value=0x16;break;
default:break;
}
}
}
}
}
作者:
972803100
時(shí)間:
2021-3-24 12:56
感謝,非常清楚明白
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1