微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单片机痴狂者的DIY:LED光立方制作

单片机痴狂者的DIY:LED光立方制作

时间:07-16 来源:Chinked-out工作室 点击:

是两两一组的,大家在焊接的时候也注意到这个部分的布局,否则以后组装的时候还是很麻烦的。

  二,注意事项

  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轴的控制变量,都要进行初始化,直到中断的产生才改变查表的变量数值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top