WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2017-12-20 17:58:27

goodgoodstudy
会员
注册时间: 2017-09-15
累计积分: 61

最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

比如扫描时间,列切换前后时间,去抖动时间等怎么分配才算最合理 ?

离线

#2 2017-12-20 18:00:03

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

漏也可能是硬件问题。
扫描转换成一个阵列码 然后接一个按键检测函数

void Key_scan(unsigned key_lab,unsigned char *key)
{
    #define KEY_DWON 20    //
    #define KEY_FREE 20   //Êͷżì²â´ÎÊý
    static unsigned char key_same_times=0;
    static unsigned char last_key=0;
    static bit if_free=0;

   
    if(if_free) //ÊÍ·ÅÖмì²â°´¼ü
    {
       
        if((last_key==key_lab)&&(key_lab!=0))
        {
             if(key_same_times<255)
             {
                 key_same_times++;
             }
             else;
        }
        else key_same_times=0;
       
        if(key_same_times>=KEY_DWON)
        {
           
            *key=key_lab;
            key_same_times=0;
            if_free=0;       
        }
       
       
    }
    else       //¼ì²â°´¼üÊÍ·Å
    {
        if(key_lab==0)key_same_times++;
        else key_same_times=0;
       
   
       
        if(key_same_times>=KEY_FREE)
        {
           
            if_free=1;
            key_same_times=0;
           
        }
        else ;
       
       
       
    }
   
    last_key=key_lab;
   
}

离线

#3 2017-12-20 18:00:31

goodgoodstudy
会员
注册时间: 2017-09-15
累计积分: 61

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

我准备 用中断搞 了。行驱动用4MS的中断去轮流拉低IO。然后 列做成2MS去抖的IO中断。用中断采集。

离线

#4 2018-06-28 14:02:44

xujun
会员
注册时间: 2018-03-21
累计积分: 33

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

实时扫描嘛,

离线

#5 2018-06-28 15:52:13

KingJin
会员
注册时间: 2018-04-12
累计积分: 79

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

矩阵键盘有标准做法的。
列: 固件输出低电平(为了拉下行)
行 :硬件上拉 固件做下降沿中断   中断程序中做20MS延时去抖,确定是有按键按下后(依次把列变成输入看看哪一个列跟随变1 这样就开确定列了)



可能说的有点乱,大概就是这么一个流程。
欢迎大家探讨。

离线

#6 2018-07-05 11:59:21

lcfmax
会员
注册时间: 2018-04-13
累计积分: 163

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

估计是行列扫描逻辑没控制好吧,用定时扫描的方法

离线

#7 2018-10-24 13:54:47

apleilx
会员
注册时间: 2018-10-23
累计积分: 34

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

用个2ms的定时器中断,在中断中记录按键状态并和前次采集对比滤波比较稳妥

离线

#8 2019-01-25 09:09:43

psst
会员
注册时间: 2019-01-22
累计积分: 62

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

我想用lcd的io口做4*4矩阵键盘,要怎么实现,改下设备树就行吗?要怎么个思路

离线

#9 2019-01-25 09:21:03

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,562

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

离线

#10 2019-01-25 09:29:18

psst
会员
注册时间: 2019-01-22
累计积分: 62

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

离线

#11 2019-03-06 10:18:15

psst
会员
注册时间: 2019-01-22
累计积分: 62

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?


matrix_keypad需要IO支持中断才行吧,如果用LCD的IO口,好像没有中断功能,会报错

离线

#12 2019-03-06 10:38:27

山无棱
会员
注册时间: 2017-10-23
累计积分: 116

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

psst 说:

matrix_keypad需要IO支持中断才行吧,如果用LCD的IO口,好像没有中断功能,会报错

看了一下代码,应该是会出错, PB,PG有中断,这组应该可以用。

离线

#13 2019-03-07 08:58:36

wujique
会员
注册时间: 2018-10-30
累计积分: 29

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

你没有说你的扫描流程,所以,没办法直接分析问题。
我写的一个文档,请参考。
none.pdf

用定时器加IO的方法,不需要中断。
有一个可能会忽略的问题就是:IO口电平变化是需要时间的,如果你是拉低列IO,然后延时一两个us就读行状态。
可能会有问题的。因为,正常的IO电平变化时间是ns级别,但,如果天气变化加上PCB板材不同,甚至是PCB布线的修改,
IO电平切换会跳到us级别。

离线

#14 2019-03-07 09:01:20

山无棱
会员
注册时间: 2017-10-23
累计积分: 116

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

学习楼上朋友的经验

离线

#15 2019-11-30 22:46:47

armstrong
会员
注册时间: 2019-04-10
累计积分: 17

Re: 最近做个8X11行列键盘,我测试都很好,但是客户说有漏按键的。各位有什么经验介绍一下?

在定时器中断内执行一个状态机可以:初始拉低几个管脚 -> 读IO,拉低下一组 -> 读IO,拉低下一组 -> ……
如此重复下去即可。

离线

页脚