电子信息专业毕业设计(3D光立方)_第1页
电子信息专业毕业设计(3D光立方)_第2页
电子信息专业毕业设计(3D光立方)_第3页
电子信息专业毕业设计(3D光立方)_第4页
电子信息专业毕业设计(3D光立方)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

河南理工大学毕业设计(论文)说明书摘要光立方是一个长、宽、高由8×8×8个LED灯组成的真实3D立方体显示器。其最大的特点,就是带给观赏者立体的超酷的3D视觉体验。因此各大网站也充斥着各种各样的光立方版本。但是这各种版本的光立方的制作方法都很复杂,而且成本也很高,而本设计与之相比则制作简单精美,成本低廉。为保证光立方精美的外形,本设计还提供了一种光立方的制作模板,以确保将动手能力导致的美观差异降到最低。为降低其成本,本设计采用了STC12C5A60S2单片机,这种单片机自带有A/D转换模块;使用的锁存器是常用的SN74HC573。这样可以保证在降低制作成本的情况下,毫不影响作品的美观;再加上显示效果极佳的高亮雾面的蓝色方形LED,硬件电路无需添加额外的驱动和上拉电阻,即可实现其强大的功能:除了能显示3D图形,还可以支持多级亮度和速度调整,允许用户自拓展音频显示功能,就像音乐显示器一样。用户还可以在不改动硬件电路的情况下设计出自己喜欢的的自定义图形。这些充分体现了制作成本低、显示效果好、功能完善的特点。最后,经过软硬件调试,解决了一些硬件电路短路,程序报错的问题,完美地实现了多种图形动态显示,流畅的图形变换和音频显示的多种功能。关键词:光立方制作模板音频显示A/D转换ABSTRACTLight-cubeisalong,wide,highiscomposedof8x8x8ledstrue3dvolumetricdisplay.Itsbiggestcharacteristic,istobringtheviewerstereocool3dvisualexperience.Soeachbigwebsiteisfilledwithallkindsofcubiclightversion.Butallversionsofthislightcubicmethodisverycomplex,andthecostisalsohigh,andcomparedwiththisdesignisbeautifullysimpleandlowcost.Inordertoensuretheexquisitecubicshape,thisdesignalsoprovidesalightcubeproductiontemplate,toensurethattheabilitytoappearancedifferencetoaminimum.Toreduceitscost,thisdesignUSESSTC12C5A60S2MCU,theMCUbuilt-inA/Dconversionmodule;UsethelatchisSN74HC573incommonuse.Sothatinthecaseoflowerproductioncosts,noteffectthebeautyoftheworks;PlusshowedexcellentresultshighlightedsquareLEDfogbelowinblue,don'tneedtoaddadditionalhardwarecircuitdrivepullupresistance,anditspowerfulfunctionscanberealized:inadditiontodisplay3dgraphics,cansupportmultiplelevelsofbrightnessandspeedadjustment,allowstheusertoexpandtheaudiodisplayfunction,likemusicdisplay.Userscanalsointhecaseofdonotchangethehardwarecircuitdesigntheirowncustomgraphics.Thesefullyreflecttheproductionoflowcost,goodeffectofdisplay,thecharacteristicsofthefunctionisperfect.Finally,afterthehardwareandsoftwaredebugging,solvesomeoftheshortcircuithardwarecircuit,programerror,perfectthedynamicvarietyofgraphicdisplay,smoothgraphicstransformandaudiodisplayavarietyoffunctions.Keywords:light-cubemakingstencilaudio-displayA/Dconversion目录TOC\o"1-3"\h\u16781、引言 、引言1.1研究意义LED射灯是指发出的光线是方向性的(directional)的LED灯泡,

主要类型有MR16,GU10,

PAR

series.LED球泡灯是指发出的光线为发散性的LED灯泡,

主要类型为:E27

base.

按照功率来分,

LED灯泡可分为:

小功率(主要为5mm

LED生产的)和大功率(主要1W,

3W,甚至5WLED生产的)。同时,

市场上也存在超大功率(比如,

50W的LED射),但是这种未经过市场检验,

也未见得有很大市场。其中,

小功率的LED射灯,

球灯为最早设计和生产的LED灯泡,

已经大规模采用,

但是质量良莠不齐。这灯泡主要是在国外的零售网站上进行销售,比如

,

,

。而大功率的LED射灯,

球泡灯为最近2-3年才大规模使用和推广的,

总体来说要比小功率的LED灯泡稳定许多;

随着大功率LED的价格下降,

大功率LED灯泡将会为市场主流。总体来说,

目前LED灯的市场上,

不论是生产商,

采购商还是终端客户,

都不专业,

大多数还只是凭经验或者外观等主观臆断来判断产品质量的好坏。在产品外观雷同的情况下,

