智能车制作

标题: XS128矩阵键盘扫描程序 [打印本页]

作者: excellentlizhen    时间: 2011-10-15 13:47
标题: XS128矩阵键盘扫描程序
   各位大侠,我急需要一个用XS128单片机控制的矩阵键盘程序,特献上微薄贡金,再次感谢!

这里是我自己做的程序,有问题,怀疑是DDRB方向寄存器的问题,也试过设置方向寄存器,但可能是自己的原因程序一直不对,然后需要补充的是,硬件部分和液晶显示部分没有问题,这个键盘扫描程序在51上测试的时候也是没有问题的,在飞思卡尔上就有问题,特附上矩阵键盘扫描程序,望各位大侠指点。

               /***********键盘扫描*************/
void key_getch()
{        
   uchar X,Y,Z;
   PORTB=0X0F;
    if(PORTB!=0X0F)
      {
         Dly_ms(10);//延时10ms,消除抖动
        if(PORTB!=0X0F)
          {         
            X=PORTB;
            PORTB=0XF0;
            Y=PORTB;
            Z=X|Y;
      switch(Z)
         {
           case 0x77:k=0;break;
           case 0xb7:k=1;break;
           case 0xd7:k=2;break;
           case 0xe7:k=3;break;
           case 0x7b:k=4;break;
           case 0xbb:k=5;break;
           case 0xdb:k=6;break;
           case 0xeb:k=7;break;
           case 0x7d:k=8;break;
           case 0xbd:k=9;break;
                 
         
           case 0xdd:
                 state=1;break;
           case 0xed:
        chn_disp (12,0x80,tab1);
        chn_disp (2,0x8E,tab2);
        break;
           case 0x7e:
                  state=0;
         kk=0;
      clrram ();
         break;                 
           case 0xbe:
                   state=2;
       break;
           case 0xde:k='E';break;
           case 0xee:k='F';break;
     default: break;
        }
  

   if((k<=9)&&(k>=0))
   {

      
    kk=kk*10+k;
     k=-1;
}   
  
   
}
}
while(1)
{
   PORTB=0X0F;
   if(PORTB==0X0F) break;
   }
}
作者: 醉清风    时间: 2011-11-3 21:58
试试这个
是4*4键盘的
程序能编译
没有报错误
#define KEY_MASK 0xf0
#define KEYIO PORTA
void DelayKey(int cnt)
{
int i,j;
for(i=0;i<cnt;i++)
{
j=0x1300;
while(j--);
}
}
void KeyInt(void)   
{
DDRA=~KEY_MASK;
}
unsigned char KeyScan()
{
unsigned char key,ch;
KEYIO=0xf0;
key=KEYIO;
if(key!=KEY_MASK)
{
DelayKey(10);
DDRA=KEY_MASK;
KEYIO=0x0f;
ch=KEYIO;
while(KEYIO & 0x0f !=0xf0);
key|=ch;
switch(key)
{
case 0xee:key=0x00;break;
case 0xde:key=0x01;break;
case 0xbe:key=0x02;break;
case 0x7e:key=0x03;break;
case 0xed:key=0x04;break;
case 0xdd:key=0x05;break;
case 0xbd:key=0x06;break;
case 0x7d:key=0x07;break;
case 0xeb:key=0x08;break;
case 0xdb:key=0x09;break;
case 0xbb:key=0x0a;break;
case 0x7b:key=0x0b;break;
case 0xe7:key=0x0c;break;
case 0xd7:key=0x0d;break;
case 0xb7:key=0x0e;break;
case 0x77:key=0x0f;break;
}
return key;
}
key=KEY_MASK;
return KEY_MASK;
}
作者: 413455351    时间: 2011-11-3 22:28
hao




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