毕业论文- 基于stc12c5a60s2单片机的led光立方设计_第1页
毕业论文- 基于stc12c5a60s2单片机的led光立方设计_第2页
毕业论文- 基于stc12c5a60s2单片机的led光立方设计_第3页
毕业论文- 基于stc12c5a60s2单片机的led光立方设计_第4页
毕业论文- 基于stc12c5a60s2单片机的led光立方设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STC12C5A60S2单片机的LED光立方设计【摘要】本次设计使用512个LED灯制作888的LED立方体,命名为光立方。采用STC12C5A60S2芯片作为主控,8个74HC573锁存器和一个ULN2803芯片扩展I/O口,作为外围控制。通过编程控制I/O口,点亮指定的LED灯,使得显示不同的画面。888光立方因点亮LED灯将会形成各种图形,如爱心、数字、雨滴、正方体等十几种画面。整个立体呈现不同的造型和图案,动画衔接完美,使其变得美轮美奂、绚丽多彩,立体感十足。此外,我们还可以外接音频输入,通过AD采样,快速傅里叶变换FFT,可以让光立方显示音频频谱。经过系统测试,最终达到设计要求。【关键词】光立方STC12C5A60S274HC573ULN2803BASEDONSTC12C5A60S2OFTHELIGHTCUBEDESIGN【ABSTRACT】THE888LEDCUBEISMADEOF512LEDLIGHTS,NAMEDLIGHTCUBEWHICHUSEDSTC12C5A60S2ASMAINCONTROLCHIP,ITHAS874HC573LATCHESEXTENDEDI/OPORTS,ANDAULN2803CHIPASOUTCONTROLTHROUGHPROGRAMMINGCONTROLI/OPORT,THELEDLIGHT888CUBICLIGHTFORLIGHTLEDSWILLFORMAVARIETYOFGRAPHICS,SUCHASLOVEHEART,NUMBERS,RAIN,CUBEANDSOONANIMATION,COHESIONISPERFECT,STEREOSENSEISDYEINTHEWOODINADDITION,WEALSOCANEXTERNALAUDIOINPUT,THROUGHTHEADSAMPLING,FASTFOURIERTRANSFORMFFT,CANLETLIGHTCUBEDISPLAYAUDIOSPECTRUMAFTERTHESYSTEMTEST,FINALLYTOMEETTHEDESIGNREQUIREMENTS【KEYWORDS】THELIGHTCUBESTC12C5A60S274HC573ULN2803目录【摘要】2【ABSTRACT】2目录3第一章引言111光立方的研究意义112发展历程和现状113光立方的功能和特点114光立体的优越性以及主要应用1第二章控制模块设计321系统总框图322总体方案的选择3221主控芯片322总体方案的选择3221主控芯片3222电源选择4223元件选择4第三章光立方显示部分概述731光立方的制作7311光立方的原理7312LED灯的选用7313LED灯的焊接832显示部分检测9第四章硬件设计1241最小系统1242按键模块1243功放模块12431功放原理图1344呼吸指示灯1345竖排控制电路1446光立方层控制电路1547硬件电路焊接1648元件清单19第五章系统软件设计2051软件设计总体思路20511程序设计框图20512显示程序设计21图53伸缩动画流程图22513音频信号频谱分析23第六章系统调试与测试结果2561软件调试2562光立方初步调试26621检查电源2663光立方最终调试2764光立方测试遇到的问题28结论30致谢语31参考文献32附录33附录1实物图33附录2系统总原理图34附录3呼吸灯PCB35附录4光立方主程序35第一章引言本章简要介绍了光立方的研究意义、发展和现状,以及所设计光立方的功能特点,光立方的优越性,并依此提出了本论文研究的主要内容。11光立方的研究意义LED点阵显示屏已经应用到了我们生活中的方方面面,科技发展的脚步一直向前,3D电影给人带来了震撼的视觉体验,于是想设计出一种3D显示屏。通过学习单片机原理与应用(第二版)一书,知道LED静态显示和动态显示,以及两种显示的控制方法。LED点阵显示屏的特点有比数码管实用、便宜、亮度高等优点,而且做出来的LED显示很耐用。具有亮度高、工作电压低、功耗低、小型化、寿命长、耐冲击和性能稳定等优点。LED显示屏发展前景极为广阔,利用LED做成3D显示屏,3DLED显示不仅可以像LED点阵一样显示平面动态或静态图案,同时还可以立体显示动态或静态图案,打破了传统平面显示的方式。更是给人不同视觉盛宴。12发展历程和现状二十一世纪将是平板显示的时代,基础材料产业化,使LED灯生产工艺更加完善,成本更低,应用加快发展。LED产品性能的提高,使全彩显示屏的亮度、色彩、白平衡均达到了比较理想的效果,完全可以满足各种相对复杂的坏境条件要求。同时,由于全彩色显示屏价格性能比的优势,预计在未来几年中的发展中,全彩LED3D显示屏在户外广告媒体中越来越多的代替传统的磁翻板、灯箱、霓虹灯等产品,体育场馆、舞台的显示方面全彩LED3D显示屏更会成为主流产品1。全彩色LED3D显示屏的广泛应用会是LED3D显示产业如发展的一个新的增长点。未来LED3D显示屏会向着规范化、标准化、产品结构多样化等方向发展。目前,我国主要的LED广告大屏幕制造厂商主要集中在华北、华东、华南区域,大型制造商的市场范围几乎覆盖了整个中国市场。国产LED大屏幕性价比比较高,以其独有的优势占据了很大一部分市场份额。我国LED显示屏产业的快速发展,逐步形成了一批具有一定规模的骨干企业,而且产品不断推陈出新,使LED显示屏产业成为我国电子信息产业的重要组成部分,也是平板显示领域唯一立足国内形成的民族高科技产业。13光立方的功能和特点1、888的LED阵列立体显示器。2、连贯图形显示效果,浑然一体,一气呵成,能给观赏者带来立体的可视的震撼视觉效果。3、超炫的立体动态显示,多种显示样式,如面平移、数字倒计时、方框伸缩、心跳动、雨滴等十多种动画。4、具有音频频谱显示模式,可随音频同步显示,给观赏者视觉和听觉双重体验。5、全开放式用户自定义操控,用户可根据自己的喜好自行编写对应的程序。6、光立方内置两种模式图形自动播放模式、音频显示模式,K2选择音频模式,K3选择图形自动播放模式。14光立体的优越性以及主要应用13D以其亮度高,功耗低,视角大,寿命长,可视距离远等优点而具有极为广阔的发展前景。随着人们生活水平的提高,3DLED逐渐应用于各行各业。人们对其的要求也越来越高,已经不再满足于二维平面,进而转向三维平面。3DLED的出现是一个很好的契机。2LED光立体极具观赏性,人们可以根据自己的要求,设计不同的图案,展现不同的立体效果。可以说它是变幻无穷的。因其极大地观赏性,使人们在接受信息,数据的同时更加印象深刻,使信息的传输更有效率。3随着3D技术的逐步发展,3DLED被广泛应用于现实生活中,比如LED显示屏,LED图像,LED立体摄影。这些技术在我们的生活中随处可见,电影院,会议场合,舞台设计,以及各种娱乐场所。第二章控制模块设计21系统总框图光立方系统主要框图如图21所示,主要包括主控部分、LED显示部分、电源模块、功放模块、以及呼吸指示灯模块五部分。电源开关打开后,呼吸指示灯工作,系统初始化完成后,等待选择音频显示还是动画自动播放模式,进入音频模式后可伴随音频显示“跳舞”动画。图21图系统方框图22总体方案的选择221主控光立方系统主要框图如图21,主要包括主控部分、LED显示部分、电源模块、运放模块、以及呼吸指示灯模块五部分。整个系统又分软件部分和硬件部分,良好的硬件设计为软件的执行提供支撑,为系统工作提供硬件实体;软件为系统的工作提供各种算法,软件与硬件的的结合,是系统高效工作的基础。22总体方案的选择221主控芯片本次设计首先要实现光立方的立体扫描,产生出特定的显示效果。通过设计多种多样的动态图画,给人一种绚丽多彩的效果。此外还要求显示效果能依音乐节奏而跳动,这就要求对音乐进行采集。对音乐采集可以采用独立AD芯片,或者选用内带AD转换功能的MCU。为此,有三种选择。选择一采用STC89C52单片机作为主控,独立AD0808或者AD0804芯片用做音频采集。选择二采用红晶科技公司的STC12C5A60S2芯片作为主控。STC12C5A60S2芯片有以下几个特点(1)其和8051指令、管脚完全兼容。(2)片内的具有大容量程序存储器且是FLASH工艺的。(3)低功耗设计,擦写次数10万次以上。(4)自带高达60K字节FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,具有串口烧写编程功能。(5)I/O口驱动电流均可达到20MA,但整个芯片最大不得超过100MA。(6)另外同样晶振的情况下,速度是普通51单片机的812倍,有8路10位ADC,采样速度可达到25万次/秒,且超强抗干扰。选择三采用DSP芯片作为主控。DSP又叫数字信号处理器。顾名思义,DSP主要用于数字信号处理领域,非常适合重复运算,高密度及大数据容量的信号处理2。现在已经广泛应用于通信、便携式仪表、便携式计算机和雷达、图像、家用电器、医疗设备等领域3。其优点有(1)DSP具有硬件乘法器以及特殊指令,依靠硬件乘法器单周期完成乘法运算。(2)具有专门的信号处理指令,相对于其他微处理器用软件实现各种算法速度快好多倍。(3)芯片内置544字的高速SRAM。通过分析以上三种方案,都有其各自优点而且都可以实现控制过程。DSP的强大数据处理能力和高运行速度,是最值得称道的两大特色,价格较高,本次设计也没必要那么高的处理速度。单片机的技术门槛较低,开发成本也较低。STC89C52芯片成本很低,在处理速度上较STC12C5A60S2慢的多,容量也小,。同时为实现本次设计,还需外加AD采集芯片,加大硬件设计难度。由于光立方的动画效果和程序量比较大,而且要求相对比较高。考虑到价格,性能方面因素,最终选取处理速度较快、存储较大且价格适中的STC12C5A60S2芯片作为核心控制芯片。222电源选择直接采用5V移动电源。223元件选择(1)由于灯的个数比较多,每层64个LED并联共阴,这样分流到每个LED的电流会变得非常小,会造成无法点亮或者半亮,影响显示效果。因此所需要的电流相对也比较大,可以选择ULN2003或者ULN2803,两者都是反向输出,输出能力可达500MA/50V,可用来做光立方共阴层驱动。但前者只能驱动七位,而后者可以驱动八位,所以选择ULN2803驱动。ULN2803是八重达林顿晶体管阵列,1脚至8脚为8路输入,11到18脚为8路输出,应用时9脚接地,要是驱动感性负载,10脚接负载电源V。其内部结构如图22。其特点有1、可直接驱动继电器。3、可用于电平转换。4、输入的电平信号为高低电平(5V或0V),输入低电平时,输出达林顿管截止。输入为高电平时,输出达林顿饱和。图22ULN2803内部结构(2)要做到光立方每一个LED可以自由控制,就需要64列共阳脚都要控制,而STC12C5A60S2单片机I/O显然不够,为了单片机送出下一组显示数据时不会立刻丢掉前一次显示数据而造成图像不完整,本人选用带有数据锁存功能的74HC573芯片,如图23所示74HC引脚图。八个锁存器都是透明的D型锁存器,当使能(G)为高电平时,Q输出将随数据(D)输入而变。当使能为低电平时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。对它的使用也比较成熟,因此在驱动部分使用了熟悉的74HC573,其控制逻辑如图24所示。其优点有1高阻态就是输出既不是高电平,也不是低电平,而是高阻抗的状态在这种状态下,可以多个芯片并联输出。2数据锁存当输入的数据消失时,在芯片的输出端,数据仍然保持。3数据缓冲加强驱动能力。图2374HC573引脚图224光立方显示电路的基本框图LE为锁存控制端OE为使能端1脚三态允许控制端低电平有效1D8D为数据输入端1Q8Q为数据输出端输入输出OELEDQLHHHLHLLLLXQ0HXXZLED光立方主要用到了STC12C5A60S2单片机中的P0口、P2口、P3口、串行输入输出端以及外接晶体引线端XTAL1和XTAL2。I/O口分配如图25所示。图25I/O分配图P0口作为数据输出端,单片机控制数据传送到8个74HC573锁存器的输入端,而8个74HC573锁存器输出端分别控制一排8列LED阳极引脚。P2口作为数据输出端,单片机送出数据控制使能端而实现锁存器的数据输出与锁存,从而控制数据在某一时刻输出到指定某一排或某几排。P3口作为数据输出端,单片机内部输出控制数据传送到ULN2803的输入端,进而控制每一层。通过ULN2803数据没有发生任何变化,只是电流前后有很大差别,这时候电流将增大很多。第三章光立方显示部分概述31光立方的制作311光立方的原理借鉴LED点阵控制原理,将光立方可以看做是8个88点阵屏的层叠一起。点阵屏的显示便是光立方一层的显示,只要通过程序再次控制8个层,便可以实现光立方的显示,由于人眼的视觉暂留,使我们感觉到看到的东西是一起在亮的,这样我们就可以看到一个完整图像,这是本次设计的基本原理。设计3D图形,需要有新的思维方式,发现三维空间中点、线、面、体的算法规律。展示3D效果的超炫表现力,让人享受各种视觉上的冲击,迎合3D显示时代的到来。光立方分解为8个88LED点阵叠成8层,再用8个引脚来充当8个点阵的开关。单片机P0、P2、P3实现控制XYZ空间立体控制来显示特定图案。312LED灯的选用本次设计旨在让光立方动画显示更加绚丽多彩,因此使用257雾状散光扁方形磨砂LED(红、黄、蓝三种),红和黄分别三竖排,剩余两排用蓝色LED。这种灯型更容易看到光点,以获得更好的视觉效果。额定电压范围3032V,额定电流1518MA,管脚长度2729MM,实物图如图31所示图31LED实物图首先,要进行LED灯立体矩阵的搭建。LED搭接过程还是比较困难的,888512LED,分为8层,每层8列,每列8个LED灯,列内共阳,层内共阴,如图32所示。为使光立方外形的美观,每一片的LED阵列都要求排列整齐,互相看齐,这对焊接的能力有一定的要求。图32光立方焊接示意图第一步水平折弯。这个因为LED本身管脚上有个结,可以徒手完成。本次设计是层内共阴,同时为了视觉效果更好,本人将阴极管脚在水平方向折弯90,并使之与LED面垂直,如图33所示。同样的方法,将512个LED灯的阴极都水平折弯。为了焊接的统一性,在折弯的时候尽量保持角度一致。图33LED水平折弯图34LED垂直折弯第二步垂直折弯。可利用尖嘴钳将LED灯阳极管脚向外折一次再折回原来的方向,如图34所示。这个弯,一定不要太大,正好露出LED外围2MM打弯合适,LED的正极折弯后留下的引脚长度必须大于LED的间距254MM,以确保有足够的重合位置以便焊接。LED灯上下之间焊接的时候就就会发现这一步是非常必要的。313LED灯的焊接为了方便焊接,自制简易模具,模具孔位间隔要提前量好,保证在管脚搭接时不要太多或者不能焊接。然后按照单独8竖排分别焊接,每一排8列,如图35所示。接着将折好的LED灯插入一列,其阴极管脚正好搭接在一起,完成焊接如图36和图37。在这里本人发现有非常值得注意的一点,因为LED比较脆弱,在焊接过程中很容易因为高温而烧毁LED灯,对于这一点,应该尽量缩短电烙铁接触时间。同时为了确保每一个LED都没有问题,在完成一层后都要检查是否可以点亮。图35LED布局示意图图36LED焊接图图37LED焊接图32显示部分检测对于焊接完成的检测这一步非常重要,如果安装完成后再更换LED灯是非常麻烦的事。分别焊接完8竖排LED灯后,将每一竖排LED的都进行检查,确保每一个LED都可以点亮。这里本人直接在电脑USB输出口引出电源。这里值得注意一点,USB输出电源最低33VUSB转串口,最高5V左右(本人用数字万用表测了一次是516V)。而LED灯压降不超过3V,为了因电压过高烧毁LED灯,在测试之前我们可以选择了一个适中电阻接在电源一端。AB(C)(D)图38检测过程接下来将电源正极接在第一列LED阳极引脚,负极端依次触碰各行阴极管脚,观察并记录坏掉的LED,如图381所示。然后将电源正极接到第二列,负极端依次触碰各行阴极管脚,如图(A)、(B)、(C)、(D)用同样的方法,将8竖排全部检测完成。最后将更换新的LED灯再检查一遍。另外,还可以将一竖排同时点亮的方式进行检测,这样做可能会出现某些LED灯因电流太小无法点亮出现误判的情况。虽然逐个点亮这样的检测方式效率很慢,但可以有效避免上述误判现象,防止后期发现给更换带来更大的不便。在一定程度来说,这样做也是在提高工作效率。图39LED立方体焊接最后将完成后的8个面进行组成立体焊接,其方法将之前8个面上同一层上阴极依次焊接一起,形成层共阴,用8条细导线分别连接8个层与ULN2803输出端相连。底层留下64个阳极引脚与8个74HC573输出端分别焊接一起。如图39所示。第四章硬件设计41最小系统单片机最小系统如图41所示,包括时钟电路和复位电路。时钟电路用于产生单片机工作时必须的控制信号,单片机内部电路正是在时钟信号的控制下,严格按照时钟时序指令进行工作。复位电路是为了单片机初始化操作准备的,同时也是为了程序在执行过程中出现跑飞后快速重新启动。图41最小系统42按键模块图42系统按键K1为确定键。打开电源快关后,可根据K2和K3键选择进入哪种模式,如图42所示。如果按下K2按键,进入音频频谱模式;按下K3按键时,呼吸灯亮,此时按下K1确定键,进入程序执行模式,开场动画完成后会停留“L”字界面,按下K2显示“E”,两个字母分别代表模拟音频动画、自动执行模式。43功放模块本人使用手机耳机输出音频,因其输出功率太小,单片机在有些频段采集不到,所以使用功放将其放大。另外外接喇叭,可以在播放音乐的同时体验动感的视觉效果。这里我们采用专用功放芯片LM386,这是专为低损耗电源所设计的功率放大器集成电路。内部机构如图43所示图43LM386引脚图431功放原理图透过LM386的1和8脚位间串联电容,增益最高可达200,电容。LM386可使用电池为供应电源,无作动时仅消耗4MA电流,且失真低。功放原理图如图44所示,TBL2为音频接入口。图44功放电路图在电路设计中,前端加一个22UF(没有严格要求)的低频滤波电容,以便滤除带外噪声。44呼吸指示灯采用555定时芯片,外接几个电阻、电容,构成电容充放电电路,实现LED缓慢亮灭,形象称做呼吸灯。本人在光立方底座四角各焊接一个LED灯,在接通电源时呼吸灯闪烁,如夏日里的萤火虫一闪一闪亮晶晶,作为电源指示灯,同时配合LED动画显示,使视觉效果趣味更佳。原理图如图45所示。图45呼吸灯原理图45竖排控制电路单片机P0口同时输出控制8个74HC573锁存器输入端,P2口通过给8个74HC573锁存器11脚LE高低电平控制是否将数据输出,8个CON8分别代表8竖排LED灯。通过编程控制P0和P2,从而控制数据在某一时刻输出到指定某一排或某几排。原理图如图46图一所示,具体连接电路46图二所示。图一图二图46竖排控制电路原理图46光立方层控制电路前面介绍到利用74HC573来控制光立方的每排(即每一个竖面),但如何控制每一竖面的某一层就需要用到层控制芯片ULN2803了,P0口输出某层数据后,控制ULN2803芯片选通该层,即可看到该层相应的点的LED灯亮。因光立方层内共阴,单片机输出的电流信号特别小无法直接驱动大的负载,也就是不能同时驱动一层或多层LED灯。ULN2803用来功率放大的驱动芯片,所以可以用ULN2803来实现单片机与负载的连接。单片机P3口输出数据到ULN2803输入端,经过功率放大后输出控制8个LED层,这里CON8代表LED8个共阴层,如图47图一所示,与LED灯链接电路如图47图二所示。图一图47光立方层控制电路47硬件电路焊接本次硬件焊接直接使用万用板手工完成。采用标准254MM间距布满焊盘,可根据电路结构合理插装元器件及连线的洞洞板。相比专业PCB制版,万用板具有以下优势价格低廉、使用方便,不像PCB板出现电路问题时重新制版,另外比较扩展灵活。在焊接洞洞板之前需要准备足够的细导线用于走线。本人将硬件部分焊接分上下两层,上层分布8个74HC573和一个ULN2803以及64个LED阵列插孔,下层安装单片机、按键、呼吸灯模块以及I/O口引出排插。每一层分正反两面,正面元件,背面走线。图49主控布局图410主控走线焊接在万用板正面安装元器件,按照原理图,合理摆放元件,同时将模块电路部分放在一起,不要太过凌乱,如图49所示。尽量使整体布局美观,布线方便而且有利于在后期检查。主控部分线路可以实现无交叉分布,所以可以直接用焊锡链接焊盘完成走线,如图410所示。最后在四角分别焊接一个贴片式LED灯,做呼吸灯,用来电源指示。图41174HC573焊接图412光立方组装8个74HC573锁存器分别对应LED灯阵列的8竖排,因此在芯片安插的时候按照一定顺序摆放,如图411所示。细导线质地柔软,焊接后显得较为杂乱,所以焊接完成每一条走线的时候用万用表测试是否断路。最后为防止多次检查而弄断走线,可以用热熔胶适当固定一下。焊接完成后将上下两层用四根铜柱固定。通过四个铜柱卡位,可以使排插和排针正好镶接在一起,这样做的好处就是方便拆卸,能够后期检查以及功能扩展,如图412所示。另外,在这里值得指出的一个亮点是,本人在LED电源附近加了一个104瓷片电容,如图49所示。因为硬件焊接完成后,检查硬件电路无误后,安装LED灯阵列,通过不断测试发现光立方会全亮或者不亮。无意想起玩具小车电路上在电源上加了电容,本人试了一下,结果动画才可以完美显示了。通过上网查资料才知道,平时所用电脑USB接口或者移动电源并不是很稳定,容易因为形成干扰。连接电容,主要用于降低电源内阻,改善电源带动负载的能力,滤除低频干扰等。第五章系统软件设计51软件设计总体思路本次光立方设计中,要求通过软件编程控制P0、P2和P3口各个位高低实现对每一个LED灯的亮灭控制,在程序中运用FOR或WHILE循环、IF语句、带参函数等方法,用最少的语句达到最佳的显示效果。为了能够增强显示效果吸引观众眼球,可以选择编写多种显示模式。最简单的显示模式是静态显示。与静态显示模式相对应,就有动态显示模式,它们所显示的图文都是能够变化的。按照图文运动的特点又可以分为雨滴、翻转、旋转、缩放等多种显示模式,这就需要建立各种动画代码数组。但是为了显示很多种不同动画,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成,这样程序编写就不会过于繁琐和重复。511程序设计框图光立方程序设计主要是控制P0、P2、P3口通过高低电平组合,不同时刻点亮不同LED,在这里就需要考虑数据刷新率的问题。我们知道当显示器播放速率大于15帧的动画,才会在人眼中形成流畅的效果,为此就需要一个准确的时间基准来一次点亮光立方的每一层,这个值有单片机定时器设置,同时很可能还需要其他数据的采集和处理,所以也应该使用多种中断。分析系统该具有哪些功能,应该编写那些子函数,各个模块之间是如何调用。本次程序设计分三大模块,第一部分是部分建立多种动画和数字代码数组;第二部分编写两种模式执行算法,调用建立好的动画代码库;第三步部主程序,用于扫描按键进入哪种工作模式,FFT函数和DIS。然后编译下载到硬件并依据测试结果找出程序中的错误,改正这些错误至测试成功。NNYN开始系统初始化按键扫描按键K3按键K2键盘扫描按键K1音频频谱动画AD初始化自动播放模式频谱显示结束开始动画播放图51系统主程序流程图本次设计采用KEIL4软件编写C语言程序,C语言简洁灵活、通俗易懂、兼容性高、编译方便快捷。并且将整个程序分成多个子函数,例如单片机初始化、主程序、按键扫描、显示程序四部分进行编写。初始化过程包括中断初始化、中断优先级配置、定时器配置、AD初始化。在编写程序时,为了方便多次调试,首先可以将每个子程序编写成一个可以独立执行的完整程序,编译没有错误后下载到单片机进行验证。各个子程序都测试成功后整合成一个综合程序,编译完成后,再次下载到单片机进行整体测试。512显示程序设计显示程序本人主要建立多个动画数组,这个可以用已有的取模软件提取动画代码,同时也要自己编一些个性动画代码。采用动态扫描方式调用显示函数。所谓动态扫描显示就是一个完整的画面分成好几帧显示,每一时刻只显示画面的一帧,如果显示间隔很小,人眼的视觉无法分辨,利用人眼暂留原理,就可以看到一幅完整图像。1、自动播放动画流程图MENU是K1按键,通过K1按下次数选择执行不同动画模式,程序见附录四中模块一。图52自动播放模式流程图11动画一面平移流程图光立方动画显示,就必须不断在每个完整图像显示后延时一会,再次刷入新的数据,不断刷新不同图像数据,就可以看到图像动起来了。图像之间切换速度很快,在人们眼中显示的效果便是流畅的动画。开始按键选择WHILE(1)CASE1CASE2模拟音频动画MODE_MUSIC自动播放动画结束SWITCHMENU图52面平移显示流程图12动画二方框伸缩动画流程图如53所示,程序见附录四中子模块二。GO上次动画执行结束标记GO1,否则GO0。开始系统初始化显示数据送P0P2选通列,锁存器输出选通数据左移左移次数8显示完成子程序返回动画显示下一动画开始GO1GO0进入SHENSUO执行伸缩代码库IF(GO)图53伸缩动画流程图至此,其他动画流程图就不再一一列举了。513音频信号频谱分析FFT是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。设XN为N项的复数序列,由DFT变换,任一X(M)的计算都需要N次复数乘法和N1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(M),即N点DFT变换大约就需要N2次运算。当N1024点甚至更多的时候,需要N21048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N2K,K为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N2(N/22N(N2)/2,转换过程如图53所示图53N8DFTFFT首先,我们用ADC去采样一个模拟信号之后,使之变为数字信号。若我们N个采样点,经过FFT运算之后,就可以得到N个点的FFT结果。但通常为了方便进行FFT运算常N取2的整数次方。而本次光立方设计可以采集16便可以满足要求,由于FFT结果的对称性,通常只使用前N/2个采样点的结果。基2FFT算法是倒位序存储,但算法完成后结果按正序输出,将原始采样数据放在数组TAB16中,TAB0存放第一次读取的AD转换数据,TAB1存放第二次读取的AD转换值,一次类推,完成16次转换呢值得存放,倒叙输出存放在TAB116数组中,FFT算法如下X(K)X(K)X(KB)WNP(1)X(KB)X(K)X(KB)WNP(2)式中,WNPCOS(2P/N)JSIN(2P/N)。将式(1)化简成实部和虚部的形式,得到XR(K)XR(K)XR(KB)COS(2P/N)XI(KB)SIN(2P/N)(3)XI(K)XI(K)XR(KB)SIN(2P/N)XI(KB)COS(2P/N)(4)同理,式(2)化简得到XR(KB)XR(K)XR(KB)COS(2P/N)XI(KB)SIN(2P/N)(5)XI(KB)XI(K)XR(KB)SIN(2P/N)XI(KB)COS(2P/N)(6)可见每个蝶形运算的输出都是由其输入值与某一正弦函数和余弦函数的乘积累加得到的。经过FFT变换,然后取某些频率项的幅值,量化显示,驱动LED点阵,点亮相应的LED灯。流程图如图54所示,程序见附录四中模块三。图54频谱显示流程图开始AD初始化启动AD采集是否16个值开始采集中断处理(FFT)频谱显示结束第六章系统调试与测试结果一个完整的电子设计,无论模块设计如何精确,最终整体系统都要进行不断的测试和调试。在本次光立方设计中,先进行软件部分调试,最后将程序下载到单片机进行整体调试。软件部分调试主要将编写好的C语言程序编译产生单片机可读取的HEX二进制文件;整机调试主要是看编写程序端口控制与硬件设计是否匹配,显示结果是否按程序设计执行。61软件调试首先本人编写一段简单程序,要求实现点亮全部LED灯,以及可以通过按键选择显示“U”形字样。只要P0口8位全部输出高电平,P3同样输出高电平(ULN2803是电平转换功能),也就是语句P00XFFP30XFF就可以实现光立方的全部点亮。而输出“U”形字样需要将其分解成多帧扫描显示,如图61所示。图61U型分解图图62测试程序调试程序编译成功产生HEX文件,结果如图62所示。本人此次编写这段简短程序有两个目的。第一编程点亮所有LED灯,可以用软件控制方法再次检查是否有坏掉的LED灯。第二通过编程“U”字样程序控制,检查显示是否按程序设计执行,同时可以确定I/O口高低位分别对应控制的行与列,可以避免编程所显示的图像都是倒立的或者不是所要设计的画面。62光立方初步调试621检查电源用5V移动电源用于单片机,功放模块供电,并接到主控扳上,检查电源指示灯是否闪烁,单片机能否正常工作。将编译好的程序下载到单片机进行整体检测图64LED全亮图65“U”型字样下载完成后,打开电源,通过按键K2,发现有一列灯没有亮,由于光立方每一层共阴,每一列LED共阳接法,根据此原理本人检查发现接头没有插好,重新插紧,问题解决了,显示效果如图64所示,接着按下K3可以看到显“U”型字样,可能由于点亮排数太少,或者拍摄角度不对造成显示效果不是太好,如图65所示。总之本次测试基本符合要求。63光立方最终调试经初步测试无误后,开始编写光立方整程序。为了便于后期方便读懂程序以及再次填加某些动画,本人将程序分三部分编写,分别是主程序,音频采集与现实模块,动画自动播放模块。主程序主要实现键盘扫描并确定执行哪种模式现实。经过多次编译、修改,程序编译结果如图66所示。图66完整程序编译结果图67显示效果将完成编译程序下载到单片机上,可以发现还是有很多问题的。比如延时太慢造成的图像显示亮度不均匀,如图67所示。或者动画衔接不连贯,出现不适宜的停顿。64光立方测试遇到的问题(1)发现动画显示一段时间后跳出到开始界面,为此纠结很长时间,但最后发现用的电源(USB)电流不稳定,后来换用5V移动电源供电,光立方正常运行程序显示动画。(2)光立方正常运行时发现顶层LED灯亮度与其他各层不同。以为驱动电路有问题,就把8个74HC573芯片仔细检查一遍,发现驱动模块工作正常,最后检查LED焊接发现顶层阴极断路。问题解决后,亮度一致,光立方动画显示正常。(3)光立方动画显示不连贯,有明显停顿,造成这样显示一般是延时过长。通过改小延时函数参数,动画完美显示。结论本次光立方设计主要通过单片机控制512个LED灯的自由点亮,从而可以实现各种动画显示,在设计过程期间出现很多错误,都被及的发现并改正。(1)下载程序检测时发现图案不完整,检查程序后发现,原来是在送完P0口数据后,就立马加了个延时,再送P2口数据,再延时,这样导致P0口与P2口之间的显示效果在视觉上慢了半拍,达不到预期图案要显示的效果,最后将中间的那个延时程序调到送完P2口数据之后再给其进行延时,通过调试发现能够正常显示。(2)在编写各种图案显示代码的时候,让我深刻的体会到,要想编好相应的代码,虽然可以配合取模软件,但光立方的三维空间的想象能力还是比较重要,512个灯到底是要求哪个灯给高电平哪个灯给低电平,还要根据显示要求组合好。以防出现乱码显示情况。(3)本次设计硬件部分相对简单,主要是动画编写,因此熟练应用定时器、中断等编程方式,可以大大减少程序冗余。(4)在做音频频谱过程中,由于不会实时处理漂浮点下落速度,从而使频谱显示显示变化高度一致,没有达到想要的显示效果,这也是本次设计的一个不足之处。致谢语接近半年的毕业设计结束了,在这段时间的设计和学习过程中,我得到了很多人的帮助,学到了很多东西,由衷的感谢一直以来关心和帮助我的老师与同学。首先,感谢我的指导老师任志山和其他指导过我的老师们。在选定设计课题的时候,任老师给我们每个同学分析近几年的发展趋势,引出了以“实用”、“创新”为特色的设计要求,并给我们每个指出了设计课题的大方向。在设计过程中,老师以自己精专的知识,不断地启发我,使我的设计得以顺利进行。有了老师们的监督和指导,让我很好地把所学的专业知识得以应用,在实践中再次提高。而且大大培养了自己的动手能力,这对我以后的工作会有很大的帮助。另外,每个毕业的学生都要面临毕业论文的问题,一个优秀的设计论文,需要注意的细节很多,而学生很难一次性做到位。比如在写论文时,存在论文布局、内容、格式等方面的问题,老师给我一一讲解与修改,花费了老师的很多时间,任老师以其渊博的学识、严谨的治学态度、敏捷的思维、求实的工作作风以及饱满的工作热情给我留下了深刻的影响,是我终生学习的榜样。在这里我特别谢谢我的指导老师任志山。再次,我要感谢同学对我帮助和指导,在设计中不懂的请教同学时,总是很热心的帮我发现问题,寻找更好的解决办法。最后,祝你们身体健康,工作顺利。参考文献1单片机、DSP、PLD、EDA的介绍、比较和分析山西电子技术王海林王玮2004年2新概念51单片机C语言教程M电子工业出版社郭天祥20093基于单片机的数据采集与控制系统J中国新通信马凯201494常用电子元件及其应用人民邮电出版社陈永甫20055单片机实现音频频谱显示的快速算法研究高等教育出版社吴吉发陈特放2009116基于单片机的LED点阵显示系统的设计J计算机与数字工程戴禄君刘战峰201447基于单片机的梦幻光立方3D显示器设计与制作J电脑编程技巧与维护鲁宛生王林景王林生2013148国外家用LED灯简介及我国相关产业发展对策张瑞西南京工业大学2010159KEILSOFTWARE_CX51COMPILERUSERSGUIDE09200110国庆60周年联欢晚会“光立方“的设计与实施J演艺科技白明20090611基于STC单片机的888LED光立方系统设计J自然科学版肖英李行杰201306附录附录1实物图图一图二图三附录2系统总原理图附录3呼吸灯PCB附录4光立方主程序INCLUDEINCLUDEINCLUDEUCHARFUNCTION_TAB0/主函数/VOIDMAINWHILE1P30X00IFKEYAMENU/判断K2是否按下DELAY30/按键驱抖IFKEYAMENUFUNCTION_TAB1FFT_DEAL/标记1音频显示动画IFKEYOUT/判断K3是否按下DELAY30/按键驱抖IFKEYOUTFUNCTION_TAB2DIS/标记2自动播放模式模块一/动画播放模式选择/VOIDDISINTI,JCHARGODELAY800INIT/初始化函数/呼吸灯P20XFFP00P20X80P31WHILEMENUFORI0I200J2WHILEJP00X80DELAY1400IP00DELAY1I/P3M00X00/开机扫描TURN_ON9H_SCAN5V_SCAN5W_SCAN5/主菜单选项WHILE1HYNUMBER378,2WHILEAMENUW_SIDENUMBER36MENU8,1,45SWITCHMENUCASE1/模拟音谱显示DELAY400WHILEOUTTR01MODE_MUSIC/模拟音频TR00BREAKCASE2/动画显示DELAY400AMENU0/MENU1GO1CUTGO1WHILEGO/动画1倒计时FORI0I0ISHANDIANIIFOUTGO1ELSEGO0GO1WHILEGO/字母上升90SZFC010IFOUTGO1ELSEGO0GO1/上升沿WHILEGORAIN1,10,9RAIN0,10,9IFOUTGO1ELSEGO0BREAKOUT0AMENU0MENU1模块二/伸缩程序/VOIDSHENSUOUCHARVCHARI,JUCHARA640FORI0I0IFORJ0J7IMAGEKBBSIN_TABBP7IMAGEKIMAGEKREALKBBSIN_TABBP7IMAGEKBBCOS_TABBP7REALKBBTRREALKBBCOS_TABBP7IMAGEKBBSIN_TABBP7IMAGEKBBTITEMPSIN_TABBP7IMAGEKBBCOS_TABBP7REALK1IMAGEK1REALKBB1IMAGEKBB1MAX0FORI0I1IFAI7MAX/7FORI0I20TEMP0ADC_RESULT_DEALADC_RESULT/20/去20个数的平均值ADC_RESULT0SWITCHADC_RESULT_DEAL20/256CASE8DISPLAY_DAT_DEAL0XFF,0BREAKCASE7DISPLAY_DAT_DEAL0X7F,0BREAKCASE6DISPLAY_DAT_DEAL0X3F,0BREAKCASE5DISPLAY_DAT_DEAL0X1F,0BREAKCASE4DISPLAY_DAT_DEAL0X0F,0BREAKCASE3DISPLAY_DAT_DEAL0X07,0BREAKCASE2DISPLAY_DAT_DEAL0X03,0BREAKCASE1DISPLAY_DAT_DEAL0X01,0BREAKDEFAULTDISPLAY_DAT_DEAL0X00,0BREAK/AD转换中断/VOIDADCINTERRUPT5TEMPADC_CONTR/关闭AD转换ADC_RESULTADC_RESLADC_CONTR|0X88/开启AD转换/部分动画代码/UCHARCODEYC_TABLE/2帧,YINCHU函数使用0X00,0X00,0X00,0X7E,0X7E,0X00,0X00,0X00,/1I0X00,0X00,0X00,0X7E,0X7E,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X7E,0X7E,0X00,0X00,0X00,0X00,0X00,0X00,0X7E,0X7E,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,/2心脏0X00,0X00,0X00,0X3C,0X3C,0X00,0X00,0X00,0X00,0X00,0X18,0X7E,0X7E,0X18,0X00,0X00,0X00,0X00,0X3C,0X7E,0X7E,0X3C,0X00,0X00,0X00,0X18,0X7E,0XFF,0XFF,0X7E,0X18,0X00,0X00,0X00,0X7E,0XFF,0XFF,0X7E,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X00,0X00,0X00,/3U0X00,0X00,0X00,0X3C,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X66,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X24,0X24,0X00,0X00,0X00,/4苹果0X00,0X00,0X00,0X7E,0X7E,0X00,0X00,0X00,0X00,0X00,0X3C,0XFF,0X7E,0X3C,0X00,0X00,0X00,0X18,0X7E,0XFF,0XFF,0X7E,0X18,0X00,0X00,0X00,0X3C,0XFE,0XFE,0X3C,0X00,0X00,0X00,0X00,0X00,0X7E,0X66,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,/5五角星0X00,0X00,0X00,0X22,0X22,0X00,0X00,0X00,0X00,0X00,0X00,0X36,0X36,0X00,0X00,0X00,0X00,0X00,0X00,0X1C,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,0X3E,0X3E,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X1C,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X08,0X00,0X00,0X00UCHARCODETAB_XUANZHUANTIAO/面旋转旋转条0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0X00,0X01,0X06,0X08,0X10,0X60,0X80,0X00,0X00,0X00,0X01,0X0E,0X70,0X80,0X00,0X00,0X00,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0X0F,0X00,0X00,0X00,0X00,0X00,0X80,0X70,0X0E,0X01,0X00,0X00,0X00,0X80,0X60,0X10,0X08,0X06,0X01,0X00,/0X80,0X40,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论