让人可以接受的价格和良好的销售策略起主导作用。另一方面,从电子爱好者网站,《无线电》杂志等一些媒体可以看出,国内越来越的的人正在加入电子爱好者的行列。伴随着这样的趋势,作为常用的电子器件之一的LED,其使用量将会越来越大,普及速度也会越来越快。而作为一个忠实的电子爱好者,美观时尚应当是我们的不懈追求,引领更多的初学者走上电子爱好者之路更是值得我们努力的。而3D光立方所能带来的震撼力和吸引力是其他电子设计所不能动摇的。其实光立方这个名字早已出现过,也有人尝试制作过,每个制作过的人都会被其超酷的3D显示效果所震撼,我就是其中之一。然而在网上搜索了大量相关资料后,我发现,网上各种版本的光立方的制作方法都很复杂,而且成本也很高,所以我想找出一种相对成本较低,制作方法简单,便于广大电子爱好者学习制作的方法。这种方法如果实现,不仅会为LED市场带去不少的盈利,同样也能引领更多的人加入电子爱好者的队伍中,可谓一举两得。1.2研究现状其实,对于许多电子爱好者来说,光立方并不陌生。它的功能也在许多人的开发下越来越强大。每一个见过光立方效果的,都会被其超酷的3D显示效果所震撼,我就是其中之一。但是,在搜索了大量相关资料后,我却发现,各种版本的光立方的制作方法都很复杂,不仅需要很强的动手能力来组装512个排列整齐的LED和金属支架,还需要有足够的耐心设计一大堆单片机和驱动芯片,最后还要为硬件成品设计显示程序,好让光立方动起来。虽然市场上流通着的光立方中,有一种整机只有一个芯片的光立方,但是价格不菲。到目前为止,尚未出现过一套既制作简单、价格低廉又功能强大的光立方完整设计方案。1.3该论文的内容安排开篇引言主要介绍研究的意义和目前光立方的研究现状。提出了光立方的基本功能和总体设计方案,使得读者对整体设计有一个总体的了解。之后第三章开始仔细介绍设计的各个部分。第三章先从硬件设计入手,可以给读者对设计有一个具体的了解。硬件设计主要包括包括控制电路,驱动电路和显示部分。第四章是本设计的软件设计部分,在熟悉硬件部分之后,软件设计的具体阐述便于读者深入理解该设计的核心思想,从而开发出自己的程序。第五章主要对设计的材料选取和硬件焊接做了详细的说明,便于广大电子爱好者自己动手制作。最后,该论文对整体设计的软硬件测试过程做出详细的总结,以便读者在遇到相似的问题时,能够更快的找到合适的解决方案。

2、光立方的设计方案2.1本设计基本功能和特点1、8*8*8LED阵列3D光立方体显示器,设计方案精简,电路简洁,采用的材料是高亮蓝色雾面LED灯,可以达到光立方最佳视觉效果。连贯图形显示效果,浑然一体,一气呵成。能给用户带来立体的可视的震撼视觉效果。程序内置坏点检测部分,以及多种图形显示模块。4、创新设计的LED阵列制作模板,让LED阵列制作简单快速。套件制作因此变得简单。初学者也可以制作出规范、美观的成品。2.2拓展功能1、具有音频显示模式,可随音频同步显示,给用户和制作者超炫酷体验。2、全开放式用户自定义操控,用户可根据自己的喜好自行编写对应的程序。3、光立方内置三个模式:图形显示模式、音频显示模式、夜灯模式。2.3总体设计方案该光立方设计方案,其核心分为三个部分:控制系统,驱动电路和显示部分。总体设计图如下页图(图2.1):图2.1本设计是用STC125A60S2单片机做控制芯片的,由单片机上的P2口来控制8个锁存器的锁存端,以此决定数据的输入和锁存。其中这8个锁存器每个锁存器都各控制一层LED面(含64个LED)。P0口8个额引脚则对应锁存器上的8路输入。这样64个阳极控制就设计完成了,P3口的8各引脚则负责8层LED的负极控制。这样512个LED每一个都有单独的位置编码,灯的亮灭可以由自由控制。P4口的4,5,6引脚则用来接三个按键,分别控制:图形显示、音频输出、夜灯模式,这三个模式的选择。P1.0和P1.1管脚分别接音频插头的左右声道,当选择音频显示模式时,因为单片机自带A/D转换所以只需要在程序里做FFT变换即可。总的来说,本设计是以单片机为核心的集3D显示,音频显示和用户自定义功能为一体的强大光立方设计方案。

