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的,谢谢了,按键一按下的时候,就出现一连串高低的方波,按理说正常的矩阵键盘是按下就产生一个下降的波形的,就算有抖动也是前面和后面有一些毛刺,也不至于那么多的啊,求帮忙看一下程序,看问题出在那里,感激不尽了!!!!
此帖出自
小平头技术问答
一周热门 更多>