TM1650按键扫描问题汇总

本文详细讲述了使用立创商城TM1650时,如何切换到扫描模式、设置系统参数、理解中断引脚工作方式、注意二极管方向以及复位时间和供电电压的要求,以解决初次使用的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.按键扫描前需切换为扫描模式

        我使用的是立创商城旧版TM1650,立创商城提供的数据手册是比较早的版本。在这个版本中,没有任何关于进入扫描模式前需要进入扫描模式的描述,因此刚开始以为上电之后会自动开始扫描,只需要读取键盘扫描码即可。但是在上电之后按键按下,没有进入中断,读取到的按键扫描码为2E。

图1. 早期版本的数据手册

        后来找到了新版的数据手册,上面有关于扫描模式的说明。从下面的图中可以看出,只要处于7段开屏,就可以进入按键扫描模式并且使用DP引脚的中断功能。

图2. DP引脚中断功能

 图3. 按键扫描模式开启方法

二.扫描模式的切换方法

        如何进入7段开屏(按键扫描模式)呢?可以通过系统参数来设置,首先发送48H,收到应答之后再发送参数。

图4.系统参数设置方法

         那么又应该发送什么参数呢?

        数据手册里的描述“48H+10H+01H=1级亮度开屏显示”,这里很容易让人误解。

        如果要实现7段开屏的话,那应该发送48H、再发送08H、再发送01H,还是应该发送48H、再发送08H、再发送48H、再发送01H呢?另外在时序图里发送48H后只发送了一个字节,和这里的描述矛盾。

图5. 系统参数设置

         正确的方法应该是:起始信号、发送48H、接受ACK、发送09H、接收ACK、结束通信。

        09H是(08H | 01H)得到的,发送09H、19H、29H......79H都是可以的。

图6. 7段开屏方式

三.中断引脚的工作方式

        由图6可以看出,当按键按下,DP引脚产生下降沿,如果不读按键扫描码,DP会保持低电平,无法再次进入中断。这也是检测到第一次按键按下而检测不到后续按键的原因。

(2024.9.2更新:程序中不要仅仅依靠外部中断下降沿来判断按键是否按下,因为某些原因(如I2C通信受到干扰)导致没有成功读取按键值,而DP引脚保持低电平,此时靠中断下降沿无法检测到按键按下。

可以在I2C通信中加入相应的错误处理机制,最好是在主程序加上读取DP引脚的代码,如果为低电平,则读取按键值,或者每隔一段时间读取一次按键)

四.二极管的方向

        如果使用二极管防止鬼键,需要注意二极管的方向。

五.复位时间

        上电之后不能立即进行通信,需要延迟一小段时间。

图7. 复位时间

六.供电电压

3-5.5V电压均可,对于3.3V单片机,最好使用3.3V供电。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值