李行杰 李克俭 肖 英
(广西科技大学电气与信息工程学院,广西 柳州 545006)
LED显示屏是八十年代后期在全球迅速发展起来的新型信息传播媒体[1][2],随着大规模集成电路和计算机技术的发展,LED显示屏作为一种新兴的显示媒体得到了高速的发展,其中以二维平面点阵屏显示的广泛应用作为标志之一[3],但是随着人们对视觉享受的要求越来越高,二维的平面点阵显示开始显得单调、粗糙、乏味,人们已经不再满足于二维平面显示,2009年10月1日天安门广场举行的国庆联欢晚会上,四千多棵光艺高科技“发光树”,吸引了全国人民的眼球,一个全新的名词“光立方”,引起了众多学者的热议,随后三维点阵显示屏的出现更是令人耳目一新,本设计的8*8*8三维 LED点阵[4][5]显示模块是以AVR单片机为核心控制系统,显示部分用512个白发蓝高亮LED交错搭建而成,极具光赏性,可以动静态显示三维文字及图形,给人强烈的立体感,同时炫酷、多样式的显示也给人们带来全新的娱乐体验。
本设计使用孔距为22mm的8*8平面模板快速搭建8面二维LED点阵,把8面二维点阵组成立方型,并将不同面的行依次相接,构成8层共阳64列共阴的三维LED点阵。系统的工作原理,是在简单二维LED点阵的基础上,扩大LED之间的距离,并应用层叠技巧搭建成一个实心LED立方体,用AVR单片机直接控制外围驱动电路输出,间接实现对LED的亮灭控制。采用逐层扫描的工作方式,利用人们视觉暂留效应,实现简单的动静态文字和图像显示。系统结构框图如图1所示。
图1 系统结构框图
8*8*8三维LED点阵由512个LED组成的实心立方体,分为8层,64列,展开后相当于一个64x8的平面点阵。设计选用工作电压为2.7~3.3V,大小为3mm白发蓝高亮长脚LED,直接使用LED管脚实现矩阵的搭建,构成8层共阳,64列共阴的三维LED点阵。每个LED与相邻LED间距约22mm,提高了整体的通透性,达到良好的三维显示效果。
三维LED点阵的控制根据系统对复杂数据的运算处理以及外部扩展接口配置需求,结合ATMEL公司的AVR单片机[6]高可靠性、功能强、高速度、低功耗和低价位等特点,采用ATMEGA328P-PU单片机作为主控芯片。设计的主控系统原理图如图2所示。
ATMEGA328P-PU的内核具有丰富的指令集,32×8通用工作寄存器可保存大量的操作数据和运算结果;32K字节的系统自可编程Flash程序内存可写入大量控制光立方的功能代码;高达1 MIPS/MHz的吞吐率解决TM1816串入并出效率问题;两个8位定时器/计数器,一个16位的定时器/计数器,可用来实现串口中断和扩展外部中断;6通道的PWM输出可对全局LED进行无级亮度调节;6通道10位ADC输入可用于扩展AD功能接口等。工作时,主控系统产生层扫描信号,通过译码器译码控制阳极驱动芯片STM4953的输出,实现逐层扫描[7],结合阴极驱动电路中锁存数据的输出,点亮相应的LED,实现三围显示功能。
图2 主控系统原理图
8*8*8三维LED点阵采用阳极驱动电路放大电流和阴极驱动电路恒流输出驱动。阳极驱动电路接共阳层,起层选通开关作用;阴极驱动电路接共阴束,起束选通开关和全局LED亮度控制作用。
(1)阳极驱动电路
三维LED点阵采用逐层扫描的工作方式,8个共阳层使用典型的平面点阵驱动芯片STM4953驱动,驱动电路如图3所示。为了减少占用单片机的I/O接口数量,STM4953通过译码器74HC138与主控系统相接。STM4953控制端为低电平有效,且74HC138输出为低电平,为了避免不确定信号导致STM4953误导通,增强系统的坑干扰能力,在译码器输出端接上拉电阻,把不确定信号通过电阻钳位在高电平。工作时,由主控系统输出层控制扫描信号,经74HC138译码器译码后选通或者关闭STM4953输出,实现对三维LED点阵逐层扫描。
图3 阳极驱动电路
(2)阴极驱动电路
三维LED点阵的64列共阴束使用4片16位恒流驱动IC- TM1816驱动,驱动电路如图4所示。选用TM1816,首先是其拥有16个驱动能力较强的恒流输出端口,每个输出端可口提供3~45mA恒定电流量以驱动对应列的8个LED,并且当环境发生变化时,对其输出电流影响很小,用4片即可驱动64列共阴束,从硬件上提高了三维LED点阵显示的均匀性和一致性;其次,串行输入并行输出[5]以及联级功能可以大大减小占用主控系统I/O数量,同时降低了编程的复杂性;此外各个输出端口的电流大小可调,可实现对三维LED点阵整体亮度调整,使显示效果更加丰富。
工作时,由主控系统产生时钟脉冲,发送串行数据,并控制数据锁存和使能输出。在CLK上升沿期间,数据端串入的数据被发送到移位寄存器中,即每当来一个上升沿,从TM1816的 SDI引脚送入一位数据或者 SDO引脚输出一位数据,如果需要发送16位的数据则需要16个CLK上升沿才能将 16位数据全部输入或移出移位寄存器。当控制三维 LED点阵阴极的所有数据全部输入到移位寄存器后,数据锁存控制端被至为高电平,串行数据全部输入锁存器后至为低电平。需要输出时,输出使能控制端至为低电平即启动输出端输出。与此同时,用PWM控制三极管使R-EXT引脚对地导通,能集中控制各个输出引脚的电流大小,实现对LED亮度进行无级调节。
图4 阴极驱动电路
采用层扫描工作方式,整个显示过程,主控单片机不断发送数据、不断扫描,每次发送数据只能点亮一层,扫描完8层为一个周期。上位机只需根据主控系统控制三维LED点阵显示所需的格式[8],编写文字或图像数据信息,通过串行口发送给主控系统。
控制程序设计分为两大模块:与上位机通讯部分和驱动显示部分[9-11]:
与上位机通讯部分主要是利用主控单片机中断服务通过串口接收上位机发送的文字或图像等数据信息,实现与上位机的实时数据信息传输,并对接收数据信息进行处理,本设计设计串口通讯波特率为 57600;驱动显示部分主要是从显示缓冲区读取要显示的文字或图像等数据信息,运算处理后发送给驱动电路,并控制驱动电路输出实现显示功能。
程序流程图如图5所示
图5 程序流程图
程序控制流程:
(1)主程序:对堆栈、串口进行初始化,然后循环调用驱动显示子程序、响应串行接收或发送中断指令;
(2)中断服务程序:从串口接收上位机发送的数据信息处理后存至显示数据缓冲区,实现与上位机实时数据信息传输;
(3)驱动显示子程序:不断读取显示缓冲区的数据信息,运算处理后,串行输出列选通信号至阴极驱动电路控制输出,配合层动态扫描信号,实现显示数据输出。
实验分别使用STC12系列单片机12C5A60S2和Arduino USB接口系列的最新版 Arduino UNO R3作为上位机,12C5A60S2单片机使用Keil uVision4编程,Arduino UNO R3使用Arduino IDE编程,设置串口通讯波特率为57600,根据下位机控制三维LED点阵显示所需的格式,编写文字或图像数据信息,通过串行口与主控系统连接通讯。
显示效果如图6所示
图6 显示效果图
实验结果表明:该方案有效可行,主控系统不挑上位机类型,只需上位机能与主控系统实现串口通讯,设置相同的串口通讯波特率,发送有效的文字或图像数据信息,即可控制8*8*8三维LED点阵实现显示。
三维点阵是未来显示的发展方向,根据三维LED点阵显示模块进行文字或图案显示的功能需求,利用单片机构成主控系统添加外部扩展接口,结合上位机通讯,可实现一个较为完善的综合信息显示平台。设计选择使用上位机控制,意在将“光立方”设计成为单纯的三维显示屏,为将来进一步研究标准三维显示器的制作及控制提供一定的参考。对单色8*8*8三维LED点阵的研究,对于灰度不同的真彩色或分辨率要求更大的 三维LED点阵设计,有待于进一步的研究设计。
[1] 徐振方,孟艳花,王艳.基于AVR单片机的LED显示屏控制系统的研究[J].照明工程学报,2010,21(2):77-80.
[2] 王浩然,秦会斌.LED 点阵屏显示单元的设计与驱动控制[J].电子器件,2010,33(5):550-552.
[3] 梁铭林.LED显示技术的应用[J].2010,(3):42-45.
[4] 刘小平,李志远.单片机版光立方的制作[J].无线电,2012,(10):70-74.
[5] 官微宏.3D8S的设计理念与开发心得——基于 Arduino的×8×8光立方[J].无线电,2012,(10):66-69.
[6] 邹清平,卢森幸.一种基于ATmega32控制的MP3播放器的设计与实现[J].2012,(24):118-118.
[7] 康志强,汪佳,汤勇明.基于FPGA的3D光立方设计[J].电子器件,2012,6(35):683-686.
[8] 杜洋.制作CUBE8光立方[J].无线电,2011,(7):20-25.
[9] 杜洋.CUBE8光立方的图形 DIY[J].无线电,2012,(12):34-38.
[10] 刘小平,李志远.按键操控的LED点阵动画编辑器[J].无线电,2013,(2):42-44.
[11] 杨富强,朱利强.基于单片机的LED点阵动态显示系统[J].工业控制计算机,2013,(1):101-102.