原创 4*4键盘扫描

2009-6-24 16:34 1958 5 5 分类: MCU/ 嵌入式

unsigned int key = 0xffff;    //扫描码,0有效


void key_scan(void){


    unsigned char temp;


    for(i = 1 ; i < 0x10 ; i << = 1){


        rPDATA | = 0x0f ;    //低四位为行,设置为输出,高4位为列,设置为输入


        rPDATA & = ~ i ;     //依次扫描,1,2,3,4行


        delay_ms(20) ;     //过滤回弹


        temp = rPDATA ;   //读端口高4位的值


        temp >> = 4 ;


        key << = 4 ;    


        key | = temp;    //把读到的值存到key中指定的位


    }


    return key ;


}


比如说,第一行第一列,对应的扫描码就是0xEFFF,全部写出来吧,还是,


{0xEFFF,0xDFFF,0xBFFF,0x7FFF,


 0xFEFF,0xFDFF,0xFBFF,0xF7FF,


 0xFFEF,0xFFDF,0xFFBF,0xFF7F,


 0xFFFE,0xFFFD,0xFFFB,0xFFF7


}


看书后写的,不知道有没有问题,明天仿下看看。


刚仿过了,这个方法是可以行的,附件是仿真的文件,我没有做防抖之类的保护,所以,按一个按键时,会发送多个字符,本意是按一次按键,发送一个对应的字符的https://static.assets-stash.eet-china.com/album/old-resources/2009/6/24/0833bdbf-6a2f-4443-adc0-5b0fb37b279a.zip

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /1 下一条