也许2月14日让人们最容易联想到丘比特之箭,它会让人们回忆到那浪漫的青春年少时光。
如果使用LED组成一个丘比特之箭图案,而且有不同的点阵变化似乎是一个不错的想法。电子工程师的浪漫不在乎制作出来成品它有多么的完美,而是在于实现过程的困难。
下面的一块小板上集成了40个LED,组成的丘比特之箭的图案。它的困难在于这40个LED灯仅仅使用了一个八管脚MCU的五个IO口来控制每一个LED灯的点亮。警觉的同学们马上就会想到这中间存在着一个很大的困难。
如果使用一个IO口,可以通过高低电平控制一个LED点亮还是熄灭。两个IO口则可以控制两个LED等分别的点亮还是熄灭。如果再借助于辅助电路,则可以实现两个IO口控制四个LED的各自点亮还是熄灭。下面就是一个例子:
如果对于上面的电路有些疑惑,可以对照下面的真值表分析电路中P1,P2,PR1 管脚的电压,以及它们组合后对应的点亮LED。
P1,P2电压决定了PR1电压和点亮哪只LED
由于两个IO口,可以提供 =4种状态,可以控制LED的个数与它的状态组合是相同的。
那么前面电路中总共有40个LED灯,而所使用的IO口只有5个,它的高低电平状态组合只有 =32种,那么它又是如何控制40个LED灯各自点亮的状态的呢?
这里就需要提到一种 Gugaplexing 单片机IO口多路复用的方法。对于单片机的IO口,实际上有三种状态,高(H)、底(L)、以及高阻(Z) 。高阻状态下,单片机的IO口对外近似于断开。
在上面两路IO口控制四个LED电路中,除了前面四种状态之外,它还有第五种,即两个IO口都是高阻状态,此时L3,L4都没有被点亮。如果将这种状态应用上,就可以继续增加可以控制的LED的数量。
下面给出了使用四个IO端口控制24个LED的电路图。
的确,看起来有点烧脑。但是如果看懂了前面两个IO口控制四个LED的电路,再配合下面两张表格,就会明白其中的道理。
反正我是前前后后看了N多遍,终于明白了其中神秘的道理。这个谜底就留给有好奇心的同学们自己分析吧。
使用Gugaplexing 方式来控制LED,可以使用N个IO口控制 个LED。因此如果有五个IO口,就可以控制40个LED的,它的原理与上面四个IO口控制24个LED的原理是一样的。
看到这一点,自己就会设计和绘制该电路图的冲动了。
"The most beautiful thing we can experience is the mysterious. It is the source of all true art and science. "
-- Albert Einstein
我们能体验的最美好的事物是神秘,它是所有真正的艺术和科学的源泉。
-- 阿尔伯特.爱因斯坦,
《我的信仰》,1930