3、硬件设计3.1单片机控制电路设计3.1.1单片机选型制作光立方使用的单片机开发板采用了宏晶科技新推出的1T增强型51单片机中功能较为强大的一款——STC12C5A60S2。此芯片集成了各种高性能工业标准接口,并且与传统51在资源布局上有完全的兼容性,大部分传统51的程序可以直接拿过来使用无需做修改。与传统51不同的是,STC12C5A60S2是1T内核,速度是传统51单片机的12倍,遇到对延时有要求的地方,延时时间会变成传统51的1/12。STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。以下是单片机管脚图及功能介绍。单片机管脚图,如下图(图3.1)::其图3.1单片机简介:1.增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统80512.工作电压:STC12C5A60S2系列工作电压:5.5V-3.5V(5V单片机)STC12LE5A60S2系列工作电压:3.6V-2.2V(3V单片机)3.工作频率范围:0~35MHz,相当于普通8051的0~420MHz4.用户应用程序空间8K/16K/20K/32K/40K/48K/52K/60K/64K字节5.片上集成1280字节RAM6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)9.看门狗10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)11.外部掉电检测电路:在P4.6口有一个低压门槛比较器5V单片机为1.33V,误差为±5%,3.3V单片机为1.31V,误差为±3%12.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为±5%到±10%以内)用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟常温下内部R/C振荡器频率为:5.0V单片机为:11MHz~17MHz3.3V单片机为:8MHz~12MHz精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准13.共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器14.3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,独立波特率发生器可以在P1.0口输出时钟外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块�,PowerDown模式可由外部中断唤醒�,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2),CCP1/P1.4(也可通过寄存器设置到P4.3)其中选用STC12C5A16S2最主要的原因是,它自带A/D转换功能,无需外设A/D转换模块,可以精简电路,降低成本。而且储存空间足够大,能够存储足够多的图形程序。3.1.2单片机控制电路图3.23.2驱动电路设计为节约成本,该设计没有选择硬件电路集成设计,把驱动电路与控制电路合为一体。而是选择用常用的芯片做为光立方的驱动。驱动部分分为两部分,如下图:图3.3LED正极驱动电路图3.4LED负极驱动电路3.2.1负极驱动芯片ULN2803达林顿管IC,一般都是用来驱动功率稍微大一点的被动器件的,而驱动的被动器件里,有很大一部分是感性的,如继电器、马达、电磁阀等,这些感性器件在关断瞬间会产生很高的自感电动势(自感电压),低的10多伏,高的几十伏,甚至几百伏,这么高的电压很容易把ULN2803达林顿管打坏,甚至打坏电路中的其它元器件,所以需要在感性器件上并联一个二极管,用来续流(就是把那个自感高压放掉),保护IC和其它器件不受破坏,此续流二极管正极接2803输出端(即电感器件的一端),负极接驱动电源(在2803上是10脚,也就是电感器件的另一端)。2803在内部设计了二极管以后,用户在使用的时候不需要外接二极管,在同时驱动多路器件的时候可以节省PCB空间,节约成本、方便走线。ULN28038个NPN达林顿晶体管,连接在阵列非常适合逻辑接口电平数字电路(例如TTL,CMOS或PMOS上/NMOS)和较高的电流/电压,如电灯,电磁阀,继电器,打印锤或其他类似的负载。该ULN2803是专为符合标准TTL,而制造ULN2804适合6至15V的高级别CMOS或PMOS上。该电路为反向输出型,即输入低电平电压,输出端才能导通工作。管脚图如下页图(图3.5):图3.5引脚图说明:1-8引脚:输入端11-18引脚:输出端9引脚:地端10(COM)引脚:电源+COM脚的作用是当你使用ULN2803(2003)来驱动继电器时,可以将COM脚接到继电器的VCC端,利用ULN2803(2003)内部的反向二极管作保护继电器,消除继电器闭合时产生的感应电压。COM端主要有两种用途:(可悬空)1试验用接地:假如它的输出端都接发光二极管,那么,只要将COM端接地,则所有的发光二极管都将亮起,否则,可能是二极管坏或其它什么地方坏了。这对检修是很有利的。2保护用接电源正:假如这个器件是接继电器或针式打印头,因为电感的作用,会在开关过程中产生低于地电位和高于电源电位的反电动势,这样,很容易击穿器件。为了防止这种现象的发生,可将COM端接到电源正,来削减冲击电压低到二极管压降加电源电压的幅度可以使得内部的三极管受到最小的正电压冲击。至于达林顿关断时产生的负电压我们不必管,因为器件内部就有二极管并接到地的.专门用来削减冲击电压至电源地减去一个二极管正向压降可以使得内部的三极管受到最小的反偏电压冲击。UNL2803内部电路图如下图(图3.6):图正极驱动芯片图3.7八进制3态非反转透明锁存器74HC573高性能硅门COM器件SL74HC573跟LS/AL573的管脚一样。器件的SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOS输出兼容的,加上拉电阻,他们能和LS/ALSTTL输出兼容。上面的这个是74HC573的封装图,让芯片的那个半圆形缺口朝上,从左上角开始逆时针数,分别为1到20号引脚。其中1号和10号引脚接5V直流电源(以下简称DC)的负极,就是图中的GND(表示接地端,接负极就行);11号引脚接到STC单片机的P2口,一共8个573芯片,对应接到P2的0-7口(这个在买的单片机最小系统上有标识);20号引脚接到5VDC的正极;2号引脚到9号引脚接到单片机的P0^1-P0^7;12号引脚到19号引脚接到一排8个LED的束。3.3显示电路设计3.3.1各层电路设计图3.8显示电路部分是有8层8×8的LED面组成的,每一层都是由一个锁存器锁存端控制,每一层的其他地方连接基本相同,上图(图3.8)给出的是一层的显示电路设计图。其中LED上的标识代表的是所要连接的锁存器,和对应的引脚连接。LED负极的标识代表的是所要连接的ULN2803对应引脚。3.3.2LED地址对照表该设计的LED地址表示方法示例:“P0.0P2.0”表示“第1列第1行”,“P0.1P2.1”表示“第2列第2行”,依此类推。具体如下页表(表3.1,表3.2):表3.1:列1面列2面列3面列4面列5面列6面列7面列8面前行1P0.0P2.0P0.1P2.0P0.2P2.0P0.3P2.0P0.4P2.0P0.5P2.0P0.6P2.0P0.7P2.0行2P0.0P2.1P0.1P2.1P0.2P2.1P0.3P2.1P0.4P2.1P0.5P2.1P0.6P2.1P0.7P2.1行3P0.0P2.2P0.1P2.2P0.2P2.2P0.3P2.2P0.4P2.2P0.5P2.2P0.6P2.2P0.7P2.2行4P0.0P2.3P0.1P2.3P0.2P2.3P0.3P2.3P0.4P2.3P0.5P2.3P0.6P2.3P0.7P2.3行5P0.0P2.4P0.1P2.4P0.2P2.4P0.3P2.4P0.4P2.4P0.5P2.4P0.6P2.4P0.7P2.4行6P0.0P2.5P0.1P2.5P0.2P2.5P0.3P2.5P0.4P2.5P0.5P2.5P0.6P2.5P0.7P2.5行7P0.0P2.6P0.1P2.6P0.2P2.6P0.3P2.6P0.4P2.6P0.5P2.6P0.6P2.6P0.7P2.6后行8P0.0P2.7P0.1P2.7P0.2P2.7P0.3P2.7P0.4P2.7P0.5P2.7P0.6P2.7P0.7P2.7表3.2层地址:层纵向8层高位在下低电平有效P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7视角说明,如下图图3.9:图3.9按照上图视角,垂直纸面向里依次是行1,行2,行3,行4,行5,行6,行7,行8。3.4实物效果图硬件焊接的最终实物效果图如下,控制部分(图3.10),显示部分(图3.11):图3.10图3.11

