专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

LED立方体Touch Cube制作教程

作者:佚名   来源:本站原创   点击数:  更新时间:2013年01月06日   【字体:

 这次的作品,献给两个人,一是我喜欢的女孩子,一个是我的班主任,一个内心与外在一样美丽的老师!我想,过多的表达只能让分别伤感,我只希望这个小小的作品,能让你快乐!


 

  经过之前的“led金字塔”、“骨牌时钟”作品后,很多朋友或多或少的了解到我们工作室了,以后有机会,我会更加详细的介绍我们工作室,毕竟我们作品现在很少,到现在为止,一共上传了4个作品,包括现在的“立方体”和教学性的“51遥控小车”,这4个作品都是我设计的,除了骨牌时钟我参与的很少外,其他作品都是我亲自完成,其中的酸甜苦辣想必为单片机痴狂的人都能体会。在这里,我不是给大家诉苦,而是想对大家说,我要休息一段时间,因为现在面临毕业就业,虽然也想继续创业,也想继续在重庆搞这个工作室,这里给了我太多的回忆和鼓励,虽然工作室的小师弟们开始起步,虽然工作室的工作有了很大起色,但这些似乎不重要了,重庆是个美丽的地方,可作为唐山人,我体内对故乡似乎有一种特别的眷恋,现在,她在等我回去。


 

  好了,一感慨话就多了,下面开始!在开始前,我还是那句:希望读者尊重工作室原创,您的支持就是对工作室最大的鼓励,教学性转载请注明作者及出处,转载和引用不得用于商业目的。如有意项目合作,请联系工作室QQ 136678431、1157965718。工作室讨论群:231931086


 

  视频:


 

  这次的立方体,不管是原理图、源程序、制作流程,都会像以前一样毫无保留的分享给大家,“Chinked-out”工作室就是坚持开源,毫无保留的分享,借助网络,让大家指出不足,共同进步!!!我向大家保证,工作室后面的师弟会继续做出更好的作品,以后我也会坚持创作!现在我只完成了立方体部分,后期会推出“USB在线编辑”功能的立方体和“触摸编辑动画的”立方体,以后的立方体显示无需下载程序到到单片机,甚至支持高级语言编辑动画,也无需其他第三方软件编辑动画(点击鼠标那是个很痛苦的事情),适合业余爱好者。后期程序测试中,敬请期待!!!


 

  程序难免有漏洞,更新、升级的程序我都会及时发在个人QQ空间里,现已完全对外开放,地址http://user.qzone.qq.com/136678431 无需加好友即可访问。


 

  组装部分


  一, 灯珠焊接


  最开始的金字塔,我给大家的方案是泡沫板,现在我把焊接灯珠的方式改进了,焊接速度更快、质量更好,方法如图:

 

 

  就是这个,用一张18X30CM的万能板,上面焊接上间距2.54的排针,用法如下图:横向的孔数是7个,纵向孔数是8个,这样焊接出来的灯珠间距就都是8个了

 


 

 

 

 

  一目了然,这样就把灯珠固定好了,如果管脚的弯折方法和我图片一样的话(朝下的是正极),那么最优的方法是从右到左,从上到下排放。焊接我就不多说了,这个是最讲究的,虽然有这个模板焊接起来很方便,但焊锡一定要上好,否则开焊后还是很难搞的。温度要适当,免得烧毁灯珠,一般情况下,能把焊锡刚好溶化时的温度即可。用这种方法焊接出的点阵,要比用泡沫做模板的点阵质量更好,很少有开焊点,取下的点阵横平竖直,效率上也有了极大的提高。


 

  焊接好的平面如图:

 


 

 

  二, 灯珠组装


  在组装之前,先准备2张18X30cm的万能板,喷上黑色的喷漆,比较常用的那种,价格不贵,如图:

 

 

  再拿出个8x8的点阵,比划一下,量好裁剪的尺寸,用斜口钳剪切还是很方便的。

  然后就需要给底板和侧板焊接弯排针,间距都是8个孔,朝向请自己把握,下面是我做的图:

 

 

  我想看了图后,大家都应该明白了,除了弯排针,还要给每个面的管脚都焊接上2.54的冷压端子,很容易的,东西也很便宜。这样做的好处就是非常容易拆装,第一次的时候我用的是直排针,结果就很难组装,弯排针不会影响美观。


 

  在组装之前,先要焊接底板和侧板焊接上连接线,如图:

 


 

 

 

 

  每个面都是有64根线,我用的是以前零散、没了头子的杜邦线,长度刚刚好够的,读者可以自己做线或者买成品,买成品我觉得也不贵,成品线的好处是,一端是8P的插座,另一端是裸线,直接焊接就好。

  这个过程还是相当漫长的,我焊接512个灯珠用了三个下午,底板的焊接和接线同样是三个下午,可以说,老老实实的焊接的话,还是需要一周的时间的,我希望喜欢DIY的朋友们要有耐心,过程肯定是枯燥乏味的,但成功的喜悦也是难以言喻的。


 

  三, 驱动电路

  看上面的图大家就应该知道了,我延续了以前金字塔的焊接方法,只不过这次是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轴的控制变量,都要进行初始化,直到中断的产生才改变查表的变量数值。


 

资料下载:http://www.51hei.com/f/lygyhh548.zip

关闭窗口

相关文章