找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8305|回复: 11
打印 上一主题 下一主题
收起左侧

(原创分享)玩了那么久光立方其实也有写过日志,但一直存在草稿里没发表过 第一次发

  [复制链接]
跳转到指定楼层
楼主
材料清单:

首先要diy光立方需要买齐什么电子元件?
光立方材料清单:
主控芯片 STC90C516RD  (这个家里有就没买)
雾状 白发蓝发光二极管 尺寸2*5*7  *550个
74HC573锁存器  *8个 (贴片)
ULN2803
达林顿管驱动器 *1个  (贴片)
18*30cm洞洞板 *1
晶振 *1个 12MHZ
陶瓷电容 22PF  *2个
200欧电容  *64个
以及跳线、按键开关...
共计70元左右

在快递寄来前,需要先画仿真电路图
浅谈光立方硬件原理:
512个独立LED如果要单片机单独控制是不可能的,因为51单片机只有32个I/O口(input/output)。

所以就需要用到锁存器,每个锁存器能锁存一个字节的”电平信号“,可以控制8个LED,8个锁存器可以控制64个LED。
可以把光立方分成8层,每层共阴,八个层的阴极接ULN2803 达林顿管驱动器的8个输出端口。而ULN2803 达林顿管驱动器的输8个入端接P1端口,用来控制光立方的8个层哪个层可以有电流通。
如 P0 = 0X01; 二进制值 = 00000001,也就是说,
达林顿管驱动器输出端只有第一个端口输出低电平,其他端口都是高电平。这样一来通过P0端口值的变换就可以用8个锁存器循环控制第0~7层。

/*没学过画画,画的是有点丑*/




(补充信息)固定画面的显示,所需要硬件执行的过程


1.将第一层64个点的数据传入8个74hc573中,控制uln2803层控制芯片打开第一层开关,使第一层点亮,这个时候,其他层是灭的。
2.等待时间t。
3.熄灭第一层,开始向74hc573中传输第二层的数据,锁存,开启第二层总控制开关,点亮第二层。
4.等待时间t。
.......
熄灭第一层,将第八层的的数据传进所有74hc573中,锁存,开启第八层总开关,点亮第八层。
再回到第一步,循环下去....
这样,便实现了一个周期画面的显示,由于人眼的视觉暂留的特性,只要刷新的够快,我们看到的就是光立方整体都在亮。便实现了我们想要的效果。为了画面的稳定,上面间隔点亮t要保持一致,否则会出现亮度不均的情况。
在实际使用上述电路的时候,最好给74hc573输出的64个引脚分别加一个限流电阻,这样能起到很好的二极管保护作用和整体功耗的限制以及亮度的调节。

对于光立方,首先要清楚其工作原理,整个点亮的过程,单片机需要一直工作的,单片机每一次发送的数据只能点亮一层的特性得知,在整个画面显示图案的时候,即使是静止的图案,那么单片机也是在不断循环工作的。如果单片机停止了工作,那么光立方得图案即会消失。
又由于这个特性,如果点亮某一层后停留的时间不一样,就会造成每一层的亮度不均匀,所以为了避免这些,需要一个准确的时间基准来依次点亮光立方的每一层,方法有很多,但单片机不能总处理这么一个任务,他可能要处理的还有,动画的实时运算,其他数据的采集和处理等,所以考虑到这些任务都是需要实时运行的,编程难度似乎加大了不少,这时需要引入单片机中断这一基础功能,难题便会迎刃而解。
首先定义一个缓存数组,用于储存所有的光立方每一点的数据,暂且理解为显存。我通常用display[8][8]定义为数组。
下面就要定期把这个数组定期发送至驱动板中,时间如何去定义。
我查阅资料后发现,当现实器播放大于15帧的动画时,才会在我们的眼中形成流畅的效果。那么光立方刷新频率要大于15hz/s(越大越好,但是越大单片机负载也越大),这里也就是说,每1/15秒就要进行一次全部图的刷新,又由于在相同时间,只有一层能够点亮,那么每一层停留的时间就是1/15/8s根据这些规则,我需要定义定时器让定时器有相应的数值。把这段专门用于刷新光立方显示的程序放于中断服务程序中。这样,我们程序的基础框架就有了。由于是定时器中断自动来刷新驱动板数据,这样我们看到的图像很稳定,亮度也均匀。而且我们再写其他的图案动画程序时候,不用再去考虑去更新驱动板数据,一切都会由中断自动完成。而我们如果要更改图案,我们只需要对数组所储存的数据进行更改即可,这也使我们的动画程序很驱动程序产生隔离,这样做的好处是即使更换了驱动板,那么也只需要对驱动函数(中断里面的程序)做相应的改动即可,不必再对其他程序改动。这也避免了“动一发而牵全身”的尴尬局面。






