您尚未登录。

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

goodgoodstudy
会员
注册时间: 2017-09-15
已发帖子: 61
积分: 61

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

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

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

离线

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

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
积分: 61

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

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

离线

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

xujun
会员
注册时间: 2018-03-21
已发帖子: 33
积分: 33

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

实时扫描嘛,

离线

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

KingJin
会员
注册时间: 2018-04-12
已发帖子: 106
积分: 101

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

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



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

离线

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

lcfmax
会员
注册时间: 2018-04-13
已发帖子: 319
积分: 272.5

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

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

离线

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

apleilx
会员
注册时间: 2018-10-23
已发帖子: 36
积分: 35

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

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

离线

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

psst
会员
注册时间: 2019-01-22
已发帖子: 91
积分: 36.5

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

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

离线

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

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





离线

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

psst
会员
注册时间: 2019-01-22
已发帖子: 91
积分: 36.5

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

离线

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

psst
会员
注册时间: 2019-01-22
已发帖子: 91
积分: 36.5

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


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

离线

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

山无棱
会员
注册时间: 2017-10-23
已发帖子: 116
积分: 116

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

psst 说:

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

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

离线

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

wujique
会员
注册时间: 2018-10-30
已发帖子: 168
积分: 162

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
积分: 116

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

学习楼上朋友的经验

离线

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

armstrong
会员
注册时间: 2019-04-10
已发帖子: 246
积分: 180.5

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

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

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn