pcbboy 发表于 2022-5-10 16:50 见过充电宝吧?很多充电宝的电量显示数码管就是这种查理复用数码管 |
an770841487 发表于 2022-5-10 16:58 其它COM设置为高阻就行 |
名字不是重点 发表于 2022-5-10 17:21 不用高阻恐怕不行,你得用实践去检验真理 |
Hephaestus 发表于 2022-5-10 16:34 节省IO |
WL0123 发表于 2026-9-7 08:34 n × (n - 1)是指查理复用方式驱动LED的最大值,难道驱动数量小于这个最大值,就不是查理复用了吗? |
zhuls 发表于 2026-9-7 15:12 我理解的就是要座查理服用必须有推挽能力和高阻态才行吧 |
xiaobendan001 发表于 2026-9-7 07:43 (消隐),送段码、送位选,延时~~这样算一次 |
|
查理复用最多能驱动N *(N - 1)这么多的LED节点,不代表N *(N - 1)是必要条件。 是减少IO的开销,才是查理复用的真实目的。 图中才用了8个IO,驱动32个LED,而不是12个IO。。。 |
WL0123 发表于 2026-9-6 22:03 这特么就是查理复用的 ![]() |
zhuls 发表于 2026-9-6 22:49 所谓查理复用需满足N *(N - 1)的条件。
|
zhuls 发表于 2026-9-6 22:49 老51没有推挽能力,也没有高阻态,干不了这活的。 4次,你要看怎样才算一次。 |
WL0123 发表于 2026-9-6 22:03 欢迎探讨~ 一般4位数码管的驱动流程是送段码、送位选,全屏4次, 按你的说法,这数码管4次能完成? 或者说,老51、仅准双向的MCU如何驱动之? 愿闻其详。 |
|
很简单,就是共阴、共阳扫描。 扫共阴:正在驱动的COM输出低电平,其余不驱动的COM高阻。显示的SEG输出高电平,不显示的SEG高阻。 扫共阳:正在驱动的COM输出高电平,其余不驱动的COM高阻。显示的SEG输出低电平,不显示的SEG高阻。 |
zhuls 发表于 2026-9-6 15:48 驱动这种数码管与查理复用有毛关系 |
| 查理复用,需要IO有高阻模式且能软件设置的MCU |
| 此类数码管的驱动方法的核心思想是"查理复用",至于线扫还是点扫就看个人喜好,没有决对优点。 |
digger63 发表于 2026-7-16 22:01 发不了链接,搜一下吧 |
伤口不结 发表于 2026-3-28 22:20 参考我这个:开天斧板子直驱7脚4位数码管 |
|
大神最终是如何解决的,现在我也研究了好久依然无法完美显示,请教一下大神们 |
datouyuan 发表于 2022-5-11 15:40 今天问了芯片客服,他们回答和你的答案一样,设置为输入就是高阻态,并且要禁掉上下拉。谢谢你的解答 |
mengzhixinheng 发表于 2022-5-11 07:28 能说详细一点吗,谢谢您的解答 |
| 不过依据控制台编程经验来看未必就一定使用32次控制或许可以更少但是原理还是每次显示一段,然而可以每位显示一段或可减少次数并使得程序写得简洁,忽然想起了写过这样控制台仿真编程. |
|
一时之间没查资料就凭感觉猜测,觉得每次显示一段是比较合理的也好控制但是显示一个字则需要八次控制4位则需要32次控制,所花费时间比较多.就好比C++编程控制台模拟数码管段仿真一样道理 https://blog.csdn.net/xianfajushi/article/details/104877907 |
an770841487 发表于 2022-5-10 17:21 设置端口为输入,就是高阻。 有的mcu能配置上拉、下拉电阻,这种单片机要把上拉、下拉电阻配置为无。 绝大部分单片机都能设为高阻。 这种数码管要求单片机端口能设置为高阻、推挽高、推挽低。除了很老的51单片机外,其它单片机都能胜任。 另外这种数码管应该是白、蓝光led,它们的压降高,能达到3V。其它颜色压降低,估计不行。 |
yzwzfyz 发表于 2022-5-11 14:39 如果我只想点亮Digi1的A段 M1 = 1000 0YYY YYY=? 111?Digi2/3/4 的 B/C/D段会同时被点亮 000?Digi2/3/4 的 A段会同时被点亮 |
|
楼主有此一问了,有下例原因。 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=?就不告诉你了,以防脑子生锈。 |
an770841487 发表于 2022-5-10 16:55 加限流电阻。看看是否段位上的电阻太小了有漏电流。 |
mengzhixinheng 发表于 2022-5-11 07:28 愿闻其详 |
| 分时复用不就行了,哪有那么复杂??? |
an770841487 发表于 2022-5-10 19:49 如果有是LED模块,那看一下LED模块有没有三态控制,如果LED模块有高阻设置的话,基本也是这么个原理的了 |
| 八位单片机当作四位单片机用就可以了,简单地说就是移位操作。 |
Y_G_G 发表于 2022-5-10 18:23 你写的很仔细到位,谢谢你的回复,按你的思路,如果单片机有高阻态,肯定是容易实现。但现在使用的电路,我看了这个单片机手册,没写有高阻功能,但有LED驱动模块。这是别人做开的已经商用的电路,因此不存在无法控制的问题,只是不知道他是不是用的LED模块来驱动或者别的方法。 |
|
限流电阻只接在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这几个高位的不需要设置,只要设置一次就行,设置成推挽 |
名字不是重点 发表于 2022-5-10 17:21 没有高阻不行吧? 如果我只要点亮Digi1的A段 COM1=1 8=0 756=1 如果234=1 Digi234的A段也会亮 如果234=0 Digi234的FGDg段也会亮 |
an770841487 发表于 2022-5-10 17:21 没高阻态的话,你会发现不该亮的管子亮了,而且这个问题是无解的。 |
Hephaestus 发表于 2022-5-10 17:01 谢谢指点。单片机的高阻态是指?我只知道有设置端口为输入或者输出,高阻态是如何设置?亮度是不成问题的,可以满足 |
|
这种数码管,分解到段扫,一次就点一个段,整屏分32次扫完。软件就好写了,不用高阻。 这个还不是极端的,至少,SEG是SEG,COM 是COM。 更极端的是COM与SEG混用。一个IO,有时是SEG,有时是COM。 8个IO最大的驱动LED数是8*(8-1)*2=112个LED! |
|
你要选择有高阻/推挽/开漏管脚功能的单片机 如要显示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脚为开漏 |