智能车制作

标题: 一个简单的键盘识别 [打印本页]

作者: 笑傲江湖    时间: 2009-8-19 22:17
标题: 一个简单的键盘识别
很简单的一个先反转法的程序,单独识别行或者列都可以。但是组合起来却识别不出来
各位大侠拔刀相助一下吧
//单独识别列程序
void key1(void)
{  
           DDRH=0x0f;//0000 1111   高四位为列row
           PTH_PTH0=1;
           PTH_PTH1=1;
           PTH_PTH2=1;
           PTH_PTH3=1;
           PTH |= 0x0f;     
           if(PTH!=0x0f) {
              delaynms(5);
              if(PTH!=0x0f)
             {
     
                PTH |=0x0f;
                switch( PTH)
                {
                    case 0x1f:
                         row=0;break;
                    case 0x2f:
                         row=1;break;
                    case 0x4f:
                         row=2;break;
                    case 0x8f:
   
                         row=3;break;
                    default:break;
                }               
             }
           }
}
//单独识别行程序 ,方法与上面类似
void key2(void) {
             DDRA=0xf0;// 1111 0000
             PORTA_BIT4=1;
             PORTA_BIT5=1;
             PORTA_BIT6=1;
             PORTA_BIT7=1;
             PORTA |= 0xf0;     //1111 0000 *
          if (PORTA!=0xf0){
             delaynms(5);
             if(PORTA!=0xf0){
                switch( PORTA)
                   {
                    case 0xf1:col=0;break;
                    case 0xf2:col=1;break;
                    case 0xf4:col=2;break;
                    case 0xf8:col=3;break;
                    default:break;
                   }
             }
          }
  
}  

//主程序
void main()
{
  for(;;) {
    key1();//键盘识别一直启用
    key2();
  }
}
作者: flyreally    时间: 2009-8-20 10:59
你可以看看这个,4*4矩阵键盘
http://www.ccbeta.net/show-72-1.html
1# 笑傲江湖
作者: whut_wj    时间: 2009-8-20 23:20
最简单的,最省外部资源的是AD转换。
作者: 401    时间: 2009-10-21 22:18
我给一个89C52单片机4*4KEY程序
void key()
{
      uchar a,b,c;
       P1=0xf0;
       a=P1;
       P1=0x0f;
       b=P1;
       c=a+b;

      if(c=0xee)
        P0=tab[0];
        delay(500);
       .......................
}
P1接4*4键盘P0接共阳数码管




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2