2879|0

4

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ATmega128矩阵键盘问题 [复制链接]

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

KS8EHJ0NM9W17G0L_Y4L2%D.jpg (33.55 KB, 下载次数: 3)

波形图

波形图
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表