大学生创新创业训练计划
报 告 书
项目名称:基于单片机的LED光立方3D显示系统设计
项目类别:创新训练项目
项目负责人:
所在系专业:电子信息科学与技术
手 机:
指导教师:
办公电话:
手 机:
项目成员:
目录
一、摘要
二、 总体设计
2.1 工作原理
2.2 研究方案
三、 系统硬件电路设计与实现
3.1 硬件电路设计
3.2 单片机最小系统
3.2.1 时钟电路
3.2.2 po口外接上电阻
3.3 驱动模块的设计
3.4 光立方整体设计思路
3.4.1 LED灯排序方式设计
3.4.2 LED灯接法方式
3.5 光立方搭建方法
3.5.1将LED从点到线的搭建
3.5.2将LED从线到面的搭建
3.5.3将LED从面到体的搭建
四、 系统软件设计
4.1 主程序设计
五、 系统调试及结果分析
5.1 系统调试
5.1.1. 硬件测试
5.1.2. 软件测试
5.2 结果分析
六、 结论
七、参考文献
八、附录
8.1、实物图
8.2、系统原理图
九、程序清单
一、摘要
所谓“光立方”:就是在平面LED基础上发展起来的新的显示技术,通过复杂的程序控制,在三维空间能够显示具有立体感的图形、动画等。不仅让光立方的显示更丰富,而且从中又锻炼了我们的3D设计和编程能力,用高质量的设计、材料和生产工艺,让品质对得起硬件的精简设计。其最大的特点,就是带给你未来3D技术的科技体验。软件设计和硬件设计具有一定的创新性,对学生具有一定的创新能力训练效果。
该报告介绍了一款基于STC12C5A60S2 单片机光立方的设计并阐述了整体设计思路,介绍了系统软硬件设计的主要方法。系统采用的是8*8*8模式构成512个LED灯后组成的光立方,距离为14cm*14cm*20cm(长.宽.高),所设计的光立方驱动电路采用uln2803芯片,呈现出立体动画效果。
关键词 光立方;74HC573;单片机
二、总体设计
2.1 工作原理
本设计以STC12C5A60S2单片机为控制核心设计一个由512个LED灯组成的光立方。系统主要由主控、驱动、显示等模块构成。系统模块框图如下图2-1:
图2-1 系统结构框图
2.2 研究方案:
1、研究目标,研究内容,拟解决的问题
本设计采用8*8*8的模式,硬件主要分为三个模块:主控模块、驱动模块、显示模块。
2、拟采取的技术路线
采用的主控芯片为STC12C5A60S2芯片,驱动电路是采用我们常用74HC573数字芯片。数组OUT[0]代表光立方从第一层D0到第八层D0的数据,以此类推数组OUT代表光立方从第一层D1到第八层D1的数据。
3、可行性分析
本设计采用C语言编程,利用单片机控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。
3 、系统硬件电路设计与实现
3.1 硬件电路设计
本电路是由STC12C5A60S2单片机为控制核心,其和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,具有串口烧写编程功能,低功耗;时钟源电路有很多种,比如阻容低速时钟源、普通晶体时钟源、带缓冲放大的晶体时钟源等等,考虑到电路稳定及材料选购等方面,决定采用普通晶体时钟源,其中晶体用12MHZ的石英晶振。显示部份由显示部份由512个雾面LED灯组成来进行显示。
3.2 单片机最小系统
单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。对STC12C5A60S2单片机来说, 最小系统一般应该包括: 单片机、时钟电路、复位电路、输入/ 输出设备等(见图3-1)。
单片机的最小系统如下图所示:
图3-1单片机最小系统框图
图3-2 单片机最小系统
3.2.1时钟电路
在设计时钟电路之前,让我们先了解下单片机上的时钟管脚:
XTAL1(19 脚) :芯片内部振荡电路输入端。
XTAL2(18 脚) :芯片内部振荡电路输出端。
XTAL1 和XTAL2 是独立输入和输出反相放大器,它可以被配置为使用石英晶振的片内振荡器。
内部方式的时钟电路如图3-3(a)所示,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。经过综合考虑,本设计中采用了11.0592M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。一般情况下选取33pF 的陶瓷电容就可以了。
外部方式的时钟电路如图3-3(b)所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
(a)内部方式时钟电路 (b)外部方式时钟电路
图3-3 时钟电路
另外值得一提的是检测晶振是否能够起振的方法可使用示波器能看到XTAL2 输出的非常好看的正弦波,也可以使用万用表测量( 把挡位打到直流挡,这个时候测得的是有效值)XTAL2 和地之间的电压时,可以看到2V 左右一点的电压。
3.2.2 P0 口外接上拉电阻
STC12C5A60S2单片机的P0 端口为开漏输出,内部无上拉电阻(图3-6)。所以在当做普通I/O 输出数据时,由于V2 截止,输出级是漏极开路电路,要使“1”信号正常输出,一定要外接上拉电阻。
图3-6 P0端口的1位结构
3.3驱动模块的设计
本设计采用的是ULN2803达林顿管驱动器进行驱动。
ULN2803,采用AP=DIP18,AFW=SOL18封装方式。
ULN2803是八重达林顿,1 至 8脚为8路输入,18 到 11脚为8路输出。驱动能力 500MA \50V。应用时9脚接地,如果驱动感性负载,10脚接负载电源V+。输入的电平信号为0,或5V。
输入0时,输出达林顿管截止。输入为5V电平时,输出达林顿饱和。输出负载加在电源V+和输出口上,当输入为高电平时,输出负载工作。
八路NPN达林顿连接晶体管阵系列特别适用于低逻辑电平数字电路如图3-7(诸如TTL, CMOS或PMOS/NMOS)和较高的电流/电压要求之间的接口,广泛应用于计算机工业中。所拥有的器件具有集电极开路输出和续流箱位二极管,用于抑制跃变。ULN2803的设计与标准TTL系列兼容,而ULN2804 最适于6至15伏高电平CMOS或PMOS。
(a)ULN2803引脚图 (b) ULN2803逻辑图
图3-7 ULN2803芯片
3.4 光立方整体设计思路
3.4.1 LED灯排序方式设计
将每层的LED排序如图3-8,D0,D1,D2,D3…D62,D63分别为64个LED阵列实际排序方式,也就是光立方的俯视图,对应下图分别是其数据信号0,1,2,3…62,63;
图3-8 3D8光立方效果图
3.4.2 LED灯接法方式设计
1.“光立方”是由8层这样布局的LED组成,每层位置排列全部一致,如图3-9 。每层LED的所有正极全部接到一起,然后连接74hc573的行扫描驱动电路,通过74hc573译码确定使能哪一层
3.各层同一位置LED的负极连接都一起,例如第一层的D0和第二、三、四…等层的D0的负极都连接一起,然后再把它们接到0上面,如图3-10。
图3-9 LED层与层的连接方式 图 3-10 LED负极与输出端连接方式
3.5光立方搭建方法
3.5.1将LED从点到线的搭建
首先制作一块搭建用的木板如图3-11,木板孔与孔直接的距离为22.86mm,必须与电路板上的两空距离一致。将LED灯逐个安在板上,并对LED的脚进行折弯使正极引脚与负极的夹角为直角。最后将8个LED的阴极焊接在一起,如 图3-12。注意:弯折阴极脚时弯曲处尽量靠近灯体不要留太长,这样焊接阳极时不容易造成短路。
图3-11搭建木板 图3-12 已搭好的8个LED灯
3.5.2将LED从线到面的搭建
进行八次上诉焊接后接下来就是将8束的LED焊接起来。在从点到线时是将所有LED的阴极连在一起,而这次则是将所有LED阳极弯折并依次连接,如图3-13。注意:由于焊接过程中将产生静电容易将LED烧坏,因此本项工作完成后请认真检查每个灯的好坏,可以用万用笔等工具检测。同时检测灯与灯之间有没虚焊情况。
图3-13 已搭好的8排LED灯
3.5.3将LED从面到体的搭建
最后一个步骤是将已焊好的8个面进行焊接,其方法是将之前8个面上的阴极对应位置依次焊接,最后留出的8个阴极与ULN2803的输出端进行连接,LED的64阳极则与74hc573的数据输出端依次
连接,如图3-14。
图3-14 已搭好的8层LED灯
4、 系统软件设计
4.1 主程序设计
程序主函数运行流程框图如图4-1。
图4-1 主程序框图
首先,将系统所需要的文件的宏定义文件包含进来。定义:74hc573控制输入模块 P0口;uln2803驱动模块 P1;74hc573控制输出模块 P2口。
初始化定时器0,延时5us,开中断,使其处于等待中断状态。接着,初始化光立方体,驱动光立方,利用扫描形式使光立方体的LED灯逐个点亮形成动画。
5、 系统调试及结果分析
5.1 系统调试
5.1.1. 硬件测试
本系统由于用到较多的LED灯,对于焊接和调试造成一定的难度,512个灯中只要有一个出问题替换工作将是非常的麻烦,必须把八层的LED拆开再取出坏的LED重新焊接。在对电路检查时由于本设计电路版面较大,检查起来并非易事。
在设计过程中发现了一些问题。以下为主要的问题及解决方案:
1、本系统由于程序量要求大,512个LED灯需要较高的驱动电流和较大工作量的编程,传统的8K 89C51单片机将导致程序溢出无法编译。
解决方法:采用单片机STC12C5A60S2 单片机,STC12C5A60S2单片机内部就自带高达60K FLASH ROM,并具有自带的AD功能,对光立方功能拓展提供了更宽广的平台。
2、本系统在硬件测试时发现光立方体的LED灯普遍偏暗,电流较低,无法达到预期的效果。
解决方法:首先先进行电路的检测,测试是否存在短路、短路情况。发现没有问题,接着在io口上接了上拉电阻,问题得以解决。
3、调试过程中烧入全亮程序发现有一束八个灯同时不亮。
解决方法:由于74hc573控制着光立方体XY灯的亮灭,一个引脚控制八个LED,由此原理可以猜测可能是其中一个控制其亮灭的74hc573引脚出问题。通过与其他引脚的电压对比,发现控制这八个灯的引脚电压明显偏低,经仔细检查果真由于线路断路造成,问题得以解决。[6]
4、在调试过程中发现插上已烧入程序的单片机后对光立方主体起不到控制的作用。
解决方法:根据经验猜测是单片机引脚没起作用造成的。后来换了块单片机发现动画出来了,由此判断是单片机烧坏造成。
5、调试过程中发现uln2803不起作用,将其输入端口直接接VCC却不能逐层点亮。
解决方法:根据经验判断为驱动芯片烧坏,换了块芯片问题还是还是没有得以解决[4]。于是开始检测与之相连的最小系统,通过测试最小系统上的电容等元器件后发现问题依然存在。但由于整体布局中线路较多遂放弃一个个器件进行检查而是单独外接一块最小系统来对比论证,通过实践得知问题确实出现在原先的最小系统上。
6、由于电烙铁工作时会有较小的静电产生,很容易烧坏LED灯。
解决问题:问题可能处在电烙铁在工作过程中产生的静电上,以下为减少静电影响的方法:1.将烙铁头跟接地线相连,以泄放产生的静电。2.如果烙铁没有接地线那就光脚才在地上也会降低静电的影响。把八个灯归为一组,焊完组个检查,焊完64个整排再进行检查,把LED坏的概率降到最低。
5.1.2. 软件测试
3D8光立方主要是通过程序来控制光立方体从而达到多种动画变化的效果。由于要形成多样的3D动画,在变成过程中也出现了不少的问题。最后经过多次的细心修改,顺利的完成了编程工作。主要问题有:
1、烧入程序后,不能显示完整的动画。
解决方法:重新检查程序,检查对应的引脚定义有没错。再者检查延时是否过快导致动画不明显。
2、第一次烧入程序时用<REG52.H>作为头文件名,发现程序溢出编译不通过并且检查程序无错误。
解决方法:该问题可能是52单片机为8K内存,而本光立方设计程序达到35K远远超出52单片机的内存,于是将头文件名改为<STC12C5A60S2.H>,并配合keil4进行编译,编译通过
6、结论
本设计采用60K STC12C5A60S2单片机作为主控芯片,通过程序来实现立体动画。本设计的亮点是将原先平面的流水灯延伸到立体空间,使实现的动画更能冲击视觉效果,拥有更广阔的市场价值。
在制作过程中遇到许多的困难,就比如说怎么把那512个LED从点到线、从线到面、从面到体就是必须要克服的难题。但是功夫不负有心人,经过指导老师的精心指导以及同学们的团结合作,终于完成了硬件和软件的测试。
通过这次的创新创业计划,能够更加了解和掌握大学所学的专业知识并付诸实践,从而使专业涵养得到了提高。由于此设计需要较高的焊接技巧,制作过程中也无形锻炼了动手能力。这将对于每一位团队成员将是一笔宝贵的财富。
本设计采用C语言编程,利用单片机控制LED的亮灭,采用延时控制LED亮灭时间,通过复杂的程序控制,在三维空间能够显示具有立体感的图形、动画等。锻炼了我们的3D设计和编程能力,用高质量的设计、材料和生产工艺,让品质对得起硬件的精简设计。带给大家未来3D技术的科技体验。它提高了我们的软件设计和硬件设计能力,同时也提高了我们的创新能力,让我们都受益匪浅。
七、参考文献
[1]滕强. 大尺寸3D液晶电视电源与LED背光驱动控制电路的研究与实现[D].中国海洋大学,2013.
[2]吴星华. 主动式3D立体技术在LED显示屏中的应用[J]. 现代显示,2012,09:86-88.
[3]刘玲,孙信中. 浅析3D显示技术在LED显示屏上的应用[A]. 中国光学光电子行业协会LED显示应用分会.2010全国LED显示应用技术交流暨产业发展研讨会文集[C].中国光学光电子行业协会LED显示应用分会:,2010:4.
[4]马小华. 浅谈全彩LED显示屏的裸眼3D技术[J]. 电子科学技术,2014,03:442.
八、附录
8.1、实物图:
8.2、系统原理图:
8.3、系统PCB图:
九、程序清单
网友评论