LED立方体Touch Cube制作教程
不够大,我手里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
LED立方体TouchCub 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)