ATmega128矩阵键盘问题

2019-03-24 20:54发布

void key_scan()                   //键盘扫描函数
{
    uchar row,col,temp1,temp2,key;
                   DDRE =0xF0;                              //高四位为输出,低四位为输入
        PORTE=0x0F;                //高四位输出1,低四位为设为上拉输入
        temp1=0x10;                           
       
        for(row=0;row<4;row++)                 //检测是哪行按键按下
        {
            temp2=0x01;
                PORTE=~temp1;
                Delay_nus(20);                      //延时去抖动
                for(col=0;col<4;col++)              //检测是那列按键按下
                {
                                
                    if(!(PINE&temp2))
                    {
                                Delay_nus(20);
                       key=(col+row*4);             //存储键值
                       
                        }
                        temp2=(temp2<<1);
                }
        temp1*=2;
        }
       
       
        switch(key)                             //键值处理
        {
                 case 0x00:cursor_down();break;
                    
                case 0x01:cursor_up();break;
               
                case 0x02:;        break;
                       ……………………}

想请问一下,为什么,按下按键之后,会出现一连串的波形,也就是说,我本来想要光标移动一格,一按下去的时候却移动了很多格,抖动我消除了,也换过几种扫描方式,都是这样,折腾了好久了,求帮助。或者有试验通过的矩阵键盘代码分享一下,要ATMEGA128的,谢谢了,按键一按下的时候,就出现一连串高低的方波,按理说正常的矩阵键盘是按下就产生一个下降的波形的,就算有抖动也是前面和后面有一些毛刺,也不至于那么多的啊,求帮忙看一下程序,看问题出在那里,感激不尽了!!!! 此帖出自小平头技术问答
0条回答

一周热门 更多>