基于STC12c5a60s2单片机的3D显示屏设计
摘 要 : 为解决二维LED显示单调与立体感差的问题,提出了以STC12c5a60s2为核心芯片,辅以ULN2803芯片和74HC573芯片对大功率的512个LED灯驱动来实现3D显示的设计方案。通过对3D显示屏原理分析,结合硬件电路设计与软件编程,完成了8×8×8的显示屏光立方制作,并给出了最终的交替变换动态效果。该设计不仅产生了一种良好的视觉效果,而且为其他三维效果广告设计提供了重要的参考价值。
0 引言
常见的LED显示以平面(二维)显示为主,这种显示技术相当成熟,宾馆、饭店、公司及娱乐场所都可看到各式各样的二维广告流水灯。然而这种平面效果的显示设计因单调性和立体感差已不能满足人们对LED效果的观赏性要求,因此在二维显示屏基础上,开发设计三维(3D)LED显示屏非常有必要。3D显示屏是以LED发光二极管为基本单元组成的显示器,因其画面鲜艳逼真、立体感强等特点逐渐进入人们的视野[1-2],被人们接受和认可。
本文建立三维立体模型,利用X、Y、Z三轴,采用STC12c5a60s2核心芯片,辅以ULN2803芯片和74HC573芯片实现大功率的512个LED驱动,达到3D显示的目的。该设计具有以下特点:(1)外观设计简单美观;(2)实现图形的动静态效果显示,稳定性好,抗干扰性强;(3)程序灵活可变,可局域性更改,实现画面的自定义,使得图形在数字、字母、三维立体图形之间任意交替动态变换;(4)此设计可为其他三维效果设计开拓思路,提供实践依据。
1 总体方案设计
3D显示屏由512个LED灯构建的三维LED点阵模块及相应的控制系统构成[3-4]。其外观规格为18 cm×18 cm×18 cm,各相邻两灯间距约为25.6 mm。系统通过二维8×8的LED驱动电路控制XY基面,依次沿Z轴方向实现8次扫描,恰好完成一次整体的8×8×8 LED从底面到最高面的扫描。整体模型用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 硬件设计
2.1 MCU主控模块
本系统采用STC12c5a60s2单片机为核心芯片,内部自带高达60 KB的Flash ROM和1 280 B RAM数据储存器,4组8 bit的I/O口。其中P0端口与74HC573数据输入端口相连,发送阳极数据,对应Y轴;P1口与ULN2803数据输入端口相连,发送阴极数据,对应Z轴;P2口与74HC573使能端口相连,发送片选信号数据,对应X轴。XTAL1和XTAL2分别连接12 MHz晶振两端,串连30 pF电容C1、C2后接地,其晶振可满足运行速度的要求。由于STC12c5a60s2芯片自带复位电路,因此忽略了电路中复位电路环节,简化了电路设计。主控电路如图3所示。
2.2 驱动模块设计
2.2.1 模块ULN2803设计
由于本设计中LED较多,单片机本身的驱动能力显得不足,考虑到ULN2803模块具有较强的灌电流能力,因此作为共阴极(Z轴)驱动,其中com端口接地,1C~8C分别对应主控器的P1.0~P1.7端口,输出端口1B~8B分别对应LED点阵的8个共阴极端口[5]。最初实验中采用ULN2803模块,电流还是未能满足设计要求,因此增加了图4所示的外部灌电流驱动电路,实验效果明显改善。
2.2.2 74HC573模块设计
本设计采用74HC573模块对阳极束(Y轴)进行并行输入并行输出控制。其具有以下优点:(1)具备高阻态功能,输出既不是高电平,也不是低电平,而是高阻抗状态,在这种状态下,可将多个芯片并联输出,同时控制;(2)具备数据锁存功能,当输入的数据消失时,在芯片的输出端数据仍然保持;(3)具备数据缓冲功能,可加强电路的驱动能力。
74HC573模块驱动电路如图5所示。8片锁存器使能端OE口均接地,LE锁存端口P2.i分别与主控系统中P2对应的第i位端口相连,8位数据输入端口D0~D7分别与主控系统P0口并行连接,8位数据输出端口Q0~Q7分别与对应8列X轴即64位阳极束连接。
3 软件设计
本实验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]。此效果的显示都是通过软件来实现的,这里显示一个简单的动态沙漏程序,代码如下:
void shalou
{ int i,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--)
CLEAR;
P1=0x01<<i; //Z轴发送层扫描函数
实现该代码的思路流程如图6所示。
4 仿真效果
本设计通过硬件电路设计与软件编程实现了3D效果显示,如图7所示。其中,图7(a)为动态沙漏的某一瞬间截取图;图7(b)为动态桃心的某一瞬间截取图;图7(c)为动态平面前后扫面的某一瞬间截取图;图7(d)为整体静态显示图。从图7(a)、(b)可明显看出图形的立体层次感;从图7(c)、(d)可看出,与平面二维效果相比,三维立体方位感更强、更真实。
5 结论
本文实现了从开始的硬件设计到最终的软件仿真,达到了以下目的:(1)该电路设计合理,不仅图形的稳定性好,而且观赏性强,为其他三维效果设计提供了一定的实践基础;(2)从仿真结果可看出三维效果比二维效果立体感更强、更真实,该设计方案是以后各立体效果图形设计采纳的主流趋势。然而,由于条件限制,通过A/D转换音频控制LED未能进一步设计,将在以后的工作中利用离散傅里叶光学变换展开研究。
参考文献
[1] 康志强,汪佳,汤勇明.基于FPGA的3D光立方设计[J].电子器件,2012,35(6):683-686.
[2] 王欣,马青玉.基于Arduino的LED光立方设计[J].南京师范大学学报,2013,13(4):24-28.
[3] 杨永刚.3D光立方的设计与制作[J].电子世界,2014(6):129.
[4] 刘小平,李志远.单片机版光立方的制作[J].无线电,2012(10):70-74.
[5] 杨清德.LED驱动电路设计与工程施工案例精讲[M].北京:化学工业出版社,2010.
[6] 杨富强,朱利强.基于单片机的LED点阵动态显示系统[J].工业控制计算机,2013,26(1):101-102.
[7] 苏珊,肖英,李行杰.基于STC单片机的8×8×8 LED光立方系统设计[J].吉林大学学报,2013,34(6):33-36.
单片机好创意:音乐频谱显示屏
我们经在音响等产品上看到随着音乐跳动的柱状显示器,或用LED,或用显示屏。那就是音乐频谱,听着音乐的时候,内心跟随着音乐频谱的律动,整个人都嗨了起来。
音乐频谱
其实这个实现的原理并不复杂,需要将输入的音频信号采样,进行AD转换,然后再滤波和,最后进行快速傅里叶变换(FFT)得到音频信号在不同频域的分量,在显示器中使用一个柱状的长度显示每个分量大小。这个过程需要使用单片机进行处理。
使用单片机实现的频谱显示屏
这里使用LED作为音频显示屏,首先需要将所有的LED焊接起来。每个LED列显示的就是音乐的各个频率分量,LED点阵的水平轴代表各个频率,竖直轴代表强度。从下面的图中可以看出,该点阵大小为16*30(本来要做16*32,限于万用板大小只能容下30列)。每两列为一组,共15组,由于是阴极接在一起,姑且称之为共阴极组;同理,每一行的阳极接在一起,称为共阳极组,共16组。
LED阵列
在LED阵列下面增加了一个七彩LED显示环,也是能够根据音乐变换不同色彩的。增加了显示屏的动感,使得作品根据杀马特风格。
成品效果图
单片机用的是STC12C56AD,用到通用IO功能和AD功能,设计的基本控制思路是:扫描。控制电路采用了4个74HC573锁存器,2个达林顿管阵列ULN2003。通过单片机控制573和2003实现显示器的行选和列选,实现指定LED灯显示。每一时刻只让一个共阴极组接地,其它接高电平,从左至右依次选通每个共阴极组。每次选中共阴极组后,需要对其阳极写入数据,由于有16行,需要写入两个字节。假如以上方为高字节,我想让选中的共阴极组下面的8行灯亮,则应往阳极段写入的两个字节为:0x00,0xff。
用了一个声音模块采集声音,采集模块的输出端接在单片机的AD转换端口上。程序的循环中,先进行32次AD采样,得到32(必须是2的n次方)个采样值,做快速傅里叶变换,得到32个频率的强度,由于是前后对称的,只取其前15个频率的强度,经过幅值调整(调为0~16),在15个共阴极组上依次显示出来。
电路原理图
科技改变生活,关注搞搞单片机,增加生活乐趣。这里有单片机教程,有单片机好创意,有共同爱好的单片机达人。赶紧加入我们吧,一起搞搞单片机。
相关问答
单片机 应用系统中常见的有哪些 显示器 ?单片机应用系统中常见的显示器有:1、数码管,分共阴和共阳的动态显示数码管,和静态数码管。2、LCD,比如1602,12864,还可能用到320*240等伪彩或真彩液晶。...
单片机 屏幕能干什么?单片机屏幕可以用来显示各种文字、图形和动画,可以显示系统运行状态、用户交互界面、实时数据和各种提示信息,可以实现人机交互,接收用户输入指令,显示计算结...
单片机 怎么做显示屏界面?关于这个问题,单片机可以通过连接外部LCD屏幕,或者使用内部的LED灯等来实现显示屏界面。具体实现方法如下:1.连接外部LCD屏幕:使用单片机的GPIO口连接LCD屏...
单片机 制作led 显示器 ,怎么让字滚动,思路是什么-ZOL问答2000左右显示器推荐1375浏览60回答新装的电脑不能开机显示器无信号输入有时候又正常9.8万浏览53回答这个显示器对电脑的配置要求1096浏览32回答现...
用 单片机 控制电脑显示屏显示指定图片如何实现?这个分为三块内容,一个是单片机对于文件系统例如U盘的读取。再一个是单片机对于常见图片格式的识别最后是单片机驱动vga或者hdmi接口。从功能看,单纯裸机的...
基于 单片机 测温度、电流、电阻,只用一块显示屏可以显示这三种参数吗?根据提问者的意思,一块显示屏能否可以全部显示单片机采集的温度、电流、电阻这三种参数?完全可以,根据自己的要求选择一块合适的显示屏即可!显示屏有很多种...
51 单片机 计算器屏幕不显示数字?如果51单片机计算器屏幕不显示数字,可能有几个原因。首先,检查电源供应是否正常,确保屏幕背光和电源电压稳定。其次,检查屏幕连接是否正确,确保连接线没有...
MCU在液晶 显示器 当中指的是什么(说简单点)是驱动程序吗,液晶屏上的那块板,叫什么?MCU术语应该叫单片机。MCU在液晶显示器中指的是程序存储和运行芯片。它不是驱动程序,只是主芯片的一个程序存储器单元。液晶显示器的驱动程序就是烧录在这个存...
想买一台笔记本,用作 单片机 编程,偶尔玩玩Dota2。预算5500...想买一台笔记本,用作单片机编程,偶尔玩玩Dota2。预算5500元,屏幕要高清的,15.6英寸的,别太厚重。举报内存金士顿金士顿2GBDDR26671人讨论168次围观关...
谈谈你对 单片机 的认识?从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作...