标题: 基于TM1628A按键长按短按的处理 [打印本页]

作者: DW2003    时间: 2025-7-15 15:22
标题: 基于TM1628A按键长按短按的处理
各位大大佬们,有知道扫描按键在读取值后怎么处理长按和短按啊,不用延时函数和死循环


作者: chxelc    时间: 2025-7-15 15:41
用定时器中断,设置合理的中断时长。
在定时器中断里读按键值,如果读出的键值跟上次一样则加1,
按自定义的长按时长设定累加值上限,超出这个值为长按,反之为短按。
作者: WL0123    时间: 2025-7-15 17:18
给你一个TM1650的示例,读按键长短按与TM1628A类同。
4位数码管时钟 DS1302 TM1650程序.rar (27.41 KB, 下载次数: 0)


作者: xiaobendan001    时间: 2025-7-16 07:22
不死等,那就计数呗,读100次,不行就200次
作者: xiaobendan001    时间: 2025-7-16 07:52
WL0123 发表于 2025-7-15 17:18
给你一个TM1650的示例,读按键长短按与TM1628A类同。

请教前辈,我有个用1302的板,有问题是偶尔会发生上电后之前设定的时间就没有了,变成默认的时间了。就是被初始化了。还有时候是不跑时间的,并且1302会非常热。如果上电后正常跑时间,尽管是复位了的时间,1302也不热。是1302的质量问题吗?
作者: WL0123    时间: 2025-7-16 13:39
xiaobendan001 发表于 2025-7-16 07:52
请教前辈,我有个用1302的板,有问题是偶尔会发生上电后之前设定的时间就没有了,变成默认的时间了。就是 ...

1.正常情况下1302不会发热。如果发热可能是相应硬件电路有故障或器件不良。
2.程序中不要上电初始化1302,时间有误差用按键调校。
3.备用电池要有电,能维持掉电后时间不丢失。
作者: DW2003    时间: 2025-7-16 18:07
WL0123 发表于 2025-7-15 17:18
给你一个TM1650的示例,读按键长短按与TM1628A类同。

我想实现长按和短按一个效果,没有区别,且不影响程序运行
作者: DW2003    时间: 2025-7-16 18:09
chxelc 发表于 2025-7-15 15:41
用定时器中断,设置合理的中断时长。
在定时器中断里读按键值,如果读出的键值跟上次一样则加1,
按自定 ...

试试

作者: xiaobendan001    时间: 2025-7-16 18:59
WL0123 发表于 2025-7-16 13:39
1.正常情况下1302不会发热。如果发热可能是相应硬件电路有故障或器件不良。
2.程序中不要上电初始化1302 ...

1,如果发热,断电几秒后再上电,大概率就好了,此时时钟也正常走了
2,初始化是网上下载的驱动里面的一个判断,就是读了秒数据,判定最高位为1,则写入默认的时间。
3,电池是有的,但是经常也会在上电时被初始化。
如果不放电池,则上电后出现芯片发热的情况会比较多。有电池的情况比较少。
作者: xiaobendan001    时间: 2025-7-16 19:03
DW2003 发表于 2025-7-16 18:07
我想实现长按和短按一个效果,没有区别,且不影响程序运行

那就只需要在按键断开时操作就行了吧。无论按多久都一样。
或者只处理按下时操作也一样啊。
作者: WL0123    时间: 2025-7-17 07:33
DW2003 发表于 2025-7-16 18:07
我想实现长按和短按一个效果,没有区别,且不影响程序运行

这个示例中读按键程序是查询方式,长按不松手不影响其它程序运行。
作者: hi等你    时间: 2025-7-17 08:56
我是用的计数,读取按键值发现按下了,寄存器加1,不要执行,还是去各干各的,转一圈回来再读键值

发现没按下就ljmp去执行短按,如果发现还是按下的再继续加1,加到你喜欢的值和时间再去执行长按键




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1