光立方论文

  • 格式:docx
  • 大小:2.91 MB
  • 文档页数:15

电子与信息工程学院“创兴杯”电子设计竞赛参赛题目:光立方的设计与制作小组成员:指导教师:无专业班级:电子Z1201班光立方的设计与制作摘要:光立方以发光二极管搭建成立体点阵,利用单片机控制发光二极管的亮灭,并利用延时控制发光二极管的亮灭时间,最终使得整个立体展现不同的造型和图案,呈现给观众极为丰富的视觉效果。

以8*8*8的光立方为例,可以将其拆成8个点阵屏,每个点阵屏为64个灯,通过控制这512个灯让它自由的变换,然后控制每个层依次点亮,由于人眼睛的视觉暂留,使得人们感觉看到的东西是一起在亮的,这样人们就可以看到一个完整的个体。

本设计是采用优于89C51的STC12C5A60S2单片机为核心控制器,74HC573和UNL2803驱动电路,完成硬件电路设计。

通过软件编程控制数据下载到单片机完成设计图案的显示。

软件采用自上而下的模块化设计思想,使整个系统朝着分布式、模块化、小型化方向发展,增强系统的可扩展性和运行的稳定性。

如今,类似于光立方的LED显示屏应用在生活的方方面面,比如企业招牌、娱乐场所、广场标志牌、新型的动态户外广告牌等。

关键词:8*8*8光立方;STC12C5A60S2单片机;74HC573锁存器;UNL2803芯片;FFT1 光立方的功能及实现1.1功能描述8*8*8光立方能够通过编写程序实现对每一个发光二极管亮与灭进行控制,通过不同发光二极管的亮灭组合,从而形成多种多样的图案。

为增强显示效果,可以有多种显示模式。

其中最简单的就是图案的静态显示,此外还有多种动态显示,通过图案的不断变换以及翻转、缩放、平移、闪烁等变化产生绚丽的效果,给人丰富的视觉体验。

此外,光立方还具有一系列的实用功能:它可以跟随音乐节奏显示频谱,让人能够看到音乐的旋律,给人以视觉和听觉上的享受;它可以显示当前温度,提示您注意冷暖;它可以显示时间,告诉您时间的流逝,为您提供便利;它还可以实现待机呼吸灯,既节能又是一个装饰品……1.2 系统组成及工作过程光立方有8个8*8点阵,要控制8*8点阵,需要16个引脚,若有8个8*8点阵,需用8个引脚来当充当各个8*8点阵的“开关”,只要将64个灯阴极连在一起,再分别连到这8个引脚上,即可用一个引脚控制控制64个灯的亮灭,进而通过8个引脚控制512个灯的亮灭。

在单片机的P0口输出显示代码,通过采用74HC573暂存的方法,来分别把64个灯的亮灭信息存到这个上面,然后再一起输出到灯上,将8个74HC573的64个输出引脚控制前面所述每一个面的64个灯,ULN2803控制每一层灯,而每层灯的阴极全连接在一起接入单片机,通过单片机主控芯片STC12C5A60S2来控制所有灯的亮灭,每一个灯的亮与灭都是由层选端口与控制端口共同决定的。

整个设计主要分为三个模块,分别是主控模块、驱动模块、显示模块。

2 硬件设计2.1 硬件电路总体设计光立方的硬件电路主要分为三个模块,分别是主控模块、驱动模块、显示模块。

主控模块控制整个系统的运行,驱动模块用来驱动各个模块进行工作,显示模块则用来显示各种图案进行交互。

STC12C5A60S2单片机驱动模块显示模块电源图1 系统结构框图 根据光立方能完成的功能又可以分为时钟模块、温度模块、功放模块。

结构框图如图2: 时钟模块温度模块STC12C5A60S2单片机LED 显示驱动模块功放模块图22.2 单片机最小系统单片机最小系统就是让单片机能正常工作并发挥其功能时所必需的部分,也可以理解使用最少的元件组成的单片机可以工作的系统。

对于STC12C5A60S2单片机,最小系统一般应包括:单片机、电源、时钟电路、复位电路、输入/输出设备等。

STC12C5A60S2单片机时钟电路复位电路电源输入/输出设备图3 单片机最小系统结构框图2.3 光立方控制模块(单片机最小系统)设计通常采用89C51单片机作为主控芯片,但由于89C51只有8K的内存,而光立方需要形成多种动画程序量大,可能会有溢出的情况发生,而采用属于8051系列的增强型芯片60K STC12C5A60S2单片机作为控制核心,则可以避免这种情况。

STC12C5A60S2单片机与普通51单片机相比有以下特点:1、同样晶振的情况下,速度是普通51的8~12倍;2、有8路10位AD;3、多了两个定时器,带PWM功能;4、有SPI接口;5、有EEPROM;6、有1K内部扩展RAM;7、有WATCH_DOG;8、多一个串口;9、IO口可以定义,有四种状态;10、中断优先级有四种状态可定义。

由此可以看出,STC12C5A60S2单片机具有良好的稳定性和扩展性,STC12C5A60S2单片机和其它相关的外围电路构成光立方整个系统的控制模块(电路图见附录Ⅱ)。

2.4 显示模块电路设计选用8*8*8的圆形高亮发光二极管作为显示模块,显示电路采用每层64个灯共阴,每束8个灯共阳的接法。

灯之间距离1.5cm,采用15*20规格的洞洞板作为光立方的底座,底座上另有4个大号LED灯,在电路接通后会点亮,增加光立方的视觉效果。

通过对单片机编程,各个模块协同工作,利用程序来控制LED的亮灭,以达到动画和各种显示效果。

