基于单片机的光立方设计
基于单片机的光立方课程设计报告
单片机课程设计报告题目基于单片机的4*4*4光立方设计系别计算机科学系专业计算机科学与技术班级学号姓名指导教师日期【摘要】当今社会,随着电子行业的不断开展,单片机的应用从根本上改变了传统的控制系统设计思想和设计方法,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。
成为现代生产和生活中不可缺少的一局部。
我们学习单片机也一个学期了,此次单片机课程设计,我采用的是STC12C5A60S2系列的单片机,设计一个4*4*4模式的"光立方〞。
将LED灯分成4层,利用程序来编写各种不同的效果来控制LED的亮灭,最终使得整个立方体展现不同的变换,美轮美奂,绚丽多彩。
【关键词】单片机课程设计光立方1绪论1.1课题研究的背景"光立方〞一词正逐渐引起了全国人民的关注,并得到了全球的高度肯定。
所谓"光立方〞:就是在平面LED根底上开展起来的新的显示技术,通过复杂的程序控制,在三维空间能够显示具有立体感的图形、动画等。
由此,也掀起了光立方的设计与学习热潮,在原有的根底上不断增加难度,增加变换把戏,吸引电子爱好者对其研究、创新。
光立方是由LED灯组成,由于发光二级管质量比较稳定,使用寿命长,不用频繁地去更换,能减少本钱,更节能。
光立方作为一种特殊的显示资源,已用于一些广告行业、家庭、娱乐厅、会议室、大型演唱会、城市地标广场等场所的布置和装饰,还可以用于更广泛方面,具有广阔的应用前景。
1.2课题研究的意义本次毕业设计一改传统的平面流水灯的风格,而是从平面向立体开展,通过更宽广的三维空间呈现出更加绚丽的效果,直接冲击着人们审美视觉,不在停留在乏味的平面成像。
光立方主体局部由64个LED灯组成,在制作过程中锻炼学习动手焊接能力,并以低本钱,智能化产品对实现经济利益、商业价值的形成具有积极的推动作用。
光立方的研究极具创意和启发,而且可以低本钱、高效益的研究未来的3D技术。
基于STC51单片机光立方设计与实现
毕业论文(设计)题目:基于STC51单片机的光立方设计与实现**:**学号:**********层次:本科专业:软件工程班级: 12级(13)班指导教师:***独创性声明一、本论文是本人独立完成;二、本论文没有任何抄袭行为;三、若有不实,一经查出,请答辩委员会取消本人答辩资格。
承诺人(签名):年月日摘要本设计使用51系列的单片机STC15F2K60S2作为整个设计的控制,每层的64个LED通过层共阴的形式连接起来。
每束的8个LED通过共阳的形式连接起来。
使用74HC593控制各束LED的阳极,使用ULN2803控制各层的阴极。
组成一个由512个LED、规格为8*8*8的立方体。
同时介绍了STC15F2K60S2、74HC573、ULN2803的使用方法及选用原因。
同时介绍了在调试过程中,遇到的软、硬件方面的问题以及解决方法。
对光立方的原理进行了详细的阐述,并详细的介绍了光立方在应用方面的意义。
关键词光立方;74HC593;STC15F2K60S2;ULN2803;LEDSummary This design uses 51 series microcontrollers STC15F2K60S2 as the control of the entire design, form each of 64 LED by connecting the common cathode layer. Each bundle of eight LED connected through common anode form. Use 74HC593 control each beam LED anode, cathode layers using ULN2803 control. Composition consisting 512 LED, specifications for the cube 8 * 8 * 8. Also introduced STC15F2K60S2,74HC573, ULN2803 to use and selection reasons. Also introduced the problem in the debugging process, encountered software and hardware and solutions. Light cube principle set forth in detail, and describes in detail the significance of light cube applications.Keywords light cube;74HC593;STC15F2K60S2;ULN2803;LED目录1 前言 (1)1.1研究的背景 (1)1.2研究的意义 (1)1.3研究内容和结构 (1)2 总体设计 (2)2.1 系统的设计方案及工作原理 (2)2.2 各模块元件选择 (3)2.2.1 控制模块元件的选择 (3)2.2.2 驱动模块元件的选择 (3)2.2.3 显示模块元件的选择 (4)3 硬件电路设计与实现 (4)3.1 硬件电路布局 (4)3.2 控制模块电路的设计 (5)3.2.1 单片机的说明及引脚规划 (5)3.2.2 电源电路的设计 (6)3.2.3 串口选择电路的设计 (6)3.2.4 程序下载及串口通信电路的设计 (7)3.3 驱动模块电路的设计 (7)3.3.1 ULN2803的说明及引脚规划 (7)3.3.2 74HC573的说明及引脚规划 (8)3.4 显示模块电路的设计 (9)3.5 光立方搭建方法 (9)3.5.1 弯折LED的引脚 (9)3.5.2 光立方的焊接 (11)3.5.3 元器件的焊接 (13)4 软件设计 (13)4.1显示程序的设计 (14)4.2 光立方的显示数据 (15)4.2.1 内置显示数据 (15)4.2.2 串口接收显示数据 (17)4.2.3 显示数据来源的选择 (18)4.3 显示数据的获取 (19)5 测试和问题分析 (20)6结论 (20)附录 (21)参考文献 (23)致谢语 (24)1 前言1.1研究的背景在高速的信息、商业发展过程中,LED点阵广告显示器得到了广泛的应用,LED 点阵显示屏已逐步取代传统的大尺寸纸质广告,在大街小巷常见的LED点阵显示屏都得益于LED灯的发明。
基于单片机的光立方控制实验
基于单片机的光立方控制实验一、实现功能通过AT89C51单片机来控制一个由64盏LED灯组成的四层光立方模拟3D显示效果,实现三维显示。
该光立方具有以下功能:1)能单独点亮每一个LED灯;2)能点亮任意一条线上的LED灯;3)能同时点亮任意一个面上的LED灯;4)能同时点亮所有的LED灯;5)能让LED灯自由亮灭,产生不同的显示效果。
二、设计思路1、单片机资源分配情况光立方分为四层,从下到上分别由P2.0、P2.1、P2.2、P2.3控制,每层16个LED灯由P0和P1中16个IO引脚控制。
层间采用共阴极所以输入低电平有效,列间采用共阳极所以输入高电平有效。
2、系统结构系统主要由时钟电路、复位电路、LED光立方电路组成;时钟电路和复位电路作为单片机输入,LED光立方电路作为单片机输出。
时钟电路:单片机内部有一个由反向放大器构成的振荡电路,芯片上的XTAL1和XTAL2分别为振荡电路的输入和输出端。
只要在这两个引脚上接一个石英晶体振荡器和两个微调电容就构成内部方式的振荡器电路,由振荡器产生自激振荡,便构成一个完整的振荡信号发生器。
复位电路:通过连接方式,使单片机内部各类寄存器的值变为初始状态,设计综合采用上电复位方式和按键复位方式。
3、程序流程程序包括延时程序、显示程序两个子程序。
显示程序:主要是在得到当前控制灯的位置后,通过控制与它相连的阴阳两端的引脚电平,从而实现对灯的亮灭进行控制。
延时程序:由于显示程序不能控制灯持续点亮,达不到显示效果,所以我们需要增加延时程序来延长显示时间从而达到显示效果。
4、所需元器件LED灯64个AT89C51单片机一个102排阻一个20pF电容两个12MHz晶振一个1k欧和10k欧电阻各一个10微法电容一个按键一个单片机插座一个USB母座一个7cm*9cm洞洞板一块三、电路设计1.单片机与晶振及复位电路利用单片机XTAL1和XTAL2两个端口接上12MHz的晶振,在加上两个20pF的电容保护晶振,这样单片机的最小系统就构成了。
基于单片机的光立方设计方案
基于单片机的光立方设计方案摘要本设计制作出一个三维立体显示图案的LED光立方。
本产品不仅可以像发光二极管点阵一样显示平面的静态或动态画面,还可以显示立体的静态或动态画面,打破了传统的平面显示方案。
同锁存器/8*8*8/LED显示时又增加了显示的花样和立体图案显示效果,可以广泛用于传媒信息显示和各种装饰显示,为将来显示技术的进步和发展指导了方向,光立方显示比发光二极管点阵更具有视觉效果,而且画面图案更加非富多彩。
本设计是采用AT89S52单片机为核心控制器,八D边沿触发器(三态)74LS574扩展I/O口,完成硬件电路设计。
通过软件编程控制数据下载到单片机完成设计图案的显示。
软件采用自上而下的模块化设计思想,使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
关键词51单片机/74LS574目录摘要 (I)1 绪论 (1)1.1国内外LED显示屏的发展概况 (1)1.2我国LED显示屏研究现状及发展趋势 (1)1.3设计的总体要求及方案选择 (2)1.4设计说明书的结构安排 (2)2 系统总体方案设计 (4)2.1系统总体硬件方案选择 (4)2.1.1 3D显示屏核心控制器 (4)2.1.2 电源电路 (5)2.1.3 I\O口扩展芯片 (5)2.1.4 层面控制驱动电路 (6)2.1.5 串口通讯芯片的选择 (6)2.1.6 LED发光显示二级管 (6)2.1.7 硬件电路绘图软件 (7)2.2系统总体软件方案选择 (8)2.2.1 单片机编程语言 (8)2.2.2 系统软件编译器WA VE介绍 (9)3 系统硬件方案设计 (10)3.1硬件整体设计概述及功能分析 (10)3.2电源供电系统设计 (10)3.351系列单片机简介 (11)3.3.1 时钟电路设计 (11)3.3.2 复位电路设计 (13)3.4驱动电路设计 (13)3.4.1 层驱动电路设计 (13)3.4.2 列驱动电路设计 (15)3.5通信系统硬件设计 (16)3.6光立方的制作及工作原理介绍 (17)3.6.1 3D LED光立方搭接 (17)3.6.2 3D LED光立方工作原理 (19)4 系统软件方案设计 (21)4.1概述 (21)4.2主程序设计 (21)4.3显示程序的设计 (22)4.3.1 LED显示屏的数据传送 (22)4.3.2 显示程序的设计 (22)4.4软件中防止程序出错ERR处理 (23)4.5ISP软件程序下载 (24)5 光立方PCB版制作 (25)5.1 PROTUES制作PCB版图 (25)5.1.1 绘制电路原理图并仿真测试 (25)5.1.2 加载网络表及元件封装 (26)5.1.3 规划电路板并设置相关参数 (27)5.1.4 元件布局及调整 (28)5.1.5 元件布线及调整 (29)5.1.6 输出及制作PCB (30)5.2PCB版的制作过程 (30)5.2.1 热转印版图 (31)5.2.2 蚀刻去铜 (31)5.2.3 去墨打孔 (31)6 系统测试及仿真 (32)6.1硬件系统测试 (32)6.2软件系统测试 (33)6.3系统总体测试 (33)6.4系统测试结果与结论 (34)6.4.1 测试结果分析 (34)6.4.2 测试结论 (34)总结 (35)参考文献 (37)附录1 总体电路原理图 (38)附录2 电路PCB版图 (39)附录3 电路3D仿真图 (40)附录4 元器件清单 (41)附录5 电路实物图 (43)附录6 源程序 (44)1 绪论1.1 国内外LED显示屏的发展概况在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。
基于单片机的光立方体设计
目录第一章绪论 (3)1.1国内外LED显示屏的发展概况 (3)1.2我国光立方体研究现状及发展趋势 (3)1.3设计的总体要求及方案选择 (4)1.4光立方体设计的结构安排 (4)第二章系统总体方案设计 (4)2.1系统总体硬件方案选择 (5)2.1.1 3D显示屏核心控制器 (5)2.1.2 电源电路 (6)2.1.3 I\O口扩展芯片 (6)2.1.4 层面控制驱动电路 (6)2.1.5 串口通讯芯片的选择 (6)2.2系统总体软件方案选择 (7)2.2.1 单片机编程语言 (7)2.2.2 系统软件编译器WAVE介绍 (7)第三章系统硬件方案设计 (8)3.1硬件整体设计概述及功能分析 (8)3.251系列单片机简介 (8)3.2.1 时钟电路设计 (8)3.2.2 复位电路设计 (9)3.3光立方的制作及工作原理介绍 (10)3.3.1 3D LED光立方搭接 (10)3.3.2 3D LED光立方工作原理 (10)第四章系统软件方案设计 (12)4.1概述 (12)4.2主程序设计 (12)4.3显示程序的设计 (13)4.3.1 LED显示屏的数据传送 (13)4.3.2 显示程序的设计 (13)4.4软件中防止程序出错ERR处理 (14)4.5ISP软件程序下载 (15)第五章光立方PCB版制作 (15)5.1 PROTUES制作PCB版图 (15)5.1.1 绘制电路原理图并仿真测试 (15)5.1.2 规划电路板并设置相关参数 (15)5.1.3 元件布局及调整 (16)第六章系统测试及仿真 (17)6.1硬件系统测试 (17)6.2软件系统测试 (18)总结 (18)参考文献 (19)致谢...................................................... 错误!未定义书签。
元器件清单. (19)附录1 系统总电路图......................................... 错误!未定义书签。
基于STC12C5A60S2单片机的LED光立方设计
【摘要】本次设计使用512个LED灯制作8*8*8的LED立方体,命名为光立方。
采用STC12C5A60S2芯片作为主控,8个74HC573锁存器和一个ULN2803芯片扩展I/O口,作为外围控制。
通过编程控制I/O口,点亮指定的LED灯,使得显示不同的画面。
8*8*8光立方因点亮LED灯将会形成各种图形,如爱心、数字、雨滴、正方体等十几种画面。
整个立体呈现不同的造型和图案,动画衔接完美,使其变得美轮美奂、绚丽多彩,立体感十足。
此外,我们还可以外接音频输入,通过AD采样,快速傅里叶变换FFT,可以让光立方显示音频频谱。
经过系统测试,最终达到设计要求。
【关键词】光立方 STC12C5A60S2 74HC573 ULN2803Based on STC12C5A60S2 of the Light Cube Design【Abstract】:The 8*8*8 LED cube is made of 512 LED lights,named Light Cube which used STC12C5A60S2 as main control chip,it has 8 74HC573 latches extended I/O ports,and a ULN2803 chip as out control. Through programming control I/O port, the LED light. 8 * 8 * 8 cubic light for light leds will form a variety of graphics, such as love heart,numbers,rain,cube and so on. animation, cohesion is perfect, stereo sense is dye-in-the-wood. In addition, we also can external audio input, through the AD sampling, fast Fourier transform FFT, can let light cube display audio spectrum. After the system test, finally to meet the design requirements.【Keywords】: The Light Cube STC12C5A60S2 74HC573 ULN2803目录【摘要】 (2)【Abstract】 (3)目录 (3)第一章引言 (1)1.1光立方的研究意义 (1)1.2发展历程和现状 (1)1.3 光立方的功能和特点 (1)1.4 光立体的优越性以及主要应用 (2)第二章控制模块设计 (3)2.1 系统总框图 (3)2.2 总体方案的选择 (3)2.2.1主控芯片 (3)2.2 总体方案的选择 (3)2.2.1主控芯片 (3)2.2.2 电源选择 (4)2.2.3 元件选择 (4)第三章光立方显示部分概述 (7)3.1 光立方的制作 (7)3.1.1 光立方的原理 (7)3.1.2 LED灯的选用 (7)3.1.3 LED灯的焊接 (9)3.2显示部分检测 (10)第四章硬件设计 (13)4.1最小系统 (13)4.2 按键模块 (13)4.3功放模块 (14)4.3.1 功放原理图 (14)4.4呼吸指示灯 (15)4.5 竖排控制电路 (15)4.6 光立方层控制电路 (16)4.7 硬件电路焊接 (17)4.8 元件清单 .......................................................................................................... 错误!未定义书签。
基于单片机的光立方设计
基于单片机的光立方设计摘要:随着电子行业的不断发展,单片机凭借着其极高的性能价格比应用越来越广泛。
本文阐述的是用STC89C52RC系列的单片机来控制一个“光立方”,利用程序来编写各种不同的效果来控制LED的亮灭,使得整个立方体展现不同的造型和图案,使其变得美轮美奂,绚丽多彩。
关键词:光立方;74HC573;单片机随着科技的发展LED灯经过不断的改进已经深入的进入到了人们的生活中,如今LED灯制作的各种创意灯具和作品随处可见,为生活增添了一抹亮丽的色彩。
本文阐述的光立方采用4*4*4的模式,将LED灯分成四层,再通过STC89C52单片机的核心编程来达到预设的色彩变换效果。
1.系统硬件设计图1电路框图本系统主要由单片机、复位电路、时钟电路、三极管驱动电路、LED光立方组成。
其中,单片机为中央控制模块,主要用于编写控制程序;时钟控制电路为单片机各个功能部件的运行提供基准频率,只需在单片机内部的震荡电路芯片引脚上接一个石英晶体振荡器和两个微调电容就可以构成一个完整的震荡信号发生器。
复位电路是用来实现单片机复位的,复位引脚RET通过一个施密特触发器与复位电路相连接,施密特触发器用作噪声抑制,采用上电复位方式。
通过三极管驱动电路驱动芯片运行来控制LED光立方的不同闪烁模式。
2.系统软件设计图2程序流程图图3光立方代码花样系统程序流程图如图2所示,完成控制模式编程以后可以产生如图3所示的不同花样。
3.小结本次设计过程为:1)根据系统原理及工艺,提出了光立方的设计方案和思路;2)确定光立方的控制方案;3)选择所需的硬件进行研究设计,硬件设备选型,绘制系统硬件连接图;4)PLC 选型、估算所需I/O点数,进行I/O模块选型;列出I/O分配表;5)对控制系统的主程序进行设计,讨论PLC程序设计方法及程序执行特点。
6)设计梯形图控制程序,对程序进行调试和修改并设计系统。
本次设计进一步提升了本人的电路编程和制作能力,相信基于单片机的产品将会一片光明的市场前景!参考文献[1]廖常初.PLC编程及应用[M].北京机械工业出版社.2015[2]陈中,朱代忠.基于STC89C52单片机的控制系统设计[M].清华大学出版社,2015.11[3]王静霞.单片机应用技术[M].电子工业出版社,2015.7[4]程国钢.51单片机常用模块设计查询手册[M].清华大学出版社,2016[5]张占,张德虎.基于PLC和MCGS的串行通信实现[J].科技创新导报.2016(8).。
基于STM32单片机的3维LED光立方的设计与实现
基于STM32单片机的3维LED光立方的设计与实现3DLED光立方是一种由多个LED灯组成的立方体结构,可以在三个坐标轴上显示三维图形和动画。
在本文中,我们将研究基于STM32单片机的3DLED光立方的设计和实现。
首先,我们需要选择合适的STM32单片机来控制LED灯的亮灭。
在选择单片机时,我们需要考虑到处理速度、存储容量和GPIO数量等因素。
常用的STM32单片机有STM32F103和STM32F407等型号,它们都具有较快的处理速度和足够的GPIO数量来控制3DLED光立方。
接下来,我们需要设计和制作LED光立方的硬件部分。
LED光立方的主要部件包括LED灯、驱动电路和控制电路。
LED灯是光立方显示的核心部件,常用的LED灯有RGB三色LED和WS2812等类型的LED灯。
驱动电路主要用于控制LED灯的亮灭,常用的驱动电路有锁相环驱动电路和电平转换电路。
控制电路用于接收来自STM32单片机的指令,然后将相应的指令发送给驱动电路。
在设计控制电路时,我们可以选择使用UART或SPI等串行通信接口来与STM32单片机进行通信。
串行通信接口可以有效地减少GPIO的使用量,并且具有较高的通信速度。
在通信协议的选择上,我们可以使用自定义协议或者使用现有的协议,如DMX512等。
在软件设计方面,我们需要编写控制程序来控制LED光立方的显示。
首先,我们需要编写驱动程序来与控制电路进行通信,并控制LED灯的亮灭。
其次,我们需要编写图形和动画的显示程序,以实现3D效果的显示。
常用的图形算法有线段绘制算法和三角形填充算法等。
最后,我们还可以添加交互功能,使得用户可以通过按键或触摸屏来控制LED光立方的显示。
在实现的过程中,我们需要注意几个关键的问题。
首先,我们需要合理安排LED灯的布局,以确保LED光立方能够显示出清晰的图形和动画。
其次,我们需要注意LED灯的电流和电压的控制,以避免对单片机和LED 灯的损坏。
最后,我们还需要进行适当的测试和调试,以确保LED光立方的正常工作。
基于51单片机光立方设计_陈聪
参数
数值
集电极直流最大工作电压
50
输入电压
5
最大工作温度
+ 85
最小工作温度
- 20
集电极连续电流
500
输入电流
25
单位 V V ℃ ℃
mA mA
2.3 控制器 STC89C52RC
STC89C52 是宏晶公司 MCS-51 系列单片机中基本的产品,它采用宏晶公司可靠的 CMOS 工艺技
术制造的高性能 8 位单片机,属于标准的 MCS-51 的 HCMOS 产品。它结合了 CMOS 的高速和高密度
L1 10
L2 9
L3 8
L4 7
L5 6
L6 5
L7 4
L8 3
2
1
RN1
10k
H4.8
H4.7
H4.6
H4.5
H4.4
H4.3
H4.2
H4.1
H3.8
H3.7
H3.6
H3.5
H3.4
H3.3
H3.2
H3.1
H2.8
H2.7
H2.6
H2.5
H2.4
H2.3
H2.2
H2.1
H1.8
H1.7
H1.6
H1.5
3-4 控制电路焊接图
3.3 单片机工作电路原理及制作 1、单片机工作电路原理
2、单片机工作电路
C2
30p
U1
19 XTAL1
C1
30p
18 XTAL2
9 RST
C3
R1 10uF
10k
29 30 31
PSEN ALE EA
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8
基于单片机的光立方设计(课程设计)
综合实践项目名称基于单片机的光立方设计专业班级学生姓名指导教师年月日摘要本课程设计制作出一个三维立体显示图案的LED光立方。
主要采用8*8*8 led组成的模式。
距离是14cm*14cm*20cm(长.宽.高),主要分为三个模块:主控模块、驱动模块、显示模块;我们所做的光立方驱动电路,主控电路等都是纯手工焊接。
采用的主控芯片32K STC89C58芯片,驱动电路是采用我们常用的74HC574数字芯片。
光立方工作过程中,通过程序对电路的控制,可以在LED组成的立方体上显示出各种图形。
软件采用自上而下的模块化设计思想,使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
关键词:LED光立方; 74HC574; 51单片机ABSTRACTThis design produced a three-dimensional pattern of the LED light cube. This product can not only like a light-emitting diode dot matrix display plane static or dynamic screen can also display three-dimensional static or dynamic images,and to break the traditional program.While increasing the display patterns and three-dimensional effect can be widely used to display and decorative display for future progress and development to guide the direction,light cube display more visual effects than the light-emitting diode dot matrix,and the picture is more rich colorful. With a combination of graphics and characters more perfect display characteristics.The design is STC89C58 MCU core controller,eight D edge flip-flop 74HC574 (tri-state) expansion I/O port completion of the hardware circuit design. Programmed by software to control the data is downloaded to the MCU to complete the designs of the show. This design software is a top-down modular design,the system moving in the direction of distributed,small development,enhance the stability of the system's scalability and running.Keywords:52single-chip;74HC573latch;8*8*8 LED;目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1 目的与要求 (1)1.2 电路的设计与元件的选择 (1)1.2.1 电路设计 (1)1.2.2 元件的选择 (2)第2章电路工作原理 (3)2.1 设计原理 (3)2.2 模块与控制器接口 (3)第3章方案选择 (5)3.1 电源的选择 (5)3.2 3D显示核心控制器 (5)3.2.1 单片机 (5)3.2.2 DSP 芯片 (5)3.2.3 EDA (6)3.3 I/O口扩展芯片的选择 (6)3.4 LED发光显示二级管 (6)3.4.1 按颜色分类 (7)3.4.2 按使用场合分类 (7)3.4.3 按发光点直径分类 (7)第4章焊接 (8)4.1 焊接前准备工作 (8)4.2 焊接 (8)第5章程序设计的选择与分析 (10)5.1 单片机C语言主要特点 (10)5.2 单片机C语言与标准C语言的区别 (10)5.3 数据类型的选用 (11)5.4 算法设计问题 (11)5.5 数据存储器的分配 (12)5.6 单片机C语言与汇编语言的混合编程 (12)5.7 程序分析选择 (14)第6章电路调试与总结 (15)参考文献 (16)附录程序代码 (17)致谢 (23)第1章绪论1.1 目的与要求(1)目的:转眼间我们学习单片机已经有大半学期了,也是到了期末的考试时间了,感到安慰的是不用考试,但是要做一个实物,做这个实物的目的是主要回顾我们学习的单片机知识和提高我们的焊接和其他的动手实操能力(包括了数字电路和模拟电路的知识)。
基于STC12C5A60S2单片机的光立方设计
基于STC12C5A60S2单片机的光立方设计是一种新颖的创意产品,通过利用单片机的控制能力和灯光效果,实现了一个独特的光立方设计。
在现代科技快速发展的背景下,光立方作为一种具有艺术性和科技感的产品,受到了人们的喜爱和欢迎。
本文将从光立方的背景和意义入手,详细介绍基于STC12C5A60S2单片机的光立方设计的原理、工作流程、关键技术和实现方法,以及相关应用和未来发展方向。
第一章光立方的背景与意义近年来,随着科技的不断进步和人们对艺术品的需求不断增加,艺术设计和科技创新逐渐融合在一起,创造出了许多新颖独特的产品。
光立方作为一种结合了灯光效果和艺术感的产品,受到了广泛的关注和喜爱。
它不仅可以作为装饰品摆放在家里或办公室,还可以作为礼物赠送给亲友,展现出了独特的美感和科技感。
第二章基于STC12C5A60S2单片机的光立方设计原理在光立方的设计中,STC12C5A60S2单片机扮演着十分重要的角色。
该单片机具有较强的控制能力和稳定性,能够实现对灯光效果的精准控制。
基于STC12C5A60S2单片机的光立方设计原理主要包括硬件系统设计和软件控制设计两个方面。
硬件系统设计包括LED灯光模块、电源管理模块、传感器模块等部分,软件控制设计则包括程序编写、通信协议、功能实现等方面。
第三章基于STC12C5A60S2单片机的光立方设计工作流程基于STC12C5A60S2单片机的光立方设计工作流程主要包括需求分析、系统设计、硬件实现、软件编程、调试测试等几个步骤。
首先需要对光立方的功能和效果进行需求分析,然后进行系统设计和硬件实现,接着进行软件编程和调试测试,最终完成整个光立方设计并调试好。
第四章基于STC12C5A60S2单片机的光立方设计关键技术在基于STC12C5A60S2单片机的光立方设计过程中,有一些关键技术需要掌握和应用。
其中包括LED灯光模块的选型和布局、电源管理模块的设计和调试、传感器模块的使用和校准、通信协议的确定和实现、程序编写的优化和调试等方面。
基于单片机的光立方设计
基于单片机的光立方设计一、前言光立方是一种利用LED灯组成的立方体,通过控制LED灯的亮灭来实现不同的效果。
在现代科技发展中,光立方已经成为了一种非常流行的DIY电子制作项目。
本文将介绍基于单片机的光立方设计。
二、材料准备1. 单片机:使用AT89C51或者AT89S52单片机2. 电容:1个16V 100uF电解电容,1个10V 100nF陶瓷电容3. 晶振:使用12MHz晶振4. LED灯:64颗RGB LED灯5. 面包板和杜邦线三、硬件设计1. 硬件连接图2. 硬件说明:(1)晶振连接:将晶振两端分别连接到单片机的XTAL1和XTAL2脚上,并且需要在晶振两端分别连接一个22pF陶瓷电容。
(2)复位电路连接:将复位开关连接到单片机的RST脚上,并且需要在RST脚上连接一个10KΩ上拉电阻。
(3)LED灯连接:将64颗RGB LED灯按照8*8的矩阵排列,并且需要将每个LED灯的正极连接到单片机的P0口,将每个LED灯的负极连接到GND上。
四、软件设计1. 软件流程图2. 软件说明:(1)初始化:在程序开始时,需要对单片机进行初始化操作,包括设置IO口方向、设置定时器等。
(2)显示模式:根据用户选择的不同模式,控制LED灯的亮灭来实现不同的效果。
(3)定时器中断:使用定时器中断来实现LED灯的闪烁效果。
五、总结基于单片机的光立方设计是一种非常有趣和有挑战性的DIY电子制作项目。
通过本文所介绍的硬件设计和软件设计,可以实现不同模式下LED灯的亮灭控制。
同时,这也是一个非常好的学习单片机编程和电子电路知识的机会。
基于STC单片机的8X8X8光立方设计
• 206•号,在经过内部音频切换电路改变输入方式后,可以切换到红外遥控模式或者蓝牙控制模式,通过按键电路或者蓝牙传输软件实现对音频信号的操作和输入。
如果用户想要对单片机进行可视化操作,可以通过USB 转TTL 电路实现的上位机进行PC 端的控制。
2 系统硬件设计根据本系统的设计方案,所设计的硬件电路系统的外围音频输入输出控制电路包括USB 转TTL 电路、红外发射与接收电路、蓝牙数据传输电路、内外音频切换电路、按键电路和频谱显示电路。
采用增强型芯片STC12C5A6052单片机作为主控芯片,其主要 优点有:(1)超强抗干扰。
(2)内部集成高可靠复位电路,外部复位可用可不用。
(3)速度快,比8051快8-12倍。
采用该芯片可以满足本系统设计的需要。
图2 USB转TTL电路2.1 USB转TTL电路USB 转TTL 电路如图2所示。
PC 机上的通信接口有USB 接口,相应电平逻辑遵照RS232原则。
而单片机上的串行通信通过单片机的RXD 、TXD 、VCC 、GND 四个引脚,相应电平逻辑遵照TTL 原则。
USB 转串口芯片CH340是一个USB 总线的转接芯片,实现USB 转串口,提供电脑和硬件电路的通信通道,同时为单片机的烧写提供下载电路与电源供电。
2.2 红外发射与接收电路单片机最小系统可以通过一个带遥控和编码能力的红外芯片控制,BC7210A 是一款低成本的通用红外遥控解码芯片,可以完成目前应用最广泛的多种红外遥控编码的解码,并且具有高抗干扰和无误码的优点。
BC7210A 的输出兼容SPI 和UART 两种接口,可以直接和各种微处理器相连。
采用该芯片,可以节约单片机CPU 资源。
2.3 蓝牙数据传输电路BL3231蓝牙模块采用Beken 高度集成的单芯片蓝牙,它集成了高性能收发器,功能强大的基带处理器,支持蓝牙HID 配置文件。
内置FLASH 程序存储器使得它适合对于定制的应用程序,更好的保护应用程序安全。
基于51单片机的光立方设计毕业设计
毕业设计基于51单片机的光立方设计*名:***学号: ********班级: 10信科一班专业:信息科学与技术所在系:电子信息工程系指导教师:**基于51单片机的光立方设计摘要本文详细的介绍了光立方的搭建过程,以51系列的单片机STC12C5A60S2为主要的控制芯片,由512个LED通过共阴的形式连接起来,由74HC595为扩展单片机的I/O口,用ULN2803为驱动电路,形成一个规格为8*8*8(长,宽,高)14cm*14cm*20cm立方体,还介绍了这款芯片的特点和使用方法及在调试过程中遇到的软件和硬件方面的问题及解决方法,详细的阐述了光立方的设计原理和架构方法,对光立方目前存在的意义也进行了详细的介绍。
关键词:光立方;74HC595;单片机;ULN2803;LEDLight CuBe Based on 51 single ChiP miCroComPuterABstraCtThis PaPer introduCes the ProCess of Building Light CuBe, with 51 Series MCUSTC12C5A60S2 as the main Control ChiP, ConneCted By 512 LED By CO Yin form, By74HC595 for the exPansion of the MCU I/O Port, using ULN2803 as the drive CirCuit, the formation of a sPeCifiCation for 8*8* 8 (length, width, height) the 14Cm*14Cm*20Cm CuBe, also introduCes the CharaCteristiCs and methods of use of the ChiP and software and hardware in the ProCess of deBugging ProBlems and solutions, desCriBed in detail the design PrinCiPle and arChiteCture method Light CuBe, the CuBe existed at Present signifiCanCe have also Been introduCed in detail.Keywords:Light CuBe; 74HC595; STC12C5A60S2; ULN2803; LED目录摘要 ................................................................................................................................... 错误!未定义书签。
基于单片机的光立方设计_毕业论文(含程序+原理图+实物图)
1、实物图..........................................................................................................................16 2、系统原理图..................................................................................................................17 程序清单...................................................................................................................................17
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XXXX大学本科课程设计题目:基于单片机的光立方设计姓名:学号:院(系):专业、年级:指导教师:二○XX年X月一、设计任务在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。
新型的大屏幕要求显示画面色彩鲜艳,立体感强,静如油画,动如电影,这些设计广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。
本设计旨在利用人眼视觉暂留的特点,通过AT89C52单片机控制一个由64盏LED灯组成的四层光立方模拟3D显示效果,实现三维显示。
该光立方具有以下功能:1)能单独点亮每一个LED灯;2)能点亮任意一条线上的LED灯;3)能同时点亮任意一个面上的LED灯;4)能同时点亮所有的LED灯;5)能让LED灯自由亮灭,产生不同的显示效果。
二、设计方案1、单片机资源分配情况将LED光立方分成4层,分别由单片机的P2.0,P2.1,P2.2,P2.3,四个IO 口来控制每一层,由于采用的是共阳极所以当层电位为高电平有效,由P0口和P1的总共16个IO口来控制每层的16盏灯,低电平有效,P0口加上拉排阻。
这样就可以通过控制IO口的输出电平来控制每盏灯的亮灭。
2、系统框图本系统主要由时钟电路、复位电路、LED光立方电路组成;时钟电路和复位电路作为单片机输入,LED光立方电路作为单片机输出,显示出控制结果如图2- 1所示。
时钟电路:单片机的各个功能部件的运行都是以时钟控制信号为基准,一拍一拍的工作。
因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的可靠性和稳定性。
常用的时钟电路设计为内部时钟方式,单片机内部有一个由反向放大器构成的振荡电路,芯片上的XTAL1和XTAL2分别为振荡电路的输入和输出端。
只要在这两个引脚上接一个石英晶体振荡器和两个微调电容就构成内部方式的振荡器电路,由振荡器产生自激振荡,便构成一个完整的振荡信号发生器。
复位电路:通过某种方式,使单片机内部各类寄存器的值变为初始状态的操作称为复位,复位主要通过外部电路实现。
常见的复位电路包括上电复位、手动按键复位和看门狗复位三种方式,本次设计综合采用上电复位方式和按键复位方式。
图2- 2系统框图3、程序流程本项目的程序设计主要包括延时程序、显示程序两个子程序。
显示程序:主要是在得到当前控制灯的位置后,通过控制与它相连的阴阳两端的引脚电平,从而实现对灯的亮灭进行控制。
延时程序:由于显示程序不能控制灯持续点亮,达不到显示效果,我们需要增加延时程序来延长显示时间从而达到显示效果。
如图2-2所示单片机复位以后,程序开始运行,获取到要显示的LED所在的层和列然后调用显示子程序点亮LED灯,通过延时程序进行短暂延时后继续获取下一个要显示的LED灯的所在的层和列。
图2- 3程序流程图三、工作原理利用单片控制LED点阵显示的原理和控制技术,来控制光立方显示。
即通过编写程序控制不同LED的亮灭,来显示不同的内容。
由于人眼的具有视觉暂留的特性,设置每幅画面的延迟时间可以使连续的一系列画面呈现动态。
最终达到所要显示的内容。
每个灯都是由层控制端(共阳极)和列控制端决定亮或灭。
如图3-1 a所示,将光立方分成四层,每一层有一个单片机引脚作为层控制端与之相连,设计成共阳极。
如图3-1 b所示每层光立方有16盏灯,而这16盏灯又分别与单片机的P0、P1两个IO口组共16个IO口相连,这样就能很好地控制每一盏灯的亮灭。
a b图3-1 光立方结构示意图:a 四层光立方分布结构,b 光立方每层的LED分布在三维光立方中采用动态扫描显示,这种显示方式巧妙地利用了人眼的视觉暂留特性。
将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。
最典型的例子就是电影放映机。
在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。
图3-2描述了将光立方某个侧面对角线点亮的过程第一帧第四帧第三帧第二帧图3-2光立方某个侧面对角线点亮的过程本次设计完成了对光立方的系统框架和基本电路的设计,最终通过编写代码使光立方产生了不错的显示效果,基本完成了设计任务中的不同要求,但是仍然存在单独点亮一盏灯亮度不够等等问题。
经过与老师和同学针对这些问题的探讨我们得出了与这些问题相关的一些分析:1)实际做成的光立方单独一盏灯点亮时,亮度很高,而点亮一个面时亮度明显不够分析:这主要是因为这次设计对于LED 灯采取的是共阳极的方式,所以用单片机一个引脚的电压带动一个面进行显示肯定是远远不够的,经过思考,我觉得将设计改为共阴极的可能会显示效果更好。
2)光立方有一盏灯总是与设计程序不符合(该亮的时候是灭的,而该灭的时候又是亮的)分析:这可能是由于在焊接过程中,将这个LED 灯的阴极和阳极刚好接反了,于是显示结果刚好相反。
3)点亮侧面的灯时,出现的是该面的灯按层轮换分析:这可能是由于延时程序设计的不合理,导致画面显示不流畅,修改延时程序,再进行调试后正常显示。
四、 结果分析五、实物照片如图5-1所示是光立方设计底座,其中蓝色方框中为单片机的最小系统,包括单片机和晶振电路以及复位电路,红色方框中为LED列控制端,灯座的引脚分别与单片机的P0、P1的16个IO口相连。
图5-2展示的是最终的显示效果。
图5- 1光立方底座图5- 2最终显示效果六、附:1、元件清单表1元件清单2、电路图图7.2- 1光立方整体电路图7.2- 2单片机图7.2- 3时钟电路图7.2- 4复位电路3、软件清单#include<STC15.H>#define uchar unsigned char#define uint unsigned intuchar num,DELAY=100;sbit H1=P3^4;sbit H2=P3^5;sbit H3=P3^6;sbit H4=P3^7;sbit L1=P2^0;sbit L2=P2^1;sbit L3=P2^2;sbit L4=P2^3;sbit L5=P2^4;sbit L6=P2^5;sbit L7=P2^6;sbit L8=P2^7;sbit L9=P1^0;sbit L10=P1^1;sbit L11=P1^2;sbit L12=P1^3;sbit L13=P1^4;sbit L14=P1^5;sbit L15=P1^6;sbit L16=P1^7;uchar code tab[]={0xfF,0xfF,0xfF,0xfF,0xfF,0xfF,0xfF,0xfF,/*"未命名文件",0*//* (4 X 4 ) */};uchar code tab1[]={0x0f,0x00,0x0f,0x00,0x0f,0x00,0x0f,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0x00,0x0f,0x00,0x0f,0x00,0x0f,0x00,0x0f,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xf0,};/**************************************************************** *****************************延时函数/**************************************************************** *****************************/void delay (uint a){ // 用于点扫描的延时unsigned int i;while( --a != 0){for(i = 0; i < 1; i++);}}/**************************************************************** *****************************面1/**************************************************************** *****************************/void mian1(uchar d,uchar e){uchar i;H2=0;H3=0;H4=0;i = d & 0x01;if(i == 0x01){H1 = 1;L1 = 0;delay(DELAY);H1 = 0;L1 =1;};i = d & 0x02;if(i == 0x02){H1 = 1;L2 = 0;delay(DELAY);H1 = 0;L2 =1;};i = d & 0x04;if(i == 0x04){H1 = 1;L3 = 0;delay(DELAY);H1 = 0;L3 =1;};i = d & 0x08;if(i == 0x08){H1 = 1;L4 = 0;delay(DELAY);H1 = 0;L4 =1;};i = d & 0x10;if(i == 0x10){H1 = 1;L5 = 0;delay(DELAY);H1 = 0;L5 =1;};i = d & 0x20;if(i == 0x20){H1 = 1;L6 = 0;delay(DELAY);H1 = 0;L6 =1;};i = d & 0x40;if(i == 0x40){H1 = 1;L7 = 0;delay(DELAY);H1 = 0;L7 =1;};i = d & 0x80;if(i == 0x80){H1 = 1;L8 = 0;delay(DELAY);H1 = 0;L8 =1;};i = e & 0x01;if(i == 0x01){H1 = 1;L9 = 0;delay(DELAY);H1 = 0;L9 =1;};i = e & 0x02;if(i == 0x02){H1 = 1;L10 = 0;delay(DELAY);H1 = 0;L10 =1;};i = e & 0x04;if(i == 0x04){H1 = 1;L11 = 0;delay(DELAY);H1 = 0;L11 =1;};i = e & 0x08;if(i == 0x08){H1 = 1;L12 = 0;delay(DELAY);H1 = 0;L12 =1;};i = e & 0x10;if(i == 0x10){H1 = 1;L13 = 0;delay(DELAY);H1 = 0;L13 =1;};i = e & 0x20;if(i == 0x20){H1 = 1;L14 = 0;delay(DELAY);H1 = 0;L14 =1;};i = e & 0x40;if(i == 0x40){H1 = 1;L15 = 0;delay(DELAY);H1 = 0;L15 =1;};i = e & 0x80;if(i == 0x80){H1 = 1;L16 = 0;delay(DELAY);H1 = 0;L16 =1;};}/**************************************************************** *****************************面2/**************************************************************** *****************************/void mian2(uchar d,uchar e){uchar i;H1=0;H3=0;H4=0;i = d & 0x01;i = d & 0x02;if(i == 0x02){H2 = 1;L2 = 0;delay(DELAY);H2 = 0;L2 = 1;};i = d & 0x04;if(i == 0x04){H2 = 1;L3 = 0;delay(DELAY);H2 = 0;L3 = 1;};i = d & 0x08;if(i == 0x08){H2 = 1;L4 = 0;delay(DELAY);H2 = 0;L4 = 1;};i = d & 0x10;if(i == 0x10){H2 = 1;L5 = 0;delay(DELAY);H2 = 0;L5 = 1;};i = d & 0x20;if(i == 0x20){H2 = 1;L6 = 0;delay(DELAY);H2 = 0;L6 = 1;};i = d & 0x40;if(i == 0x40){H2 = 1;L7 = 0;delay(DELAY);H2 = 0;L7 = 1;};i = d & 0x80;if(i == 0x80){H2 = 1;L8 = 0;delay(DELAY);H2 = 0;L8 = 1;};i = e & 0x01;if(i == 0x01){H2 = 1;L9 = 0;delay(DELAY);H2 = 0;L9 = 1;};i = e & 0x02;if(i == 0x02){H2 = 1;L10 = 0;delay(DELAY);H2 = 0;L10 = 1;};i = e & 0x04;if(i == 0x04){H2 = 1;L11 = 0;delay(DELAY);H2 = 0;L11 = 1;};i = e & 0x08;if(i == 0x08){H2 = 1;L12 = 0;delay(DELAY);H2 = 0;L12 = 1;};i = e & 0x10;if(i == 0x10){H2 = 1;L13 = 0;delay(DELAY);H2 = 0;L13 = 1;};i = e & 0x20;if(i == 0x20){H2 = 1;L14 = 0;delay(DELAY);H2 = 0;L14 = 1;};i = e & 0x40;if(i == 0x40){H2 = 1;L15 = 0;delay(DELAY);H2 = 0;L15 = 1;};i = e & 0x80;}/**************************************************************** *****************************面3/**************************************************************** *****************************/void mian3(uchar d,uchar e){uchar i;H2=0;H1=0;H4=0;i = d & 0x01;if(i == 0x01){H3 = 1;L1 = 0;delay(DELAY);H3 = 0;L1 = 1;};i = d & 0x02;if(i == 0x02){H3 = 1;L2 = 0;delay(DELAY);H3 = 0;L2 = 1;};i = d & 0x04;if(i == 0x04){H3 = 1;L3 = 0;delay(DELAY);H3 = 0;L3 = 1;};i = d & 0x08;if(i == 0x08){H3 = 1;L4 = 0;delay(DELAY);H3 = 0;L4 = 1;};i = d & 0x10;if(i == 0x10){H3 = 1;L5 = 0;delay(DELAY);H3 = 0;L5 = 1;};i = d & 0x20;if(i == 0x20){H3 = 1;L6 = 0;delay(DELAY);H3 = 0;L6 = 1;};i = d & 0x40;if(i == 0x40){H3 = 1;L7 = 0;delay(DELAY);H3 = 0;L7 = 1;};i = d & 0x80;if(i == 0x80){H3 = 1;L8 = 0;delay(DELAY);H3 = 0;L8 = 1;};i = e & 0x01;if(i == 0x01){H3 = 1;L9 = 0;delay(DELAY);H3 = 0;L9 = 1;};i = e & 0x02;if(i == 0x02){H3 = 1;L10 = 0;delay(DELAY);H3 = 0;L10 = 1;};i = e & 0x04;if(i == 0x04){H3 = 1;L11 = 0;delay(DELAY);H3 = 0;L11 = 1;};i = e & 0x08;if(i == 0x08){H3 = 1;L12 = 0;delay(DELAY);H3 = 0;L12 = 1;};i = e & 0x10;if(i == 0x10){H3 = 1;L13 = 0;delay(DELAY);H3 = 0;L13 = 1;};i = e & 0x20;if(i == 0x20){H3 = 1;L14 = 0;delay(DELAY);H3 = 0;L14 = 1;};i = e & 0x40;if(i == 0x40){H3 = 1;L15 = 0;delay(DELAY);H3 = 0;L15 = 1;};i = e & 0x80;if(i == 0x80){H3 = 1;L16 = 0;delay(DELAY);H3 = 0;L16 = 1;};}/**************************************************************** *****************************面4/**************************************************************** *****************************/void mian4(uchar d,uchar e){uchar i;H2=0;H3=0;H1=0;i = d & 0x01;if(i == 0x01){H4 = 1;L1 = 0;delay(DELAY);H4 = 0;L1 = 1;};i = d & 0x02;if(i == 0x02){H4 = 1;L2 = 0;delay(DELAY);H4 = 0;L2 = 1;};i = d & 0x04;if(i == 0x04){H4 = 1;L3 = 0;delay(DELAY);H4 = 0;L3 = 1;};i = d & 0x08;if(i == 0x08){H4 = 1;L4 = 0;delay(DELAY);H4 = 0;L4 = 1;};i = d & 0x10;if(i == 0x10){H4 = 1;L5 = 0;delay(DELAY);H4 = 0;L5 = 1;};i = d & 0x20;if(i == 0x20){H4 = 1;L6 = 0;delay(DELAY);H4 = 0;L6 = 1;};i = d & 0x40;if(i == 0x40){H4 = 1;L7 = 0;delay(DELAY);H4 = 0;L7 = 1;};i = d & 0x80;if(i == 0x80){H4 = 1;L8 = 0;delay(DELAY);H4 = 0;L8 = 1;};i = e & 0x01;if(i == 0x01){H4 = 1;L9 = 0;delay(DELAY);H4 = 0;L9 = 1;};i = e & 0x02;if(i == 0x02){H4 = 1;L10 = 0;delay(DELAY);H4 = 0;L10 = 1;};i = e & 0x04;if(i == 0x04){H4 = 1;L11 = 0;delay(DELAY);H4 = 0;L11 = 1;};i = e & 0x08;if(i == 0x08){H4 = 1;L12 = 0;delay(DELAY);H4 = 0;L12 = 1;};i = e & 0x10;if(i == 0x10){H4 = 1;L13 = 0;delay(DELAY);H4 = 0;L13 = 1;};i = e & 0x20;if(i == 0x20){H4 = 1;L14 = 0;delay(DELAY);H4 = 0;L14 = 1;};i = e & 0x40;if(i == 0x40){H4 = 1;L15 = 0;delay(DELAY);H4 = 0;L15 = 1;};i = e & 0x80;if(i == 0x80){H4 = 1;L16 = 0;delay(DELAY);H4 = 0;L16 = 1;}; }void cube4(uchar j,uchar k,uchar f){switch(j){case 0:mian1(k,f);break;case 1:mian2(k,f);break;case 2:mian3(k,f);break;case 3:mian4(k,f);break;}}void all(){uint p,m;//从上往下for(num=0;num<4;num++){for(p=0;p<50;p++){cube4(num,tab[2*num],tab[2*num+1]);}}/*for(num=0;num<16;num++)//面选择{for(m=0;m<30;m++) //一个面的停留时间{for(p=0;p<10;p++) //扫描一行的次数{cube4(num%4,tab1[2*num],tab1[2*num+1]);//对4求余,取0-3面}}}*///从后向前for(p=0;p<50;p++){cube4(1,0x0f,0x00);cube4(2,0x0f,0x00);cube4(3,0x0f,0x00);}for(p=0;p<50;p++){cube4(0,0xf0,0x00);cube4(1,0xf0,0x00);cube4(2,0xf0,0x00);cube4(3,0xf0,0x00);}for(p=0;p<50;p++){cube4(0,0x00,0x0f);cube4(1,0x00,0x0f);cube4(2,0x00,0x0f);cube4(3,0x00,0x0f);}for(p=0;p<50;p++){cube4(0,0x00,0xf0);cube4(1,0x00,0xf0);cube4(2,0x00,0xf0);cube4(3,0x00,0xf0);}//从左往右for(p=0;p<50;p++){cube4(0,0x11,0x11);cube4(2,0x11,0x11);cube4(3,0x11,0x11);}for(p=0;p<50;p++){cube4(0,0x22,0x22);cube4(1,0x22,0x22);cube4(2,0x22,0x22);cube4(3,0x22,0x22);}for(p=0;p<50;p++){cube4(0,0x44,0x44);cube4(1,0x44,0x44);cube4(2,0x44,0x44);cube4(3,0x44,0x44);}for(p=0;p<50;p++){cube4(0,0x88,0x88);cube4(1,0x88,0x88);cube4(2,0x88,0x88);cube4(3,0x88,0x88);}//竖向移动for(num=0;num<4;num++) {for(p=0;p<50;p++){cube4(num,0x11,0x11);}}for(num=0;num<4;num++){for(p=0;p<50;p++){cube4(3-num,0x22,0x22);}}for(num=0;num<4;num++){for(p=0;p<50;p++){cube4(num,0x44,0x44);}}for(num=0;num<4;num++){for(p=0;p<50;p++){cube4(3-num,0x88,0x88);}}//从上往下从下往上for(m=0;m<3;m++){for(num=0;num<4;num++){for(p=0;p<20;p++)cube4(num,tab[2*num],tab[2*num+1]);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,tab[2*num],tab[2*num+1]);}}}//竖条移动for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x01,0x00);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x02,0x00);}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x04,0x00);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x08,0x00);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x80,0x00);}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x40,0x00);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x20,0x00);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x10,0x00);}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x01);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x02);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x04);}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x08);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x80);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x40);}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x20);}}}for(m=0;m<100;m++){for(num=0;num<4;num++){for(p=0;p<1;p++){cube4(num,0x00,0x10);}}}//烟火类似for(m=0;m<15;m++){for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x45,0x38);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x82,0x04);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x47,0x86);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x84,0x42);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x21,0x04);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x54,0x83);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x02,0x48);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x64,0x85);}}for(num=0;num<4;num++){for(p=0;p<20;p++){cube4(3-num,0x23,0x47);}}}}void main(){P3M0=0XF0;//高四位强推while(1){all();}}。