公司动态

188 数码管扫描频率超 60Hz,为什么无关灯管还会随机乱闪?

📅 2026/8/21 11:46:14
188 数码管扫描频率超 60Hz,为什么无关灯管还会随机乱闪?
简介188数码管主要用于显示电量SOC常用于移动电源领域显示的状态主要有充电电量、放电电量、过温爆闪、小电流模式、快充符号及其他定制符号等。188数码管的工作原理是通过主控来控制每个管的开关电量需要显示的管不需要显示的管都拉低然后扫描整个的管这时候人眼是能看出来数码管一直在闪因为是5个I/O口控制18个管一直在开关所以会看到闪烁要想不闪烁就把开关的频率调高调到60HZ以上因为肉眼可分辨的频率就是60HZ60HZ以上就不会看到数码管闪烁了这就是数码管点亮的基本原理。今天分享的问题是数码管会偶发乱闪问题乱闪的是其他不被电量的管子下面我们一步步深入分析下是什么原因一、分析原因遇到这个问题的时候我们通过数码管的工作原理知道这个点亮的管都是主控通过控制高低电平实现的首先先抓一下I/O口的波形看看是否规律I/O口的控制是在定时器里面定时0.5ms去扫描18个管的。通过抓取的波形发现了问题当数码管乱闪的时候某个波形会显示不正常脉宽和其他的波形不一致如下图所示初步的原因已经找到我们顺着这个思路去分析软件的逻辑看看是定时器出问题了还是扫描出问题了。下一步进入到定位问题环节。二、定位问题由问题表象及波形看起来大概是软件的原因我们先来看看定时器配置是否有问题软件方面定时器周期是0.5ms中断优先级是7最高优先级看起来配置应该没问题。定时器配置如下图那从扫描地方找找问题那我们从数码管的扫描逻辑分析分析看看有没有优化的空间。开始数码管的扫描逻辑是所有管子扫描一遍总共18个管轮询扫描按照0.5ms的定时周期按照全部管子扫描的频率是2K/18也就是111HZ这个频率是比较高了正常人眼是看不出来有闪烁的。数码管的扫描逻辑如下图但是我认真分析了一下程序的逻辑还是有优化的空间 可以对电量的数码管做一个判断。只扫描需要电量的数码管不需要扫描的管子就进入扫描直接退出这样一来效率明显提升了。好了那我就按照这个思路验证了一番果然显示效果杠杠滴比之前大大改善。扫描优化效率的程序逻辑如下图三、解决方案通过以上方法测试验证之后最终采用的优化扫描效率的方案。但是这个偶发数码管乱闪的问题本质上是定时器偶发某个方波不规律造成的因为是在平台上开发的和平台的注册任务及定时设计有关联平台改善起来相对麻烦时间紧迫就采用自己的方法去优化了。当然建议大家时间充裕的情况下还是从本质问题着手解决做到知其然知其所以然。四、总结这个问题开始看时有点没有头绪顺着表象问题一步步深入分析最终被解决。解决问题的方案有很多种每个人解决问题的方式都不一样结合项目进度采用合适的方式才能快速出结果。