4、软件设计4.1自定义头文件Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选。但是Keil里没有STC12C5A60S2的芯片头文件,需要在编写程序时自己添加头文件,实例如下:<60S2.h>//头文件名字可自行命名sfrACC=0xE0;//Accumulator0000,0000sfrB=0xF0;//BRegister0000,0000sfrPSW=0xD0;//ProgramStatusWordCYACF0RS1RS0OVF1P0000,0000//sbitCY=PSW^7;sbitAC=PSW^6;sbitF0=PSW^5;sbitRS1=PSW^4;sbitRS0=PSW^3;sbitOV=PSW^2;sbitP=PSW^0;//sfrSP=0x81;//StackPointer0000,0111sfrDPL=0x82;//DataPointerLowByte0000,0000sfrDPH=0x83;//DataPointerHighByte//新一代1T8051系列单片机中断特殊功能寄存器//有的中断控制、中断标志位散布在其它特殊功能寄存器中,这些位在位地址中定义//新一代1T8051系列单片机I/O口特殊功能寄存器sfr P2M0 = 0x96;sfr P2M1 = 0x95;sfr P3 = 0xB0;//8bitPort3P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.01111,1111sfr P3M0 = 0xB2;sfr P3M1 = 0xB1; sfr P4 = 0xC0;//8bitPort4P4.7P4.6P4.5P4.4P4.3P4.2P4.1P4.01111,1111sfr P4M0 = 0xB4;sfr P4M1 =0xB3;sfr P4SW = 0xBB;//Port-4switch//新一代1T8051系列单片机定时器特殊功能寄存器sfrTCON=0x88;//T0/T1ControlTF1TR1TF0TR0IE1IT1IE0IT00000,0000//sbitTF1=TCON^7;sbitTR1=TCON^6;sbitTF0=TCON^5;sbitTR0=TCON^4;sbitIE1=TCON^3;sbitIT1=TCON^2;sbitIE0=TCON^1;sbitIT0=TCON^0;//sfrTMOD=0x89;//T0/T1ModesGATE1C/T1M1_1M1_0GATE0C/T0M0_1M0_00000,0000sfrTL0=0x8A;//T0LowByte0000,0000sfrTH0=0x8C;sfrTL1=0x8B;//T1LowBytesfrTH1=0x8D;//T1HighByte还要注意的一点是:在程序编译的时候一定要记得输出.hex文件,因为STC—ISP.exe只有.hex文件才能下进单片机里去。生成.hex文件的界面说明:图4.1按照上图中所示的步骤,先在“Project”中选择“OptionsforTarget“Target1””,在之后出现的界面中,点击“Output”选项,就会出现上图有半部分的界面。选中“CreateHEXFile”选项,点击“OK”,之后再编译一下程序,在工程里就会自动生成.hex文件了。4.2电脑端的ISP控制软件图4.2Step1/步骤1:选择你所使用的单片机型号,如STC12C5A60X等Step2/步骤2:打开文件,要烧录用户程序,必须调入用户的程序代码(*.bin,*.hex)Step3/步骤3:选择串行口,你所使用的电脑串口,如串行口1--COM1,串行口2--COM2,...有些新式笔记本电脑没有RS-232串行口,可买一条USB-RS232转接器,人民币50元左右。有些USB-RS232转接器,不能兼容,可让宏晶帮你购买经过测试的转换器。Step4/步骤4:选择下次冷启动后,时钟源为“内部R/C振荡器”还是“外部晶体或时钟”(STC12系列单片机只有内部R/C振荡时钟)Step5/步骤5:选择“Download/下载”按钮下载用户的程序进单片机内部,可重复执行Step5/步骤5,也可选择“Re-Download/重复下载”按钮下载时注意看提示,主要看是否要给单片机上电或复位,下载速度比一般通用编程器快。一定要先选择“Download/下载”按钮,然后再给单片机上电复位(先彻底断电),而不要先上电,先上电,检测不到合法的下载命令流,单片机就直接跑用户程序了。4.3程序流程图我们所做的光立方,如图2.2,有三个独立按键,分别是P4.4,P4.5,P4.6,其中P4.4是控制音频显示,P4.5控制动画显示,P4.6控制夜灯模式。3个按键分别控制三种不同的图像显示模式。动画显示部分支持用户自定义图形。当工作的单片机检测到P4.4按键按下时,可以同步音频显示;当检测到P4.5按键按下时,可以显示内置的动画;当检测到P4.6按键按下时,显示夜灯模式。程序流程图如下页(图4.3):图4.34.4LED显示核心思想该设计光立方的LED显示最关键的就是定时器初值的设定。定时器一旦启动,它便会在原来的数值上加1计数,若在程序开始时,我们没有设置TH0和TL0,他们默认值都是0,假设时钟频率是12MHz,12个时钟周期为一个机器周期,那么此时机器周期就是1us,计满TH0和TL0就需要-1个数,再来一个脉冲计数器溢出,随即向CPU申请中断。因此溢出一次共需65535us,约等于65.5ms如果我们要定时50ms的话,那么需要先给TH0和TL0装一个初值,在这个初值的基础上计50000个数后,定时器溢出,此时刚好就是50ms中断一次,当需定时1s时,我们写程序是当产生20次20ms的定时器中断后便认为是1s,这样便可精确控制时间了。一般延时程序分为两种写法:粗略延时和精确延时。如果想用不太严格的延时的话,程序一般可这样书写:#include<reg52.h>#defineuintunsignedintvoiddelay(uintz){inta,i,j;for(a=z;a>0;a--)for(i=1000;i>0;i--)for(b=110;b<0;b--);} 其中z代表你想延长的时间,单位为秒。精确的延时程序一般需要用到中断,模块话书写如下:#include<reg52.h>unsignedcharnum;VoidT0_time()interrupt1{TH0=(65535-45872)/256; //重装初值TL0=(65535-45872)%256;num++; //num每加1次判断一次是否到20次If(num==20) //如果到了20次,说明1秒时间到{ num=0; //然后把num清零重新再计20次led1=~led1;} //让发光二极管状态取反}其中,在定时器初始化时需要先选择工作方式,之后才能赋初值。针对晶振为11.0592定时50ms的初值是45872。使用哪一种延时可根据需要而定,本设计中两种延时程序均有应用到。4.5显示部分测试结果由于Proteus软件里没有该设计所用的单片机,且测试程序大于51单片机的8K内存。所以本设计在测试时,是用已有的单片机上的8位数码管进行测试的。由于测试硬件的限制,只能仿真一层的部分。结果如下图(图4.5):图4.5