图4 显示模块部分电路2.4.1 时钟显示模块设计时钟模块采用具有低功耗、高性能、带RAM的实时时钟电路DS1302。

DS1302可以对年、月日时分秒进行计时,同时具有涓细电流充电的功能。

DS1302的引脚连接如图5,其中VCC2为主电源,VCC1为后备电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由VCC1或VCC2中较大的供电。

X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

I/O为串行数据输入输出端,SCLK为时钟输入端。

图5 时钟模块电路2.4.2 音频显示模块设计音频功率放大采用的是塑封8引线双列直插式LM386功率放大器,它具有自身功耗低、电源电压范围大、电压增益可调、外接元件少和总谐波失真小等优点。

通过接在1脚、8脚间的电容来改变增益,第7 脚端外接一个电解电容接地,起到滤除噪声的作用。

图6 音频输入电路图7 功放模块电路通过LM386音频功率放大器将输入音频信号进行功率放大,放大后的信号经ADC采样后,由模拟信号转变为数字信号,之后就可以对采样得到的数字信号进行快速傅里叶变换(FFT),这样就得到了音频频谱值,通过编写程序,经单片机处理后在光立方LED显示屏上呈现出各种各样的音频显示效果。

2.4.3 温度显示模块设计温度采集采用DS18B20温度传感器,它具有体积小、使用方便、精度高、抗干扰能力强等优点,测量范围在-55~+125℃之间。

通过温度传感器采集周围环境的温度,经过程序编写将采集到的数据输入单片机进行处理,之后将周围环境的温度在LED显示屏上显示出来。

图8 温度模块电路2.5 驱动模块设计由于单片机的输出信号比较小,无法直接驱动大负载,就需要驱动模块来扩展驱动电流或驱动电压。

驱动器采用八重达林顿晶体管阵列ULN2803,1至8脚为8路输入,11至18脚为8路输出,驱动能力为500mA\50V,光立方中有大量的发光二极管,所需电流较大,故比较合适。

层选驱动列选驱动部分图9 驱动模块电路驱动电路一般采用扫描驱动电路,扫描驱动电路中,既需要层选驱动,又需要列选驱动。

ULN2803的1~8脚接主控芯片的30~37脚,数据由主控芯片P2口输入经ULN2803从10~17脚输出,实现通过ULN2803来驱动每一层。

每个74HC573的2~9脚(数据输入)都连接在一起连接到主控芯片的P0口(32~39脚),数据从主控芯片P0口输送到74HC573,74HC573的1脚是三态,输出使能输入(低电平)一般都与地相接,74HC573的11脚(锁存使能输入)都连接在一起连接到主控芯片的P2口(21~28脚)作为锁存器。

当74HC573的11脚为高电平和2~9脚为高电平时,74HC573的12~19脚(三态锁存输出)为高电平,驱动一竖面的灯亮,当11脚为高低平、2~9脚为低电平时,74HC573的12~19脚则就为低电平,从而灯灭,当11脚为低电平时,2~9脚不管高低电平,12~19脚的输出不变。

主控芯片通过74HC573和ULN2803来驱动控制哪个点阵的哪一层的哪一个灯的亮与灭。

为了发光二极管的安全,在电路中接入了限流电阻。

2.6 按键模块设计由于光立方的功能较多,显示模式也是各不相同,为方便不同功能之间快速切换,在光立方原有模块的基础上添加了按键模块的设计,这样就能直接从一个功能模块迅速切换到另一个想要的功能模块。

这一设计在原有的基础上添加了三个按键,分别能够实现“确认”、“下一个”、“退出”的功能。

电路连接如图10:图10 按键模块电路其中,S1是“确认”功能键,S2是“下一个”功能键(在台灯模式可用来调节灯光亮度),S3是“退出”功能键。

在功能选择主界面,可使用S1、S2、S3来选择相应的功能,比如Y(音频频谱动画显示)、F(Flash动画显示)、T(时间、温度显示)、H(呼吸灯模式)、D(台灯模式)、C(待机模式),选择后即可进入相应界面。

在音频频谱动画显示时,可使用S2、S3来选择下一个和退出;在Flash动画显示、时间、温度显示、呼吸灯模式、待机模式时,可使用S3来退出当前功能;在台灯模式时,可使用S2来调节灯光亮度,使用S3退出当前模式。

如下表:模式Y(音频频谱动画显示)F(Flash动画显示)T(时间、温度显示)H(呼吸灯模式)D(台灯模式)C(待机模式)开关是否可用S1- -----S2√---√-S3√√√√√√3 软件设计3.1 软件总体设计系统软件采用C语言编写,按照模块化的设计思路设计程序。

首先分析程序所要实现的功能,程序要实现可静态显示、动态显示、三维立体显示以及时钟、温度、音频显示等,根据功能通过按键控制程序选择不同的显示程序进行显示。

开始系统初始化由键盘扫描程序读取控制数据处理后选择相应程序送至端口选择显示程序结束图11 软件总体设计流程图程序开始首先必须对单片机进行初始化设置,其中初始化设置内容包括:中断优先级的设定,中断初始化,定时器初始化,串行通信时通信方式的选择和波特率的设定,各IO口功能的设定等。

把各子程序写为一个可以单独执行的完整子程序段,各子程序编译没有错误后再下载到单片机进行测试,结果如和预想的一样,再将所有的程序进行整合,形成一个完整的程序再进行编译和测试。

3.2 主程序设计主程序总体设计思路如图11:开始系统初始化开机动画进入子程序模块功能选择窗口键盘扫描程序检测键盘输入NYYN图12 主程序设计流程图首先,将系统所需要的文件的宏定义文件包含进来。