![]() |
Bikho 发表于 2024-9-26 21:14 周期0: 全部引脚输出高阻 引脚1输出高,其他引脚按需求输出低 周期1: 全部引脚输出高阻 引脚2输出高,其他引脚按需求输出低 周期2: 全部引脚输出高阻 引脚3输出高,其他引脚按需求输出低 周期3: 。。。 回到周期0 每个周期维持1ms |
Bikho 发表于 2024-9-26 21:14 switch() { case0: break; ....... },查理复用,扫描,这个应该用不到6K,我用过三位数码管的,2K都不到 |
想练习技术,用查理复用方式,理论上10个引脚可驱动10*9=90个LED; 想简单从事,找端口扩展或LED驱动芯片或混用,可节省引脚,可驱动无数LED; 想玩得花些,可以上述方法叠加,并使用可编程的LED,LED数量和显现的花式都不限。 |
采用查理复用方式,理论上10个引脚可以驱动90个LED,符合你的要求。 |
我经常用,用过好多,省IO,N个IO可以驱动N*(N-1)个LED,9脚可以驱动72个LED,或9个带小数点的8。 驱动很简单,共阴或共阳均可,看排列,那个方便用哪个。 驱动原则是:一个脚为COM,其余脚为SEG,驱动的COM就输出高(共阳)或低(共阴),驱动的SEG就输出低(共阳)或高(共阴),不驱动的SEG为高阻。 |
zhuls 发表于 2024-9-26 17:36 就是啊就算复用能够实现。软件开销又大。驱动还要三极管,二极管,电阻。七十几个LED。这小元件也就是七十几个。真不如上一个LED驱动芯片算了。省事又省钱。 |
代码怎么写才会是最简洁的呢请问 |
zhuls 发表于 2024-9-26 17:36 请问有没有什么写法可以使得代码量在6k以内呢 |
IdeaMing 发表于 2024-9-26 16:44 代码方面怎么写是最高效和节约单片机内存的呢请问 |
10个引脚可驱动90个灯,但软件开销不是一般的小,小体量的单片机用的会很难受,不如用一个tm16xx,控制简单,IO只要2/3个,自带扫描,亮度可调,如果舍不得那几毛钱,那就没得说了~~ 人的视觉残留有一定的时间,所以单个IO时间长了显示可能会闪,时间短了亮度可能不够,麻烦。。。。 |
巧了,刚好用过类似的两位数码管 这个确实比较麻烦 看图应该是有四个数码管 DIG1 ~ DIG4 显示DIG1的时候所有端口先配置成输入状态以免个别灯亮, 然后比如要显示1,对应的B、C段就要设置3,4输出高电平,然后把1设置为输出低电平。 这样数码管DIG1就亮了B、C段显示1, 同样的步骤处理下面的数码管和其他显示点。 然后,合理规划每组显示的持续时间,保证刷新速度。 |
用专门的LED驱动芯片(如TM1629D,最多可以驱动96个LED)。单片机只需3个IO口就可以分别控制啦。 |
查理复用 |