5、硬件焊接与调试5.1本设计所需材料5.1.1LED灯LED灯珠,最好选择长脚5mm,雾状(乳状)蓝色的灯珠(如下页图2.1),效果更好。记住,长脚的,不要短脚的3mm的也可以,当然也能自己换喜欢的颜色,个人推荐蓝色。制作光立方至少需要512个,建议买550个,价格在70-90元一包(含邮费),店家一般不会散卖的。这样的灯我是在淘宝网上购买的。图74HC573芯片74HC573锁存器,至少8个,记得要1-2元左右的,太便宜的可能是用过返新的,IC芯片都是一分钱一分货,便宜的全是旧的,别老想着贪便宜。(建议最好买十个,多买两个以备特殊情况。)5.1.3自制双声道音频插头一般的耳机都分左声道和右声道,从外面看来是两根接线,分别接右耳机和左耳机。可以找一个废旧的耳机,把耳机线剥开,你会看到每条黑线中都有两条线,其中有一条是地线。下面是找到地线的方法:把拨开的耳机线先用火烧掉线上面的绝缘漆,然后选任一声道,把两条线分别接一个LED的正负极,如果LED亮了,接LED的负极的那根线就是地线。最后把两个声道的负极街道一起,与三根杜邦线相连接,自制的双声道音频插头就做好了。如下页图(图5.2):图其他材料由于以上两中材料选材好坏对最终成品影响较大,所以特别提醒注意,以下是其他材料清单:材料名称数量备注ULN28032至少1个IC座(20P)12至少9个焊接线1卷推荐WIREWRAPPINGWIRE排阻(8J)1也可以不用单排针(20P)1040P的也可双排弯排针(40P)2接排线和固定面板需要杜邦线(40根)2组最好要质量好的单片机(STC12C5A60S2)1单片机最小系统1最好支持USB下载程序的万能板(12*18)2最好用质量好的绿油板万能板(18*30)2制作LED焊接模板焊锡1卷最好选优质锡万用表(数字式)1不是必购品,可借用电烙铁1非必购品,可借用尖嘴钳1非必购品,可借用镊子1非必购品,可借用插针(军品镀金)200固定LED使用下载线(USB转串口)1依最小系统版而定电源线(USB转ISP口)1依最小系统版而定普通按键4耳机转接口1单口转双口的5.2光立方LED灯焊接方法及步骤①LED应是折成下面图的样子然后检测LED灯是否是坏的,坏的就不要啦。LED灯的长脚的是正极,用万用表的负极,短一点的是负的引脚。用万用表的正极,再把万用表打在测二极管通断的档上,如果灯亮了就说明是好的。②用18*30的万用板制作光立方焊接模板,以便达到最好的焊接效果。制作方法如下图5.3所示。图5.3焊接模板这个模板整体应该是8*8的排针矩阵,便于固定LED。这就是我们使用方形LED的原因。当然LED的引脚折线方法也以此图为模板。排针的距离以5到7个孔为宜。依照该模板焊接焊接依次8层8*8LED立方体面。焊接结果如下页图(图5.4): 图5.4③接下来用502胶水,把两块儿18*12的万用板贴在一起,依照LED模板的引脚焊接距离在组合好的万用板上焊上64个插针阵列,如下页局部图(图5.5):图5.5之所以要两个板子连在一起是因为网上各个店家都没有卖18*30的优质绿油板。不过插针焊接比较麻烦,每焊一个插针都需要调整一次。有网友有一个比较简单但是略微影响美观的方法,用长的排座代替插针。个人建议,如果想美观一些的话,还是麻烦一点使用插针。④当然侧面也需要有同样的插针焊接以便是最终效果较好。如图(图2.8)是最终光立方效果图(图5.6):图5.6这样,复杂的电路藏于万用板底侧,使得用户从正面观看时,美感十足。背面电路图如下页图(图5.7):图5.75.3调试中的问题和解决方法问题一:最初测试不成功,LED灯亮的时候有串亮现象(即本应该亮的LED没有亮,不应该亮的却亮了)。解决办法:用万用表测试了一下串亮的LED,发现有一个LED烧坏了造成部分电路短路。换好LED之后再次测试,LED工作顺利,问题解决。问题二:换上一个使LED全亮的程序,发现只有个别的灯亮,其他的都不亮。解决办法:最初以为是程序的问题,仔细检查一下程序还是没错。后来试了试换了一个单片机最小系统,连好接线,发现光立方可以正常工作了。原来是单片机最小系统的P3口有问题。之后只好换一个单片机最小系统。问题三:图形变换程序写入单片机之后,有一排本该亮的灯没有亮。解决办法:再次查看程序,没有错误。仔细检查后发现有一个焊点断开了。焊接好以后再次测试,一切顺利。然后又仔细检查了其他层的LED,把虚焊的点都衔接好了。问题四:最终程序写入单片机以后,本应8层都亮的,却发现光立方只有一层会亮。解决办法:全面检测了一下其他灯珠,发现没有问题,调整了一下每层的接线顺序,还是只有一层亮。最后不小心把ULN2803的接地端拔掉了,重新接上后发现8层都可以亮了。5.4调试结果下页是调试结果:图形变换的静态图(图5.8):图5.8 总结其实在很早之前就知道光立方着中东西,只是在许多地方找到的资料不是制作方式太复杂,就是电路设计难懂,制作精美的光立方也往往价格不菲。而本设计旨在设计出一种制作简单、低花费、高质量的光立方。经过查阅大量的相关资料,最终设计出了以STC125A60S2单片机为核心的控制电路,并用常用锁存器74HC573和8路非门ULN2803设计了光立方驱动电路。最初焊接光立方8×8的面时,每个LED引脚的连接都是很困难的。在这个过程中,我想到了一个制作模板,并最终加快了显示部分的焊接速度和焊接质量。每焊好一层LED,都要仔细测试是否有虚焊或者短接,花了三天时间才把8层LED焊好。之后在焊接128个(地面和侧面各64个)插针时,由于每个插针在焊接前难以固定,所以一手拿镊子一手拿烙铁,先用焊锡固定插针,然后再把插针调整得笔直。每一排,每一列还要最终调整得排列整齐。这个过程也很辛苦。有网友用的是排插,但是那样会影响到最终的美观。所以,为了保证最终的效果,还是选择努力焊好了插针。在焊接驱动电路时,底板的每个插针又要重新动一次以便与控制引脚连接。很庆幸自己在焊接驱动电路时,使用了IC插座。在后来的电路检测中,避免了硬件的拆卸和重装,省去了不少麻烦。最后,为了是图形变换丰满美观,编写了上千行的程序,内置11种图形变换模块。完美的完成了既经济又美观,功能强大的光立方设计!

