标题: 请教一下各位,这种用10个引脚同时驱动77个灯,可单独控制亮灭,有什么比较好的方法吗 [打印本页]

作者: Bikho    时间: 2024-9-26 14:22
标题: 请教一下各位,这种用10个引脚同时驱动77个灯,可单独控制亮灭,有什么比较好的方法吗
谢谢大家

11111.png (92.45 KB, 下载次数: 7)

11111.png

作者: lkc8210    时间: 2024-9-26 16:19
查理复用
作者: youyouku    时间: 2024-9-26 16:26
用专门的LED驱动芯片(如TM1629D,最多可以驱动96个LED)。单片机只需3个IO口就可以分别控制啦。
作者: IdeaMing    时间: 2024-9-26 16:44
巧了,刚好用过类似的两位数码管
这个确实比较麻烦
看图应该是有四个数码管 DIG1 ~ DIG4
显示DIG1的时候所有端口先配置成输入状态以免个别灯亮,
然后比如要显示1,对应的B、C段就要设置3,4输出高电平,然后把1设置为输出低电平。
这样数码管DIG1就亮了B、C段显示1,
同样的步骤处理下面的数码管和其他显示点。
然后,合理规划每组显示的持续时间,保证刷新速度。
作者: zhuls    时间: 2024-9-26 17:36
10个引脚可驱动90个灯,但软件开销不是一般的小,小体量的单片机用的会很难受,不如用一个tm16xx,控制简单,IO只要2/3个,自带扫描,亮度可调,如果舍不得那几毛钱,那就没得说了~~
人的视觉残留有一定的时间,所以单个IO时间长了显示可能会闪,时间短了亮度可能不够,麻烦。。。。

作者: Bikho    时间: 2024-9-26 20:53
IdeaMing 发表于 2024-9-26 16:44
巧了,刚好用过类似的两位数码管
这个确实比较麻烦
看图应该是有四个数码管 DIG1 ~ DIG4

代码方面怎么写是最高效和节约单片机内存的呢请问
作者: Bikho    时间: 2024-9-26 20:53
zhuls 发表于 2024-9-26 17:36
10个引脚可驱动90个灯,但软件开销不是一般的小,小体量的单片机用的会很难受,不如用一个tm16xx,控制简单 ...

请问有没有什么写法可以使得代码量在6k以内呢
作者: Bikho    时间: 2024-9-26 21:14
lkc8210 发表于 2024-9-26 16:19
查理复用

代码怎么写才会是最简洁的呢请问
作者: a185980800    时间: 2024-9-26 21:37
zhuls 发表于 2024-9-26 17:36
10个引脚可驱动90个灯,但软件开销不是一般的小,小体量的单片机用的会很难受,不如用一个tm16xx,控制简单 ...

就是啊就算复用能够实现。软件开销又大。驱动还要三极管,二极管,电阻。七十几个LED。这小元件也就是七十几个。真不如上一个LED驱动芯片算了。省事又省钱。
作者: coody_sz    时间: 2024-9-26 22:40
我经常用,用过好多,省IO,N个IO可以驱动N*(N-1)个LED,9脚可以驱动72个LED,或9个带小数点的8。
驱动很简单,共阴或共阳均可,看排列,那个方便用哪个。
驱动原则是:一个脚为COM,其余脚为SEG,驱动的COM就输出高(共阳)或低(共阴),驱动的SEG就输出低(共阳)或高(共阴),不驱动的SEG为高阻。
作者: cy009    时间: 2024-9-27 10:19
采用查理复用方式,理论上10个引脚可以驱动90个LED,符合你的要求。
作者: man1234567    时间: 2024-10-12 11:14
想练习技术,用查理复用方式,理论上10个引脚可驱动10*9=90个LED;
想简单从事,找端口扩展或LED驱动芯片或混用,可节省引脚,可驱动无数LED;
想玩得花些,可以上述方法叠加,并使用可编程的LED,LED数量和显现的花式都不限。
作者: 1481509156    时间: 2024-10-16 08:09
Bikho 发表于 2024-9-26 21:14
代码怎么写才会是最简洁的呢请问

switch()
{
    case0:
    break;
    .......
},查理复用,扫描,这个应该用不到6K,我用过三位数码管的,2K都不到
作者: lkc8210    时间: 2024-10-16 09:05
Bikho 发表于 2024-9-26 21:14
代码怎么写才会是最简洁的呢请问

周期0:
全部引脚输出高阻
引脚1输出高,其他引脚按需求输出低
周期1:
全部引脚输出高阻
引脚2输出高,其他引脚按需求输出低
周期2:
全部引脚输出高阻
引脚3输出高,其他引脚按需求输出低
周期3:
。。。
回到周期0
每个周期维持1ms




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1