基于AT89C52的光立方设计
2015-03-23危鑫阳泳孟阳
危鑫++阳泳++孟阳
摘 要:该文研究了基于AT89C52的光立方设计,采用8片74HC573作为面驱动器件,1片ULN2803作为层驱动器件,驱动8×8×8LED点阵,可显示任意立体图形和3D动态效果。
关键字:光立方 74HC573 AT89C52 ULN2803
中图分类号:TP368 文献标识码:A 文章编号:1672-3791(2014)12(b)-0023-01
在显示技术迅速发展的今天,“光立方”是一种新兴的电子产品,广泛应用于金融、展览、演出和体育活动等方面。该文研究了采用蓝灯雾状散光LED作为显示载体,AT89C52作为控制平台,74HC573作为LED面驱动器件,ULN2803作为层驱动器件,为实现3D视觉效果提供了硬件支持。
1 总体设计方案
单元电路采用以二维8×8的LED驱动电路,每一面的LED灯分8次来控制,对每一面的数据分时段进行刷新,以产生立体显示效果。
该系统使用一片AT89C52单片机作为控制核心,用8片74HC573作为面驱动芯片,用一片ULN2803作为层驱动芯片,驱动8×8×8三维LED点阵(即512个LED)实现图形稳定显示,动态快速变化。系统结构图如图1所示。
2 硬件设计
2.1 MCU主控模块
该系统的主控芯片使用的是AT89C52,它带有512字节RAM数据储存器和8K Flash程序储存器,8位的I/O口有4组,对运行速度的要求,配置12MHZ晶振即可满足。
由于这种设计对MCU要求不高,使用普通的单机片就可以完成设计,而且设计与制作也方便,成本不高。该设计只用了24只脚,还剩下8个端口方便以后的扩展。
2.2 光立方工作原理
512个蓝色散光LED组成了光立方,分8层,每层64个(8×8)LED,LED之间相互都间隔了一定距离,通透性比较好,其三维显示效果是通过LED矩阵自身的空间立体性来实现的。具体的连接方式为:每一层的64个LED阳极连起来,再连接74HC573,将纵向同列的8个LED的阴极连起来,接到锁存器组成的列控制模块的输出端。一共有64个列单元在光立方中。
面驱动电路和层驱动电路是光立方扫描驱动电路的两大类。层扫描信号通过层驱动电路产生后,由74HC573驱动选通或关闭与每一层LED阳极,连接竖直方向同列的LED的阴极,再分别连接到8个锁存器(74HC573)的输出端,当选通LED层,且锁存器处于低输出时,就会点亮相应的LED。将光立方的空间图像信息按8层分,每层的数据信号由面驱动电路依次送到选通的LED列上面,由8个8bit的锁存器来分时控制每层的64个LED,分时选通8个锁存器时采用I/O端口,锁存器中输入进每层的控制数据后,利用层选信号对相应层进行选通,8层在一个周期内一次扫完,因为人眼的视觉停留时间要比这一个周期的时间长,因而一幅完整的立体图案就呈现在人们的眼中了。这样一来要分时控制512个LED可通过使用15个I/O扩展口来实现。利用这种工作原理,使光立方平台上静态画面和动画的效果得以实现。
3 软件设计
该系统在主程序首先完成系统初始化,则根据各参变量已有的数值,对功能模式进行相应的选择,进入对应的图形数据处理子函数或者其他功能子函数。再把经过处理的图形数据写进74HC573,这样最终显示效果的变化就完成了。
4 实现结果
基于二维显示,通过人眼的视觉停留效应以及真实的3D空间排列的LED点阵,使光立方3D显示效果能够达到。音乐立方动态显示以及图像立体静态显示可由该系统来实现,且真正意义上的三维显示在动态显示的基础上实现了,具有很高的实用价值。不过,该设计仍存在很多的不足且需要改进,例如受限于硬件资源,光立方没有很高的分辨率,仅对一些简单的动画和图像进行显示。另外,目前只能显示单色,因此可以从全彩LED显示方面进行改进。若要在比较大型的场所使用,则要按所给的设计方案扩展相应的外围电路,这样就可以达到目的。
参考文献
[1] 江世明,黄同成.单片机原理及应用[M].北京:中国铁道出版社,2010.
[2] 康志强,汪佳,汤勇明.基于FPGA的3D光立方设计[J].电子器件,2012,35(6):683-686.
[3] 黄同成,周红波.程序设计基础教程(C语言)[M].长沙:湖南人民出版社,2012.endprint