前言
这段时间因为一些原因想玩玩 led 灯,需要控制很多灯,想了一下,光立方控制的灯数量很多,可以拿来改改,所以在网上找了一些现成的控制方案,想着改一改可以玩玩。
这段时间的参考资料都在最下方,这些资料很有用,特别是第一个资料,资料页面的下方有qq群,群里有光立方的一些电路和程序资料,还有群主语音解答哦~真的是太爱了,非常感谢群主的的热情解答,让我理解了很多东西。
控制方案的理解
这个电路所用到的芯片不多,74HC245、74HC595、ULN2803,以及一个51单片机。
整体的控制思路就是 8 * 8 * 8 的光立方,一层一层的显示,也就是说将数据输入到控制层显示的一个 74HC595 中,和控制 64 个灯显示的 74HC595 中,然后一次性将这 9 个74HC595 芯片的控制信号输出到相应端口上,然后,一层就显示出来了。
74HC245 的作用是增大单片机的驱动力,因为单片机所能提供的电流有限嘛,只用单片机的话无法一次性驱动 64 个灯,注意,这里说的是一次性驱动,不是动态扫描显示,如果是动态扫描显示的话是可以的,什么,听不懂,没关系,我也不懂,往下看看就可以。
74HC595 的作用就是将串行输入的数据并行输出。
ULN2803 的作用是反相器,将输入的位信息取反,嗯,每一层的灯都是共阴极的,也就是说要拉低那一层的共阴极电平才能将 64 个灯的控制信号在那一层上显示出来,而我们输入的信号却是将那一层的信号置1,所以需要反向将其置0。
嗯,听上面这一段应该会很懵,没事,我这种很蠢的人,花了好几天的时间才将这个东西理解了。
现在,看一下这个光立方的形状,然后再来慢慢思考控制的方式。我这里的话是有一个 8 * 8 的 led 点阵(很丑,拿在手里焊的,帕金森一直抖),这个是用普通的 led 焊接的,这样子的一片,在光立方中就是立起来的一片(像图片这样子立起来),在它的前面或者后面重复的放置这样的 8 片,构成一个光立方,然后,我们来看下这个 8 * 8 的点阵,可以看到,在灯的下面和右面有延伸出来的管脚,下面的管脚全部都是灯的正极,右面的全部都是灯的负极。

然后我们来看一下我打出来的一块电路板,原理图的话是按照上面说的qq群里的资料做的,我只换了芯片,然后在对单片机加了重启电路和晶振电路。

可以看到这个电路板右边有八个 74HC595 芯片,在芯片的左边连着一些电阻,然后就是连接着一些 1 * 8 的排母(其实把这个当个孔,然后把电线焊在这里也行,无所谓啦),这里的八个排母就对应着上面一片 led 点阵中的八个正极,而在电路板的做点下面的地方也可以看到一个 1 * 8 的排母,这个排母对应的就是上面 led 点阵中右边的八个负极。
这样了解了这个电路的连线之后是不是就比较好理解这个点整的控制了呢,只要负极接地,正极输出高电平,那么对应的 led 灯也就能点亮了。这样想来是不是很简单,但是,哈哈哈,没怎么简单。
在这个电路中,我们是通过动态刷新的方式,来点亮这 8 片点阵的,这里简单说一下动态刷新,就是我们人眼看东西是有视觉暂留,一个灯的亮度如果变化的时间太快的话我们的眼睛有可能识别不出来,所以,利用视觉暂留的效果,我们控制一个等快速的亮灭亮灭的时候,我们看到的效果其实是灯一直亮着的(但是这里有一点,就是亮灭亮灭的时候其实灯发光的功率比一直亮着的时候功率要低一些,所以,电流相同的情况下亮度会暗一点点)。
理解动态刷新,接下来我们就可以真正理解一下这个电路的控制方式了,首先 led 点阵右边的负极接着的那个 595 芯片会控制只让第一个横行的灯亮起来,就是让第一行的右边内个脚接低电平,同时,利用正极接着的内个 595 芯片,让我们想亮起来的灯,对应的正极接上高电平,这样我们就可以点亮 led 点阵一行的灯了,然后快速的,只让第二行右边负极的脚接上低电平,其他接上高电平,那么只让我们想第二行亮起来的灯的正极引脚接上高电平的话,第二行对应的灯也会被点亮了……以此类推,点亮剩下的几行,如果我们点亮的时间够快的话,那么这八行灯看起来其实就是一起亮着的,这样,我们就控制了一片 led 点阵的灯。
仔细想想,我们这里只是利用到了右边八个 595 芯片中的一个,以及左边下面的一个 595 芯片,那么,这个时候,聪明的各位,剩下右边七个 595 芯片就可以控制其他 7 片 led 点阵,然后每一片 led 点阵的每一行对应的负极都接到一起去,从负极看的话就形成了 8 层 led。
我们每一次就让 8 个 595 芯片准备好 8 片 led 点阵对应 8 行的数据,然后,负极端选中我们想显示的层,这样,我们一次就能亮起一层,然后,依旧利用视觉暂留的作用,依次点亮八层,只要速度够快,那么,这个光立方也就看起来是一起亮的。
接下来,最重要的就是驱动相应的 595 芯片输出数据了。
参考资料: