C语言编程,利用51
单片机控制一些东西,矩阵键盘扫描时遇到了问题,可以计算出键值号,比如key=1,但是如果我再按一下1号键,key还是等于1,那么我该怎么判断同一个键被连续按了多少次呢?热心人帮帮我,谢谢了!!!作为奖励给大家一本很好的
电子书,《世界是平的--21世纪简史》
-
-
The World is Flat.pdf
下载积分: 积分 -1 分
1.6 MB, 下载次数: 48, 下载积分: 积分 -1 分
-
-
世界是平的(完整).pdf
下载积分: 积分 -1 分
1.31 MB, 下载次数: 50, 下载积分: 积分 -1 分
键盘扫描是持续的,可是你的处理按键的程序是唯一的,每次不同的按键按下,你总有一个处理的地方吧!不可以一直会跳进那个地方呀!所以,你只需在那个处理的地方加一就行了,或许我还是没有明白你想要表达的意思
uchar scan_key()
{
uchar hang,lie;
P2=0X0F;
if(P2!=0X0F)
delayms(10);
if(P2!=0X0F)
{
switch(P2&0X0F)
{
case 0x0e:hang=0;break;
case 0x0d:hang=1;break;
case 0x0b:hang=2;break;
case 0x07:hang=3;break;
}
P2=0XF0;
switch(P2&0XF0)
{
case 0xe0:lie=0;break;
case 0xd0:lie=1;break;
case 0xb0:lie=2;break;
case 0x70:lie=3;break;
}
P2=0X0F;
while(P2!=0X0F);
key=hang*4+lie;
}
return(key);
}
每次扫描完都有一个键值号,比如按下一键。则key一直就是1,在没按其它键的的时候,键值号不变,我如果连续按一键,就是一直按相同的键,键值号就一直是1,那我怎么计算出这同一个键被按了多少次?谢谢你持续的回答!
uchar scan_key()
{
uchar hang,lie;
P2=0X0F;
if(P2!=0X0F)
delayms(10);
if(P2!=0X0F)
{
switch(P2&0X0F)
{
case 0x0e:hang=0;break;
case 0x0d:hang=1;break;
case 0x0b:hang=2;break;
case 0x07:hang=3;break;
}
P2=0XF0;
switch(P2&0XF0)
{
case 0xe0:lie=0;break;
case 0xd0:lie=1;break;
case 0xb0:lie=2;break;
case 0x70:lie=3;break;
}
P2=0X0F;
while(P2!=0X0F);
key=hang*4+lie;
}
return(key);
}
就这样一个矩阵键盘扫描函数,怎么编一个函数判断同一个按键被连续按了多少次
一周热门 更多>