一个C语言写的键盘扫描小程序

[复制链接]
20738|62
wsjhy1 发表于 2010-2-5 23:42 | 显示全部楼层
可以用中断去做
xfgood3872 发表于 2010-4-7 13:57 | 显示全部楼层
zjw5000 发表于 2010-4-7 17:23 | 显示全部楼层
DM_man 发表于 2010-4-7 20:57 | 显示全部楼层
nighn 发表于 2010-4-8 12:02 | 显示全部楼层
顶起!感谢版主。
qq8682 发表于 2010-4-20 20:48 | 显示全部楼层
12楼大虾写的很好,但我有个问题,这个程序无法识别常闭按键和点按键混合使用的地方啊!怎么改可以呢???
麻辣鸭脖子 发表于 2010-4-20 22:10 | 显示全部楼层
哇!看了点评收获多多
nyf1972 发表于 2010-4-21 21:26 | 显示全部楼层
if(key1)
       {
        if(CntKey1++==cKeyFilterValue)
             {
             Key1Flag=1;
             }
            else
            if(CntKey1>cKeyFilterValue)
                 {
                 CntKey1=cKeyFilterValue+1;
                 }
       }
       else
       {
       CntKey1=0;
       }
zhjx0403 发表于 2010-4-22 22:10 | 显示全部楼层
xfgood3872 发表于 2010-4-23 12:52 | 显示全部楼层
7# 红金龙吸味
就是
liuyushuiyao 发表于 2010-4-23 12:57 | 显示全部楼层
找凳子中 这个帖子要看一天
luyuan0628 发表于 2010-4-23 21:23 | 显示全部楼层
作为初学者我看到过一个很简单的键盘扫描程序如下:(4乘4)
uchar Keyscan(void)
{
uchar i,j, temp, Buffer[4]= {0xef, 0xdf, 0xbf, 0x7f};
for(j=0; j<4; j++)
{
P1= Buffer[j];
delay(5);
temp= 0x01;
for(i=0; i<4; i++)
{
if(!(P1& temp))
{
return (i+j*4);
temp <<= 1;
}
}
}
Martin221 发表于 2010-4-24 09:44 | 显示全部楼层
学以致用,顶,支持!cool。
dulianling 发表于 2010-4-24 12:38 | 显示全部楼层
动态扫描就行啊 记录状态 可以翻一下我早期的一篇帖子
原野之狼 发表于 2010-1-7 22:08

OK,方法有很多都能实现相同的功能,采用定时动态扫描、记录状态、多次比较。程序好些、易懂,抗干扰也好。
电子空对穴 发表于 2010-4-24 18:56 | 显示全部楼层
我做程序,用轻触按键,就不消抖,也没见出什么问题
rokwlo 发表于 2011-9-10 16:57 | 显示全部楼层
我一直不明白这一段为什么加了temp=P3就能跳出循环,加了temp=P3,temp不是依然不等于0xf0吗?那不是依然在循环内无法跳出来吗?
while(temp!=0xf0)
   {
    temp=P3;
    switch(temp)
    {
     case 0xee:num=1;
      break;
     case 0xde:num=2;
      break;
     case 0xbe:num=3;
      break;
     case 0x7e:num=4;
      break;
     case 0xed:num=5;
      break;
     case 0xdd:num=6;
      break;
     case 0xbd:num=7;
      break;
     case 0x7d:num=8;
      break;
     case 0xeb:num=9;
      break;
     case 0xdb:num=10;
      break;
     case 0xbb:num=11;
      break;
     case 0x7b:num=12;
      break;
     case 0xe7:num=13;
      break;
     case 0xd7:num=14;
      break;
     case 0xb7:num=15;
      break;
     case 0x77:num=16;
      break;
    }
bpzm1987 发表于 2011-9-13 23:15 | 显示全部楼层
向各位师傅们学习!
dandan5241 发表于 2011-10-29 18:45 | 显示全部楼层
C语言实现按键扫描
darbdyp 发表于 2011-10-29 21:20 | 显示全部楼层
第一次发帖,留个脚印,顺便学习.
chenshu8686 发表于 2011-10-29 23:03 | 显示全部楼层
学习啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部