标题:
51单片机4*4矩阵键盘程序
[打印本页]
作者:
笨米达
时间:
2021-5-31 22:48
标题:
51单片机4*4矩阵键盘程序
接线: R1 --- P1.3 C1 --- P1.7
R2 --- P1.2 C1 --- P1.6
R3 --- P1.1 C1 --- P1.5
R4 --- P1.0 C1 --- P1.4
按键分布:
0 4 8 12
1 5 9 13
2 5 10 14
3 7 11 1
单片机源程序如下:
/*------------------------------------------------
延时函数
------------------------------------------------*/
void DelayMs(int ms)
{
int i;
while(ms--)for(i=0;i<120;i++);
}
/*------------------------------------------------
按键值扫描函数,返回扫键值
------------------------------------------------*/
unsigned char KeyScan()
{
unsigned char value=20;
key=0x0f;
if(key!=0x0f)
{
DelayMs(50);
if(key!=0x0f)
{
key=0x0f; //测试哪列按下
switch(key)
{
case 0x07:value=0;break; //0列按下
case 0x0b:value=1;break; //1列按下
case 0x0d:value=2;break; //2列按下
case 0x0e:value=3;break; //3列按下
}
}
}
key=0xf0;
if(key!=0xf0)
{
DelayMs(50);
if(key!=0xf0)
{
key=0xf0; //测试哪行按下
switch(key)
{
case 0x70:value=value;break; //0行按下
case 0xb0:value=value+4;break; //1行按下
case 0xd0:value=value+8;break; //2行按下
case 0xe0:value=value+12;break; //3行按下
}
}
}
return value;//返回按下的按键值
}
复制代码
作者:
cn_zhx
时间:
2021-6-1 18:35
这个通用性不强,一旦改了键盘的分布或者增加数量后,就得算一遍值。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1