致谢在此论文撰写过程中,要特别感谢我的导师李端老师的指导与督促,同时感谢她的谅解与包容。没有李老师的帮助也就没有今天的这篇论文。求学历程是艰苦的,但又是快乐的。通过大量阅读资料,我拓宽了自己的知识面,并懂得将所学知识融会贯通到实践中去。在获得知识的同时,我也认识到了自己还需要学习的东西很多,理论需要很好的结合实践,全面分析并解决问题的能力有待提高。另外,此次毕业设计还获得了各位同学和老师的大力支持。在此,我衷心感谢各位老师和同学。在未来的工作和学习中,我将以更好的成绩来回报各位同学和老师,同时,在毕业设计过程中,同宿舍的舍友和同组的同学给了我很多的帮助,我非常的感谢他们给我的帮助。谢谢你们!还要感谢我的辅导员王老师,谢谢他在这四年的时间中为我们全班所做的一切,他不求回报,无私奉献的精神很让我感动,再次向他表示由衷的感谢。在这四年的时光中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富。在此,也对他们表示衷心感谢。本文参考了大量的文献资料,并且也得到了众多网友的热心帮助,在此,向各学术界的前辈们致敬,向网络上那些无私分享资料的朋友表示衷心的感谢!

参考文献[1]郭天祥,新概念51单片机C语言教程[M],北京,电子工业出版社,2009.46-79[2]徐平,官微宏,3D8LED搭接指南[M],/view/8ba47c85bceb19e8b8f6ba70.html[3]aGuegu,官微宏,3D8串口数据通讯协议v1.5[M],/view/548b12e3551810a6f524868b.html[4]阮永松,打造音乐频谱时钟,无线电[J],2012-6(总第597期),44-47[5]刘兴钊,数字信号处理[M],北京,电子工业出版社,2010.53-127[6]姚永平等,STC12C5A60S2系列单片机器件手册[M],www.STCMCU.com[7]IvorHorton,C语言入门经典(,杨浩译)[M],北京,清华出版社,2008.64-115[8]张毅刚,基于Proteus的单片机课程的基础实验与课程设计[M],北京,人民邮电出版社,2012.32-99[9]江世明,基于Proteus的单片机应用技术[M],北京,电子工业出版社,2009.52-108[10]周润景,张丽娜,刘印群,PROTEUS入门实用教程[M],北京,机械工业出版社,2007.34-86[11]姚永平等,STC单片机编译/仿真工具说明书[M],www.STCMCU.com[12]张孝虎,51单片机DIY音乐频谱显示[M],/list.php?fid-871.htm[13]金炯泰,如何使用KEIL8051C编译器(金奎焕,李允俊,任正权译)北京,北京航空航天大学出版社,2002.31-105[14]王为青,程国钢,单片机KeilCx51应用开发技术,北京,人民邮电出版社,2007.56-98

