多路复用的情人节

也许2月14日让人们最容易联想到丘比特之箭,它会让人们回忆到那浪漫的青春年少时光。

丘比特之箭

丘比特之箭

如果使用LED组成一个丘比特之箭图案,而且有不同的点阵变化特色似乎是一个不错的想法。电子工程师的浪漫不在乎制作出来成品它有多么的完美,而是在于实现过程的困难。

下面的一块小板上集成了40个LED,组成的丘比特之箭的图案。它的困难在于这40个LED灯仅仅使用了一个八管脚MCU的五个IO口来控制每一个LED灯的点亮。警觉的同学们马上就会想到这中间存在着一个很大的困难。

使用一个八管脚的MCU控制了由24个LED组成的丘比特箭的电子作品

使用一个八管脚的MCU控制了由24个LED组成的丘比特箭的电子作品

如果使用一个IO口,可以通过高低电平控制一个LED点亮还是熄灭。两个IO口则可以控制两个LED等分别的点亮还是熄灭。但如果其中在借助于辅助电路,则可以实现两个IO口控制四个LED的点亮还是熄灭。下面就是一个例子:

两个管脚控制四个LED

两个管脚控制四个LED

如果对于上面的电路有些疑惑,可以对照下面的真值表分析电路中P1,P2,PR1 管脚的电压,以及它们组合后对应的点亮LED。

P1,P2电压决定了PR1电压和点亮哪只LED

P1,P2电压决定了PR1电压和点亮哪只LED

由于两个IO口,可以提供 2 2 2^2 =4种状态,可以控制LED的个数与它的状态组合是相同的。

那么前面电路中总共有40个LED灯,而所使用的IO口只有5个,它的高低电平状态组合只有 2 5 2^5 =32种,那么它又是如何控制40个LED灯各自点亮的状态的呢?

这里就需要提到一种 Gugaplexing 单片机IO口多路复用的方法。对于单片机的IO口,实际上有三种状态,高(H)、底(L)、以及高阻(Z) 。高阻状态下,单片机的IO口对外近似于断开。

在上面两路IO口控制四个LED电路中,除了前面四中状态之外,它还有第五种,即两个IO口都是高阻状态,此时L3,L4都没有被点亮。如果将这种状态应用上,就可以继续增加可以控制的LED的数量。

下面给出了使用四个IO端口控制24个LED的电路图。
使用四支IO管脚控制24支LED

使用四支IO管脚控制24支LED

的确,看起来有点烧脑。但是如果看懂了前面两个IO口控制四个LED的电路,再配合下面两张表格,就会明白其中的道理。反正我是前前后后看了N多边,终于明白了其中神秘的道理。这个谜底就留给有好奇心的同学们自己分析吧。

P1,P2,P3,P4与LED之间的关系

P1,P2,P3,P4与LED之间的关系

使用Gugaplexing 方式来控制LED,可以使用N个IO口控制 2 × N × ( N 1 ) 2 \times N \times \left( {N - 1} \right) 个LED。因此如果有五个IO口,就可以控制40个LED的,它的原理与上面四个IO口控制24个LED的原理是一样的。

看到这一点,自己就会设计和绘制该电路图的冲动了。

发布了269 篇原创文章 · 获赞 112 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/104305360