打印

如何编写程序,从矩阵键盘中分离出单个按键使用?

[复制链接]
2849|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
开始的梦想|  楼主 | 2010-7-21 21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问大家,怎样在不增加按键的情况下,如何从矩阵键盘中分离出3个按键使用,并要求使用3个按键时,其它按键无效,
程序如下,怎样修改呢?

unsigned char getkey(void)
{
unsigned  char rcode,ccode;
while (key_scan())
delay(1);
P1=0x0f;           
rcode=P1&0x0f;     
if(rcode!=0x0f)   
  {
   delay(1);        
i   f(rcode!=0x0f)
       {
      rcode=P1&0x0f;
      P1=rcode|0xf0;
      ccode=P1&0xf0;
      return(rcode+ccode);
       }
    }

return(0xff);  
}

unsigned char keyscan(void)
{
getkey();
switch(keybord)
  {
case 0xee:keynum=1;K1=1;break;//要使用k1、k2、k3
case 0xed:keynum=2;K2=1;break;//
case 0xeb:keynum=3;K3=1;break;//
case 0xe7:keynum=11;break;

case 0xde:keynum=4;break;
case 0xdd:keynum=5;break;
case 0xdb:keynum=6;break;
case 0xd7:keynum=13;break;

case 0xbe:keynum=7;break;
case 0xbd:keynum=8;break;
case 0xbb:keynum=9;break;
case 0xb7:keynum=14;break;

case 0x7e:keynum=10;break;
case 0x7d:keynum=0;break;
case 0x7b:keynum=12;break;
case 0x77:keynum=15;break;
default:break;
   }
while (~key_scan())
delay(1);
return 0;
}


void main()
{
   lcd_rest() ;              
  dis_inputpsw();
  keyscan();
  while(1)
   {
     while (keynum>=1 && keynum<=3) //非1-3的数字则不响应
     keyscan();

     if(K1)              
          {
            dis_pswwrong(); //显示
           }
      if(K2)
          {
             dis_changepsw();
           }
      if(K3)
         {
           dis_newpsw();
          }
     }
}

相关帖子

沙发
ayb_ice| | 2010-7-22 08:47 | 只看该作者
什么叫分离

使用特权

评论回复
板凳
开始的梦想|  楼主 | 2010-7-22 09:25 | 只看该作者
哦,因为主程序中需要3个按键,而其它按键则不响应。

使用特权

评论回复
地板
欧阳青云| | 2010-7-23 15:26 | 只看该作者
你按其他按键(除了那三个按键外的按键)时让其空操作就行啦。

使用特权

评论回复
5
木字四点水| | 2010-7-23 16:07 | 只看该作者

使用特权

评论回复
6
fm0597| | 2011-5-28 17:28 | 只看该作者
[quote][/quote]

使用特权

评论回复
7
haolaishi| | 2011-9-10 19:45 | 只看该作者
Mark

使用特权

评论回复
8
sysdriver| | 2011-9-10 20:46 | 只看该作者
唉。。。我的理解能太差了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

58

帖子

1

粉丝