用CH549开发一款触摸的数字键盘

           最近有个数字键盘的小项目要做,前段时间搜索了一些芯片发现CH549似乎可以单片即可实现。咨询了下价格也非常优秀,就打了块板子回来测试,今天捣鼓了半天才把下载的问题解决。网上买的这种下载,居然弄不了哎,算了,用来用串口吧!

触摸没有问题了,目前就是键盘的值后面显示的字符j_0059.gif,而且电脑像是一直按住了SHift键一样,鼠标点桌面图标或是keil里面的文档,它都会像作框选............!j_0065.gif,即便我断开USB也不能释怀!!!这是什么状况?求解!

image.pngimage.pngimage.pngimage.pngimage.png

通常键盘在实现shift组合键的时候,shift键本身会作为一个值体现在USB包的首字节,有可能是shift键状态一直没有清除。截图中的代码每次将HIDKey[2]的值清空,没有关注到HIDKey[0]的值当前是否需要清空。

可以在电脑上安装通用的抓包软件比如BUSHOUND、WIRESHARK来对正常键盘抓包,分析一下shift的组合键在数据传输上是怎么实现的,即可对应到单片机代码的行为上。


谢谢!我把image.pngHIDKey[0]清空就可以了。

现在又碰到这样一个问题,16个通道,目前只有AIN7这个通道没有反应?不知道除了这里,还有哪里要设定?

image.png

image.png


初始化打印出来的通道正常也只有14个,有一个显示zYw?不知道为啥?

image.png


在线等待中!


算了,自己找着问题了,低级问题,改成16就好了!j_0057.gif


整了3块板子,一块正常的,其它两片有这个么个问题,程序是同版,我按一个键,但是输出会带多些字符出来?这是什么情况?

image.png


板子上的一个按键是固定的一个值吗?按照你的描述,按一个键一次,不仅出来了多个值,且有不同的值。可以接串口打印监控一下触摸按键的触发次数,是否是触摸按键误触发导致的。USB可以在电脑上装一个BUSHOUND看一下实际包传输是怎么样的,是否完全为代码中填到USB缓冲区中的数据。


有接串口监控看了,只有一个键触发,


用BUSHOUND看了,缓冲区里又确实有其它值,所以在单片机把其它部分给它清一下,目前正常了image.png


但是又有个新问题。关于灵敏度的调节,一直调不出个规律!


每个按建都定义了一下阀值,加了块亚克力板后,灵敏度下降了很多。现在阀值太小了,很多奇奇怪怪的问题出来!

image.png

image.png


没有亚克力的情况,差值有1000,加上亚克力会衰减那么多!怎么影响那么大?

TouchKey & USB Device demo start ...

 CH0:3658  CH1:3538  CH2:3330  CH3:3280  CH4:3254  CH5:3306  CH6:3419  CH7:3506  CH8:3277  CH9:3414  CH10:3511  CH11:3549  CH12:3221  CH13:3341  CH14:3413  CH15:3502 

SET CONFIG.

Light on Num Lock LED!

ch 0 pressed,value:2245

ch 0 Release,value:3626

ch 1 pressed,value:2207

ch 1 Release,value:3517

ch 2 pressed,value:2053

ch 2 Release,value:3299

ch 3 pressed,value:2110

ch 3 Release,value:3239

ch 4 pressed,value:1351

ch 4 Release,value:3210

ch 5 pressed,value:2125

ch 5 Release,value:3272

ch 6 pressed,value:2392

ch 6 Release,value:3426

ch 7 pressed,value:2325

ch 7 Release,value:3464

ch 11 pressed,value:2469

ch 10 pressed,value:2276

ch 11 Release,value:3596

ch 10 Release,value:3473

ch 9 pressed,value:2294

ch 9 Release,value:3378

ch 8 pressed,value:2228

ch 8 Release,value:3240

ch 15 pressed,value:1345

ch 15 Release,value:3455

ch 14 pressed,value:2233

ch 14 Release,value:3387

ch 13 pressed,value:2248

ch 13 Release,value:3324

ch 12 pressed,value:2145

ch 12 Release,value:3269



有没有解决方案?


1、保证亚克力板跟弹簧片充分接触,不能有空隙;

2、走线尽可能细和短,尽可能避免过孔;

3、软件上不同通道根据初始值判断赋不同的充电脉宽宽度值,理论上不同通道检测阈值也应根据实际情况微调;

4、对采样的ADC值进行滤波处理,滤除掉明显偏差的值;


你好!

1.亚克力板我与弹簧有螺丝固定,压的很紧。

2.触摸键的走线是0.2mm,中间没有过孔。布局如下.现在测试,右边的那一排的按键感觉更加灵敏,靠IC这边反而不太灵敏。

131748kjdj7kckdx6vdrc7.png.thumb.jpg

3.软件已有做了滤波!


133321oiepqafqafaahfaa.png.thumb.jpg



只有登录才能回复,可以选择微信账号登录