標(biāo)題: 單片機(jī)-矩陣鍵盤掃描函數(shù) 方便大家直接調(diào)用 [打印本頁(yè)]
作者: xzdlai 時(shí)間: 2017-6-27 22:59
標(biāo)題: 單片機(jī)-矩陣鍵盤掃描函數(shù) 方便大家直接調(diào)用
方便大家直接調(diào)用
unsigned char KeyScan(void) //鍵盤掃描函數(shù),使用行列逐級(jí)掃描法
{
unsigned char Val;
KeyPort=0xf0;//高四位置高,低四位拉低
if(KeyPort!=0xf0)//表示有按鍵按下
{
DelayMs(10); //去抖
if(KeyPort!=0xf0)
{ //表示有按鍵按下
KeyPort=0xfe; //檢測(cè)第一行
if(KeyPort!=0xfe)
{
Val=KeyPort&0xf0;
Val+=0x0e;
while(KeyPort!=0xfe);
DelayMs(10); //去抖
while(KeyPort!=0xfe);
return Val;
}
KeyPort=0xfd; //檢測(cè)第二行
if(KeyPort!=0xfd)
{
Val=KeyPort&0xf0;
Val+=0x0d;
while(KeyPort!=0xfd);
DelayMs(10); //去抖
while(KeyPort!=0xfd);
return Val;
}
KeyPort=0xfb; //檢測(cè)第三行
if(KeyPort!=0xfb)
{
Val=KeyPort&0xf0;
Val+=0x0b;
while(KeyPort!=0xfb);
DelayMs(10); //去抖
while(KeyPort!=0xfb);
return Val;
}
KeyPort=0xf7; //檢測(cè)第四行
if(KeyPort!=0xf7)
{
Val=KeyPort&0xf0;
Val+=0x07;
while(KeyPort!=0xf7);
DelayMs(10); //去抖
while(KeyPort!=0xf7);
return Val;
}
}
}
return 0xff;
}
/*------------------------------------------------
按鍵值處理函數(shù),返回掃鍵值
------------------------------------------------*/
unsigned char KeyPro(void)
{
switch(KeyScan())
{
case 0x7e:return 0;break;//0 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值
case 0x7d:return 1;break;//1
case 0x7b:return 2;break;//2
case 0x77:return 3;break;//3
case 0xbe:return 4;break;//4
case 0xbd:return 5;break;//5
case 0xbb:return 6;break;//6
case 0xb7:return 7;break;//7
case 0xde:return 8;break;//8
case 0xdd:return 9;break;//9
case 0xdb:return 10;break;//a
case 0xd7:return 11;break;//b
case 0xee:return 12;break;//c
case0xed:return 13;break;//d
case 0xeb:return 14;break;//e
case 0xe7:return 15;break;//f
default:return 0xff;break;
}
}
作者: xwd2010 時(shí)間: 2017-7-3 14:57
學(xué)習(xí)了,很有用。
作者: 笨笨兔 時(shí)間: 2017-7-4 17:06
學(xué)習(xí) 。 學(xué)習(xí)
作者: dsq2006 時(shí)間: 2017-8-14 20:10
好貼,學(xué)習(xí)了。
作者: 1927 時(shí)間: 2019-5-10 23:51
很棒
,收藏起來備用了
作者: acne 時(shí)間: 2019-10-4 11:20
收藏了
作者: 萌新咸魚 時(shí)間: 2020-6-12 11:32
keport是啥
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |