找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机控制新型正反扫4位数码管编程思路?

查看数: 6472 | 评论数: 51 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-5-10 16:02

正文摘要:

求大神讲解一下关于此图数码管的控制原理

回复

ID:619259 发表于 2026-9-11 16:58
pcbboy 发表于 2022-5-10 16:50
这个数码管有个特点,就是共阴极和共阳极一体的,很少见这种双极性的数码管。

见过充电宝吧?很多充电宝的电量显示数码管就是这种查理复用数码管
ID:619259 发表于 2026-9-11 16:57
an770841487 发表于 2022-5-10 16:58
谢谢。但是其它COM如何关闭呢,会影响到其它COM哦

其它COM设置为高阻就行
ID:619259 发表于 2026-9-11 16:54
名字不是重点 发表于 2022-5-10 17:21
这种数码管,分解到段扫,一次就点一个段,整屏分32次扫完。软件就好写了,不用高阻。

这个还不是极端的 ...

不用高阻恐怕不行,你得用实践去检验真理
ID:619259 发表于 2026-9-11 16:50
Hephaestus 发表于 2022-5-10 16:34
这要用推挽电路才能驱动了,为什么要用这么繁琐的东西?

节省IO
ID:619259 发表于 2026-9-11 16:49
WL0123 发表于 2026-9-7 08:34
所谓查理复用需满足N *(N - 1)的条件。

n × (n - 1)是指查理复用方式驱动LED的最大值,难道驱动数量小于这个最大值,就不是查理复用了吗?
ID:584814 发表于 2026-9-8 09:24
ID:1109793 发表于 2026-9-8 07:28
zhuls 发表于 2026-9-7 15:12
查理复用最多能驱动N *(N - 1)这么多的LED节点,不代表N *(N - 1)是必要条件。
是减少IO的开销,才是 ...

我理解的就是要座查理服用必须有推挽能力和高阻态才行吧
ID:69038 发表于 2026-9-7 15:16
xiaobendan001 发表于 2026-9-7 07:43
老51没有推挽能力,也没有高阻态,干不了这活的。
4次,你要看怎样才算一次。

(消隐),送段码、送位选,延时~~这样算一次
ID:69038 发表于 2026-9-7 15:12
查理复用最多能驱动N *(N - 1)这么多的LED节点,不代表N *(N - 1)是必要条件。
是减少IO的开销,才是查理复用的真实目的。
图中才用了8个IO,驱动32个LED,而不是12个IO。。。

ID:584814 发表于 2026-9-7 14:19
WL0123 发表于 2026-9-6 22:03
驱动这种数码管与查理复用有毛关系

这特么就是查理复用的
ID:1133081 发表于 2026-9-7 08:34
zhuls 发表于 2026-9-6 22:49
欢迎探讨~
一般4位数码管的驱动流程是送段码、送位选,全屏4次,
按你的说法,这数码管4次能完成?

所谓查理复用需满足N *(N - 1)的条件。


ID:1109793 发表于 2026-9-7 07:43
zhuls 发表于 2026-9-6 22:49
欢迎探讨~
一般4位数码管的驱动流程是送段码、送位选,全屏4次,
按你的说法,这数码管4次能完成?

老51没有推挽能力,也没有高阻态,干不了这活的。
4次,你要看怎样才算一次。
ID:69038 发表于 2026-9-6 22:49
WL0123 发表于 2026-9-6 22:03
驱动这种数码管与查理复用有毛关系

欢迎探讨~
一般4位数码管的驱动流程是送段码、送位选,全屏4次,
按你的说法,这数码管4次能完成?
或者说,老51、仅准双向的MCU如何驱动之?
愿闻其详。
ID:1034262 发表于 2026-9-6 22:46
很简单,就是共阴、共阳扫描。
扫共阴:正在驱动的COM输出低电平,其余不驱动的COM高阻。显示的SEG输出高电平,不显示的SEG高阻。
扫共阳:正在驱动的COM输出高电平,其余不驱动的COM高阻。显示的SEG输出低电平,不显示的SEG高阻。
ID:1133081 发表于 2026-9-6 22:03
zhuls 发表于 2026-9-6 15:48
此类数码管的驱动方法的核心思想是"查理复用",至于线扫还是点扫就看个人喜好,没有决对优点。

驱动这种数码管与查理复用有毛关系
ID:619259 发表于 2026-9-6 20:49
查理复用,需要IO有高阻模式且能软件设置的MCU
ID:69038 发表于 2026-9-6 15:48
此类数码管的驱动方法的核心思想是"查理复用",至于线扫还是点扫就看个人喜好,没有决对优点。
ID:78714 发表于 2026-9-5 18:30
digger63 发表于 2026-7-16 22:01
参考我这个:开天斧板子直驱7脚4位数码管

发不了链接,搜一下吧
ID:78714 发表于 2026-7-16 22:01
伤口不结 发表于 2026-3-28 22:20
大神最终是如何解决的,现在我也研究了好久依然无法完美显示,请教一下大神们

参考我这个:开天斧板子直驱7脚4位数码管
ID:362023 发表于 2026-3-28 22:20
大神最终是如何解决的,现在我也研究了好久依然无法完美显示,请教一下大神们
ID:1025416 发表于 2022-5-11 20:00
datouyuan 发表于 2022-5-11 15:40
设置端口为输入,就是高阻。
有的mcu能配置上拉、下拉电阻,这种单片机要把上拉、下拉电阻配置为无。
绝 ...

今天问了芯片客服,他们回答和你的答案一样,设置为输入就是高阻态,并且要禁掉上下拉。谢谢你的解答
ID:1025416 发表于 2022-5-11 17:38
mengzhixinheng 发表于 2022-5-11 07:28
分时复用不就行了,哪有那么复杂???

能说详细一点吗,谢谢您的解答
ID:332444 发表于 2022-5-11 17:00
不过依据控制台编程经验来看未必就一定使用32次控制或许可以更少但是原理还是每次显示一段,然而可以每位显示一段或可减少次数并使得程序写得简洁,忽然想起了写过这样控制台仿真编程.
ID:332444 发表于 2022-5-11 16:38
一时之间没查资料就凭感觉猜测,觉得每次显示一段是比较合理的也好控制但是显示一个字则需要八次控制4位则需要32次控制,所花费时间比较多.就好比C++编程控制台模拟数码管段仿真一样道理
https://blog.csdn.net/xianfajushi/article/details/104877907
ID:887371 发表于 2022-5-11 15:40
an770841487 发表于 2022-5-10 17:21
谢谢指点。单片机的高阻态是指?我只知道有设置端口为输入或者输出,高阻态是如何设置?亮度是不成问题的 ...

设置端口为输入,就是高阻。
有的mcu能配置上拉、下拉电阻,这种单片机要把上拉、下拉电阻配置为无。
绝大部分单片机都能设为高阻。
这种数码管要求单片机端口能设置为高阻、推挽高、推挽低。除了很老的51单片机外,其它单片机都能胜任。

另外这种数码管应该是白、蓝光led,它们的压降高,能达到3V。其它颜色压降低,估计不行。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

ID:161164 发表于 2022-5-11 15:00
yzwzfyz 发表于 2022-5-11 14:39
楼主有此一问了,有下例原因。
1、未真正地吃透扫描显示的原理。
2、如何让一只LED明暗。

如果我只想点亮Digi1的A段
M1 = 1000 0YYY
YYY=?
111?Digi2/3/4 的 B/C/D段会同时被点亮
000?Digi2/3/4 的 A段会同时被点亮
ID:123289 发表于 2022-5-11 14:39
楼主有此一问了,有下例原因。
1、未真正地吃透扫描显示的原理。
2、如何让一只LED明暗。
建议:分8次扫描显示:
4次正逻辑,5678为数值,1234分时逐一为0。
4次负逻辑,5678为数值,1234分时逐一为1。
以上是如何扫描,需要吃透。
这样需要8个4位数值,建立用8个寄存器或内存存放(M1-M8)。数值是什么,自己好好的算一下(如何让一只LED明暗)。参考答案如下:
M1=XXXX0111
M2=XXXX1011
M3=XXXX1101
M4=XXXX1110
M5=XXXX1000
M6=XXXX0100
M7=XXXX0010
M8=XXXX0001
XXXX=?就不告诉你了,以防脑子生锈。
ID:25310 发表于 2022-5-11 13:43
an770841487 发表于 2022-5-10 16:55
现在小家电用的都很多这种的了,原理我懂,但实际编程的时候发现有时候会矛盾,比如E段输出高时,其它段 ...

加限流电阻。看看是否段位上的电阻太小了有漏电流。
ID:161164 发表于 2022-5-11 11:16
mengzhixinheng 发表于 2022-5-11 07:28
分时复用不就行了,哪有那么复杂???

愿闻其详
ID:89515 发表于 2022-5-11 07:28
分时复用不就行了,哪有那么复杂???
ID:401564 发表于 2022-5-10 20:07
an770841487 发表于 2022-5-10 19:49
你写的很仔细到位,谢谢你的回复,按你的思路,如果单片机有高阻态,肯定是容易实现。但现在使用的电路, ...

如果有是LED模块,那看一下LED模块有没有三态控制,如果LED模块有高阻设置的话,基本也是这么个原理的了
ID:220661 发表于 2022-5-10 19:57
八位单片机当作四位单片机用就可以了,简单地说就是移位操作。
ID:1025416 发表于 2022-5-10 19:49
Y_G_G 发表于 2022-5-10 18:23
限流电阻只接在5678这4个引脚
把一个数码管当成两个数码管来看,一个数字分两次显示
假设:#define out P1
...

你写的很仔细到位,谢谢你的回复,按你的思路,如果单片机有高阻态,肯定是容易实现。但现在使用的电路,我看了这个单片机手册,没写有高阻功能,但有LED驱动模块。这是别人做开的已经商用的电路,因此不存在无法控制的问题,只是不知道他是不是用的LED模块来驱动或者别的方法。
ID:401564 发表于 2022-5-10 18:23
限流电阻只接在5678这4个引脚
把一个数码管当成两个数码管来看,一个数字分两次显示
假设:#define out P1
com1  bit P1^0
com2  bit P1^1
com3  bit P1^2
com4  bit P1^3
显示一个数字8:
设定com1,5678为推挽输出
设定com2,com3,com4,为高阻,就是没有输出和吸入能力,随便怎么操作,234这几个数码管都是不会亮的
显示数码管的ABCD:
这个过程com2,com3,com4是不参与的,因为是高阻,所以,不会有输出和吸入能力的

1:
com1=1   ;//高电平输出

out&=0x0f;//低电平吸入,用按位与操作,显示,低位是com的,不影响
延时1mS;这是显示部分

com1=0;//这是消除残影部分
out&=0x0f;//com1为低电平,5678这几个IO输出低电平,用于消除残影out&=0x0f一定要有,在这里out&=0x0f只是和数码的"8"巧合了而已,不是重复操作

显示数码管EFG DP
2:
com1=0;//低电平吸入

out&=0xff;//高电平输出,用按位与操作,显示,低位是com的,不影响
延时1mS;out&=0x0f;//com1为低电平,5678这几个IO输出低电平,用于消除残影



这就完成了一个数码管的显示了,剩下的也是一样的道理,每次显示之后都要消除残影,每次显示之前都要先更改几个com的输出模式,保证只有一个IO有输出和吸入能力,其它的都没有这个能力
5678这几个高位的不需要设置,只要设置一次就行,设置成推挽
ID:161164 发表于 2022-5-10 17:46
名字不是重点 发表于 2022-5-10 17:21
这种数码管,分解到段扫,一次就点一个段,整屏分32次扫完。软件就好写了,不用高阻。

这个还不是极端的 ...

没有高阻不行吧?
如果我只要点亮Digi1的A段
COM1=1
8=0
756=1

如果234=1
Digi234的A段也会亮
如果234=0
Digi234的FGDg段也会亮
ID:883242 发表于 2022-5-10 17:38
an770841487 发表于 2022-5-10 17:21
谢谢指点。单片机的高阻态是指?我只知道有设置端口为输入或者输出,高阻态是如何设置?亮度是不成问题的 ...

没高阻态的话,你会发现不该亮的管子亮了,而且这个问题是无解的。
ID:1025416 发表于 2022-5-10 17:21
Hephaestus 发表于 2022-5-10 17:01
单片机IO口推挽电流就能满足驱动亮度的话,就很好做了。

硬件上,5、6、7、8串限流电阻到单片机,1、2 ...

谢谢指点。单片机的高阻态是指?我只知道有设置端口为输入或者输出,高阻态是如何设置?亮度是不成问题的,可以满足
ID:824490 发表于 2022-5-10 17:21
这种数码管,分解到段扫,一次就点一个段,整屏分32次扫完。软件就好写了,不用高阻。

这个还不是极端的,至少,SEG是SEG,COM 是COM。
更极端的是COM与SEG混用。一个IO,有时是SEG,有时是COM。
8个IO最大的驱动LED数是8*(8-1)*2=112个LED!
ID:161164 发表于 2022-5-10 17:20
你要选择有高阻/推挽/开漏管脚功能的单片机
如要显示2345
第一个循环
所有脚设为高阻消影
设8, 7, 5 脚为开漏
设1脚为推挽
第二个循环
所有脚设为高阻消影
设8,6 脚为推挽
设1脚为开漏

第三个循环
所有脚设为高阻消影
设8, 7, 6, 5 脚为开漏
设2脚为推挽
第四个循环
所有脚设为高阻消影
设6 脚为推挽
设2脚为开漏

第五个循环
所有脚设为高阻消影
设7, 6 脚为开漏
设3脚为推挽
第六个循环
所有脚设为高阻消影
设7, 6 脚为推挽
设3脚为开漏

第七个循环
所有脚设为高阻消影
设8, 6 ,5 脚为开漏
设4脚为推挽
第八个循环
所有脚设为高阻消影
设7,6 脚为推挽
设4脚为开漏

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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