完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
LED点阵早已融入到我们生活中,走在大街上到处都可以看见显示各种文字、图案的LED显示屏,人们早已看惯了那种平面显示的广告了。如何对LED屏进行创新,重新吸引人们的眼球呢?联想到现在的3D电影,3D电影给人们带来了视觉上的享受,如身临其境的感觉。从图书馆和网上查找LED灯的资料,了解到LED灯的技术特点:一是使用寿命长,单个LED灯寿命长达10万小时,二是节能,LED灯功耗非常低,三是基本没有电磁辐射。 LED灯还具有比数码管具有实用、便宜、高亮度等特点,并且做出了LED显示屏非常耐用。 LED灯具还具有低工作电压、低功耗、高亮度、长寿命、性能稳定、小型化和抗冲击等优点。目前,光立方已经用于娱乐室、会议室、家庭、大型音乐会、地标等城市布局和装饰的地方,也可以用于更广阔的领域,具有广阔的应用前景。
第1章 绪论 第1.1节 开发背景 在09年10月1日,建国60周年的国庆晚会上,导演像人们展示了美轮美奂的光立方,该光立方由4028颗发光树组成。其漂亮的造型,优美的表演,给人们留下了深刻的映像。而传统的LED显示屏只能显示写平面文字和图案,全国有好多家生产传统显示屏的厂家,但是生产的显示屏都是大同小异,没有创新。设计将打破传统的屏幕显示方法,LED光立方显示色彩鲜艳,立体感强,可广泛应用于大型晚会、演唱会、广告公司、酒店和车站等公共场所,相比于传统显示屏,肯定会深受广大人民群众的欢迎。 第1.2节 本文所作的工作 本次设计一个由512个LED灯组成的8*8*8光立方,整个设计的电路由六部分组成:电源电路、单片机最小系统电路、程序下载电路、行驱动电路、列驱动电路和显示电路等。主控芯片选用宏晶科技公司生产的STC89C52单片机,电源芯片采用LM2596-5 DC-DC降压芯片,列驱动电路采用8个74HC573锁存器芯片,行驱动电路采用ULN2803达林顿管芯片,显示电路为512个LED灯组成的8*8*8立方体。设计还包括电路焊接、程序编写及软硬件的调试灯工作。 设计的主要内容: 1、选择每个模块的设计方案。 2、设计每个模块的工作电路。 3、焊接电路。 4、编写程序,实现光立方需要显示的视觉效果。 第2章 系统总体方案设计 第2.1节 光立方控制原理 LED光立方由512个LED灯组成,其每层有8行8列总共64个LED灯,总共有8层。每层的64个LED灯阴极接一起然后与8个74HC573锁存器芯片的输出端相连,然后每层阳极接到一起,与UNL2803达林顿管芯片的输出端相连。 其显示原理如下,先通过单片机控制ULN2803芯片的某个引脚输出高电平,控制光立方的第一层,然后用控制74HC573锁存器芯片来控制哪几列的灯亮,然后给个5mS的延时,在把ULN2803芯片的另外引脚输出高电平,然后在来控制74HC573锁存器芯片。如此快速的切换芯片的高低电平输出,就达到了动态显示的效果。其中有个人眼视觉暂留原理,人眼的分辨率是每秒24帧,当我LED灯切换速度足够快,在人眼看了,那就是一立体的画面了。 本节主要讲系统的设计方案论证,从多方面角度对系统所使用的芯片进行分析比较,最后经仔细研究确定使用的器件、编程软件和电路图绘制软件的选择。 第2.2节 系统总体硬件方案选择 2.2.1核心控制器 控制器是整个系统的核心部分,其功能控制I/ O输出高低电平,从而控制LED灯的亮灭,实现各种不同的动画效果。其常用的电子设计控制芯片有单片机和FPGA。 方案一:单片机 单片机是一种集成电路芯片,内部集成了ROM、RAM、定时器等很多功能,在日常生活中,我们常用的电子产品、家用电器里面都离不开单片机的控制。目前单片机种类众多,型号有8位单片机,16位单片机,32位单片机和64位单片机。有些单片机上集成了A/D,D/A,LCD驱动,USB驱动、SD卡驱动、函数发生器,PWM波等等功能,而且他们价格高低不同,开发者可以根据项目的需求选择合适价格和功能的单片机。 方案二:FPGA FPGA是一种可以编程的硬件芯片,使用Verilog语音能对它进行编程,能够实现很多硬件的功能。FPGA可以实现硬件并行工作,在实时测量和控制以及高速应用领域具有光明的未来。但是FPGA开发难度大,成本高,LED光立方系统中用FPGA来开发很不划算。 综上所述,两种方案都可以通过编程实现对光立方的控制,但是单片机的技术门槛低,只需要懂C语言就能进行开发,而且单片机开发成本低,一般芯片只需要几块钱就能买到,相比FPGA动辄几百几千的芯片,其成本可以忽略不计了。现在市场上常用的单片机主要有8位单片机MCS-51、STM8 和STC,16位单片机 MSP430,32位单片机STM32等。目前使用最广泛的单片机是ATMEL公司的51系列单片机,其产品硬件结构合理,指令系统规范,很多教材都是以51系列单片机作为模板来讲解的。综上所述,该系统使用STC89C52单片机来控制。 2.2.2 电源电路 方案一:LED光立方系统使用LM7805线性稳压电路给系统供电,先通过适配器把市电降压输入到电路,然后在把降压后的电源输入到LM7805线性稳压电路为整个系统供电。LM7805芯片的优点是电路简单,工作稳定,但是降压的效率比较低,只有50%左右,发热量大,考虑到系统功耗会比较大,长时间工作会浪费电能,因此不采用此芯片 方案二:LED光立方系统使用LM2596-5 DC-DC降压电路给系统供电,先通过适配器把市电降压输入到电路,然后在把降压后的电源输入到LM2596-5降压为整个系统供电。LM2596-5的降压效率为85%,效率高,满足系统的功耗要求。 综上所述,选择LM2596-5降压芯片加适配器的方式为光立方系统供电。 2.2.3 层面控制驱动电路 方案一:采用八个NPN三极管(型号:S8050),使用三极管来放大电流,虽然这种方法可以达到驱动LED灯层的目的,但是此方法是才有的分立元器件,增加了板子的面积带来成本的增加,而且布线麻烦,焊接时也容易出错,稳定性差,因此不采用此方案。 方案二:使用芯片ULN2803,该芯片内部有八个NPN型达林顿管,能驱动大电流设备,可以满足512个LED灯的功耗。而且用一个芯片替代八个NPN三极管,不仅体积变小了,节约了成本,简化了电量,还提高了系统的稳定性。 综上所述,选择ULN2803芯片来作为层驱动电路。 2.2.4 LED灯选型 方案一:使用草帽型LED灯,但是这种灯光源发散很严重,点亮时会影响周围的LED灯,会降低视觉效果,影响光立方整体显示的性能。 方案二:使用方形高亮LED灯,这种灯工作电流为2mA至10mA。方形LED灯聚光效果好,即使所有灯全部工作,也不会影响整体显示效果。 综上所述,采用方形的LED灯来显示。 2.2.5编译器选择 方案一:使用伟福WAVA600编译器,该编译器是专门用来编译汇编程序的软件,同时该软件有个配套使用的仿真器,该仿真器可以当做单片机来使用,还可以通过伟福软件来选择需要仿真的单片机型号。伟福软件可以对汇编程序进行单步调试,方便查找程序问题。但是该软件只能使用汇编来编写,汇编程序本身就比较复杂难懂,需要熟悉每条指令的含义,对于编写光立方程序,难度太大了。而且配套的仿真器价格比较贵,一套好的仿真器价格需要1000多,成本太高。 方案二:使用Keil编译器,Keil是由ARM公司开发的一款单片机编程的软件,该软件支持51系列、stm32系列等多种型号单片机,支持多种该软件支持C语音开发和汇编语音开发,或者C语音和汇编语音混合开发。该软件能支持单片机软件仿真和软硬件在线实调试,但是对于51系列单片机只支持软件仿真,51系列单片机不支持在线调试。 综上所述,选择Keil编译器来编写程序,Keil使用方便,功能强大,且C语音可读性和可移植型都比汇编语音强。 2.2.6电路设计软件选择 方案一:使用Multisim软件来设计电路图,该软件是用来进行模拟和数字电路仿真的,可以用来绘制原理图,但是这款软件的功能是偏仿真使用的,对绘制电路图的功能不是很强大。 方案二:使用Altium Designer软件来设计电路图,该软件不仅可以制作原理图,设计PCB电路板,而且可以对原理图电路进行仿真调试,在实际工作中,很多公司都用这款软件来设计电路,深受广大电子工程师的喜爱。 综上所述,使用Altium Designer软件来设计本系统电路图。 第3章 系统硬件电路设计与实现 第3.1节硬件电路设计 系整个系统由STC89C52单片机、电源模块、复位电路、时钟电路、行驱动电路、列驱动电路和512个LED灯组成,其原理图如图3-1所示。 3.1.1 单片机介绍 STC89C52单片机是宏晶科技公司研发的一款高性能8位单片机。STC89C52单片机使用的是51的内核,它的指令集和I/O口与MSC-51单片机是完全兼容的。 STC89C52系列单片机主要特性如下: (1)工作电压:5 V (2)用户应用程序空间(Flash)为8K。 (3)随机存储控件(RAM)为512字节。 (4) 有32个通用I/O端口,单片机复位后,所有的I/O口的状态,是一个准双向口/弱上拉状态。P0口为开漏输出,用作地址扩展总线时,不需要加上拉电阻,用作普通I/O 口使用时,需要加上拉电阻。 (5)单片机总共3个16位定时器/计数器,分别是定时器T0、T1、T2。 单片机STC89C52引脚图如图3-2所示: 单片机P0口是一个漏极开路的8位双向I/O口。在作为输出端口时,每个引脚需要外接一个上拉电阻才能输出高电平,否则只能输出高组态,会影响电路正常工作。 P1、P2、P3口是一个带内部上拉电阻的8位双向I/O口。 P3口除作为一般I/O口外,还有其他一些复用功能,如表3-1所示。P3口除了具有MSC-51单片机功能外,其P3.0、P3.1口在STC系列单片机里面还具有下载程序的功能。 第3.2节 总控制电路设计 图3-3为单片机最小系统原理图。总控制电路主要由电源电路、复位电路和晶振电路组成。单片机STC89C52加电时,需要进行复位操作,复位后STC89C52的工作环境配置成初始状态,并从程序的开始进行运行。RST引脚接复位电路,本系统采用12MHz的外部晶振电路。 3.2.1 复位电路 STC89C52单片机是高电平复位,至少需要给单片机的复位脚提供24个晶振震荡周期的时间,单片机才能复位。 单片机常用的复位电路有两种,一种是手动复位,另一种是上电复位。 上电复位电路是单片机的复位脚接一个1uF电容到电源上,同时接一个10K电阻到地。当系统上电以后,电源给电容充电,电路导通,单片机的复位脚是高电平,单片机复位。然后等电容充满电后,电容就相当于短路了,单片机的复位脚接地是低电平,单片机就能工作了。 手动复位是在上电复位电路的基础上再电源和复位脚之间接一个按键(也就是在电容上并一个按键)。在单片机正常工作时,如果系统需要复位,就把此按键按下。这时电容短路,单片机复位脚是高电平,系统复位。等系统复位后,在把按键松开,电源和复位脚之间又断开了,复位脚为低电平,单片机正常工作。 本电路采用的是手动复位电路,其复位电路如图3-4所示。 3.2.2 晶振电路 每个单片机运行都需要一个基准的时钟源,单片机所有的指令执行时间都是以这时钟源来决定的,时钟频率越高,单片机执行的速度就越快。但是单片机也有个上限时钟频率,STC89C52的最快时钟频率是40MHz。 单片机的时钟源我们常称为晶振,晶振可以分为无源晶振电路和有源晶振电路。有源晶振只需要给晶振提供电源,晶振就能自己起振产生时钟频率,然后输入到单片机的XTAL0脚,单片机就能工作了。无源晶振它本身不能自己起振,需要外接电路才能起振工作。一般是在晶振两端接两个20pF的小电容,然后把晶振两端分别接到单片机的18脚和19脚(即XTAL0和XTAL1两个引脚),在单片机上电后,晶振与单片机内部的震荡电路连接到一起,晶振电路就能够起振,单片机就能正常工作。 本电路采用的是无源晶振,使用一个12MHz的晶振加两个20pF的电容,接到单片机的XTAL0和XTAL1两个引脚上,晶振电路如图3-5所示。 3.2.3 供电系统及电源接口设计 本系统供电方式使用12V的电源适配器,先把市电降到12V,然后通过DC-DC降压芯片,把12V电源降压成5V电源。5V电源一方面用来给单片机最小系统供电,另外一方面给ULN2803达林顿管、74HC573锁存器芯片供电和LED灯供电,电源电路如图3-6所示。 LM2596-5芯片1号脚如电源输入端,2号脚为输出端,3号脚和6好脚接地,4号脚接电源输出反馈,L1电感为储能电感,D2二极管为续流二极管,整个电路上电以后,电路中的电容是整流滤波用的,就能把12V电压将到5V去。 3.2.4 层控制电路设计 UNL2803达林顿管芯片用来控制光立方的层亮灭,单片机的P3.0~P3.7分别接到ULN2803的1~8号脚,ULN的11~18号脚接一个限流电阻后接到光立方的没一层共阳引脚上。如果单片机的P3口输出低电平时,ULN2803芯片内部的达林顿管截止,OUT脚输出低电平。如果单片机的P3口输出高电平是,ULN2803芯片内部的达林顿管导通,输出高电平,然后驱动LED灯亮。UNL2803层驱动如图3-7所示。 3.2.5 行列选择电路设计 电路采用8个74HC573锁存器芯片来控制LED每层哪些行列的灯亮灭。单片机的P1.0~P1.7口分别与8个74HC573锁存器芯片的每个使能端口相连,用来控制选择对应的74HC573工作,然后单片机的P0.0~P0.7口与每个74HC573锁存器芯片D0~D7脚相连,74HC573的O0~O7与LED每层的行列相连。74HC573原理如图3-8所示。电路设计时,在每个74HC573芯片的电源和地之间,都加了一个陶瓷电容,用了滤除电源里面的高频干扰,增加芯片的稳定性。 3.2.6 程序下载电路设计 STC系列的单片机都是采用单片机的P3.0和P3.1两个接口来下载程序到单片机的,因此把STC89C52单片机的两个引脚引出来,然后在与串口模块相连,注意串口模块与下载接口相连时,接线顺序是模块电源与接口电源相连,模块地与接口地相连,模块的RX与接口的TX相连,模块的TX与接口的RX相连。其程序下载电路如图3-9所示。 第4章 LED 光立方焊接 第4.1节 LED 弯曲方法 LED光立方在焊接时,为了整体的美观性,使用LED灯的引脚来进行搭接,也就是直接把LED灯引脚首尾焊接到一起,而不用额外的器件来做支架。 为了方便焊接和整体的美观性,将所有LED灯的阴极用钳子弯曲90度,如图3-10所示。 第4.2节 LED 线焊接方法 找块泡沫板,在上面画出面积大小为15*15cm的区域,在这区域里面孔均匀的打8*8总共64个点,在根据LED的大小来打孔。然后把用钳子弄好的LED灯放八个一排,插入到打好的孔内,在把8个LED灯的阳极焊接到一起,如此重复焊接,总共需要焊64条LED灯。8个LED灯焊接效果如图3-11所示。 第4.3节 LED 面焊接方法 把焊接好的LED灯灯条摆在桌子上,来进行LED阴极的焊接,控制好LED直接的距离。如此重复焊接,总共需要焊8个LED层面,一层LED的焊接图如图3-12所示。 第4.4节 LED 立方体焊接方法 先在洞洞板上完成单片机、电源、ULN2803和74HC573芯片的焊接,然后在焊接LED灯的固定脚,固定脚直接的间距要跟前面泡沫板设计的间距一样,否则LED灯是插不上去的。 然后将所有焊好的LED灯层面垂直的插入到洞洞板上,把每一层的阳极阴极焊到一起,在通过8跟导线把每层的阳极接到板子的ULN2803输出阴极上,由面到体的效果图如图3-13。 第5章 系统软件设计 第4.1节 软件编译流程 1、本次设计使用的编程软件是ARM公司开发的Keil uVision4。先从网上下载Keil软件,在对其进行破解,如果不对软件进行破解,软件会对代码的大小进行限制,当代码超出限制范围,程序就会报错,因此需要先对其破解后在使用。 2、软件破解后,先点击软件上方的Project,然后在点击new 按钮,就会弹出图4-2所示界面,把工程放到一个文件夹里面,并设置一个名字。 3、工程建好以后,软件会弹出图4-3所示界面,用来选择单片机型号,本设计采用的是STC89C52单片机,它的资源跟AT89C52单片机型号是差不多的,在这里选择AT89C52单片机即可。 图4-3 选择单片机型号界面 4、在单片机型号选好以后,我们就可以来写程序了,先要新建一个后缀为“.c”的文件,我们所有的程序都是在这个文件里面编写的。点击软件左上角的新建文件按钮,然后点击保存按钮,把该文件保存到刚才建立的工程里面,文件名写为“main.c”。 5、文件建好以后,点软件左边图4-5所示地方,把刚才新建的“main.c”文件添加到工程中去。 6、一切准备就绪后,就可以写程序了,在程序写好以后,点击软件上的编译按钮,软件就会对程序自动进行编译,同时会把编译的结果显示在软件的下方。当编译出错,就根据编译的错误提示来进行程序修改,知道程序完全编译通过为止。 7、程序在编译完成后,点击软件Target Option按钮。再点击Output按钮,把Create HEX File给勾选上,这个地方是让软件把程序编译后的结果生成为.Hex文件,这个文件就是我们需要的程序文件,通过烧写工具把这个文件烧入单片机里面,单片机就能运行了。 8、在编译好程序后,把串口模块一端接到单片机的程序下载口,另一端接到电脑上,然后打开STC-ISP软件,按下图4-8进行配置,然后就可以把程序下载到单片机里面了。 第4.2节 软件设计流程 单片机程序运行的流程如下,首先是对系统进行初始化,主要是对T0定时器的初始化,T0定时器主要是用来给系统定时使用的。然后是对光立方初始化,主要是对控制ULN2803芯片和74HC573锁存器芯片的I/O口进行初始化,然后对跟显示相关的数组进行赋值。灯初始化完成以后,单片机就会进入死循环,不断的切换显示的图片和动画效果。主程序的流程图如图4-9所示。 第4.3节 显示程序设计 4.3.1 光立方动态显示原理 单片机每次只能给一层上面的一个74HC573锁存器写数据,而整个系统由8个锁存器和8层,要想让人眼看到一个立体画面,就需要单片机给74HC573写完数据后,延时段时间,马上给下一个74HC573写入数据,如此重复,而且速度要快,才能看到一个立体的画面。 4.3.2 显示程序的设计 显示动画,首先要把要显示的74HC573锁存器的片选选中,然后把数据输出到P0,74HC573锁存器就是把数据显示出来,然后单片机选中下一个74HC573锁存器的片选,在把新的数据输出到P0口,如此操作,直到把所有要显示的数据都输出到P0口,就显示完成了。 第5章 系统调试与分析 第5.1节 硬件调试 5.1.1 LED灯测试 LED灯在焊接过程中很容易别烙铁的静电焊坏,为了防止烙铁的静电干扰,在焊接过程中,需要把烙铁头接地。同时为了确保每个LED灯都是好的,把每8个LED灯焊成一条,然后用万用表测试灯是不是好的,如果有LED灯不亮,就用烙铁焊下来,重新换个新灯。 5.1.2 在整个系统焊接完成以后,不要急于上电,以免短路烧坏芯片。要先检查板子看有没有短路、短路、虚焊的地方。在检查确认没有问题后,在上电试下。 第5.2节 软件调试 在硬件全部焊接完成以后,就按照第4章写的方法来把代码烧写到STC89C52中。先编写程序,把所有ULN2803输出高电平,然后把所有的74HC573锁存器输出低电平,让所有的LED灯都亮,来测试检测电路和所有的灯是不是正常的。 1、测试中发现灯都没有亮,检查程序,发现程序里面定义的引脚和电路中使用的引脚不一样,在修改引脚定义后,所有灯能正常亮了。 2、在程序编写好后,测试动画效果,发现有两层灯是同时亮的,检查后发现原来是ULN2803芯片有两个脚短路了,在把他们重新焊接以后,测试就正常了。 结论 经过一个多月的设计,终于是把整个光立方系统完成了,整个制作过程中遇到困难多的数不胜数,其中的汗水与快乐只有自己能体会。当看着自己亲手做的第一个作品,心里还是挺自豪的。 此次设计,把我在课堂上所学到的单片机知识、C语言知识、模电知识和数据知识都用到了。使我对自己所学的知识有了深刻的理解,巩固了大学四年所学的知识,为我将来毕业后工作,打下了坚实的基础。 在选了光立方这个题目后,我是有些茫然的,不知道怎样开始设计。在老师的指导下,我先从网上搜集资料,看别人是怎样制作光立方的。先找资料理解光立方的工作原理,在原理理解了后,在自己动手来设计原理图。但是之前没有使用过Altium Designer 09这软件,就在网上找视频资料,对着视频来学习怎样画原理图,怎样设计电路。软件学好了以后,就找资料来设计原理图,对有些模块电路不理解的地方,我是找同学帮忙分析电路。 原理图设计出来后,就是购买材料,然后焊接电路了。512个LED灯焊起来可不是件容易的事,经常会把LED灯给焊坏,然后需要把它拆了在重新焊,焊灯就花了好长的时间才完成。灯焊好了,就是焊芯片了,那么多的导线,经常是焊着这里断了那里,就这么一点一点的给焊完了。 硬件搭好以后,就需要写程序来进行调试了。Keil编程软件之前也没有使用过,还是先从学习软件开始。怎样建工程,怎样编译程序,怎样解决程序里面的错误。还好网上有些好心人分享了他们制作光立方的程序,我把他们的程序下载下来,然后根据自己的引脚来进行修改,调试了几天,程序就跑通了,光立方可以显示图案了。 通过这次的毕业设计,我理解到,光学习理论,不实践是不行的,只有把理论运用到实践中,才能发挥出所学知识的价值。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1801 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
745浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
578浏览 3评论
601浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 09:35 , Processed in 0.708454 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号