基于STC单片机的8×8×8LED光立方系统设计*

2013-09-11 07:53李行杰
关键词:单片机驱动电路

苏 珊,肖 英,李行杰

(广西科技大学电气与信息工程学院,广西柳州 545006)

基于STC单片机的8×8×8LED光立方系统设计*

苏 珊,肖 英,李行杰

(广西科技大学电气与信息工程学院,广西柳州 545006)

为解决二维LED显示屏显示单调和立体性差的问题,以STC系列单片机为核心,采用锁存器74HC573和ULN2803芯片实现大功率LED的驱动,提出了软硬件系统设计方案,并完成了8×8×8的LED光立方系统设计.该系统能动态和静态地立体显示文字、图案和动画,适用于传媒信息和装饰显示,为进一步开发三维显示器提供了一定的理论与实践基础.

单片机;光立方;LED点阵;74HC573;ULN2803

在信息化社会的高速发展过程中,LED显示屏扮演着越来越重要的角色,随着各种信息的传播和人们视觉审美的提高,人们对LED显示屏提出了更高的要求[1].当下二维LED显示屏技术已经相当成熟,但是二维平面点阵显示单调、乏味,人们已经不再满足于二维平面显示,从而在二维平面LED显示屏基础上,开发设计三维LED点阵屏——光立方,显示色彩鲜艳画面,立体感强,不仅可以用于室外环境信息传播,还可用于室内环境装饰,其显示给人们带来全新的娱乐体验,具有投影仪、电视墙、液晶显示屏无法比拟的优点[2].笔者提出了基于STC单片机8×8×8光立方设计方案,该系统电路结构简单,控制系统稳定.

1 系统设计方案

单色8×8×8光立方由512个LED构建的三维LED点阵模块及其控制系统组成.三维LED点阵模块规格约为18cm ×18cm×18.5cm,分8层共阴和64列共阳,每个LED之间的空间间距约22mm.系统的工作原理是在二维LED点阵的基础上,扩大LED之间的距离,应用层叠技巧搭建成一个实心LED立方体,用主控系统直接控制外围驱动电路输出,间接实现对LED的亮灭控制.采用逐层扫描的工作方式,利用人们视觉暂留效应,实现动静态文字和图像显示[3].因为控制涉及的LED较多,且要求自由控制每个LED的亮灭,所以对控制系统的功能有较高的要求.

硬件系统主要分为3大模块:主控模块、驱动模块和显示模块.其中主控系统发送显示信息和控制驱动电路显示;驱动模块分为阳极驱动模块和阴极驱动模块,驱动电路传输显示信息和放大电流驱动三维LED点阵模块显示;显示模块显示预设文字或图像信息.

设计方案总体结构框图如图1所示.

图1 总体结构框图

2 硬件系统设计

2.1 主控模块

主控采用STC12系列单片机STC12C5A60S2作为核心芯片,该芯片运算速度快,功率损耗低,抗干扰能力强,完全兼容传统8051指令代码,内部自带高达60kB FLASH ROM,集成MAX810专用复位电路,8路高速10位A/D转换(250kB/s),2路PWM,适用于电机控制以及干扰性较强的场合[4].主控模块电路如图2所示.单片机引脚P1.0~P1.7分别与阴极驱动芯片ULN2803的8个数据输入口相连,发送层扫描信号;引脚P0.0~P0.7分别与8片74HC573的8个数据输入端口相连,发送共阳束数据;引脚P2.0~P2.7分别与8片74HC573的使能端相连,发送片选信号.复位电路由按键、10μF电解电容和1 0kΩ电阻组成,复位引脚REST连接复位电路,实现按键复位.XTAL1和XTAL2分别接1 2MHz晶振两端,串接电容接地,为单片机工作提供时钟源.P3.0RXD(串行输入口)和P3.1TXD(串行输出口)分别连接USB转串口的TXD和RXD,用于串口通信,向内部FLASH ROM写入程序.

图2 主控模块电路

2.2 驱动模块

光立方显示部分由512个LED组成,整体显示需要较大的功率,若功率不够,则显示会出现不亮、半亮等现象,严重影响显示效果.因此,光立方对驱动方式有较高的要求.驱动部分模块选用NPN达林顿连接晶体管ULN2803作为共阴层驱动,8进制3态非反转透明锁存器74HC573为主要芯片作为共阳束驱动.