快递寄得慢也就算了,居然还少寄了!先倒腾起来

把母孔焊到洞洞板上


用硬纸板做焊接模具,掰弯发光二极管,准备焊接。



第一面焊好,烫手啊!





接着焊好板子及板子底下的跳线




接着做好给光立方供电的电源

最后光立方就做出来了


也许有人会问你光立方的制作过程怎么不全,是这样的我这篇文章以前是写在QQ空间的日志草稿里的,还没全写完。就在前几天这个光立方被一个网友买走了, 这个网友先是在网上买了一个PCB板做光立方成品,然而毕业设计没通过,就想买洞洞板的光立方于是就跟我买了。
关于我对光立方驱动程序的理解,手写笔记也一起寄给了那个网友。但是我在寄快递前用手机拍了下来


















这些程序在帖子附件中都有,想研究光立方程序的可以下载附件看看

小学生班门弄斧了,希望大家谅解!



最后说一下洞洞板制作光立方容易出现的一些问题
1.锁存器的两个脚短路的问题。
2.做好不要用母孔做光立方,容易造成灯脚与板子接触不良和造成光立方的不整齐
3就是要注意发光二极管的漏光问题,有的LED被反向击穿了,所以电流就会从负极流向正极。导致该亮的灯不亮,不该亮的灯亮。
4.国产锁存器里面坏的多,我买10个国产锁存器里面有一个是坏的,锁存器第4个输入口居然接地了,导致我做光立方遇到了很大的问题。

光立方仿真.zip

139.08 KB, 下载次数: 57, 下载积分: 黑币 -5

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:122841 发表于 2016-5-24 15:24 | 只看该作者
如果闲stc90c516单片机运行速度慢的话,可以用stc12单片机做光立方,要比stc90运行速度快很多遍。
回复

使用道具 举报

板凳
ID:122841 发表于 2016-5-24 15:46 | 只看该作者
光立方材料清单: 主控芯片 STC90C516RD  (这个家里有就没买) 雾状 白发蓝发光二极管 尺寸2*5*7  *550个 74HC573锁存器  *8个 (贴片) ULN2803 达林顿管驱动器 *1个  (贴片) 18*30cm洞洞板 *1 晶振 *1个 12MHZ 陶瓷电容 22PF  *2个 200欧电阻  *64个 以及跳线、按键开关...
回复

使用道具 举报

地板
ID:122841 发表于 2016-5-24 16:03 | 只看该作者
回复

使用道具 举报

5#
ID:122841 发表于 2016-5-25 22:15 | 只看该作者

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

6#
ID:3721 发表于 2016-5-30 08:38 | 只看该作者
好棒的diy制作啊,力顶. 视频效果真拉风

楼主买10个国产锁存器里面有一个是坏的,估计肯定是翻新的,不知道楼主买的多少钱一个我以前买的好像是1元左右,也是遇到了坏的.国产货真是悲哀.
回复

使用道具 举报

7#
ID:122841 发表于 2016-5-30 10:59 | 只看该作者
heicc 发表于 2016-5-30 08:38
好棒的diy制作啊,力顶. 视频效果真拉风

楼主买10个国产锁存器里面有一个是坏的,估计肯定是翻新的,不 ...

8毛一个
回复

使用道具 举报

8#
ID:98618 发表于 2016-6-2 16:38 | 只看该作者
真是不错,特别是楼主的笔记做的真详细,给初学者提供了很大的帮助,楼主万岁
楼主还是用的大块头的变压器+7805供电吧,还是建议采用开关电源
回复

使用道具 举报

9#
ID:126973 发表于 2016-6-19 16:55 来自手机 | 只看该作者
好棒啊
回复

使用道具 举报

10#
ID:144391 发表于 2016-10-25 16:43 | 只看该作者
好好收益了
回复

使用道具 举报

11#
ID:183264 发表于 2017-3-25 12:07 来自手机 | 只看该作者
赞一个楼主,学习到了很多东西
回复

使用道具 举报

12#
ID:185249 发表于 2017-4-15 23:18 | 只看该作者
很厉害,赞一个,对我帮助很大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表