炫酷漂亮的3D版LED点阵魔方制作

3Dcube8(光立方)是一个由 LED 组成的 3D 显示器,是一个集实际型 、经济型、性价比高的艺术品, 它不仅仅局限于装饰,更是能够帮助更好的学习 C 语言实际应用、满足单片机爱好者对单片机的研究的个好工具。3Dcube8 有多种规格,常见的有单色 4*4*4、单色 8*8*8、RGB 全彩光立方等。其中前者是这之中最简单的,制作难度和成本最高的是采用 RGB 的全彩光立方,这里我选择制作单色 8*8*8。

1、项目材料简介

LED 的选择:市面上有很多种发光二极管,按形状分方形和圆形草帽状、按效果又有高亮雾面等区别。考虑到美观和降低制作难度,我选择了3mm长脚高亮雾面发光二级管,长脚的最大优势就是可以作为支架,省时省力。

驱动方式利用人眼视觉暂留特性,利用逐层扫描的方式,来达到显示各种图案的目的。常见的 coms 锁存器(cmos 发热低,优先选择)有 74hc573 和 74hc595,前者为并入,后者串入。因为不需要光立方的级联设计,所以采用 573 锁存器。

主控芯片选择较多,有常见的 AVR、STC、ARDUINO 等。根据之前学过的课程,我们决定采用 stc 系列的 STC89c5A60S2 增强型单片机作为主控芯片。之所以不选 89C52 等芯片,不是因为他们的运算速度不够,主要原因是它们的片上 flash 太小,难以满足需求,其次是因为自己有闲置的 STC89C5A60S2,片上内存大,运算速度 1T,即充分利用资源节省成本,又可以实现所需要的功能需求。最后就是附属配件 usb 转 ttl 串口的 stc 下载线。选择采用 cp2102 作为 usb 转串口芯片方案,下载 STC 单片机完胜 PL2303 方案,最高下载速度可达 115200 波特率。

2、详细制作步骤

一. 电路设计

1. 软件部分

实验环境:AD13,

该部分我们在 altlium designer 13 上完成,及用 altlium designer 13 画出所有原理图,然后生成 PCB,最后将 PCB 图发给工厂,制造出对应的电路板.

a. 控制模块——单片机最小系统

b. 驱动电路—— p 口接 8 片 573le 端

在驱动电路上,图中的电阻都是 150r 的限流电阻,限流电阻 130r 为理论值.大于这个小于这个都可以。限流电阻 r=(vcc-vf)/i,Vcc 电源电压,Vf 为 LED 的正向电压降,I 为 LED 的工作电流,I 大了,就亮,小了就会偏暗。

到此,光立方的原理部分就结束了,接下来就该做 PCB 部分了.全部原理图如下图所示:

c. PCB 图的生成

我们将完成的原理图(图4)导入到 PCB 项目里,并进行合理的布局,然后开始布线,最后覆铜(如图5,图6)保存文件并将文件发给 PCB 板制造工厂。接下来就是短暂的等待。

在此期间我们可以进行下一步的制作。

2. 硬件部分

a. 显示电路 —— LED 点阵屏的制作

现将选定的 LED 灯弯曲成图7的样子,再按照图 8 将 LED 灯焊接在一起,一共需要焊接512个,共 8 片,每片 64 个。单片焊接完成如图 9,图 10, 8 片焊接结束如图 11 图 12。将 8 片 LED 按照 8X8X8 排列在一起,如图 13 图 14。

将 LED 灯焊接完成后,相信我们定做的 PCB 板也完成了,那么接下来我们开始焊接电路板,因为电路板上都是贴片,元器件非常小,所以在焊接过程中我们可以选用镊子夹住元器件,先在电路板上固定一只管脚,在逐一将其焊接……

到此,我们的焊接部分全部结束,接下来又要开始软件部分,不过在进行软件部分以前,我们需要吧焊接好的 LED 灯插入到 PCB 正面上的排母里,如图 17、图 18。

3.软件部分

所需软件:keil4.0、STC-ISPv4.80

这里主要是将程序烧录到单片机内,当然,这需要经过很多次的调试才能完成,呈现出自己想要的效果,感觉这是一个巨大工程,不过只要有恒心,一切都不是事,哈哈……下图是程序中的一小小小部分

补充:程序的设计分为4部分

1. 初始化部分

主要是设置对应的中断,定时工作方式。

2. 显示部分

把立方体看作 8 位数码管,每个面即为一个数码管,每个面的显示原理是和 8X8 点阵是完全一样的,保证这段程序正确的,可以直接调用。查表的方式是自 0 起递增的,每次加 1,每个画面查表 64 次。当然,实际的情况是要小于 65536 的,控制程序的代码也会占用 rom 空间,就会导致了画面次数减少,所以,要想在有限的空间内显示更多的画面,就得尽量把程序写的简短。c 语言可以直接定义 16 位变量。

3. 中断部分

为了达到动画效果切换时间可准确调节性,画面的切换用中断方式。把时间通过一个变量来表示,这样每次只需修改一个变量,就可以设置动画的速度了。每次发送中断后,查表的变量就加 64(i=i+64),然后返回显示程序继续显示,中断程序只做变量的计算,改变的是查表的地址。

4. 循环

程序循环,循环的条件是 i 变量不满足动画显示的上限值。比如做八个画面,那么i的的值不满足 8X64 时,就继续显示,满足就清零从新开始。

显示循环

主题的显示程序,应该是一个死循环,一直在显示一个画面,只有中断产生的时候,改变了查表的变量,才切换一次动画。每个画面都显示后,注意修正变量,能使其显示同一个画面,不管是查表的变量还是 Z 轴,Y 轴的控制变量,都要进行初始化,直到中断的产生才改变查表的变量数值。

经过多次反复的调试,终于成功了,达到了我们想要的结果,可是那么高大上的东西,总要有个外壳吧,为了方便,实惠,我们选用3D打印机自己做咯,首先我们 3D 建模软件(这里使用 soildwork,也可以使用其他,如 3DMax 等)画出相应尺寸的模型(如图 19 然后使用 cura 设定打印参数,最后将文件导入打印机,开始打印,几个小时之后,就可得到我们想要的模型了,如图 20)

到了这里,我们的单色 8*8*8 光立方也就结束了,套上外壳并插上电源,期待已久的画面瞬间亮瞎了我的眼睛好咯,接下来让我们一起来欣赏那动人的画面

项目补充

1. 测试方案

a、在 8 片点阵屏搭建完成之后采用点阵屏整面点亮方式检查每一面 LED 的通电情况,有过亮、过暗或者完全不亮的及时拆换。

b、检查电路板的焊点和飞线是否有虚焊或者漏焊情况,元件正负极有无颠倒情况。

c、电路组装采用整体组装整体测试方式。

d、烧录测试程序,检查光立方的全亮状态下有没坏点。

2. 注意事项

a、搭建 LED 一定要主要,焊接温度和静电问题!

以上情况,会照成 LED 损坏,和 LED 微亮的情况。

(距离 LED 灯头 3mm 左右 电烙铁 放在上面加锡。5-10 秒 LED 就会坏的,尽量焊接一个点在3秒左右,就算一次不成功也没事等他冷却了,在焊接)。电烙铁接地处理里没有地的,在电烙铁头铁壳上绑一根电线,脚踩在水泥地板上线踩在脚下。

b、 LED 的间距 LED 间距为 20M,就是刚刚好标准洞洞板 9 个孔间距。

3.后期制作

在后期,我们将继续对光立方进行更深入的研究与制作,做出更大更绚丽的光立方。