2.2.1 共阴层驱动电路设计 8个共阴层采用逐层扫描的工作方式,使用八重达林顿管ULN2803放大电流驱动.ULN2803达林顿管一般用来驱动功率稍大的被动器件,内部设计了二极管防止被击穿,使用的时候不需要外接二极管,同时驱动多路器件的时候可以节省PCB空间,方便走线[5].共阴层驱动电路如图3所示.ULN2803的引脚9和10分别接GND和VCC,8个数据输入口IN1~IN8分别与主控电路的P1.0~P1.7引脚相连,8个数据输出端均接1个1kΩ限流电阻后,分别与三维LED点阵模块的8个共阴层相连,工作过程中向数据输入端发送层扫描信号,数据输出端反相输出选中相应层.

图3 共阴层驱动模块电路

图4 1片74HC573驱动模块电路

2.2.2共阳束驱动电路 共阳束采用并行输入并行输出控制方式,使用8进制3态反转透明锁存器74HC573设计共阳束驱动电路.8片74HC573的三态允许控制端OE均接地,64个数据输入口按D1~D8对应相连后,再分别与主控系统的P0.0~P0.7引脚相连,8个锁存控制端LE分别与主控系统的P2.0~P2.7引脚相连,64个数据输出端分别与三维LED点阵模块的64个共阳束相连.1片74HC573的驱动电路如图4所示.

在工作中,单片机从P0口将共阳束数据送到D端,然后控制数据锁存端,使LE从“0→1→0”,此时需要输出的数据就锁存在Q端上,不受输入的数据变化影响.

2.3 三维LED点阵显示模块

显示模块利用LED在空间上的亮灭实现文字或图形的显示.该设计用到512个LED,整体显示需要功率较高,选用小功率插件式长脚草帽形LED(阳极引脚27~28mm,阴极引脚25~26mm)可降低对驱动电路的要求,发光集中,LED点阵整体的通透性强.在孔间距为8×8平面模板上,根据所选用LED规格大小设定孔大小,LED统一弯折管脚使灯帽、阴极、阳极三者之间分别成90°,其中阴极平LED根部往一水平方向折90°,阳极距离LED根部4mm处往另一水平方向折90°[6].将折好的LED放置模板上,将同极管脚首尾焊接即可快速制作一面8×8的LED二维平面点阵.用同样的方法制作8面8×8的LED二维平面点阵后,将它们组成立方型(面与面间距22mm),并将不同面的行依次相接,构成8层共阳、64列共阴的三维LED点阵模块.

3 软件系统设计

3.1 设计思路

三维LED点阵模块是在二维点阵模块的基础上,应用层叠技巧搭建而成的,因此在控制上可以将三维LED点阵模块看作一个64×8的平面矩阵.从数据结构上分析,控制一个8×8×8的三维LED点阵模块显示,或者是一个64×8的平面LED矩阵,就是对长度为64byte数组的控制.一个字节有8位(bit),64×8=512位,对应了三维LED点阵的512个LED,每一位有“1”和“0”2种状态,对应了LED的亮和灭.

虽然光立方和二维点阵控制原理相似,采用“逐层扫描”或者“逐行扫描”方式,但是在实际应用中,编程控制却有很大的差别.光立方控制,需要应用三维空间中点、线、面、体的算法规律.在几何上,通常计算一个立方体的体积,需要知道立方体的长、宽、高.在光立方的三维LED点阵模块中,任意取一点都可以与其他相应的点构成一个立方体.因此,要控制光立方中的任意LED亮灭,可以建立三维坐标系xyz,定义光立方中任一个LED的坐标为(x,y,z),其中x,y,z值域为[0,7].光立方共有64束,束用k表示,k的值域为[0,63].另外,每束上有8个LED,可以用一个字节的8个位数据定义其显示状态.各束上对应位置的LED阴极连在一起构成了层,采用逐层扫描方式可以避免同层不同束LED之间的相互影响.

固定画面控制显示过程如下:(1)主控系统控制片选将第1层64个点的数据有序地发送到8片74HC573进行锁存;(2)发送接通第1层且其他层关闭的扫描信号;(3)延迟时间t;(4)发送关闭所有层信号.依此类推,扫描完8层为1个周期T.利用人眼的视觉暂留特性,只要扫描得够快,一个扫描周期的时间就小于人眼的视觉暂留时间;从人眼看来,光立方显示的就是一幅完整的立体图形.由于扫描完8层为1个周期,若每层点亮的时间t占整个周期T的比值不同,因此必然导致光立方整体显示亮度不同,要使得光立方显示亮度均匀,就必须让每层点亮时间t相等.一般情况下,显示动画大于15帧时,人眼才能看到比较流畅的动画效果,故一个扫描周期T最多s,即每层停留时间t最多

3.2 运行程序设计

在层扫描工作方式中,无论是动态显示图文还是静态显示图文,在整个显示过程中,主控单片机不断发送数据和不断扫描,每次发送数据只能点亮1层,扫描完1个周期,即可看到完整的立体图形.为保证点亮每层停留时间相等,需要单片机中断设定1个时间基准.采用动画程序和输出显示程序分离设计,运行程序可以分为3大部分:第1部分是上层的系统应用程序,第2部分是显示数据运算程序,第3部分是中断刷新显示程序.系统应用程序完成系统环境的初始化设置和循环调用驱动显示子程序等工作;显示数据运算程序负责运算出动画结果存放到指定数组中;中断刷新显示程序负责向屏体发送指定数组中显示数据,并产生行扫描信号[7].程序流程如图5所示.

图5 程序流程

4 仿真结果

图6是实验的显示效果.使用STC12C5A60S2作为下位机,设置串口通讯波特率为57 600,根据上位机控制三维LED点阵显示所需的格式,编写文字或图像数据信息,通过串行口与下位机连接通讯,发送有效的文字或图像数据信息,即可控制光立方,实现显示功能[8].主控系统对上位机类型要求不高,只需要上位机能与主控系统实现串口通讯,设置相同的串口通讯波特率.

图6 实验显示效果

5 结语

文中以高性能的STC芯片为硬件基础,完成了光立方的硬件和软件系统主设计.实验效果表明,该方案有效可行,设计的光立方牢固、美观,LED显示屏各点亮度均匀、充足,可以动静态、立体显示三维文字或图形,显示过程稳定.

[1] 梁铭林.LED显示技术的应用[J].智能建筑,2010(3):42-45.

[2] 杨富强,朱利强.基于单片机的LED点阵动态显示系统[J].工业控制计算机,2013(1):101-102.

[3] 官微宏.3D8S的设计理念与开发心得——基于Arduino的8×8×8光立方[J].无线电,2012(10):66-69.

[4] 颜兵兵,任 翔,贾俊成,等.基于单片机的LED立体成像系统设计[J].佳木斯大学学报:自然科学版,2013,31(3):393-395.

[5] 杨清德.LED驱动电路设计与工程施工案例精讲[M].北京:化学工业出版社,2010.

[6] 刘小平,李志远.单片机版光立方的制作[J].无线电,2012(10):70-74.

[7] 王浩然,秦会斌.LED点阵屏显示单元的设计与驱动控制[J].电子器件,2010,33(5):550-552.

[8] 李行杰,李克俭,肖 英.基于AVR单片机的8×8×8三维LED点阵设计[J].大众科技,2013(5):42-44.

(责任编辑 陈炳权)

Design of 8×8×8LED Light Cube Based on STC Microcontroller

SU Shan,XIAO Ying,LI Hang-jie
(Institute of Electrical and Information Engineering,Guangxi University of Science and Technology,Liuzhou 545006,Guangxi China)

In order to solve the problems of drab display and poor stereoscopic of 2DLED screen,based on the core of STC single chip,a LED light cube of 8×8×8is designed,with application of latch 74HC573&ULN2803to obtain high power drive.In this design,text,graph and animation are displayed in multiple 3Dforms statically and dynamically.It is suitable for the display of media information and decoration information,and contributes to further development and design of 3Ddisplay screen.

microcontroller;light cube;LED lattice;74HC573;ULN2803

TP332

A

10.3969/j.issn.1007-2985.2013.06.010

1007-2985(2013)06-0033-04

2013-09-12

广西省教育厅科学研究项目(201203YB131);广西省2012年度“大学生创新创业训练计划”资助项目(35)

苏 珊(1979-),女,广西柳州人,广西科技大学电气与信息工程学院讲师,主要从事应用电子技术及自动控制系统设计研究.

猜你喜欢
单片机驱动电路
电路的保护
基于模糊PI控制的驱动防滑仿真系统分析
屈宏斌:未来五年,双轮驱动,砥砺前行
基于单片机的SPWM控制逆变器的设计与实现
解读电路
轨旁ATC系统门控柜接收/驱动板改造
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
巧用立创EDA软件和Altium Designer软件设计电路