[51单片机] 按键数码管复用扫描,按键按下有暗影,大虾支招

[复制链接]
3213|8
 楼主| tanghuihua 发表于 2017-12-25 17:26 | 显示全部楼层 |阅读模式

这是大概的原理图,为了看起来简便,只画了两路。
我选用的单片机支持大电流输出,所以不需要任何驱动IC。

数码管是采用的LED正反并联方式设计的。按键接公共端通过二极管并接在一个输入IO上。
显示扫描原理正反各扫一次,正扫描的时候,公共端轮流为1,其他为Z,段码上需要亮的输出0,不亮的为Z。反扫描的时候公共端轮流为0,其他为Z,段码上需要亮的输出1,不亮的为Z.
由于显示扫描的时候CPU的IO口由于电流大,所以公共端输出0的时候压降会很大,基本有0.5V以上,所以不能在显示周期进行按键扫描。等所有按键扫描完成后再单独加几个周期进行按键扫描,按键扫描的时候段码全部为Z,只有公共端轮流变0,其他为Z。

现在遇到的问题是,当按键一直按着的时候,有些不亮的笔段会暗亮。例如图中,S2一直按着,某个显示周期IO输出为红字标注,此时,D1会正常发光,但由于R3的存在,会有很小的电流流过D5,造成D5暗亮。
如果加大R3,暗亮会消失,但这时按键扫描会混乱。

请大侠支招,有何改进办法?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
宇容创行 发表于 2017-12-25 19:37 | 显示全部楼层
硬件设计不合理
宇容创行 发表于 2017-12-25 19:38 | 显示全部楼层
需要增加一个io
广东梁百万 发表于 2017-12-25 21:42 来自手机 | 显示全部楼层
看不明你的设计思路,我的常用做法如下图,
显示时要把p3.2口置1;按键查询时p2口全部置1,把p3.3~p3.6置1,把p3.2口置0,跟着逐个查询p2口是否有低电平输入。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

你这种操作是实验室阶段,人家这样做使用双向扫描数码管的原因就是为了节省io口。楼主能解决暗亮的问题的话8个io口就能实现三位数码管显示以及四个按键的扫描。然而你这种方法最少都要13个io口。  发表于 2018-11-9 17:29
一周一天班 发表于 2017-12-27 16:03 来自手机 | 显示全部楼层
穷人+小白一枚。
elife 发表于 2017-12-29 21:17 | 显示全部楼层
在SEG有输出0时,同步把KEYIN设置为输出0. 前提是KEYIN可以设置为输出。
haibao1213 发表于 2018-1-3 16:59 | 显示全部楼层
确实是硬件问题,你一直按着,R3电阻供电过来了,所以会有这样的问题,按键复用,要用IO来控制,需要加一个IO控制。欢迎技术 交流Q67229740.松翰,义隆,飞凌各系列芯片都有,可软件开发,代烧等服务。
zqx1000 发表于 2018-4-10 21:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

35

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部