附录#include<REG52.H>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintuchardisplay[8][8];/*rank:A,1,2,3,4,I,心,U*/ucharcodetable_cha[8][8]={0x51,0x51,0x51,0x4a,0x4a,0x4a,0x44,0x44,0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0x66,0x30,0x18,0xc,0x6,0xf6,0x3c,0x66,0x60,0x38,0x60,0x60,0x66,0x3c,0x30,0x38,0x3c,0x3e,0x36,0x7e,0x30,0x30,0x3c,0x3c,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7e,0x3c};/*the"ideasoft"*/ucharcodetable_id[40]={0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf8,0x27,0x27,0xf8,0x00,0x8f,0x89,0x89,0xf9,0x00,0xff,0x81,0x81,0xff,0x00,0xff,0x09,0x09,0x09,0x01,0x0,0x01,0x01,0xff,0x01,0x01,0x00};/*railway*/ucharcodedat[128]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x6f,0x8f,0x93,0x73,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4};/*railway2*/ucharcodedat2[28]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4};/*railway3*/ucharcodedat3[24]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x50,0x40,0x30,0x20,0x10};/*3pchar*/ucharcodetable_3p[3][8]={0xff,0x89,0xf5,0x93,0x93,0xf5,0x89,0xff,0x0e,0x1f,0x3f,0x7e,0x7e,0x3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18};/*initializtionThatistoinitializetheprogram.Itiswritetosetthetimerinc52mcu.Sotheprogramcanrenovatetheled_3d_cubeinfixedtimeusetheinterruptfunction.*/voidsinter(){IE=0x82;TCON=0x01;TH0=0xc0;TL0=0;TR0=1;}voiddelay5us(void)//误差-0.026765046296usSTC1T22.1184Mhz{unsignedchara,b;for(b=7;b>0;b--)for(a=2;a>0;a--);}voiddelay(uinti){while(i--){delay5us();}//12t的mcu注释这个延时即可}/*Tojudgethenumbit*/ucharjudgebit(ucharnum,ucharb){charn;num=num&(1<<b);if(num)n=1;elsen=0;returnn;}/*Tofigureouttheroundnumber*/ucharabs(uchara){ucharb;b=a/10;a=a-b*10;if(a>=5)b++;returnb;}/*Tofigureouttheabsolutevalue*/ucharabss(chara){if(a<0)a=-a;returna;}/*Thefunctioncancomparatthecharacter.Andremovethebigonetotheback.*/voidmax(uchar*a,uchar*b){uchart;if((*a)>(*b)){t=(*a);(*a)=(*b);(*b)=t;}}/*Thefunctionistofigureoutthemaxnumberandreturnit.*/ucharmaxt(uchara,ucharb,ucharc){if(a<b)a=b;if(a<c)a=c;returna;}voidclear(charle){uchari,j;for(j=0;j<8;j++){for(i=0;i<8;i++)display[j][i]=le;}}voidtrailler(uintspeed){chari,j;for(i=6;i>=-3;i--){if(i>=0){for(j=0;j<8;j++)display[j][i]=display[j][i+1];}if(i<4){for(j=0;j<8;j++)display[j][i+4]=0;}delay(speed);}}voidpoint(ucharx,uchary,ucharz,ucharle){ucharch1,ch0;ch1=1<<x;ch0=~ch1;if(le)display[z][y]=display[z][y]|ch1;elsedisplay[z][y]=display[z][y]&ch0;}voidtype(ucharcha,uchary){ucharxx;for(xx=0;xx<8;xx++){display[xx][y]=table_cha[cha][xx];}}/*Thefirstvariableisthedistancefromthemidpoint.Thesecondisthelayer.thethirdistheflashspeedofthetimebetweeneachtwopoint.Theforthistheenableio,itcontrolsweatherdraworclaen.*/voidcirp(charcpp,uchardir,ucharle){uchara,b,c,cp;if((cpp<128)&(cpp>=0)){if(dir)cp=127-cpp;elsecp=cpp;a=(dat[cp]>>5)&0x07;b=(dat[cp]>>2)&0x07;c=dat[cp]&0x03;if(cpp>63)c=7-c;point(a,b,c,le);}}voidline(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharle){chart,a,b,c,a1,b1,c1,i;a1=x2-x1;b1=y2-y1;c1=z2-z1;t=maxt(abss(a1),abss(b1),abss(c1));a=x1*10;b=y1*10;c=z1*10;a1=a1*10/t;b1=b1*10/t;c1=c1*10/t;for(i=0;i<t;i++){point(abs(a),abs(b),abs(c),le);a+=a1;b+=b1;c+=c1;}point(x2,y2,z2,le);}voidbox(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharfill,ucharle){uchari,j,t=0;max(&x1,&x2);max(&y1,&y2);max(&z1,&z2);for(i=x1;i<=x2;i++)t|=1<<i;if(!le)t=~t;if(fill){if(le){for(i=z1;i<=z2;i++){for(j=y1;j<=y2;j++)display[j][i]|=t;}}else{for(i=z1;i<=z2;i++){for(j=y1;j<=y2;j++)display[j][i]&=t;}}}else{if(le){display[y1][z1]|=t;display[y2][z1]|=t;display[y1][z2]|=t;display[y2][z2]|=t;}else{display[y1][z1]&=t;display[y2][z1]&=t;display[y1][z2]&=t;display[y2][z2]&=t;}t=(0x01<<x1)|(0x01<<x2);if(!le)t=~t;if(le){for(j=z1;j<=z2;j+=(z2-z1)){for(i=y1;i<=y2;i++)display[i][j]|=t;}for(j=y1;j<=y2;j+=(y2-y1)){for(i=z1;i<=z2;i++)display[j][i]|=t;}}else{for(j=z1;j<=z2;j+=(z2-z1)){for(i=y1;i<=y2;i++){display[i][j]&=t;}}for(j=y1;j<=y2;j+=(y2-y1)){for(i=z1;i<=z2;i++){display[j][i]&=t;}}}}}voidbox_apeak_xy(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,ucharfill,ucharle){uchari;max(&z1,&z2);if(fill){for(i=z1;i<=z2;i++){line(x1,y1,i,x2,y2,i,le);}}else{line(x1,y1,z1,x2,y2,z1,le);line(x1,y1,z2,x2,y2,z2,le);line(x2,y2,z1,x2,y2,z2,le);line(x1,y1,z1,x1,y1,z2,le);}}voidpoke(ucharn,ucharx,uchary){uchari;for(i=0;i<8;i++){point(x,y,i,judgebit(n,i));}}voidboxtola(chari,ucharn){if((i>=0)&(i<8)){poke(n,0,7-i);}if((i>=8)&(i<16)){poke(n,i-8,0);}if((i>=16)&(i<24)){poke(n,7,i-16);}}voidrolldisplay(uintspeed){ucharj;chari,a;for(i=23;i>-40;i--){for(j=0;j<40;j++){a=i+j;if((a>=0)&(a<24))boxtola(a,table_id[j]);}delay(speed);}}voidroll_apeak_yz(ucharn,uintspeed){uchari;switch(n){case1:for(i=0;i<7;i++){display[i][7]=0;display[7][6-i]=255;delay(speed);};break;case2:for(i=0;i<7;i++){display[7][7-i]=0;display[6-i][0]=255;delay(speed);};break;case3:for(i=0;i<7;i++){display[7-i][0]=0;display[0][i+1]=255;delay(speed);};break;case0:for(i=0;i<7;i++){display[0][i]=0;display[i+1][7]=255;delay(speed);};}}voidroll_apeak_xy(ucharn,uintspeed){uchari;switch(n){case1:for(i=0;i<7;i++){line(0,i,0,0,i,7,0);line(i+1,7,0,i+1,7,7,1);delay(speed);};break;case2:for(i=0;i<7;i++){line(i,7,0,i,7,7,0);line(7,6-i,0,7,6-i,7,1);delay(speed);};break;case3:for(i=0;i<7;i++){line(7,7-i,0,7,7-i,7,0);line(6-i,0,0,6-i,0,7,1);delay(speed);};break;case0:for(i=0;i<7;i++){line(7-i,0,0,7-i,0,7,0);line(0,i+1,0,0,i+1,7,1);delay(speed);};}}voidroll_3_xy(ucharn,uintspeed){uchari;switch(n){case1:for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,7-i,7,1,1);delay(speed);if(i<7)box_apeak_xy(3,3,0,0,i,7,1,0);};break;case2:for(i=0;i<8;i++){box_apeak_xy(7-i,0,0,i,7,7,1,1);delay(speed);if(i<7)box_apeak_xy(3,4,0,i,7,7,1,0);};break;case3:for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,7-i,7,1,1);delay(speed);if(i<7)box_apeak_xy(4,4,0,7,7-i,7,1,0);};break;case0:for(i=0;i<8;i++){box_apeak_xy(7-i,0,0,i,7,7,1,1);delay(speed);if(i<7)box_apeak_xy(4,3,0,7-i,0,7,1,0);};}}voidtrans(ucharz,uintspeed){uchari,j;for(j=0;j<8;j++){for(i=0;i<8;i++){display[z][i]>>=1;}delay(speed);}}voidtranoutchar(ucharc,uintspeed){uchari,j,k,a,i2=0;for(i=0;i<8;i++){if(i<7)box_apeak_xy(i+1,0,0,i+1,7,7,1,1);box_apeak_xy(i2,0,0,i2,7,7,1,0);a=0;i2=i+1;for(j=0;j<=i;j++){a=a|(1<<j);}for(k=0;k<8;k++){display[k][3]|=table_cha[c][k]&a;display[k][4]|=table_cha[c][k]&a;}delay(speed);}}voidtransss(){uchari,j;for(i=0;i<8;i++){for(j=0;j<8;j++)display[i][j]<<=1;}}/*Fromnowon,thefunctionbelowistodisplaytheflash.*/voidflash_1(){clear(0);type(1,0);delay(60000);type(2,0);delay(60000);type(3,0);delay(60000);type(4,0);delay(60000);delay(60000);clear(0);rolldisplay(30000);type(0,7);delay(60000);trailler(6000);delay(60000);}voidflash_2(){uchari;for(i=129;i>0;i--){cirp(i-2,0,1);delay(8000);cirp(i-1,0,0);}delay(8000);for(i=0;i<136;i++){cirp(i,1,1);delay(8000);cirp(i-8,1,0);}delay(8000);for(i=129;i>0;i--){cirp(i-2,0,1);delay(8000);}delay(8000);for(i=0;i<128;i++){cirp(i-8,1,0);delay(8000);}delay(60000);}voidflash_3(){chari;for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,i,7,1,1);delay(20000);if(i<7)box_apeak_xy(0,i,0,7,i,7,1,0);}for(i=7;i>=0;i--){box_apeak_xy(0,i,0,7,i,7,1,1);delay(20000);if(i>0)box_apeak_xy(0,i,0,7,i,7,1,0);}for(i=0;i<8;i++){box_apeak_xy(0,i,0,7,i,7,1,1);delay(20000);if(i<7)box_apeak_xy(0,i,0,7,i,7,1,0);}}voidflash_4(){chari,j,an[8];for(j=7;j<15;j++)an[j-7]=j;for(i=0;i<=16;i++){for(j=0;j<8;j++){if((an[j]<8)&(an[j]>=0))line(0,an[j],j,7,an[j],j,1);}for(j=0;j<8;j++){if(((an[j]+1)<8)&(an[j]>=0))line(0,an[j]+1,j,7,an[j]+1,j,0);}for(j=0;j<8;j++){if(an[j]>0)an[j]--;}delay(15000);}for(j=0;j<8;j++)an[j]=1-j;for(i=0;i<=16;i++){for(j=0;j<8;j++){if((an[j]<8)&(an[j]>=0))line(0,an[j],j,7,an[j],j,1);}for(j=0;j<8;j++){if(((an[j]-1)<7)&(an[j]>0))line(0,an[j]-1,j,7,an[j]-1,j,0);}for(j=0;j<8;j++){if(an[j]<7)an[j]++;}delay(15000);}}voidflash_5(){uinta=15000;//a=delaychari=8,j,an[4];//1for(j=7;j<11;j++)an[j-7]=j;while(i--){for(j=0;j<4;j++){if(an[j]<8)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]<7)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);}for(j=0;j<4;j++){if(an[j]>3)an[j]--;}delay(a);}//2i=3;for(j=0;j<4;j++)an[j]=5-j;while(i--){for(j=1;j<4;j++){if(an[j]<4)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]<3)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);}for(j=0;j<4;j++){if(an[j]>0)an[j]--;}delay(a);}//3i=3;for(j=1;j<4;j++)an[j]=4-j;while(i--){for(j=1;j<4;j++){if(an[j]>=0)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]>0)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);}for(j=1;j<4;j++){if(an[j]<3)an[j]++;}delay(a);}//4i=3;for(j=0;j<4;j++)an[j]=j+1;while(i--){for(j=1;j<4;j++){if(an[j]>3)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]>3)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0);}for(j=0;j<4;j++)an[j]++;delay(a);}//5i=3;for(j=3;j<6;j++)an[j-2]=j;while(i--){for(j=1;j<4;j++){box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0);}for(j=0;j<4;j++){if(an[j]>3)an[j]--;}delay(a);}//6i=3;for(j=0;j<4;j++)an[j]=5-j;while(i--){for(j=1;j<4;j++){if(an[j]<4)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1);if(an[j]<3)box_

温馨提示

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

评论

0/150

提交评论