找回密码
 立即注册
查看: 585|回复: 7

STC8H4K64TLCD触摸按键触摸后键值有时无变化

[复制链接]

2

主题

1

回帖

26

积分

新手上路

积分
26
发表于 2024-4-27 18:06:24 | 显示全部楼层 |阅读模式
本帖最后由 pantech 于 2024-4-30 12:10 编辑

我用STC8H4K64TLCD芯片设计的16通道触摸按电路,连续读按键值,触摸后读到的键值非常不稳定;有时反应挺快的触摸后键值发上变小了,有时需要按住不动停几秒后才会发生变化。感觉是芯片触摸中断没读出实时数据,找扁了STC8H.PDF资料中也没发现有触摸中断的用法介绍,只有在例程有中断程序。我想实现串口发送读某个按键的命令后再启动扫描,直接读出固定按键的实时感应值,请问楼主或哪位高手能提供下帮助,万分感谢!
截图202404271810363351.jpg
截图202404271814088402.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-4-27 18:14:46 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-4-27 18:15:49 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-4-27 18:16:57 | 显示全部楼层
截图202404271816434745.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-5-6 11:34:20 | 显示全部楼层
STC的触摸按键外设的读数更新跟你的设置有关,一般设置在20~100ms之间,不存在几秒钟的情形,可以参考我发的例程和视频。
触摸按键都是硬件完成的,不存在反映迟钝的说法,在设定的扫描周期内就会更新一次读数,如果发现反映缓慢都是软件处理的问题,硬件都会忠实于感应电容的变化而提供读数。
可以用STC的串口绘图功能配合监控触摸读数的变化。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:207
  • 最近打卡:2025-05-01 11:29:06

0

主题

4

回帖

854

积分

高级会员

积分
854
发表于 2024-6-13 17:51:37 | 显示全部楼层
梁*** 发表于 2024-5-6 11:34
STC的触摸按键外设的读数更新跟你的设置有关,一般设置在20~100ms之间,不存在几秒钟的情形,可以参考我发 ...

梁工,触摸按键扫描一次的时间怎么计算的?

点评

TSCFG1 = (7  详情 回复 发表于 2024-6-13 22:54
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-6-13 22:54:34 | 显示全部楼层
本帖最后由 梁工 于 2024-6-13 23:07 编辑
嵌入*** 发表于 2024-6-13 17:51
梁工,触摸按键扫描一次的时间怎么计算的?

TSCFG1  = (7<<4) + 6;        //B6~B4:开关电容工作频率 = fosc/(2*(TSCFG1[6:4]+1)), B2~B0:放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最好大于等于3(1000)
TSCFG2  = 1;                //B1~B0:配置触摸按键控制器的内部参考电压(AVCC的分压比), 0(1/4)  1(1/2)  2(5/8)  3(3/4)

检测原理:先对参考电容Co放电至0V,然后对被检测电容Cx按一定的频率fs充电至Vcc,接着将Cx与Co连接,Cx对Co放电,不断重复上述过程,直到参考电容Co上的电压达到设定的参考值。
本例放电时间为5000个主频时钟,即5000/24=208us。
参考电压选择 Vcc*1/2,在开关频率fs时Cx等效电阻为1/(fs*Cx),则根据RC充电公式简单计算可得 t = 0.693*Co/(fs*Cx)。
fs = fosc/(2*(TSCFG1[6:4]+1)),本例TSCFG1[6:4]=7,则fs=24/16=1.5MHz,这个就是开关电容的频率。当这个频率越快,则充电时间就越短。
比如某个键读数为24000,即1000us,如果TSCFG1[6:4]=3,则fs=3MHz,则读数变为12000,即500us,如果TSCFG1[6:4]=1,则fs=6MHz,则读数变为6000,即250us,如果TSCFG1[6:4]=0,则fs=12MHz,则读数变为3000,即125us。
fs低一些为好。

假设Co=22nF,fs=1.5MHz,某个键无触摸时读数24000,即1000us,此时电容Cx = 0.693*22nF/1.5MHz/1000us = 10.164pF。
假设触摸时读数变小了8%,即读数为22080,时间为920us,则此时电容Cx = 0.693*22nF/1.5MHz/920us = 11.048pF,手指触摸增加电容0.884pF。
可见,手指触摸时电容改变通常不到1pF,所以设计电路一定要尽量减小分布电容,使触摸电容变化在5%以上,达到10%则会非常优秀。

看不懂上述描述不要紧,直接示波器看参考电容的波形即可知道检测一个键的时间(放电+充电时间)。
回复 支持 2 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:207
  • 最近打卡:2025-05-01 11:29:06

0

主题

4

回帖

854

积分

高级会员

积分
854
发表于 2024-6-14 10:14:14 | 显示全部楼层

好的,谢谢!
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 09:03 , Processed in 0.167707 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表