这次的立方体,不管是原理图、源程序、制作流程,都会像以前一样毫无保留的分享给大家,“Chinked-out”工作室就是坚持开源,毫无保留的分享,借助网络,让大家指出不足,共同进步!!!我向大家保证,工作室后面的师弟会继续做出更好的作品,以后我也会坚持创作!现在我只完成了立方体部分,后期会推出“USB在线编辑”功能的立方体和“触摸编辑动画的”立方体,以后的立方体显示无需下载程序到到单片机,甚至支持高级语言编辑动画,也无需其他第三方软件编辑动画(点击鼠标那是个很痛苦的事情),适合业余爱好者。后期程序测试中,敬请期待!!!
程序难免有漏洞,更新、升级的程序我都会及时发在个人QQ空间里,现已完全对外开放,地址http://user.qzone.qq.com/136678431 无需加好友即可访问。
组装部分
一, 灯珠焊接
最开始的金字塔,我给大家的方案是泡沫板,现在我把焊接灯珠的方式改进了,焊接速度更快、质量更好,方法如图:
就是这个,用一张18X30CM的万能板,上面焊接上间距2.54的排针,用法如下图:横向的孔数是7个,纵向孔数是8个,这样焊接出来的灯珠间距就都是8个了
一目了然,这样就把灯珠固定好了,如果管脚的弯折方法和我图片一样的话(朝下的是正极),那么最优的方法是从右到左,从上到下排放。焊接我就不多说了,这个是最讲究的,虽然有这个模板焊接起来很方便,但焊锡一定要上好,否则开焊后还是很难搞的。温度要适当,免得烧毁灯珠,一般情况下,能把焊锡刚好溶化时的温度即可。用这种方法焊接出的点阵,要比用泡沫做模板的点阵质量更好,很少有开焊点,取下的点阵横平竖直,效率上也有了极大的提高。[page]
焊接好的平面如图:
二, 灯珠组装
在组装之前,先准备2张18X30cm的万能板,喷上黑色的喷漆,比较常用的那种,价格不贵,如图:
再拿出个8x8的点阵,比划一下,量好裁剪的尺寸,用斜口钳剪切还是很方便的。
然后就需要给底板和侧板焊接弯排针,间距都是8个孔,朝向请自己把握,下面是我做的图:
我想看了图后,大家都应该明白了,除了弯排针,还要给每个面的管脚都焊接上2.54的冷压端子,很容易的,东西也很便宜。这样做的好处就是非常容易拆装,第一次的时候我用的是直排针,结果就很难组装,弯排针不会影响美观。
在组装之前,先要焊接底板和侧板焊接上连接线,如图:
每个面都是有64根线,我用的是以前零散、没了头子的杜邦线,长度刚刚好够的,读者可以自己做线或者买成品,买成品我觉得也不贵,成品线的好处是,一端是8P的插座,另一端是裸线,直接焊接就好。
这个过程还是相当漫长的,我焊接512个灯珠用了三个下午,底板的焊接和接线同样是三个下午,可以说,老老实实的焊接的话,还是需要一周的时间的,我希望喜欢DIY的朋友们要有耐心,过程肯定是枯燥乏味的,但成功的喜悦也是难以言喻的。[page]
三, 驱动电路
看上面的图大家就应该知道了,我延续了以前金字塔的焊接方法,只不过这次是8输入全部并联,没有递减到1,输入的并联还是用的废弃管脚,焊接起来没什么难度,之所以用2组驱动,是考虑到了电流,每个面的电流还是不小的,8个面组合起来电流就更大了,单片机自己的驱动能力是远远不够的,一组的驱动也是不够的,这是我实际测试过的结果。所以还希望大家不要嫌麻烦,当然我更期待网友给出更好的解决方案,既能节约IC也能减少焊接的工作量。
四, 总装和美化
这些工作都完成后,就是把每个面的灯珠组装上去了,实在是没什么难度,如果后期发现有坏点现象,拆卸也很方便的,补焊就是。然后就是根据原理图把后面的总线连接到245的输出上,每个面64跟线,64个输出与之对应。
初装好后,就是这样了:
后面就是美化了,软件调试过后,硬件可以正常工作的话,就开始美化,把线都整理好,用热熔胶固定,在围上护板,把电路遮挡起来。我得承认,我没老外做的好,但毕竟人家用的是16位单片机,驱动方式不一样的,自然电路不一样,这个电路还算是复杂的,不过原理简单,程序设计上也没什么难度。
原理图部分
一,原理介绍
Ledcube1里面的图是为底面的驱动图,也就是我实物的下面的板子和下面的驱动电路原理,大家看到的那64个发光二极管代表了64个共阳极接点,并不是真正的灯珠,这样画是因为proteus里我找不到更好的表达方式了,希望大家切记,那不是真的灯珠,而是底面的64个共阳极接点(每个面8个阳极8个阴极)。
至于说单片机(请忽略图里的AT单片机,做样子的),我这次用的是STC12C5A60S2,倒不是因为89C52速度不行,而是储存空间不够大,我手里64K的单片机只有这么一块,所以就用上了,大家不要担心普通51单片机的能力问题,非增强型的单片机是完全可以胜任这个程序的,我亲自测试,保证通过。
Ledcube2里面的图就是侧面板子和驱动的电路了,完全一样,只不过没画出单片机,侧面245的输出全部连接的是共阴极,同样是64个。
两个图的19脚请大家注意,是两两一组的,大家在焊接的时候也注意到这个部分的布局,否则以后组装的时候还是很麻烦的。
二,注意事项
1
驱动芯片选型:我实物用的是LS系列245,因为我实在是比较懒,没有在所有的输出上加上拉电阻,因为LS系列的刚刚好就和单片机的TTL电平兼容,即便是P0端口,不加上拉一样可以直接准确输出。可HC系列的就不行了,19脚和8跟输入脚都必须加上拉电阻,否则硬件调试的结果是不对的,这个也是我亲自测试的结果。
但不是因为这个就不选HC系列的,HC的IC扇出系数(这部分请自行网上学习)比相比LS系列就大了很多,也就是说,HC的负载能力要好,而且功耗低,在两种IC的发热上来说,我是深有体会的,HC系列的做驱动时,芯片发热不明显,但LS的就明显发热,虽然发热温度也是符合范围的,但感觉上还是不舒服的,所以在骨牌时钟的时候,我就用了HC系列的,那时候用的都是大功率二极管,换成HC的IC后,发热明显降低。
希望读者根据自己的实际情况选用IC,不管选用哪种,都要做好对应的处理方案。
2
限流电阻,我在原理图上是都画了限流电阻的,这部分加不加要看你选用什么材质的发光管,我这次用的经过测试,就不需要加限流电阻,但不保证别人选用的也能承受住IC的输出电流,而导致二极管亮度过亮。大家把买来的二极管一定要做好电流测试,看你的二极管工作在那个电流范围最稳定,再选择对应的电阻,如果大家选用的和我的是一样,自然就不需要加电阻了,我的制作清单会附在表格里,给大家参考。
3
原理图请用proteus7.5版本打开,大家就不要再加我好友问为什么图打不开或者要99se的图了,我没有,也不怎么熟悉那个软件。
程序部分
这次的程序依然是汇编,控制部分有60多行,我觉得算是简短的程序了。我在这里小小的抱怨下,希望大家不要再问我为什么不用c语言了,今天我可以告诉大家,不用c语言是因为我不会,我也比较反感别人问我这些,我也知道自己用的是汇编,很多人理解起来有困难,所以我是给了中午注释的,大家可以根据程序解构和中午注释来修改成c语言版本的。不懂汇编不是什么问题,但是不懂汉字我就不能再说什么了,本人能力有限,不能再给出c语言程序,希望大家理解。
下面,我根据我对c语言的理解,给大家做出c语言的结构
1初始化部分,主要是设置对应的中断,定时工作方式,与汇编是完全一样的
2 显示部分
A 把立方体看作8位数码管,每个面即为一个数码管
B,每个面的显示原理是和8X8点阵是完全一样的,保证这段程序正确的,可以直接调用
C 查表的方式是自0起递增的,每次加1,每个画面查表64次,查表的上限为65536/64,当然,实际的情况是要小于65536的,控制程序的代码也会占用rom空间,就会导致了画面次数减少,所以,要想在有限的空间内显示更多的画面,就得尽量把程序写的简短,当然了,有的朋友会选用更大容量的单片机,查表的上线自然会增加。
注意:c语言可以直接定义16位变量,汇编在这方面是比较麻烦的,但好处是我可以调试程序来直接计算我的程序可以写到多少的上限,c语言的方法我就不知道了。但肯定是可以通过调试计算出来的。
3中断部分,为了达到动画效果切换时间可准确调节性,画面的切换用中断方式。建议大家像我这样,把时间通过一个变量来表示,这样每次只需修改一个变量,就可以设置动画的速度了。每次发送中断后,查表的变量就加64(i=i+64),然后返回显示程序继续显示,中断程序只做变量的计算,改变的是查表的地址。
4循环
A程序循环,循环的条件是i变量不满足动画显示的上限值。比如你做了八个画面,那么i的的值不满足8X64时,就继续显示,满足就清零从新开始。
B 显示循环
这个比较重要,主题的显示程序,应该是一个死循环,一直在显示一个画面,只有中断产生的时候,改变了查表的变量,才切换一次动画,每个画面都显示后,注意修正变量,能使其显示同一个画面,不管是查表的变量还是Z轴,Y轴的控制变量,都要进行初始化,直到中断的产生才改变查表的变量数值。
上一篇:定时器中断使用+数码管动态显示
下一篇:单片机60s倒计时c51程序
推荐阅读最新更新时间:2024-03-16 14:24