光立方含程序毕业.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流光立方含程序毕业.精品文档.摘 要 光立方是LED发光二极管构成的正方体形状的立体显示装置,使用单色或多色发光管,可以产生复杂灵活、十分有吸引力的显示效果,包括单一立体图形的静态显示、动态显示和多种图形的交替显示等多种显示方式,未来甚至可能以此为基础,真正实现复杂图像的三维显示。光立方是一个集实际型 、经济型、性价比高的艺术品, 它不仅仅局限于装饰,更是能够帮助更好的学习 c语言实际应用、满足单片机爱好者对基于单片机控制系统电路设计研究的好课题。 本设计采用的是8*8*8的光立方设计方案,即立方体的长宽高各是由八个LED灯排列而成的,长宽高大概是14cm*14cm*20cm,整个系统主要分为三个模块:控制模块 驱动模块 显示模块;主控芯片为60K STC12C5A60S2,驱动电路采用的是cmos锁存器74HC573数字芯片以及达林顿管驱动器ULN2803,显示模块为512个LED焊接成的光立方。经过试验本方案成功实现了光立方的动态显示及控制。关键词:光立方;74HC573; STC12C5A60S2;ULN2803ABSTRACT LED Cube is a three-dimensional cube -shaped LED light-emitting diode display device using a single color or multi-color LED, can produce complex and flexible, very attractive display, including a single static display three-dimensional graphics , dynamic display and a variety of graphic display and other display alternately , even it will be a basis for truly complex three-dimensional image display in the future. Light Cube is a set of practical , economical , cost-effective high art, it is not limited to decoration, it is able to help better learning c language practice , it is a good topic for Electronics enthusiasts to design a circuit of microcontroller based control system . This design uses a light cube design 8 * 8 * 8 , ie the length , breadth and height of cube is made up of eight LED lights arrayed , the length and breadth is about 14cm * 14cm * 20cm, the whole system is divided into three modules : a control module driver module and display module ; master chip 60K STC12C5A60S2, drive circuit uses a digital chip cmos latch 74HC573 and Darlington driver ULN2803, LED display module 512 welded into the light cube . The program successfully tested a dynamic display and control light cube .Key words:led cube ;74HC573 ;STC12C5A60S2 ;ULN2803目 录摘要IABSTRACTII目录11前言11.1 背景与意义11.2 如何看待“光立方”11.3 LED显示的发展与研究11.4 LED发展给我们带来的机遇21.5 设计的总体要求21.6本论文的基本内容22 3DLED显示屏的基本构想42.1如何实现光立方控制42.2单片机I/O口分配以及编程如何实现53系统架构以及模块论述73.1控制模块73.1.1单片机最小系统83.1.2选择使用STC12C5A60S2单片机的原因113.2驱动模块113.2 .1 ULN2803的介绍113.2.2 74HC573的介绍163.2.3 选用ULN2803和74HC573作为驱动芯片的原因183.3显示模块193.3.1 发光二极管LED193.3.2 LED灯的选择204 各模块的组建204.1 光立方的组成搭建与注意事项204.2 控制模块与驱动模块的焊接215 系统的调试235.1 显示模块检测235.2 整个系统的调试235.3 程序的调试246仿真256.1仿真的实现原理256.2 仿真对于本设计的意义26结论27参考文献28致谢29附录301前言1.1 背景与意义 技术和艺术往往相衍相生,相互激发,伴随着人类的历史技术与艺术不断发展。在计算机的世界里不仅仅只有0和1,伴随计算机技术衍生出的艺术也各种各样,花式百出,如“机器人艺术”、“动画艺术”、“交互艺术”等,使技术的美学上了一个新的台阶。在建国60周年的晚会上向人们展示了一种新的技术美学载体-“光立方”,光立方的出现使人们眼前一亮,成为了当天晚上最亮眼的主角,带给人们的那种震撼和享受都是回忆里难以磨灭的。光立方作为一种新鲜事物用光学的美给艺术界带来了新鲜血液,“光立方”给与了光艺术的表现形式,光立方带给世界的不仅仅是美学上的创新,它带给我们的还有技术上的创新,如何通过技术给与人们更好的生活体验也是我们应该思考的。1.2 如何看待“光立方”在现实生活中, 许多方面都体现着计算机控制的LED产品技术的影子,至少包括以下三个领域:LED在城市照明和景观装饰的应用-路边的景观树和路灯,大型广场的装饰类模型等等;LED在信息传播方面的应用-城市广场巨型LED显示屏,广告牌,商店招牌,人们时时刻刻都通过它获得讯息;LED在艺术类的应用现在人们的生活非常丰富,在音乐会、综合文艺演出、舞蹈等艺术活动所需要的道具、背景等也都离不开LED的影子。听起来LED光技术本身似乎我们生活中的审美不相及,但是我们亲身的体验告诉我们:在我们的生活的方方面面LED技术毫无例外地渗透了进来并且给我们的生活带来了丰富的内涵,他们不仅呈现出美轮美奂、瞬息万变的感性外观形象,而且能够带给人们从未感受过的如此贴切、近在咫尺的3D体验。可以说“光立方”就是人们天生的对于美好的追求,它是可说是一门艺术形态,带给人们发自内心的对于美的向往,这种新鲜的科技美学又为我们的绚丽多彩的世界画上了浓重一笔。1.3 LED显示的发展与研究 伴随着网络时代和数字世界的潮流LED显示屏在信息化的世界里已经是不可替代的,如今几乎每个城市的大型场合里都会有一块大的LED显示屏,无论你走到广场、商场、车站、电影院LED时时刻刻向人们提供着各种需求的信息4。与以往的显示设备不同之处在于,LED灯相当于LED显示屏一个一个的像素,并且在与计算机连接时计算机显示的内容和LED显示屏现实的内容是同时的,主要优点在于一个微型计算机即可以进行控制,可以说在信息传播方面不逊于任何的显示装置,LED不仅能够实现二维显示而且还能实现3D显示,这对于人们来说是一种新的视觉体验,使人们的生活更加的多彩多姿、充满新奇。随着人们对LED不断地探究与发掘,LED显示屏将会朝着更加适合全天候的方向发展,在显示方面也将会给以人们更加清晰舒适的方向发展。 现如今这个基础材料产业化的时代,LED显示屏的制作成本不断下降,在基于微处理器的控制系统下发展迅速,这使得LED产业蒸蒸日上,同时LED的产品性能在显示亮度、色彩、白平衡均有一个比较理想的效果1.4 LED发展给我们带来的机遇 LED作为一种高新技术产业,无疑是各个技术领域想要涉足的产业,随着近几年我国的发展,LED显示技术在中国取得了先进的技术成果,涌现了一批具有领先水平的企业,伴随着社会的不断进步LED的需求不断加大,同时这方面的技术人才也将会是各个企业一个竞相竞争的领域,电子信息化的时代LED显示技术是不可或缺的,这方面给我们个人和国家的基于也是势在必得的。1.5 设计的总体要求 本课题主要是光立方的控制和驱动电路的设计,这需要弄懂LED发光二极管的工作原理、技术,理解LED发光二极管的驱动原理、技术和实现方法,明确应采用的主要技术手段,给出实现功能需要的基本结构单元。应用LED二极管构成光立方显示模块,设计发光管的分页方法、微处理器的连接方式。主要完成微处理器口线分配、驱动地址分配、地址线扩展电路、驱动电路等单元电路的设计,先使用protues测试基本的设计是否满足自己的设想,通过仿真来表现基本显示内容,能基本实现小容量光立方矩阵的控制和驱动,并分析在矩阵容量增加时应采取的较有效的扩展方式,实现主要设计功能的验证。 本课题制作了一个由LED制作的立方体, 主控芯片选用60K STC12C5A60S2,外接时钟驱动信号电路;并且使用11.0592MHZ的外部晶振;采用单片机烧录程序控制LED的亮灭进行动画的演示。1.6本论文的基本内容 第二章主要对如何实现光立方的功能进行理论分析,同时详细描述光立方功能的基本原理与方法。 第三章介绍电路的设计的思路,对各个模块进行详细的说明,介绍各个芯片的特点以及引脚功能,并且对芯片的进行论述与选择。 四章主要是详细说明焊接光立方的具体步骤以及焊接过程中出现的现象及原因,以及控制驱动模块焊接的注意事项。 第五章是对调试过程中出现的错误和问题以及解决办法进行阐述。 第六章主要是对仿真进行阐述,详细介绍仿真的连接方法以及仿真对本设计的重要性。2 3DLED显示屏的基本构想 本设计制作一个8*8*8的光立方,一共包含512个LED灯,其结构为8层64束或8面64束(规定横向为层纵向为面)。图2.1 光立方层面概念图2.1如何实现光立方控制 整个显示过程通过扫描方式控制LED灯,通过控制小灯的亮灭然后再利用人眼的视觉暂留效应和分辨能力把整个程序的动画效果呈现出来。 我们知道一个平面是二维度的,一条线是一维度的,那么光立方这个三维空间就可以分解为一个二维度和一个一维度组成的空间,二维度就是上图所示的层,一维度就是那一条竖虚线,如果想要控制其中一个小灯那么就可以通过控制这个小灯所在的一层和所在一束来实现。 我们假设图中的层上的线的交点为平面上的小灯那么如果想要控制第8层的某一个小灯就要让这个小灯所在的二维度和一维度共同作用来定位这个想要控制的小灯。这就是本方案的基本实现原理。图2.2 竖层交点 本方案采用了层共阴束共阳,也就是每一层的LED灯的阴极是连接在一起的,每一束的阳极是连接在一起的。采用层共阴束共阳的原因是比较容易控制灯体,也有利于电路设计和便于系统的焊接,而且考虑到所使用驱动芯片ULN2803的灌电流特性此设计也非常适用。2.2单片机I/O口分配以及编程如何实现 本光立方由单片机控制,要想实现光立方的控制就要从光立方的结构出发,合理的分配单片机输入输出口,从而对每一层每一束每一个小灯进行自由的控制,本设计对单片机输入输出口的分配如下:P0口:P0口连接锁存器74HC573的输入端,74HC573的输出端连接光立方束,然后通过单片机P0口发送信号到74HC573来实现对每一束亮灭的控制,一片74HC573控制一面,一共八面八片。如下图为一面LED灯的连接图。图2.3 连接图P1口:单片机的P1口和ULN2803的8个输入引脚相连,光立方的每一层都分别和ULN2803的8个输出引脚相连,在实现每一层的控制时由单片机的P1口发送信号到ULN2803然后再通过ULN2803的8个输出引脚来控制每一层。下图为一层的连接图其中右边的结点连接ULN2803的一个引脚。 图2.4 光立方层连接图P2口:P2口连接74HC573的使能端(LE端),通过P2口控制8片74HC573的工作,从而实现64束LED灯的控制。 单片机最主要的输入输出口分配不同设计方案就不同,程序的编写就要有所变动,所以说提前了解接口分配对于程序的编写十分重要。 在了解了控制原理和接口分配后就可以通过程序送达的信号合理的调配芯片工作来实现想要的效果。 例如只要求让下图圆圈所示的黄色LED小灯唯一亮起(其中横向箭头表示层引脚,竖向箭头表示控制这一面的芯片),只要让ULN2803控制第二层的引脚为低电平其他引脚为高阻态,即P1送入0x00000010,控制第二面的74HC573的LE端打开使其工作,其他的LE端关使其不工作,P2送入0x00000010,同时使第二片74HC573控制这一束的引脚置为高,假设为第一束那么P0送入0x00000001,这时因为其他的74HC573是不工作的所以与这个小灯同一行的灯是不会亮的,这就实现了只点亮这个小灯。 uln2803的1引脚uln2803的2引脚uln2803的3引脚573(1)573(2)573(3)图2.5 演示图3系统架构以及模块论述 整个光立方系统的核心就是单片机,如果没有单片机那么光立方就是一个会发光的镂空灯泡,单片机的作用就是协调各个芯片有条理的工作,他把信号传到每个芯片,每个芯片再把信号送达LED,如此通过上级控制下级来实现整个动画效果,可以说单片机使光立方拥有了生命力。那么如何选择合适的单片机将会是决定整个系统显示效果的关键问题。ULN2803芯片驱动芯片电源STC12C5A60S2单片机显示电路图3.1系统结构框图. 3.1控制模块 本设计控制模块的核心为单片机,下面将详细介绍单片机。 单片微型计算机(Single Chip Microcomputer)简称单片机2。是一种微控制器,并非用来完成某一个逻辑功能,它主要包括:(1)中央处理单元(2)存储单元(3)定时器与计数器(4)各种I/O(输入输出)口接口等 这几个部分集成在一块集成电路芯片上构成单片机,最大特点是占用空间小,内部ROM小,功能不强,输入输出简单,发展极快。经过长期快速的发展单片机已经拥有一个庞大的家族,从通信到交通存在我们生活的方方面面,为我们的生活质量的提高带来了巨大的贡献。现在单片机从最早的8080到现在最先进的ARM,单片机已经走过了很长的一段路,而51系列到现在还广泛使用,本课题就是应用STC12C5A60S2。 高速、低功耗的STC12C5A60S2单片机与普通51单片机的程序代码完全兼容,速度是8051的8-12倍,并且可以进行串口编写烧录功能;关于时钟电路,使用了12MHZ的石英晶振。主要的特性在于他可以存储比较大的程序,具备FLASH工艺。3.1.1单片机最小系统 单片机最小系统组成部分有:(1)晶振(2)复位电路(3)电源(4)输入/输出设备四个部分组成,最小系统是单片机用来实现控制的基础,如果把单片机比作大脑那么最小系统就是整个身体,整个光立方就是这个身体控制的机器,通过各个部分的协调合作来调度整个大系统的工作实现各个功能。复位电路STC12C5A60S2电源输入输出设备时钟电路图3.2 最小系统框图图3.3 单片机最小系统(1)时钟电路: 在单片机内部是有自己的时钟电路的,内部的时钟电路是由单片机上的XTAL1和XTAL2控制的,他们都是独立的反向放大器,可以使用石英晶振的片内振荡器。时钟电路用于产生必要的控制型号。其中前者是反相电路的输入后者为输出。XTAL2.XTAL1C1C2晶振GND图3.4 内部时钟电路外部时钟:即在单片机外部外设一个外部振荡器接入XTAL2,同时让XTAL1接地,可以检测XTAL2是否有波形,XATL1与XATL2之间是否有足够的电压来验证是否起振。外部时钟XTAL2XTAL1VCC图3.5 外部时钟电路(2)复位电路即用来初始化单片机的,通常有两种方法:手动复位与上电复位,只要让RST引脚上有一个能维持2个机器周期的高电平即可复位。(3)输入输出口:STC12C5A60S2的P0到P3都是双向输入输出口,但是P0为开漏输出口输出一直为低电平,在使用P0口时要想获得正常的输出必须在P0口加上上拉电阻。并且这四个端口可以用74LS573等芯片来扩展,从而控制更多的设备。3.1.2选择使用STC12C5A60S2单片机的原因 在选择单片机(也就是控制模块)的时候主要参考了两个方案:方案一 采用接触比较多的AT89C51作为整个系统的核心,但是FLASH只有4K,为了光立方有更好的表现采用的程序也很大,而且要求也相对比较高,所以排除使用AT89C51作为控制模块的内核。方案二 选用51系列60K STC12C5A60S2作为控制模块的主控芯片,作为一种增强型的单片机它具有以下几个优点:(1)抗干扰能力强(2)采用第六代加密技术,无法解密(3)在8051编写的代码完全可以烧录并且运行(4)速度是8051单片机的8到12倍,并且应用程序空间为60K,减少了可能添加动画效果扩展程序的后顾之忧(5)在芯片内部已经集成了复位电路,因此外部就可以不接复位电路了8因此决定使用60K STC12C5A60S2.3.2驱动模块 本设计是通过以单片机STC12C5A60S2控制ULN2803与74HC573,进而对光立方实现控制,其中ULN2803的8个阴极接每一层的负极,主要的作用是层选,74HC573接每一竖排的阳极,74HC573一共需要8片用来控制每一面,主要的作用是缓冲和扩展单片机端口,LED光立方采用的是层共阴的方式这样比较容易控制,具体的焊接方式和注意事项将会在LED介绍中详细说明。3.2 .1 ULN2803的介绍 ULN2803(八重达林顿)使用时10脚接正极 9脚接地 1进18出 2进17出 3进16出 以此类推 共8路。可以驱动500MA50V的负载电路,这里的参数是灌电流。ULN2803与标准的TTL系列电兼容,即能识别TTL电路输出的信号当<=0.8V时为低电平0,当>=2V时为高电平1。 因为本方案一共驱动了512个LED灯,所以需要扫描驱动,就是对行和列进行选择亮暗从而控制整个光立方的单个小灯,这时所要求的电流也比较大而ULN2803正好满足这个条件,当单片机引脚控制ULN2803引脚时,单片机引脚输出低电平则对应的引脚输出高阻态,如果要输出高电平需要上拉电阻这样就不可避免的使整个系统更加的杂乱,不过真正试验才发现要想保护小灯还需要加限流电阻,所以本方案采用的是层共阴,让ULN2803接在每一个层的阴极来实现控制每一层的亮灭,束是由74LS573来控制亮灭的后面将会介绍。图3.6 管脚连接图图3.7 ULN2803的外形图3.8 ULN2803的内部电路图 ULN2803内部为8重达林顿管,所谓达林顿管就是一对共基的复合管,两个NPN三极管串联,他的放大倍数是两个NPN放大倍数之积,放大倍数是非常可观的,所以它一般是用来放大非常微小信号。NPN三极管 了解三极管对于学习单片机有着非常好的帮助,在数子电路中主要研究学习的是三极管的开关特性,在模拟电路中主要研究的是三极管的放大特性1。图3.9 晶体管的输出特性曲线截止表示三极管不工作输出高电平,饱和表示三极管导通输出低电平b ec图3.10 NPN三极管 b为基极,c为集电极,e为发射极。从b流过的电流为Ib,只有有Ib流过时才能产生Ice,我们都有所了解三极管的放大作用,如果一只三极管的放大系数=100,b端电压为10V,b端的外接电阻为10K,c端外接电阻为50那么Ie=1mA,Ice=100mA,加在ce两端的电压为5V,其中50电阻的作用为限流作用,防止过大的电流。举个例子: Ib=2mA,这时集电极的电流为200mA,如果Ib继续增大那么集电极的电流都不再增大了,因为限流电阻允许的最大电流为 10÷50=200mA (3.1) 在单片机内除去P0口其他的24个I/O口都是一样的,都拥有一个较大的上拉电阻,输出的电流也相应的比较小,因此就要在单片机外外设芯片来辅助单片机。 (1) (2)3.11 三极管的两种连接方式 上图为三极管的两种连接方式,第一种很显然只有当单片机输出为高电平1时发光二极管才开始工作这时就需要NPN截止,但是当NPN截止时流过二极管的电流很小即使发光也是非常微弱的,LED的特性会在后面详细介绍。第二种要想发光二极管导通发光就必须让单片机输出低电平0,但是由于三极管的特性一旦导通流过三极管的电流是非常大的13,对于小灯来说是非常危险的。 对于第一种情况可以加上一上拉电阻,一般情况下三极管最高电流为15mA,一般上拉电阻上的电压为5V R上拉=5÷15330() (3.2)当三极管导通时二极管是不亮的,当三极管截止,这时三极管的电流和经过上拉电阻的电流就要流过发光二极管,由于流过单片机内部的电流很小可以忽略,这时流过发光二极管的电流为 (5-2.1)÷330=8.7(毫安) (3.3) 其中2.1V为发光二极管的压降,但是这样的方式缺点就是即时发光二极管不亮也会有很大的电流消耗。 第二种情况就是在发光二极管与Vcc之间加上一个电阻,来限制电流,经过计算 限流电阻(5.1-2.1)÷15=0.193(K) (3.4) 这时二极管的电流比较大也就比较亮,当三极管截止工作那么电流截止发光二极管就不会亮也不会产生电流消耗。 显然本方案采用第一种连接方式芯片采用的是74HC573。 因为单片机的驱动能力是有限的,单靠单片机驱动512个LED灯必然会对单片机的驱动能力造成极大的挑战,所以需要缓冲器来增强扩展能力,本方案采用了74HC573作为缓冲器,下面将详细介绍。3.2.2 74HC573的介绍 74HC573芯片是可以与CMOS电路组合电路的,作为锁存器它具有如下特点:(1)它具有三种状态的输出,高电平、低电平、高阻态被称为三态总线驱动输出;(2)它具有存储功能,当74HC573的使能端加上一个低电位时上一个信号的数据将会被存储等待下一个信号的输入,具体功能如下: 74HC573有两个使能端一个是输出使能,一个是锁存使能,当输出使能为低电平锁存使能为高电平时,输入端和输出端是一样的,也就是2到9引脚输入什么信号,12到19就输出什么信号,他们是一一对应的,当锁存使能为低电平时,这时无论输入端输入什么信号,输出端永远保持上一个信号不变,如果输出时能为高电平锁存使能不论什么信号输出端永远都会处在高阻态。图3.12 74HC573管脚排列图示表1 74HC573的功能表输入状态输出状态OUTPUT ENABLELATCH ENABLEDQ0111010000X锁存1XX高阻态X表示无论输入什么都没有影响(3)可以与TTL,CMOS电路兼容(4)对于控制端具有缓冲的功能(5)能使有滞后现象的干扰得到有效的改善 像74HC573这种芯片的电路的优点在于当作为驱动与系统的总线接口相接时用不到其他的外接接口,因此本方案在选择驱动时选择了74HC573这种可以缓冲又能适用双向总线驱动的8D锁存器。图3.13 逻辑图图3.14 连接图 如图3.14的连接方式,在上一节介绍了单片机的I/O口,现在介绍与TTL器件的连接工作原理,假设P1.0连接了74HC573的一个管脚,因为片内的输入阻抗相对来说是非常高的,相当于端口接了一个很大的电阻到地,当三极管导通时电流是通过Rc流入大地,Ri上电流为0,当三极管停止工作后,电流就会通过RC,Ri,这时由于这两个电阻的分压P1.0点的电压就等于这两个电阻的分压,同时电流: I总电流=5V÷(50+500)=0.009mA (3.5) P1.0电压=0.009×500=4.5V (3.6)根据TTL电路高低电平的依据输出为高电平说明是可以这样接的。(大于2.7V为高电平,小雨0.5V为低电平)3.2.3 选用ULN2803和74HC573作为驱动芯片的原因采用ULN2803的原因原因一:因为灯体的层共阴结构所以需要8个具有反相作用NPN三极管作为驱动, 可是真正实施起来发现8个三极管使整个系统非常乱,而且使用8个三极管的效果不是很理想所以放弃了这个方案。原因二:由于光立方由512个LED组成电流要求比较大,ULN2803可以承受较大的灌电流,因此由于ULN2803具有高耐压大电流的特性特别适合用于驱动光立方,并且一个集成芯片具有8个三极管的功能减少了整个电路设计的时间。所以鉴于ULN2803的优点选择此方案。采用74HC573的原因 在选择阳极驱动芯片时有74HC373和74HC573两种选择,这两个芯片功能相同,但是74HC573的引脚比较容易布线,并且相对来说74HC573的工作电压范围更加的宽,因此对于本设计来说74HC573更加适合3.3显示模块 显示模块为由512个LED灯焊接成的光立方,本章主要介绍LED灯的特性。3.3.1 发光二极管LED 二极管主要参数有:(1) 最大整流电流IF(2) 反向工作电压UR(3) 反向电流IR(4) 最高工作平率fM等 IF是二极管运行时允许的最大正向电流,在运用二极管时反向电压不允许大于UR,一旦超过了这个电压就有可能把二极管击穿,一般 UR=½U击穿 (3.7) IR为反向电流,IR受周围环境的影响它与温度成正比,它和二极管的单向导电性是成反比的,fM是二极管允许的最大频率,工作频率是不能超过这个频率的不然会因为结电容的影响导致二极管不能正常工作。(a)(b)(c)图3.15 二极管的等效电路 图(a)是表示的理想二极管的工作状态,导通时几乎没有压降,截止电流也几乎为0,这种二极管是理想状态下的。 图(b)中UOn为导通电压,他可以看做是二极管与一个电源相串联。 图(c)表示有内阻,可等效为二极管和一个电阻r以及Uon串联。了解了二极管的主要参数和等效电路才能更精准的对发光二极管进行控制。 发光二极管有可见光、不可见光、激光等不同的类型,一般用到的有红、黄、蓝、绿等颜色,也有的发光二极管能发出几种颜色这种二极管内部都有芯片,灯的形状也有不同,常见的有长方形、圆形、乳型,发光二极管拥有二极管单向导电特性只有达到一定的电流才能发光,相对于普通二极管的开启电压发光二极管的开启电压比较大,一般红色的开启电压在1.6V-1.8V之间,绿色LED大约为2V,正向的工作电流在5mA-20mA之间,在制作时要特别注意不可过载功耗7。此外还有稳压二极管和发电二极管等二极管。3.3.2 LED灯的选择 LED灯具有多种型号,单个LED灯发光也看不出效果,为了确保整个系统具有良好的的发光效果需要对LED进行选择,普通的发光二极管发光聚光比较差焊接在一起显示动画时相互影响非常影响显示效果,所以使用聚光比较强的长脚高亮方形灯珠,显示效果比较好并且长脚也利于焊接。4 各模块的组建 4.1 光立方的组成搭建与注意事项 如附录图1所示,光立方每一面都有64个灯横向8个灯纵向8个灯,一共有8个横向阴极8个纵向阳极,阴极是由ULN2803控制的,阳极是由74HC573控制的,立方体一共由8个面组成。 LED灯是通过区别引脚的长短来区分正负极的,其中长为正,短为负,本方案的灯体是层共阴需要把一层的阴极连接,这样每一层一共有8个负极,64个阳极。为了整个光体的美感整个框架都是LED自身的引脚支撑。 第一步首先要制作模具用度量量好距离,在模具上一共有64个小孔用来放一面的64个小灯,磨具如附录图2; 第二步把每一个小灯的阴极折90度,阳极要先向外折大约1.5mm,再折回来,这样做的目的是有利于每一层的焊接,如图。图4.1 LED的折弯方式 第三步就要焊接,先把8个小灯的阳极连接起来,然后再把8条每一条多余出来的阴极相连接焊成一面,见附录图1、图2; 第四步就要把8面全部插在板上用铁条固定,然后把每一层的8个阴极都连接起来,见附录图3; 在焊接过程中要注意的就是要防静电,否则会导致小灯的损坏,经过查询后得知可以用防静电焊台,也可以用一根绝缘层的导线把焊头接地,另外还有用余温焊接的方式但是太慢,采用的是接地的方式。除人体静电的方式就是在焊接前接触墙面即可,在焊接过程中当电焊与手接触小灯时发现小灯会微亮这表明产生了静电应及时处理否则在焊接过程中小灯坏掉的几率很大。此外每一次焊接完毕都要测试是不是每个小灯都会亮以此来及时更换坏掉的小灯。4.2 控制模块与驱动模块的焊接 除了小灯的焊接,这两个模块的焊接也是非常重要的,如原理图所示:图4.2 原理图这部分的焊接最需要注意的就是解决芯片的分布问题否则焊接起来非常麻烦,另外对每一个芯片的电源端都要并联。 单片机和驱动芯片选择的都是直插式,便于芯片的更换,也便于单片机程序的烧录。5 系统的调试5.1 显示模块检测 在将立方体与控制模块结合之前首先是对立方体的静态检测以及时对坏掉的小灯进行处理,虽然一个小灯两个小灯坏掉不会对画面造成多大影响但是为了设计的严谨还是要进行检测、拆换。 512个LED灯一个一个检测是非常繁琐的,所以采用了用一根导线将每一层的阴极连接,用一根导线将同一层阳极连接,然后用5V电源接上一个1K电阻检测每一层是否有小灯坏掉,如果外面有小灯坏掉更换比较容易,里面有小灯坏掉采用的附录图4的更换方式。 5.2 整个系统的调试调试过程中主要发现的几个问题与解决方法:1、接上电源打开开关后发现系统没有反应,但是电源灯是亮的,分析可能有以下几个原因:(1)最小系统与电源之间没有导通(2)最小系统内部有断路 最后检测单片机输出端没有电压,用万用表检测晶振发现并不工作,用万用表检测时钟电路后发现一个电容接地线断掉,最后用导线讲接地端接至地,单片机可以正常起振。2、单片机正常工作后LED灯有一面亮度很暗,分析原因有:(1)这一面的阳极没有连接好(2)送达这一面的电流太小 检测电流只有2毫安左右,经检测发现控制这一面的74HC573VCC端电压只有2.4V,直接将VCC端接至5V电源端再运行可正常亮度显示。3、在运行过程中第3层总是保持很暗的状态跟随其他层运行状态有相同的运行状态,分析原因如下:(1)这一层的阴极和其他层的阴极有搭接(2)因为灯的反射问题出现这种现象 反复检查确保阴极端并没有搭接的状况也不是反射的现象,最后将阴极断开照样会亮,隔天后发现出现这种状况的层变为了第1层,原因还是静电,将系统接地后这种现象消失。4、在运行后发现光立方的亮度太低,分析原因如下: 刚开始以为是限流电阻的电阻值太高可是经过换小电阻后有着非常小的改善,用万用表检测发现电流才8.6mA,然后在串口处连接了上拉电阻提高电压,效果有了明显改善。5、在能够正常显示后,最后发现整个调试过程已经使整个光立方已经严重变形了,于是又在8个边焊接上了几根固定用的铁条来使光立方更加稳固。5.3 程序的调试1、一开始程序发现并不能进行编译,号召同学们通力合作怎么也发现不了错误,最后才发现原来头文件写成了include<reg.51.h>,应该写为include<stc12c60s2.h>,并且保存了这个头文件后能够成功编译。2、换一个程序后发现显示出的是乱码,原因是更换的程序并不和本设计的原理一样,虽然同样层共阴束共阳但是控制管脚不同,最后决定用原程序。6仿真仿真采用的是protues,按照原理图连接各个端口。图6.1 仿真截图6.1仿真的实现原理 仿真中用点阵代替光立方的面,8个点阵表示8个面,绿色的点阵下面的管脚是列选,每一个引脚控制每一列的亮灭,上面的管脚是行选,控制每一行的亮灭从左往右依次为第一行到第八行5。 如图6.2所示如果想让第6行第6列的小灯亮就把上面第6个引脚置为低电平于是选择了第六行,下面第6个引脚置为高电平于是选择了第6列,因此连接8个点阵的第一行作为光立方的一层如图6.3,并且连接到ULN2803上,M1到M8控制每一层。列选直接连接到8片74HC573。图6.2图6.3 其中P0口需要加一个上拉电阻才能起到驱动作用,列的引脚在连接过程中要注意顺序,U3到U10分别控制从左往右的8面他们是一一对应的关系,另外protues的元件库里面没有STC12C5A60S2可以用89S52代替。6.2 仿真对于本设计的意义 通过仿真可以预先对整个设计做出预判,在确定方案之前,就是因为通过仿真不断地实验才决定使用这个电路,例如之前应用38译码器所做的仿真更为简便如图6.4,但