光电显示
摘要:为解决二维LED显示单调与立体感差的问题,提出了以STC12c5a60s2为核心芯片,辅以ULN2803芯片和74HC573芯片对大功率的512个LED灯驱动来实现3D显示的设计方案。通过对3D显示屏原理分析,结合硬件电路设计与软件编程,完成了8×8×8的显示屏光立方制作,并给出了最终的交替变换动态效果。
3D显示屏由512个LED灯构建的三维LED点阵模块及相应的控制系统构成[3-4]。其外观规格为18cm×18cm×18cm,各相邻两灯间距约为25.6mm。系统通过二维8×8的LED驱动电路控制XY基面,依次沿Z轴方向实现8次扫描,恰好完成一次整体的8×8×8LED从底面到最高面的扫描。整体模型用X、Y、Z三轴模拟,其X轴控制锁存器使能端,Y轴控制锁存器数据端,X、Y轴控制XY基面,Z轴控制层面,如图1所示。利用人眼的视觉暂留效应,分时段刷新每一层面数据就可达到立体显示的动静态效果。
本设计采用STC12c5a60s2单片机为核心芯片,该芯片不仅具有运算速度快、功率损耗低、抗干扰能力强等优点,而且内部功能完全兼并8051;同时集成了MAX810专用的复位电路,简化了传统的电路设计;其内部还具有8路高速10位A/D转换和2路PWM,能适应电机控制以及干扰性较强的场合。ULN2803作为整体LED的8位共阴极驱动芯片以增强驱动电流的能力。采用8片规格完全相同的锁存器74HC573对LED阳极端口控制,可实现图形稳定显示、动态快速变换、亮度逐级可调等功能。系统的总体框图如图2所示。
2.1MCU主控模块
本系统采用STC12c5a60s2单片机为核心芯片,内部自带高达60KB的FlashROM和1280BRAM数据储存器,4组8bit的I/O口。其中P0端口与74HC573数据输入端口相连,发送阳极数据,对应Y轴;P1口与ULN2803数据输入端口相连,发送阴极数据,对应Z轴;P2口与74HC573使能端口相连,发送片选信号数据,对应X轴。XTAL1和XTAL2分别连接12MHz晶振两端,串连30pF电容C1、C2后接地,其晶振可满足运行速度的要求。由于STC12c5a60s2芯片自带复位电路,因此忽略了电路中复位电路环节,简化了电路设计。主控电路如图3所示。
由于本设计中LED较多,单片机本身的驱动能力显得不足,考虑到ULN2803模块具有较强的灌电流能力,因此作为共阴极(Z轴)驱动,其中com端口接地,1C~8C分别对应主控器的P1.0~P1.7端口,输出端口1B~8B分别对应LED点阵的8个共阴极端口[5]。最初实验中采用ULN2803模块,电流还是未能满足设计要求,因此增加了图4所示的外部灌电流驱动电路,实验效果明显改善。
本设计采用74HC573模块对阳极束(Y轴)进行并行输入并行输出控制。其具有以下优点:(1)具备高阻态功能,输出既不是高电平,也不是低电平,而是高阻抗状态,在这种状态下,可将多个芯片并联输出,同时控制;(2)具备数据锁存功能,当输入的数据消失时,在芯片的输出端数据仍然保持;(3)具备数据缓冲功能,可加强电路的驱动能力。
74HC573模块驱动电路如图5所示。8片锁存器使能端OE口均接地,LE锁存端口P2.i分别与主控系统中P2对应的第i位端口相连,8位数据输入端口D0~D7分别与主控系统P0口并行连接,8位数据输出端口Q0~Q7分别与对应8列X轴即64位阳极束连接。
本实验3D显示屏LED点阵模块是在二维的基础上通过层叠加原理实现的[6],因此可将三维8×8×8模型看作是64×8的平面模型,即对应的XY面与Z面的相互作用模型。其中64看作阳极束,一片74HC573芯片输出端为8位,恰好设计8片74HC573芯片控制64位阳极束。8看作阴极束,用一片ULN2803芯片控制。因此64×8对应了全部的512位即512个LED灯。每一位采用状态0或1可对其进行亮或灭控制,实现三维LED灯的发光或熄灭。
此设计采用X、Y、Z三轴三维模型模拟,其中任意LED灯的坐标为LED(X,Y,Z),坐标范围均为0~7。当要(3,4,5)点坐标灯亮,控制其Z=4处平面灯全亮即输入端口为高电平1,其余为低电平0;Y=3处平面灯全亮即输入端口为高电平1,其余为低电平0;X=2处平面输入端口对Y=3处平面数据进行锁存即由高电平1变为低电平0,这样便可实现LED(3,4,5)坐标灯保持高亮,其余灯熄灭。由此通过点可实现线、面、体以及两两结合组成的各种三维立体动静态图形显示。由于动画显示只有大于15帧时人眼才可看到流畅的动态效果,因此在动态图形中扫描周期必须小于(1/15)s,即每层停留的时间t最多为(1/15)×(1/8)[7]。此效果的显示都是通过软件来实现的,这里显示一个简单的动态沙漏程序,代码如下:
voidshalou()
{inti,j,d;
chushihua();//初始化函数
for(j=0;j《8;j++)
{
For(d=0;d《5*(8-j);d++)
{
For(i=0;i《=j;i++)
{
CLEAR();//清屏函数
P0=SHALOU[i];//Y轴扫描数据
P2=SHALOU[i];//X轴存入高电平数据
P2=0x00;//X轴低电平锁存数据
P1=0x80》》i;//Z轴发送层扫描函数
Delayms(5);
}
}
}
For(j=7;j》=0;j--)
{
For(d=0;d《5*(8-j);d++)
{
For(i=0;i《=j;i++)
{
CLEAR();
P0=SHALOU[i];//Y轴扫描数据
P2=SHALOU[i];//X轴存入高电平数据
P2=0x00;//X轴低电平锁存数据
P1=0x01《《i;//Z轴发送层扫描函数
Delayms(5);
}
}
}
实现该代码的思路流程如图6所示
本设计通过硬件电路设计与软件编程实现了3D效果显示,如图7所示。其中,图7(a)为动态沙漏的某一瞬间截取图;图7(b)为动态桃心的某一瞬间截取图;图7(c)为动态平面前后扫面的某一瞬间截取图;图7(d)为整体静态显示图。从图7(a)、(b)可明显看出图形的立体层次感;从图7(c)、(d)可看出,与平面二维效果相比,三维立体方位感更强、更真实。
本文实现了从开始的硬件设计到最终的软件仿真,达到了以下目的:(1)该电路设计合理,不仅图形的稳定性好,而且观赏性强,为其他三维效果设计提供了一定的实践基础;(2)从仿真结果可看出三维效果比二维效果立体感更强、更真实,该设计方案是以后各立体效果图形设计采纳的主流趋势。然而,由于条件限制,通过A/D转换音频控制LED未能进一步设计,将在以后的工作中利用离散傅里叶光学变换展开研究。
全部0条评论
快来发表一下你的评论吧 !