光立方论文

合集下载

电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计

电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计

云南广播电视大学云南国防工业职业技术学院电子工程学院毕业论文(设计)课题基于51单片机的LED立方体显示器教研室机械电子工程学院教研室专业电气自动化技术班级……………………………学生姓名…………学号…………..导师姓名………职称讲师2012年10月 10 日随着科技的不断发展LED(Lighting Emitting Diode), 发光二极管)技术在10多年间取得了长足的进步,1990年前LDE以红绿双基色为主运用住处很少而且制造成本高昂。

1990-1995年,这一阶段是LED显示屏迅速发展的时期。

先后研制出蓝色LED、全彩色LED,LED屏的显示技术取得很大的提升。

而今高亮度的三基色LED电子显示屏作为一种高科技产品日益引起人们的重视。

它可以实时显示或循环播放文字、图形和图像信息,具有显示方式丰富、色彩鲜艳、显示内容修改方便、亮度高、显示稳定且寿命长等多种优点,被广泛应用于商业广告、体育比赛、交通信息报导等诸多领域。

在上海世博会开幕式上,竖立在黄浦江边的9500平方米的巨型LED显示屏价值高达人民币1亿元,是特别为上海世博会定制的。

“它不仅超大,且非常轻和通透。

”此外,这块屏幕还能抗震和防火。

这块屏幕其实是迄今为止世界上面积最大的LED显示屏,它代表着LED屏发展的技术方向。

现在LED在实际的运用中有了很宽广的范围,而且越来越收到人们的重视。

在举世瞩目的北京奥运会上,在开幕式上出现了一个新名词“光立方”它是北京奥运会开幕式的亮点。

本文所要介绍的LED的另一种应用也叫光立方,运用高亮的LED显示出不同的3D图案、动画和文字,运用51单片机进行控制长、宽、高由8×8×8个LED灯组成的真实3D立方体显示器。

其最大的特点,就是带给你未来3D技术的科技体验,在夜晚有让人震撼的3D效果给人眼前一亮的感觉。

该光立方在显示3D图片和动画时从立方体的各各面都可以看到立体动画,富有科技感,让人觉得就像是在看3D电影一般而且还是不用3D眼镜的裸眼3D全方位不受视角限制的3D。

基于单片机的光立方系统设计 电气工程及其自动化专业

基于单片机的光立方系统设计  电气工程及其自动化专业

题目基于单片机的光立方系统设计目录摘要 (I)英文摘要 (II)前言 (III)1绪论 (1)1.1选题背景 (1)1.2我国LED光立方研究现状及发展趋势 (1)1.3论文主要内容 (2)2 光立方系统硬件总体设计 (3)2.1设计要求 (3)2.2光立方系统硬件方案 (3)2.2.1 3D显示核心控制器 (3)2.2.2 电源电路 (4)2.2.3 I/O口扩展芯片 (4)2.2.4 层面控制驱动电路 (4)2.2.6 LED发光显示二极管 (4)2.3硬件整体设计概述及功能分析 (5)3 系统硬件设计 (7)3.1最小系统电路设计 (7)3.2电源供电系统设计 (7)3.3时钟电路设计 (8)3.4复位电路设计 (9)3.5驱动电路设计 (10)3.5.1 层驱动电路设计 (10)3.5.2 列驱动电路设计 (11)3.6光立方的工作原理介绍及制作 (13)3.6.1 3D LED光立方工作原理 (13)3.6.2 3D LED光立方搭接 (15)4 光立方电路和程序设计 (18)4.1电路设计仿真 (18)4.1.1 绘制电路原理图并仿真测试 (18)4.1.2 规划电路板并设置相关参数 (18)4.1.3 元件布局及调整 (19)4.1.4 元件布线及调整 (20)4.2主程序设计 (21)4.3显示程序的设计 (22)4.3.1 LED显示屏的数据传送 (22)4.3.2 LED显示程序的设计 (23)5 系统测试及仿真 (25)5.1硬件系统测试 (25)5.1.1不加电源前的检测 (26)5.1.2静态检测与测试 (26)5.1.3动态检测与测试 (27)5.1.4 测试注意事项 (27)5.1.5 小结 (27)5.2软件系统测试 (27)5.3系统总体测试 (28)5.4系统测试结果 (28)结论 (29)致谢 (30)参考文献 (31)附录1实物图 (32)附录2光立方测试程序 (32)基于单片机的光立方系统设计摘要本设计制作完成了一个8*8*8三维立体显示的LED光立方。

光立方毕业设计

光立方毕业设计

基于STC12C5A60S2的光立方设计【摘要】本次设计使用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 Cubewhich 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目录【摘要】 (1)【Abstract】 (1)目录 (2)第一章引言 (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 元件清单 .......................................................................................................... 错误!未定义书签。

3D光立方的设计与制作

3D光立方的设计与制作

3D光立方的设计与制作【摘要】本文主要介绍了3D光立方的设计思路和制作流程,3D光立方采用了8X8X8共计512个LED组成的阵列,本次设计制作一个三维的发光二极管立方显示体,能够通过编写程序来实现对每一个LED亮和灭的控制,从而可以显示多种多样的图案,具有很高的观赏性,通过制作3D光立方,能提高动手设计能力和对电路的分析能力。

【关键词】3D光立方;电路制作;LED1.背景与意义随着人们生活水平的不断提高,3D效果的欣赏已经成了人们的追求,美轮美奂的观赏让人醉心不已,给人带来无比宽松舒适的美感。

3D技术已进应用于教学,医学,地下采矿,空中导航等领域。

但就目前的发展,3D还不能够普及到人们的生活中,这也就萌发了人们对于3D的设计。

本次设计制作一个三维的发光二极管立方显示体,能够通过编写程序来实现对每一个LED亮和灭的控制,从而可以显示多种多样的图案。

因此,对发光二极管进行控制,使其显示出不同的花样,带给未来3D技术的科技体验。

2.系统电路设计本电路设计大体上可以分电源、处理系统、输出显示、输入控制四部分组成。

其结构框图如图1所示。

图1 3D光立方电路设计框图电源供电部分采用一块集成稳压器CW7805,把市电经变压器降压输入电路,而后整流送到稳压器稳压输出作为工作电压。

不仅功率上可以满足系统需要,不需要更换电源,并且比较轻便,使用更加安全可靠。

输入控制部分采用按键开关,主要用于切换不同的显示模式。

单片机控制电路是该系统的核心部分,主要控制着LED灯的显示间隔、方式、变换等。

输出控制采用74HC573芯片作为控制光立方的I\O口扩展芯片,以拓展单片机的输出口,采用动态显示模式,按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。

可以通过一定的算法从原来的显示数据直接生成,再结合输出控制电路,这样程序书写就不会过于繁琐和重复,而且对核心控制器的内存空间要求不高。

LED显示阵列是由8X8X8共计512个LED组成光立方显示屏。

基于STC51单片机光立方设计与实现

基于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灯的发明。

光立方毕业论文含程序+原理图+实物

光立方毕业论文含程序+原理图+实物

目录第一章绪论............................................................................................................................................... - 1 -1.1 课题的背景................................................................................................................................ - 1 -1.2 研究目的和意义................................................ - 1 -1.3 论文研究内容与结构安排........................................................................................................ - 1 -第二章总体设计....................................................................................................................................... - 2 -2.1 工作原理.................................................................................................................................... - 2 -2.2 各模块方案选择与论证............................................................................................................ - 2 -2.2.1 单片机主控制模块......................................................................................................... - 2 -2.2.2 驱动模块......................................................................................................................... - 2 -2.2.3 显示模块......................................................................................................................... - 2 -第三章系统硬件电路设计与实现........................................................................................................... - 3 -3.1 硬件电路设计............................................................................................................................ - 3 -3.2 单片机最小系统........................................................................................................................ - 3 -3.2.1 时钟电路......................................................................................................................... - 4 -3.2.2 P0 口外接上拉电阻....................................................................................................... - 4 -3.3 驱动模块的设计........................................................................................................................ - 5 -3.4 光立方整体设计思路................................................................................................................ - 6 -3.4.1 LED灯排序方式设计.................................................................................................... - 6 -3.4.2 LED灯接法方式设计.................................................................................................... - 7 -3.5 光立方搭建方法........................................................................................................................ - 7 -3.5.1将LED从点到线的搭建.................................................................................................. - 7 -3.5.2将LED从线到面的搭建.................................................................................................. - 7 -3.5.3将LED从面到体的搭建.................................................................................................. - 8 -第四章系统软件设计............................................................................................................................... - 9 -4.1 主程序设计................................................................................................................................ - 9 -第五章系统调试及结果分析................................................................................................................. - 10 -5.1 系统调试.................................................................................................................................. - 10 -5.1.1. 硬件测试...................................................................................................................... - 11 -5.1.2. 软件测试...................................................................................................................... - 11 -5.2 结果分析.................................................................................................................................. - 11 -第六章结论............................................................................................................................................. - 12 -参考文献................................................................................................................................................... - 13 -英文摘要................................................................................................................................................... - 14 -致谢语 ...................................................................................................................................................... - 15 -附录 .......................................................................................................................................................... - 16 -1、实物图......................................................................................................................................... - 16 -2、系统原理图................................................................................................................................. - 17 -程序清单................................................................................................................................................... - 18 -基于单片机的光立方设计刘荣三明学院 09级电子信息工程专业福建三明 365004摘要本文介绍了一款基于STC12C5A60S2 单片机光立方的设计并阐述了整体设计思路,介绍了系统软硬件设计的主要方法。

3D光立方毕业设计论文

3D光立方毕业设计论文

目录一、摘要 (1)二、关键字 (1)三、引言 (2)四、正文 (2)(一)、主要元件介绍 (3)1、STC12C5A60S2 (3)2、74HC573 (3)3、ULN2803 (4)(二)、工作原理 (5)1、驱动模块原理 (6)(三)、元器件选择 (7)(四)、制作、调试 (8)1、制作 (9)2、调试 (11)五、结束语 (13)六、参考文献 (12)七、附录(程序) (13)光立方一、摘要:本设计采用8*8*8 的模式,硬件主要分为三个模块:主控模块、驱动模块、显示模块。

采用的主控芯片为STC12C5A60S2 芯片,驱动电路是采用我们常用74HC573数字芯片。

数组 OUT[0]代表光立方从第一层 D0 到第八层 D0 的数据,以此类推数组 OUT[1] 代表光立方从第一层 D1 到第八层 D1 的数据。

本设计采用C语言编程,利用单片机控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。

二、关键字:LED光立方,74HC573,STC12C5A60S2,ULN2803三、引言:光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世,这是新中国成立六十周年国庆晚会最具创意的三大法宝之首,自从国庆60周年联欢晚会开始演练后,一个全新的名词“光立方”,吸引了全国人民的关注。

国庆联欢晚会三样法宝,光立方为最,“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙。

“光立方”可以根据爱国歌曲的不同内容,展示不同的造型和图案,具有丰富的视觉效果。

四、正文(一)主要元件介绍:1、STC12C5A60S2STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

光立方论文

光立方论文

电子与信息工程学院“创兴杯”电子设计竞赛参赛题目:光立方的设计与制作小组成员:指导教师:无专业班级:电子Z1201班光立方的设计与制作摘要:光立方以发光二极管搭建成立体点阵,利用单片机控制发光二极管的亮灭,并利用延时控制发光二极管的亮灭时间,最终使得整个立体展现不同的造型和图案,呈现给观众极为丰富的视觉效果。

以8*8*8的光立方为例,可以将其拆成8个点阵屏,每个点阵屏为64个灯,通过控制这512个灯让它自由的变换,然后控制每个层依次点亮,由于人眼睛的视觉暂留,使得人们感觉看到的东西是一起在亮的,这样人们就可以看到一个完整的个体。

本设计是采用优于89C51的STC12C5A60S2单片机为核心控制器,74HC573和UNL2803驱动电路,完成硬件电路设计。

通过软件编程控制数据下载到单片机完成设计图案的显示。

软件采用自上而下的模块化设计思想,使整个系统朝着分布式、模块化、小型化方向发展,增强系统的可扩展性和运行的稳定性。

如今,类似于光立方的LED显示屏应用在生活的方方面面,比如企业招牌、娱乐场所、广场标志牌、新型的动态户外广告牌等。

关键词:8*8*8光立方;STC12C5A60S2单片机;74HC573锁存器;UNL2803芯片;FFT1 光立方的功能及实现1.1功能描述8*8*8光立方能够通过编写程序实现对每一个发光二极管亮与灭进行控制,通过不同发光二极管的亮灭组合,从而形成多种多样的图案。

为增强显示效果,可以有多种显示模式。

其中最简单的就是图案的静态显示,此外还有多种动态显示,通过图案的不断变换以及翻转、缩放、平移、闪烁等变化产生绚丽的效果,给人丰富的视觉体验。

此外,光立方还具有一系列的实用功能:它可以跟随音乐节奏显示频谱,让人能够看到音乐的旋律,给人以视觉和听觉上的享受;它可以显示当前温度,提示您注意冷暖;它可以显示时间,告诉您时间的流逝,为您提供便利;它还可以实现待机呼吸灯,既节能又是一个装饰品……1.2 系统组成及工作过程光立方有8个8*8点阵,要控制8*8点阵,需要16个引脚,若有8个8*8点阵,需用8个引脚来当充当各个8*8点阵的“开关”,只要将64个灯阴极连在一起,再分别连到这8个引脚上,即可用一个引脚控制控制64个灯的亮灭,进而通过8个引脚控制512个灯的亮灭。

光立方个人总结模板

光立方个人总结模板

光立方个人总结模板篇一:光立方设计总结报告一.摘要在前一段时间,在网上看了一些关于光立方的资料和它的视频,看到了一些光立方的演示视频,被它那些立体感吸引了。

光立方顾名思义就是一个立方体,我们采用的是8*8*8的模式,大概的距离是14cm*14cm*20cm的8位移位寄存,74hc138是3位8出的译码器,用来信号的输出。

方案二:SM16126和74HC138组成的驱动电路。

SM16126具有亮度调整功能,通过调节R_EXT端的电阻大小或者PWM,就可轻松做到亮度可控。

4片SM16126构成了64位的静态显示,可显示一层的图像也就是一个二维画面。

层切换是通过3-8线译码器74HC138,对控制器输出的层信号译码,然后通过P沟道MOS管4953放大后驱动LED光立方一层的二极管阳极,此时对应SM16126移位后的并行数据就被显示出来了。

然后通过协调层的数据和层的选通,动态显示后就能做到立体控制与显示。

方案三:74HC573和ULN2803组成的驱动电路。

采用74HC573暂存的方法,来分别把8个灯的亮灭信息储存,74HC573的64个输出引脚控制前面所述每一个面的8个灯。

而ULN2803控制灯的每一个层,每个573输出的引脚对应的按顺序的X轴的8个引脚。

由于光立方需要输出足够大的电流,而74H573能够满足要求,故采用方案三。

三、电路设计1、STC12C5A60S2最小系统2、64灯控制显示模块3、层控制模块4、下载口模块5、四角电源指示灯模块四、程序设计程序设计遵照以下流程,打开开关,按下模式键进入全局扫描,以检测有无坏灯。

按下模式键,选择光立方工作的模式,并在光立方上显示,具体如下:音频模式(A),动画模式(N),夜灯模式(L),上位机模式(Z)。

选择“进入”进入所选模式,在模式进行中按下“退出”可总之该模式并重新选择模式。

光立方论文

光立方论文

目录1 概述 (2)1.1光立方原理 (2)1.2 3DLED光立体的优越性以及主要应用 (3)2设计课题硬件系统的设计 (3)2.1 LED管脚搭接方法: (3)2.2设计课题电路原理图 (7)2.3设计课题电路PCB图 (8)2.4 设计课题电路元器件布局图 (9)2.5 设计课题元器件清单 (10)3 设计课题软件系统的设计 (11)3.1 3dLED光立方代码图形 (11)3.2 设计课题软件系统程序清单 (12)4 设计结论 (18)4.1 设计总结与使用说明 (18)4.2 电路的调试和调试出现的问题 (19)4.3设计体会 (19)结束语 (20)致谢 (21)参考文献 (22)1 概述1.1光立方原理光立方也就是LED的立体阵列,一般的LED是平面的,比如一个字,而光立方则是在多个等间距的平面再组合成一个立体。

这样就可以显示真3D图形。

8*8*8光立方我们把它拆成8个面,如下图,每个面64个灯,或说成64束。

我们要控制这64个灯使其自由变换,然后控制每个层依次点亮即可。

图1学过点阵的都知道,如果要控制8*8点阵,需要16个引脚,那么8*8*8点阵我们再用8个引脚充当8*8点阵的总开关即可,我们只要把64个LED灯的阴极连接在一起就可以了。

图21.2 3DLED光立体的优越性以及主要应用1.3DLED以其功耗低,寿命长,亮度高,视角大,可视距离远等优点而具有极为广阔的发展前景。

随着人们生活水平的提高,3DLED逐渐应用于各行各业。

人们对其的要求也越来越高,已经不再满足于二维平面,进而转向三维平面。

3DLED的出现是一个很好的契机。

2.3DLED光立体极具观赏性,人们可以根据自己的要求,设计不同的图案,展现不同的立体效果。

可以说它是变幻无穷的。

因其极大地观赏性,使人们在接受信息,数据的同时更加印象深刻,使信息的传输更有效率。

3. 随着3D技术的逐步发展,3DLED被广泛应用于现实生活中,比如LED显示屏,LED图像,LED立体摄影。

光立方毕业设计论文

光立方毕业设计论文

光立方毕业设计论文光立方毕业设计论文引言:在当代科技快速发展的时代背景下,光立方作为一种新兴的显示技术,吸引了越来越多的关注。

本篇论文将就光立方的原理、应用和未来发展进行探讨,并提出一种基于光立方的创新设计方案。

一、光立方的原理光立方是一种基于全息成像技术的三维显示技术,其原理是利用光的干涉和衍射现象实现对光场的再现。

通过将光场信息记录在光敏材料上,并利用激光光束对光敏材料进行读取,可以将记录的光场再现为真实的三维图像。

光立方的原理使得我们可以以全息的方式呈现物体的三维形态,使观察者能够从不同角度感受到物体的真实立体感。

二、光立方的应用1. 教育领域光立方可以为学生提供更加直观、生动的三维教学内容。

通过在课堂上使用光立方,学生可以更好地理解抽象的概念,提高学习效果。

例如,在生物学课程中,通过使用光立方展示细胞结构和分子模型,学生可以更加深入地了解细胞的组成和功能。

2. 医学领域光立方在医学领域的应用也非常广泛。

例如,在医学图像诊断中,光立方可以提供更加清晰、逼真的三维影像,帮助医生更准确地判断病变的位置和程度。

此外,光立方还可以应用于手术模拟和培训,提高医生的操作技术和安全性。

3. 艺术与文化领域光立方在艺术与文化领域的应用也十分有潜力。

通过利用光立方技术,可以创作出更加真实、立体的艺术作品。

例如,在博物馆展览中,利用光立方展示文物和艺术品,可以使观众更好地欣赏和理解作品的细节和魅力。

三、光立方的未来发展光立方作为一种新兴的显示技术,还有很大的发展空间。

未来,光立方有望在以下几个方面实现进一步的突破和创新:1. 分辨率提升目前,光立方的分辨率还有待提高。

随着技术的不断进步,我们可以预见,未来的光立方将能够呈现更加清晰、细腻的图像,使观众能够更加真实地感受到物体的立体效果。

2. 投影范围扩大目前,光立方的投影范围相对较小,限制了其在实际应用中的使用。

未来,我们可以通过改进光立方的投影系统,使其能够实现更大范围的投影,提供更广阔的观看体验。

太阳能光立方的设计与制作

太阳能光立方的设计与制作

太阳能光立方的设计与制作陈庆朋;沈怿珩【摘要】使用雾状双色LED作为光立方的基本组成单元,设计制作LED光立方本体结构,用HTC12C5A60S2单片机进行控制,实现整个LED光立方按要求进行点亮。

加入光敏太阳能电池板及蓄电池,通过光敏元件控制灯的亮灭,对人体散发微量红外线的监控达到人至灯亮、人走灯暗的效果,节约了电能,避免了能源的浪费,该设计为室内照明、室外广告牌等方面的应用提供参考。

%As the first step of the design,a LED light cube structure will be made. Two-colored mist shape LED will be used as fundamental unit of the light cube. Then ,an STC12C5A60S2 microcontroller will be added to it. By using it to control the LED,it is possible to light the whole light cube as demanded. Besides,a light - dependent solar cell panel and battery will be used,and through the photosensitive element machine control the lamp bright lights,by distributed on the human body in-frared trace monitoring can achieve the effect to lights,lights go dark,can achieve energy saving purposes,to avoid the waste of energy. These make it has an prospect that It can be widely used in indoors lighting and outdoor advertisement board.【期刊名称】《枣庄学院学报》【年(卷),期】2016(033)005【总页数】6页(P84-89)【关键词】LED光立方;HTC单片机;太阳能;光敏电阻【作者】陈庆朋;沈怿珩【作者单位】枣庄学院光电工程学院,山东枣庄277160;枣庄学院光电工程学院,山东枣庄 277160【正文语种】中文【中图分类】O657.32太阳能是一种新型的环保能源,“光立方”是在LED平面的基础上发展起来的太阳能新的显示技术[1-3],将单片机与光立方太阳能技术结合起来,设计制作自动控制的智能系统、节能系统是大家追求的目标[4,5].本论文就基于单片机技术、太阳能技术设计了一款光立方LED结构用于控制灯的亮灭,起到节能环保的效果. 1.1 光立方LED电路连接采用雾状红蓝双色超高亮长脚LED.这种LED有三个引脚,分别控制LED灯亮红灯、蓝灯以及它的负极.第一步,找到每个LED灯的负极以及控制红灯和蓝灯的正极分别对应哪一个引脚.第二步,对实验用的LED灯进行检测,确保每个LED灯都能够点亮,LED灯之间的连接.1.2 单片机与光立方底层LED的连接电路焊接好了最底层的四列LED灯之后,依据相同的共阴极焊接方法再焊接每列四个的LED灯组12组,这些LED灯组就是组成LED光立方的二级单元.焊接完成之后,运用电源对每组LED灯组的焊接效果进行检测,避免出现虚焊.观察对应的LED灯是否被点亮,如果没有点亮,则说明此LED的负极引脚与前方LED的负极引脚在焊接过程中出现虚焊,需要重新进行焊接.在所有的LED灯组都检测无虚焊后,则进行四层LED灯之间的焊接.先找到每一列灯组控制红灯点亮和蓝灯点亮的引脚,然后根据控制相同颜色的灯的引脚连接在一起的原则进行焊接.由于垂直焊接的难度很大,不易焊接,所以制作过程中使用一块万用板及一些排针辅助固定.具体方法是先在万用板上根据需要在一段距离的排孔上安装排针,注意每个排针之间的距离要一致.之后,将两组LED灯组横向插到两支排针中,然后将两列LED灯组按照相同引脚连接的原则焊接起来.以上步骤完成后可以在两层的基础上焊接第三层和第四层,这样焊接下来正好是16个LED ,也就是一面.在四列四层的LED灯平面焊接完成后,就可以着手组装LED光立方了.首先,由于LED灯的亮暗由三个引脚控制,所以64个灯可以分为两组进行控制,也就是说每一层每一列的四个LED灯中,有两个可以由同一正极信号进行控制,然后再通过负极输出信号的不同来进行区分控制.根据这个思路,可以将光立方分为左右两侧,每一侧由两列四层LED灯组组成.这样,一侧LED灯组每层的8个LED灯的正极信号正好可以由单片机的8个引脚的输出信号来控制,另一侧与这一侧控制成对称关系.其次,是两列LED灯组的负极的控制连接.由于每一侧的两列灯组是由不同的引脚控制的,所以每一层中的LED灯能够由同一负极信号控制(在焊接每一层的LED灯时已经将它们的负极焊接在一起了).1.3 各层LED与单片机的连接电路光立方的主体支架焊接完成之后,最后一步就是将光立方支架与PCB板焊接起来.这里首先说明一下PCB板上的各零件的焊接以及布线情况.焊接在PCB板上的零件包括:40P芯片底座(安放单片机)、11.0592M晶振(单片机计时)、4个5MM七彩LED、4个1K电阻(为七彩LED灯分压)、DC005座(DC005线插口,用于联通电源)、2个22P瓷片电容、25V470UF电解电容.接下来是PCB板的布线情况:整个PCB板电路连接的如上图3,板子上每个排母左侧写B+的焊接的是双色LED 的蓝色正极,R+焊接的是双色LED的红色正极,然后根据PCB板上的标注将光立方支架最底层的LED灯的引脚插入相应孔中并焊接完成.第二步是设置层控制.根据单片机的端口设置,本设计将P2.0-P2.7设为层控制线,因为两侧的LED灯组的控制是由同一正极的信号控制的,所以其负极必须有不同的负极信号进行控制.左侧最顶层(也就是第4层)的共阴极层控制线为P2.0,左侧第2层的共阴极层控制线为P2.1,左侧第3层的共阴极层控制线为P2.2,左侧第4层(也就是最底层)的共阴极层控制线为P2.3,右侧最顶层(也就是第4层)的共阴极层控制线为P2.4,右侧第3层的共阴极层控制线为P2.5,右侧第2层的共阴极层控制线为P2.6,右侧第1层(也就是最底层)的共阴极层控制线为P2.7.设置完成之后,就可以根据设置用电线将相应的控制端口与LED灯层的负极连接起来了.最后,在单片机底座上插上STC12C5A60S2单片机,则光立方的硬件部分至此全部组装完成.根据PCB板及LED灯的整个连接情况,绘制电路图如下:1.4 光控模块的电路设计本模块设计主要采用光敏电阻串联一个滑动变阻器进行分压.该模块的基本原理:白天,光照较强;光敏电阻阻值较小,与电阻比较分压较小,单片机P1.0口电压采样.通过单片机内部自带的AD转换功能,进行数模转换,比较每次采样的数值不同来判断灯的开与关.1.5 控制模块电路设计该模块主要使用热释电红外处理芯片LP0001输出信号控制;该模块的工作原理:当同时满足有人体红外信号与满足光信号时,即单片机的P2.4口检测到低电平,同时P1.0口采样得到的数值同时满足通过程序是单片的另一端口P2.0输出低电平作为驱动,控制继电器的通断来控制灯的开关.当红外人体检测模块、光控模块同时满足所设置条件时继电器工作控制外围灯亮,之后如不满足发光条件,继电器断开,灯不亮.如满足条件继电器控制灯继续点亮.2.1 LED光立方点亮控制部分的程序设计对于光立方的整体程序设计思路,首先是对单片机的各个引脚进行定义,本设计在硬件设计阶段已经对单片机的引脚信号与每个LED灯的亮灭建立了线性的联系,具体的设置如表1:首先单片机的P0端口控制光立方LED的蓝光部分的亮灭,对于P0口的8个引脚(P0.0—P0.7)控制两个相对称的LED灯.同理,设置P3口控制LED灯的红光部分的亮灭,P3口的8个引脚(P3.0—P3.7)控制如表2控制线,单片机的输出信号称为层控制信号.层控制信号由P2端口(P2.0-P2.7)输出,其具体的端口控制如下表3(具体的LED灯位置参见上图):单片机CPU要实现与外部设备进行交流时,要在程序中使用中断方式、查询方式或无条件方式,本设计采用的是中断方式.如何控制LED灯的亮与灭,设计对LED 光立方的所有LED灯采用共阴极接法(下方四个七彩LED采用共阳极接法),所以当需要让LED灯亮哪种颜色的灯时,就将控制那个灯亮这种颜色的引脚置0,另一个则置1,负极也置1,就能发出需要的颜色的光了.所以,只要在程序运用数组对每一个端口的输出电位进行设置,并在每一次执行数组程序之后加上一定的延时程序即可.第四则是如何能够控制LED灯光立方依据自身的结构优势来变化出更多的效果,本设计采用了对多个程序进行合并,并在主程序和开头对每个程序所用到的符号进行定义,使程序能够按照顺序依次执行.最终实现整个光立方的多种变换.2.2 供电控制系统工作效果电路初始状态如图8,开关位于电路左上方,位于电路中间位置的为电路的核心—热释电红外处理芯片LP0001,用于对光敏电阻及人体感应模块的状态进行采样、分析,满足所有条件之后输出一个低电平,继电器开关闭合,给光立方供电.电源接通,用遮挡物遮住光敏电阻模拟晚上,同时人体感应模块接收到人体感应信号,作为光源的发光二极管发出强光,如图8所示LED光立方显示各种点亮效果、能够实现太阳能电池板对光立方的供电.文中依据以上功能,设计了硬件与整体电路,并根据硬件与整体电路设计了相应的程序部分. 利用 STC12C5A60S2单片机的引脚输出信号完成了对LED光立方的控制,根据程序实现LED灯的各种点亮模式.运用太阳能电池板给光立方供电,并运用太阳能电池板自带的光敏元件实现光立方的亮度控制.【相关文献】[1]楼然苗.51 系列单片机设计实例[M].北京:北京航空航天出版社,2003,3:56-59.[2]唐俊翟.单片机原理与应用[M].北京:冶金工业出版社,2003,9:79-98.[3]刘瑞新.单片机原理及应用教程[M].北京:机械工业出版社,2003,7:23-55.[4]吴国经.单片机应用技术[M].北京:中国电力出版社,2004,1:67-77.[5]李全利,迟荣强.单片机原理及接口技术[M].北京:高等教育出版社,2004,1:45-59.。

光立方的研究与制作_答辩

光立方的研究与制作_答辩
光立方的研究与制作
指导教师: 王 彩 霞 答 辩 人: 卢 鹏 飞 专 业: 自 动 化
目录
1 2 3
设计思路 光立方工作原理 电路原理图 实物制作过程 整体效果
4
5
6 6
目的及意义 Purpose and meaning 1:单片机技术的发展 2:光立方良好的市场
1:增加光立方的功能,更具个性化 2:作为其他3D显示技术开发的基础
硬件电路设计
74HC573拓展I/O口
控制模块
STC12C5A60S2控制核心
UNL2803驱动电路
显示模块
开始 初始化
程序流程设计
循环模式 读锁存数据 整体扫描
上位机模音乐喷泉
结束
光立方工作原理
8*8*8光立方采用的是层共阴(即每一层LED的 阴极都连接在一起),束共阳(即每一束LED的阳极 都连接在一起),然后通过74HC573和单片机的一组 I/O口来控制每一层和每一束,那么通过控制层和束, 每个LED就可以单独进行控制。 然后通过对LED的亮灭情况来组成不同的图案, 通过不同图案的组合来形成动态的图形,给人一种立 体的感觉。
然后,同样的 道理,焊接完这一面 后,再进行每个LED 的测试。
焊接好的8个LED灯面
焊接完每一面之后,
再进行整个光立方的整合,
首先将每个面都插好在底 座上,然后用去了皮的飞 线将各个层的阴极连接在 UNL2803输出端。
最后,将UNL2803的输出端与LED的每一层用 漆包线对应连接在一起硬件就大功告成了!
电路原理图
实物制作过程
首先,根据制作好的PCB 电路原理图,在自己的脑海 中大概形成元件的分布情况, 然后开始在万用板上安放主 要元器件,将元器件逐个焊 接。

光立方_毕业论文(含程序原理图实物图)

光立方_毕业论文(含程序原理图实物图)

目录摘要 .......................................................................................................................................................... X XX 关键词 ...................................................................................................................................................... X XX 1绪论 . 02总体设计 (1)工作原理 (1)各模块方案选择与论证 (1)单片机主控制模块 (1)驱动模块 (1)显示模块 (1)图2-2 雾面乳型LED灯 (2)3 系统硬件电路设计与实现 (2)硬件电路设计 (2)单片机最小系统 (2)驱动模块的设计 (4)主程序设计 (8)系统调试 (9)硬件测试 (9)软件测试 (10)结果分析 (10)6结论 (11)Keywords (13)致谢语 (14) (16) (16)程序清单 (17)#include <> (17)#define uchar unsigned char (17)#define uint unsigned int (17)sbit p30 = P1^0; (17)sbit p31 = P1^1; (17)sbit p32 = P1^2; (17)sbit p33 = P1^3; (17)sbit p34 = P1^4; (17)sbit p35 = P1^5; (17)sbit p36 = P1^6; (17)sbit p37 = P1^7; (17)uchar display[8][8]; (17)/*rank:A,1,2,3,4,I,心,U*/ (17)uchar code table_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,0 x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7 e,0x3c}; (17)/*the "ideasoft"*/ (17)uchar code table_id[40]={0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf 8,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}; (17)/*railway*/ (17)uchar code dat[128]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xf c,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4,0x25,0x45,0x65,0x8 5,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,0x 6f,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,0 x31,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}; (17)/*railway 2*/ (17)uchar code dat2[28]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xf c,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4}; (17)/*railway 3*/ (17)uchar code dat3[24]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x 64,0x63,0x62,0x61,0x60,0x50,0x40,0x30,0x20,0x10}; (17)/*3p char*/ (17)uchar codex3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18}; (17)/*initializtion (17)That is to initialize the program (17)It is write to set the timer in c52 mcu (17)So the program can renovate the led_3d_cube in fixed time use the interrupt function.*/ (17)void sinter() (17){ (17)IE=0x82; (17)TCON=0x01; (17)TH0=0xc0; (17)TL0=0; (17)TR0=1; (17)} (17)void delay5us(void) 误差 STC 1T (18){ (18)unsigned char a,b; (18)for(b=7;b>0;b--) (18)for(a=2;a>0;a--); (18)} (18)void delay(uint i) (18){ (18)while (i--){ (18)delay5us();}12t的mcu 注释这个延时即可 (18)} (18)/*To judge the num bit*/ (18)uchar judgebit(uchar num,uchar b) (18){ (18)char n; (18)num=num&(1<<b); (18)if (num) (18)n=1; (18)else (18)n=0; (18)return n; (18)} (18)/*To figure out the round number*/ (18)uchar abs(uchar a) (18){ (18)uchar b; (18)b=a/10; (18)a=a-b*10; (18)if (a>=5) (18)b++; (18)/*To figure out the absolute value*/ (18)uchar abss(char a) (18){ (18)if (a<0) (18)a=-a; (18)return a; (18)} (18)/*The function can comparat the character (18)And remove the big one to the back.*/ (18)void max(uchar *a,uchar *b) (18){ (18)uchar t; (18)if ((*a)>(*b)) (18){ (18)t=(*a); (18)(*a)=(*b); (19)(*b)=t; (19)} (19)} (19)/*The function is to figure out the max number and return it.*/ (19)uchar maxt(uchar a,uchar b,uchar c) (19){ (19)if (a<b) (19)a=b; (19)if (a<c) (19)a=c; (19)return a; (19)} (19)void clear(char le) (19){ (19)uchar i,j; (19)for (j=0;j<8;j++) (19){ (19)for (i=0;i<8;i++) (19)display[j][i]=le; (19)} (19)} (19)void trailler(uint speed) (19){ (19)char i,j; (19)for (i=6;i>=-3;i--) (19){ (19)if (i>=0) (19)display[j][i]=display[j][i+1]; (19)} (19)if (i<4) (19){ (19)for (j=0;j<8;j++) (19)display[j][i+4]=0; (19)} (19)delay(speed); (19)} (19)} (19)void point(uchar x,uchar y,uchar z,uchar le) (19){ (19)uchar ch1,ch0; (19)ch1=1<<x; (19)ch0=~ch1; (20)if (le) (20)display[z][y]=display[z][y]|ch1; (20)else (20)display[z][y]=display[z][y]&ch0; (20)} (20)void type(uchar cha,uchar y) (20){ (20)uchar xx; (20)for (xx=0;xx<8;xx++) (20){ (20)display[xx][y]=table_cha[cha][xx]; (20)} (20)} (20)/*The first variable is the distance from the midpoint. (20)The second is the layer (20)the third is the flash speed of the time between each two point. (20)The forth is the enable io,it controls weather draw or claen.*/ (20)void cirp(char cpp,uchar dir,uchar le) (20){ (20)uchar a,b,c,cp; (20)if ((cpp<128)&(cpp>=0)) (20){ (20)if (dir) (20)cp=127-cpp; (20)else (20)cp=cpp; (20)a=(dat[cp]>>5)&0x07; (20)b=(dat[cp]>>2)&0x07; (20)c=7-c; (20)point (a,b,c,le); (20)} (20)} (20)void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le) (20){ (20)char t,a,b,c,a1,b1,c1,i; (20)a1=x2-x1; (20)b1=y2-y1; (20)c1=z2-z1; (20)t=maxt(abss(a1),abss(b1),abss(c1)); (20)a=x1*10; (20)b=y1*10; (21)c=z1*10; (21)a1=a1*10/t; (21)b1=b1*10/t; (21)c1=c1*10/t; (21)for (i=0;i<t;i++) (21){ (21)point(abs(a),abs(b),abs(c),le); (21)a+=a1; (21)b+=b1; (21)c+=c1; (21)} (21)point(x2,y2,z2,le); (21)} (21)void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) (21){ (21)uchar i,j,t=0; (21)max(&x1,&x2); (21)max(&y1,&y2); (21)max(&z1,&z2); (21)for (i=x1;i<=x2;i++) (21)t|=1<<i; (21)if (!le) (21)t=~t; (21)if (fill) (21){ (21)if (le) (21){ (21)for (i=z1;i<=z2;i++) (21){ (21)} (21)} (21)else (21){ (21)for (i=z1;i<=z2;i++) (21){ (21)for (j=y1;j<=y2;j++) (21)display[j][i]&=t; (21)} (21)} (21)} (21)else (21){ (22)if (le) (22){ (22)display[y1][z1]|=t; (22)display[y2][z1]|=t; (22)display[y1][z2]|=t; (22)display[y2][z2]|=t; (22)} (22)else (22){ (22)display[y1][z1]&=t; (22)display[y2][z1]&=t; (22)display[y1][z2]&=t; (22)display[y2][z2]&=t; (22)} (22)t=(0x01<<x1)|(0x01<<x2); (22)if (!le) (22)t=~t; (22)if (le) (22){ (22)for (j=z1;j<=z2;j+=(z2-z1)) (22){ (22)for (i=y1;i<=y2;i++) (22)display[i][j]|=t; (22)} (22)for (j=y1;j<=y2;j+=(y2-y1)) (22){ (22)for (i=z1;i<=z2;i++) (22)display[j][i]|=t; (22)} (22)} (22)for (j=z1;j<=z2;j+=(z2-z1)) (22){ (22)for (i=y1;i<=y2;i++) (22){ (22)display[i][j]&=t; (22)} (22)} (22)for (j=y1;j<=y2;j+=(y2-y1)) (22){ (22)for (i=z1;i<=z2;i++) (22){ (23)display[j][i]&=t; (23)} (23)} (23)} (23)} (23)} (23)void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) (23){ (23)uchar i; (23)max(&z1,&z2); (23)if (fill) (23){ (23)for (i=z1;i<=z2;i++) (23){ (23)line (x1,y1,i,x2,y2,i,le); (23)} (23)} (23)else (23){ (23)line (x1,y1,z1,x2,y2,z1,le); (23)line (x1,y1,z2,x2,y2,z2,le); (23)line (x2,y2,z1,x2,y2,z2,le); (23)line (x1,y1,z1,x1,y1,z2,le); (23)} (23)} (23)void poke(uchar n,uchar x,uchar y) (23){ (23)uchar i; (23)for (i=0;i<8;i++) (23){ (23)point(x,y,i,judgebit(n,i)); (23)void boxtola(char i,uchar n) (23){ (23)if ((i>=0)&(i<8)) (23){ (23)poke(n,0,7-i); (23)} (23)if ((i>=8)&(i<16)) (23){ (23)poke(n,i-8,0); (23)} (24)if ((i>=16)&(i<24)) (24){ (24)poke(n,7,i-16); (24)} (24)} (24)void rolldisplay(uint speed) (24){ (24)uchar j; (24)char i,a; (24)for (i=23;i>-40;i--) (24){ (24)for (j=0;j<40;j++) (24){ (24)a=i+j; (24)if ((a>=0)&(a<24)) (24)boxtola(a,table_id[j]); (24)} (24)delay(speed); (24)} (24)} (24)void roll_apeak_yz(uchar n,uint speed) (24){ (24)uchar i; (24)switch(n) (24){ (24)case 1: (24)for (i=0;i<7;i++) (24){ (24)display[i][7]=0; (24)display[7][6-i]=255; (24)delay(speed); (24)}; (24)break; (24){ (24)display[7][7-i]=0; (24)display[6-i][0]=255; (24)delay(speed); (24)}; (24)break; (24)case 3: (24)for (i=0;i<7;i++) (25){ (25)display[7-i][0]=0; (25)display[0][i+1]=255; (25)delay(speed); (25)}; (25)break; (25)case 0: (25)for (i=0;i<7;i++) (25){ (25)display[0][i]=0; (25)display[i+1][7]=255; (25)delay(speed); (25)}; (25)} (25)} (25)void roll_apeak_xy(uchar n,uint speed) (25){ (25)uchar i; (25)switch(n) (25){ (25)case 1: (25)for (i=0;i<7;i++) (25){ (25)line(0,i,0,0,i,7,0); (25)line(i+1,7,0,i+1,7,7,1); (25)delay(speed); (25)}; (25)break; (25)case 2: (25)for (i=0;i<7;i++) (25){ (25)line(i,7,0,i,7,7,0); (25)line(7,6-i,0,7,6-i,7,1); (25)delay(speed); (25)}; (25)for (i=0;i<7;i++) (25){ (25)line(7,7-i,0,7,7-i,7,0); (25)line(6-i,0,0,6-i,0,7,1); (25)delay(speed); (25)}; (26)break; (26)case 0: (26)for (i=0;i<7;i++) (26){ (26)line(7-i,0,0,7-i,0,7,0); (26)line(0,i+1,0,0,i+1,7,1); (26)delay(speed); (26)}; (26)} (26)} (26)void roll_3_xy(uchar n,uint speed) (26){ (26)uchar i; (26)switch(n) (26){ (26)case 1: (26)for (i=0;i<8;i++) (26){ (26)box_apeak_xy (0,i,0,7,7-i,7,1,1); (26)delay(speed); (26)if (i<7) (26)box_apeak_xy (3,3,0,0,i,7,1,0); (26)}; (26)break; (26)case 2: (26)for (i=0;i<8;i++) (26){ (26)box_apeak_xy (7-i,0,0,i,7,7,1,1); (26)delay(speed); (26)if (i<7) (26)box_apeak_xy (3,4,0,i,7,7,1,0); (26)}; (26)break; (26)case 3: (26)for (i=0;i<8;i++) (26){ (26)box_apeak_xy (0,i,0,7,7-i,7,1,1); (26)box_apeak_xy (4,4,0,7,7-i,7,1,0); (26)}; (26)break; (26)case 0: (26)for (i=0;i<8;i++) (27){ (27)box_apeak_xy (7-i,0,0,i,7,7,1,1); (27)delay(speed); (27)if (i<7) (27)box_apeak_xy (4,3,0,7-i,0,7,1,0); (27)}; (27)} (27)} (27)void trans(uchar z,uint speed) (27){ (27)uchar i,j; (27)for (j=0;j<8;j++) (27){ (27)for (i=0;i<8;i++) (27){ (27)display[z][i]>>=1; (27)} (27)delay(speed); (27)} (27)} (27)void tranoutchar(uchar c,uint speed) (27){ (27)uchar i,j,k,a,i2=0; (27)for (i=0;i<8;i++) (27){ (27)if (i<7) (27)box_apeak_xy (i+1,0,0,i+1,7,7,1,1); (27)box_apeak_xy (i2,0,0,i2,7,7,1,0); (27)a=0; (27)i2=i+1; (27)for (j=0;j<=i;j++) (27){ (27)a=a|(1<<j); (27)} (27)for (k=0;k<8;k++) (27){ (27)display[k][3]|=table_cha[c][k]&a; (27)display[k][4]|=table_cha[c][k]&a; (27)} (27)} (27)void transss() (28){ (28)uchar i,j; (28)for (i=0;i<8;i++) (28){ (28)for (j=0;j<8;j++) (28)display[i][j]<<=1; (28)} (28)} (28)/*From now on,the function below is to display the flash.*/ (28)void flash_1() (28){ (28)clear(0); (28)type(1,0); (28)delay(60000); (28)type(2,0); (28)delay(60000); (28)type(3,0); (28)delay(60000); (28)type(4,0); (28)delay(60000); (28)delay(60000); (28)clear(0); (28)rolldisplay(30000); (28)type(0,7); (28)delay(60000); (28)trailler(6000); (28)delay(60000); (28)} (28)void flash_2() (28){ (28)uchar i; (28)for (i=129;i>0;i--) (28){ (28)cirp(i-2,0,1); (28)delay(8000); (28)cirp(i-1,0,0); (28)} (28)delay(8000); (28)for (i=0;i<136;i++) (28){ (28)cirp(i-8,1,0); (29)} (29)delay(8000); (29)for (i=129;i>0;i--) (29){ (29)cirp(i-2,0,1); (29)delay(8000); (29)} (29)delay(8000); (29)for (i=0;i<128;i++) (29){ (29)cirp(i-8,1,0); (29)delay(8000); (29)} (29)delay(60000); (29)} (29)void flash_3() (29){ (29)char i; (29)for (i=0;i<8;i++) (29){ (29)box_apeak_xy(0,i,0,7,i,7,1,1); (29)delay(20000); (29)if (i<7) (29)box_apeak_xy(0,i,0,7,i,7,1,0); (29)} (29)for (i=7;i>=0;i--) (29){ (29)box_apeak_xy(0,i,0,7,i,7,1,1); (29)delay(20000); (29)if (i>0) (29)box_apeak_xy(0,i,0,7,i,7,1,0); (29)} (29)for (i=0;i<8;i++) (29){ (29)box_apeak_xy(0,i,0,7,i,7,1,1); (29)delay(20000); (29)if (i<7) (29)box_apeak_xy(0,i,0,7,i,7,1,0); (29)} (29)} (29)void flash_4() (29){ (30)an[j-7]=j; (30)for (i=0;i<=16;i++) (30){ (30)for (j=0;j<8;j++) (30){ (30)if ((an[j]<8)&(an[j]>=0)) (30)line(0,an[j],j,7,an[j],j,1); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (((an[j]+1)<8)&(an[j]>=0)) (30)line(0,an[j]+1,j,7,an[j]+1,j,0); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (an[j]>0) (30)an[j]--; (30)} (30)delay(15000); (30)} (30)for (j=0;j<8;j++) (30)an[j]=1-j; (30)for (i=0;i<=16;i++) (30){ (30)for (j=0;j<8;j++) (30){ (30)if ((an[j]<8)&(an[j]>=0)) (30)line(0,an[j],j,7,an[j],j,1); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (((an[j]-1)<7)&(an[j]>0)) (30)line(0,an[j]-1,j,7,an[j]-1,j,0); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (an[j]<7) (30)an[j]++; (30)} (30)delay(15000); (30)} (30)} (31)void flash_5() (31)char i=8,j,an[4]; (31)1 (31)for (j=7;j<11;j++) (31)an[j-7]=j; (31)while(i--) (31){ (31)for (j=0;j<4;j++) (31){ (31)if (an[j]<8) (31)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (31)if (an[j]<7) (31)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (31)} (31)for (j=0;j<4;j++) (31){ (31)if (an[j]>3) (31)an[j]--; (31)} (31)delay(a); (31)} (31)2 (31)i=3; (31)for (j=0;j<4;j++) (31)an[j]=5-j; (31)while(i--) (31){ (31)for (j=1;j<4;j++) (31){ (31)if (an[j]<4) (31)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (31)if (an[j]<3) (31)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (31)} (31)for (j=0;j<4;j++) (31){ (31)if (an[j]>0) (31)an[j]--; (31)} (31)delay(a); (31)} (32)3 (32)i=3; (32)for (j=1;j<4;j++) (32){ (32)for (j=1;j<4;j++) (32){ (32)if (an[j]>=0) (32)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (32)if (an[j]>0) (32)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); (32)} (32)for (j=1;j<4;j++) (32){ (32)if (an[j]<3) (32)an[j]++; (32)} (32)delay(a); (32)} (32)4 (32)i=3; (32)for (j=0;j<4;j++) (32)an[j]=j+1; (32)while(i--) (32){ (32)for (j=1;j<4;j++) (32){ (32)if (an[j]>3) (32)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (32)if (an[j]>3) (32)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); (32)} (32)for (j=0;j<4;j++) (32)an[j]++; (32)delay(a); (32)} (32)5 (32)i=3; (32)for (j=3;j<6;j++) (32)an[j-2]=j; (32)while(i--) (32){ (33)for (j=1;j<4;j++) (33){ (33)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (33)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (33)} (33)if (an[j]>3) (33)an[j]--; (33)} (33)delay(a); (33)} (33)6 (33)i=3; (33)for (j=0;j<4;j++) (33)an[j]=5-j; (33)while(i--) (33){ (33)for (j=1;j<4;j++) (33){ (33)if (an[j]<4) (33)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (33)if (an[j]<3) (33)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (33)} (33)for (j=0;j<4;j++) (33){ (33)if (an[j]>0) (33)an[j]--; (33)} (33)delay(a); (33)} (33)7 (33)i=3; (33)for (j=0;j<4;j++) (33)an[j]=3-j; (33)an[0]=2; (33)while(i--) (33){ (33)for (j=0;j<3;j++) (33){ (33)if (an[j]>=0) (33)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (34)if (an[j]>=0) (34)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (34)} (34)for (j=0;j<4;j++) (34){ (34)if (j<5-i) (34)an[j]--; (34)} (34)8 (34)i=10; (34)for (j=0;j<4;j++) (34)an[j]=j-2; (34)while(i--) (34){ (34)for (j=0;j<4;j++) (34){ (34)if (an[j]>=0) (34)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (34)if (an[j]>=0) (34)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); (34)} (34)for (j=0;j<4;j++) (34){ (34)if (an[j]<7) (34)an[j]++; (34)} (34)delay(a); (34)} (34)} (34)void flash_6() (34){ (34)uchar i,j,k,z; (34)roll_apeak_yz(1,10000); (34)roll_apeak_yz(2,10000); (34)roll_apeak_yz(3,10000); (34)roll_apeak_yz(0,10000); (34)roll_apeak_yz(1,10000); (34)roll_apeak_yz(2,10000); (34)roll_apeak_yz(3,10000); (34)for (i=0;i<3;i++) (34){ (34)for (j=0;j<8;j++) (35){ (35)for (k=0;k<8;k++) (35){ (35)if ((table_3p[i][j]>>k)&1) (35){ (35)for (z=1;z<8;z++) (35){ (35)point (j,7-k,z,1); (35)delay(5000); (35)} (35)} (35)} (35)} (35)trans(7,15000); (35)} (35)} (35)void flash_7() (35){ (35)uchar i; (35)uint a=3000; (35)roll_apeak_yz(0,10000); (35)roll_apeak_yz(1,10000); (35)roll_apeak_yz(2,10000); (35)roll_apeak_yz(3,10000); (35)roll_apeak_yz(0,10000); (35)roll_apeak_yz(1,10000); (35)roll_apeak_yz(2,10000); (35)roll_apeak_yz(3,10000); (35)roll_apeak_yz(0,10000); (35)roll_apeak_yz(1,10000); (35)roll_apeak_yz(2,10000); (35)roll_apeak_xy(0,10000); (35)roll_apeak_xy(1,10000); (35)roll_apeak_xy(2,10000); (35)roll_apeak_xy(3,10000); (35)roll_apeak_xy(0,10000); (35)roll_apeak_xy(1,10000); (35)roll_apeak_xy(2,10000); (35)roll_apeak_xy(3,10000); (35)for (i=0;i<8;i++) (36){ (36)box_apeak_xy (0,i,0,7-i,i,7,1,1); (36)delay(a); (36)} (36)delay(30000); (36)roll_3_xy(0,a); (36)delay(30000); (36)roll_3_xy(1,a); (36)delay(30000); (36)roll_3_xy(2,a); (36)delay(30000); (36)roll_3_xy(0,a); (36)delay(30000); (36)roll_3_xy(1,a); (36)delay(30000); (36)roll_3_xy(2,a); (36)delay(30000); (36)roll_3_xy(3,a); (36)for (i=7;i>0;i--) (36){ (36)box_apeak_xy(i,0,0,i,7,7,1,0); (36)delay(a); (36)} (36)} (36)void flash_8() (36){ (36)uchar i; (36)for (i=5;i<8;i++) (36){ (36)tranoutchar(i,10000); (36)delay(60000); (36)delay(60000); (36)} (36)} (36)void flash_9() (36){ (36)char i; (36)uchar j,an[8],x,y,t,x1,y1; (36)for (i=0;i<8;i++) (36){ (36)box_apeak_xy (i,0,0,i,7,7,1,1); (36)if (i) (37)box_apeak_xy (i-1,0,0,i-1,7,7,1,0); (37)delay(10000); (37)} (37)roll_apeak_xy(3,10000); (37)roll_apeak_xy(0,10000); (37)roll_apeak_xy(1,10000); (37)for (i=0;i<7;i++) (37){ (37)line(6-i,6-i,0,6-i,6-i,7,1); (37)line(i,7,0,i,7,7,0); (37)delay(10000); (37)} (37)for (i=0;i<85;i++) (37){ (37)clear(0); (37)for (j=0;j<8;j++) (37){ (37)t=an[j]%28; (37)x=dat2[t]>>5; (37)y=(dat2[t]>>2)&0x07; (37)t=(an[j]-14)%28; (37)x1=dat2[t]>>5; (37)y1=(dat2[t]>>2)&0x07; (37)line(x,y,j,x1,y1,j,1); (37)} (37)for (j=0;j<8;j++) (37){ (37)if ((i>j)&(j>i-71)) (37)an[j]++; (37)} (37)delay(5000); (37)} (37)for (i=0;i<85;i++) (37){ (37)clear(0); (37)for (j=0;j<8;j++) (37){ (37)t=an[j]%28; (37)x=dat2[t]>>5; (37)y=(dat2[t]>>2)&0x07; (37)t=(an[j]-14)%28; (38)x1=dat2[t]>>5; (38)y1=(dat2[t]>>2)&0x07; (38)line(x,y,j,x1,y1,j,1); (38)} (38)for (j=0;j<8;j++) (38){ (38)if ((i>j)&(j>i-71)) (38)an[j]--; (38)} (38)delay(5000); (38)} (38)for (i=0;i<29;i++) (38){ (38)clear(0); (38)y=(dat2[t]>>2)&0x07; (38)t=(an[0]-14)%28; (38)x1=dat2[t]>>5; (38)y1=(dat2[t]>>2)&0x07; (38)box_apeak_xy(x,y,0,x1,y1,7,0,1); (38)box_apeak_xy(x,y,1,x1,y1,6,0,1); (38)an[0]++; (38)delay(5000); (38)} (38)for (i=0;i<16;i++) (38){ (38)clear(0); (38)t=an[0]%28; (38)x=dat2[t]>>5; (38)y=(dat2[t]>>2)&0x07; (38)t=(an[0]-14)%28; (38)x1=dat2[t]>>5; (38)y1=(dat2[t]>>2)&0x07; (38)box_apeak_xy(x,y,0,x1,y1,7,1,1); (38)an[0]--; (38)delay(5000); (38)} (38)for (i=0;i<8;i++) (38){ (38)line(i,i,0,0,0,i,0); (38)delay(5000); (39)} (39)for (i=1;i<7;i++) (39){ (39)line(i,i,7,7,7,i,0); (39)delay(5000); (39)} (39)for (i=1;i<8;i++) (39){ (39)clear(0); (39)box(7,7,7,7-i,7-i,7-i,0,1); (39)delay(10000); (39)} (39)for (i=1;i<7;i++) (39){ (39)clear(0); (39)box(0,0,0,7-i,7-i,7-i,0,1); (39)delay(10000); (39){ (39)clear(0); (39)box(0,0,0,i,i,i,0,1); (39)delay(10000); (39)} (39)for (i=1;i<7;i++) (39){ (39)clear(0); (39)box(7,0,0,i,7-i,7-i,0,1); (39)delay(10000); (39)} (39)for (i=1;i<8;i++) (39){ (39)box(7,0,0,7-i,i,i,1,1); (39)delay(10000); (39)} (39)for (i=1;i<7;i++) (39){ (39)clear(0); (39)box(0,7,7,7-i,i,i,1,1); (39)delay(10000); (39)} (39)} (39)void flash_10() (40){ (40)uchar i,j,an[4],x,y,t; (40)for (i=1;i<7;i++) (40){ (40)clear(0); (40)box(0,6,6,1,7,7,1,1); (40)box(i,6,6-i,i+1,7,7-i,1,1); (40)box(i,6,6,i+1,7,7,1,1); (40)box(0,6,6-i,1,7,7-i,1,1); (40)box(0,6-i,6,1,7-i,7,1,1); (40)box(i,6-i,6-i,i+1,7-i,7-i,1,1); (40)box(i,6-i,6,i+1,7-i,7,1,1); (40)box(0,6-i,6-i,1,7-i,7-i,1,1); (40)delay(30000); (40)} (40)for (i=0;i<4;i++) (40){ (40)an[i]=6*i; (40)} (40)clear(0); (40)for(j=0;j<4;j++) (40){ (40)t=an[j]%24; (40)x=dat3[t]>>4; (40)y=dat3[t]&0x0f; (40)box(x,y,0,x+1,y+1,1,1,1); (40)box(x,y,6,x+1,y+1,7,1,1); (40)} (40)for (j=0;j<4;j++) (40)an[j]++; (40)delay(10000); (40)} (40)for (i=0;i<35;i++) (40){ (40)clear(0); (40)for(j=0;j<4;j++) (40){ (40)t=an[j]%24; (40)x=dat3[t]>>4; (40)y=dat3[t]&0x0f; (40)box(x,y,0,x+1,y+1,1,1,1); (41)box(x,y,6,x+1,y+1,7,1,1); (41)} (41)for (j=0;j<4;j++) (41)an[j]--; (41)delay(10000); (41)} (41)for (i=0;i<35;i++) (41){ (41)clear(0); (41)for(j=0;j<4;j++) (41){ (41)t=an[j]%24; (41)x=dat3[t]>>4; (41)y=dat3[t]&0x0f; (41)box(x,0,y,x+1,1,y+1,1,1); (41)box(x,6,y,x+1,7,y+1,1,1); (41)} (41)for (j=0;j<4;j++) (41)an[j]++; (41)delay(10000); (41)} (41)clear(0); (41)for(j=0;j<4;j++) (41){ (41)t=an[j]%24; (41)x=dat3[t]>>4; (41)y=dat3[t]&0x0f; (41)box(x,0,y,x+1,1,y+1,1,1); (41)box(x,6,y,x+1,7,y+1,1,1); (41)} (41)for (j=0;j<4;j++) (41)an[j]--; (41)delay(10000); (41)} (41)for (i=6;i>0;i--) (41){ (41)clear(0); (41)box(0,6,6,1,7,7,1,1); (41)box(i,6,6-i,i+1,7,7-i,1,1); (41)box(i,6,6,i+1,7,7,1,1); (42)box(0,6,6-i,1,7,7-i,1,1); (42)box(0,6-i,6,1,7-i,7,1,1); (42)box(i,6-i,6-i,i+1,7-i,7-i,1,1); (42)box(i,6-i,6,i+1,7-i,7,1,1); (42)box(0,6-i,6-i,1,7-i,7-i,1,1); (42)delay(30000); (42)} (42)} (42)void flash_11() (42){ (42)uchar i,j,t,x,y; (42)uchar code daa[13]={0,1,2,0x23,5,6,7,6,5,0x23,2,1,0}; (42)for (j=0;j<5;j++) (42){ (42)for (i=0;i<13;i++) (42){ (42)if (daa[i]>>4) (42){ (42)t=daa[i]&0x0f; (42)line (0,0,t+1,0,7,t+1,1); (42)} (42)else (42)t=daa[i]; (42)line (0,0,t,0,7,t,1); (42)} (42)} (42)for (j=1;j<8;j++) (42){ (42)if (j>3) (42)t=4; (42)else (42)t=j; (42)for (i=0;i<24;i+=j) (42){ (42)x=dat3[i]>>4; (42)y=dat3[i]&0x0f; (42)box_apeak_xy(0,x,y,0,x+1,y+1,1,1); (42)transss(); (42)delay(10000); (42)} (42)} (42)for (j=1;j<8;j++) (43){ (43)if (j>3) (43)t=4; (43)else (43)t=j; (43)for (i=0;i<24;i+=j) (43){ (43)x=dat3[i]>>4; (43)y=dat3[i]&0x0f; (43)point (0,x,y,1); (43)transss(); (43)delay(10000); (43)} (43)} (43)} (43)void _P3(uchar x) (43){ (43)p30 = x&0x01; (43)p31 = (x&0x02)>>1; (43)p32 = (x&0x04)>>2; (43)p33 = (x&0x08)>>3; (43)p34 = (x&0x10)>>4; (43)p35 = (x&0x20)>>5; (43)p36 = (x&0x40)>>6; (43)p37 = (x&0x80)>>7; (43){ (43)sinter(); (43)while(1){ (43)clear(0); (43)/*play list*/ (43)flash_1(); (43)clear(0); (43)flash_2(); (43)flash_3(); (43)flash_4(); (43)flash_4(); (43)flash_5(); (43)flash_5(); (43)flash_6(); (43)flash_7(); (43)flash_8(); (43)flash_9(); (43)flash_10(); (43)clear (0); (43)flash_11(); (43)flash_9(); (43)flash_5(); (43)flash_7(); (44)flash_5(); (44)flash_6(); (44)flash_8(); (44)flash_9(); (44)flash_10(); (44)} (44)} (44)P0; 573 in (44)P1; uln2803 (44)P2; 573 LE (44)void print() interrupt 1 (44){ (44)uchar i; (44)static uchar layer=0; (44)P1=0; (44)for (i=0;i<8;i++) (44){ (44)P2=1<<i; (44)delay(3); (44)P0=display[layer][i]; (44)P1=1<<layer; (44)if (layer<7) (44)layer++; (44)else (44)layer=0; (44)TH0=0xc0; (44)TL0=0; (44)} (44)P0; 573 in p2 (44)P1; uln2803 p0 (44)P2; 573 LE p1 (44)void print() interrupt 1 (44){ (44)uchar i; (44)static uchar layer=0; (44)_P3(0); (44)for (i=0;i<8;i++) (44){ (44)P2=1<<i; (44)delay(3); (44)P0=display[layer][i]; (44)delay(3); (44)} (45)_P3(1<<layer); (45)if (layer<7) (45)layer++; (45)else (45)layer=0; (45)TH0=0xc0; (45)TL0=0; (45)} (45)void print() interrupt 1 (45){ (45)uchar i; (45)static uchar layer=0; (45)P0=0; (45)P1=0x00; (45)for (i=0;i<8;i++) (45){ (45)P1=0x00; (45)P2=display[layer][i]; (45)delay(3); (45)P1=1<<i;_crol_(0xfe,i) ; (45)。

光立方制作论文

光立方制作论文

西安科技大学光立方制作论文目录一.摘要 (1)二.关键字 (1)三.引言 (1)四.正文 (1)1)主要元件介绍 (1)1.STC12C5A60S2 (1)2.74HC573 (2)3.ULN2803 (3)2)工作原理 (3)驱动模块原理 (4)3)元器件选择 (6)4)制作、调试 (6)1制作 (6)a.驱动电路 (6)b.主控模块 (7)c.显示模块 (7)2调试 (9)五.结束语 (9)一.摘要:本设计作品采用8*8*8 的模式,硬件主要分为三个模块:主控模块、驱动模块、显示模块。

采用的主控芯片为STC12C5A60S2 芯片,驱动电路采用常用的74HC573数字芯片。

本设计采用C语言编程,利用单片机控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整个立体呈现不同的造型和图案,使其变得美轮美奂、绚丽多彩。

二.关键字:LED光立方,74HC573,STC12C5A60S2,ULN2803三.引言:我们的光立方主要功能是在整体上实现画面立体的显示,实现动态的实时3D显示效果,同时可以根据要求改变程序的数组部分就可实现画面的自主定义。

四.正文1)主要元件介绍:1.STC12C5A60S2STC12C5A60S2/AD/PWM系列单片机是单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。

1)增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051。

2)工作电压:STC12C5A60S2系列工作电压:5.5V- 3.3V(5V单片机)。

3)工作频率范围:0-35MHz,相当于普通8051的0~420MHz。

4)应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节。

3D光立方毕业设计

3D光立方毕业设计
五、结束语
经过这次的设计,让我们更明确了团队合作的要领和精神,更明白了焊接技术的重要性,也让我们对单片机编程的进一步了解,为了这次设计我们找了查找了很多资料,包括一些对该设快捷又免费,让我们很方便地搜索到了我们所需要的设计资料和丰富的知识。此次毕业设计,是我大学学习中遇到过的时段最长、涉及内容最广、 工作量最大的一次设计。用老师的一句话概括就是这次毕业设计相当如是把以前的小课程设计综合在一起的过程,只要把握住每个小课设的精华、环环紧扣、增强逻辑,那么这次的任务也就不难了。同时感谢老师对我们的指导和为我们理清思路从而使我们更快我完成设计。
(3)在调试过程中,有一竖面的灯完全不亮,第一个想法是灯没有供电,检测供电电路法发现没有问题,于是我找到573这一部分,因为这一部分跳线较多且线路密集,逐一测量发现线头间短路了,从新焊接后测试,故障顺利排除。
(4)在调试过程中有几个灯一直不亮,用万用表欧姆档测量发现灯已经烧坏,拆下坏掉,但是有2个灯是存在虚焊问题,从新焊接后正常工作。
图7 573驱动连接正面
2、主控电路
主控电路是最简单的电路,主要是最小系统,其中还有一个控制层的驱动芯片焊接在主控板上,如图所示:
图8 最小系统
3、显示模块
首先我们用一块比较大万能板,在上面做了8*8个点的标志,间距为2mm然后把灯按统一形状掰好管脚。然后固定在在万能板上进行焊接,焊接完如下图:
图9 灯的焊接
3
D






题目:3D光立方
级别:2011级
专业:电子科学与技术
姓名:李鹏华
一、摘要............................................1
二、关键字..........................................1

基于单片机的光立方设计_毕业论文(含程序+原理图+实物图)

基于单片机的光立方设计_毕业论文(含程序+原理图+实物图)
第二章 总体设计.......................................................................................................................1 2.1 工作原理....................................................................................................................2 2.2 各模块方案选择与论证............................................................................................2 2.2.1 单片机主控制模块.........................................................................................2 2.2.2 驱动模块...........................................................................................................2 2.2.3 显示模块...........................................................................................................2
1、实物图..........................................................................................................................16 2、系统原理图..................................................................................................................17 程序清单...................................................................................................................................17

444光立方的设计与实现论文

444光立方的设计与实现论文

目次1 绪论 (1)1.1 光立方的发展背景 (1)1.2 研究意义 (2)1.3 章节安排 (2)2 总体设计 (3)2.1 光立方控制原理 (3)2.2 系统的总体设计方案 (4)2.3 各个模块的方案比较 (4)3 系统硬件设计 (6)3.1 单片机选型 (6)3.2 单片机总控制电路 (9)3.3 光立方显示电路 (12)4 系统软件设计 (13)4.1 软件编译 (13)4.2 流程设计 (16)4.3 显示设计 (17)4.4 小结 (23)结论与展望 (24)致谢 (28)参考文献 (29)附录: (30)1 绪论1.1 光立方的发展背景光立方在我国的起步还是相对比较晚,直到2009年,在北京天安门广场举行的国庆晚会才与大家相见。

“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙[1]。

光立方在国庆联欢晚会上演习结束之后, “光立方”这一个新名词在不知不觉之中吸引了许多人的目光。

之后以“光立方”制作而成的手电筒也被应用在2010年的世博会的主题馆和中国馆。

随后“光立方”在中国被越来越多的人所留意,也有越来越多的人学习和制作光立方,他们在此基础上不断创新,开发出了更多的花样。

其实在我们的日常生活中,“光立方”的各种产品早就已经存在了,只是我们没有去关注它。

例如照明类光立方,常见的是在景观处所使用的装饰灯;还有就是应用在各种活动中的大屏幕上,色彩斑斓的效果非常绚丽。

1.2 研究意义随着人们生活水平的提高,3D效果的欣赏已经成为了人们的追求,但是发展到现在3D还不能够普及到人们的生活当中去,因此要更好地把3D推广到日常生活中。

在这一次的设计中,放弃了对平面LED灯的制作,而是转向3D效果的设计,利用3D制作出来的效果更加丰富多彩,不但可以吸引人们的目光,还可以提升人们的审美观,不用把视线集中在平面成像上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子与信息工程学院“创兴杯”电子设计竞赛参赛题目:光立方的设计与制作小组成员:指导教师:无专业班级:电子Z1201班光立方的设计与制作摘要:光立方以发光二极管搭建成立体点阵,利用单片机控制发光二极管的亮灭,并利用延时控制发光二极管的亮灭时间,最终使得整个立体展现不同的造型和图案,呈现给观众极为丰富的视觉效果。

以8*8*8的光立方为例,可以将其拆成8个点阵屏,每个点阵屏为64个灯,通过控制这512个灯让它自由的变换,然后控制每个层依次点亮,由于人眼睛的视觉暂留,使得人们感觉看到的东西是一起在亮的,这样人们就可以看到一个完整的个体。

本设计是采用优于89C51的STC12C5A60S2单片机为核心控制器,74HC573和UNL2803驱动电路,完成硬件电路设计。

通过软件编程控制数据下载到单片机完成设计图案的显示。

软件采用自上而下的模块化设计思想,使整个系统朝着分布式、模块化、小型化方向发展,增强系统的可扩展性和运行的稳定性。

如今,类似于光立方的LED显示屏应用在生活的方方面面,比如企业招牌、娱乐场所、广场标志牌、新型的动态户外广告牌等。

关键词:8*8*8光立方;STC12C5A60S2单片机;74HC573锁存器;UNL2803芯片;FFT1 光立方的功能及实现1.1功能描述8*8*8光立方能够通过编写程序实现对每一个发光二极管亮与灭进行控制,通过不同发光二极管的亮灭组合,从而形成多种多样的图案。

为增强显示效果,可以有多种显示模式。

其中最简单的就是图案的静态显示,此外还有多种动态显示,通过图案的不断变换以及翻转、缩放、平移、闪烁等变化产生绚丽的效果,给人丰富的视觉体验。

此外,光立方还具有一系列的实用功能:它可以跟随音乐节奏显示频谱,让人能够看到音乐的旋律,给人以视觉和听觉上的享受;它可以显示当前温度,提示您注意冷暖;它可以显示时间,告诉您时间的流逝,为您提供便利;它还可以实现待机呼吸灯,既节能又是一个装饰品……1.2 系统组成及工作过程光立方有8个8*8点阵,要控制8*8点阵,需要16个引脚,若有8个8*8点阵,需用8个引脚来当充当各个8*8点阵的“开关”,只要将64个灯阴极连在一起,再分别连到这8个引脚上,即可用一个引脚控制控制64个灯的亮灭,进而通过8个引脚控制512个灯的亮灭。

在单片机的P0口输出显示代码,通过采用74HC573暂存的方法,来分别把64个灯的亮灭信息存到这个上面,然后再一起输出到灯上,将8个74HC573的64个输出引脚控制前面所述每一个面的64个灯,ULN2803控制每一层灯,而每层灯的阴极全连接在一起接入单片机,通过单片机主控芯片STC12C5A60S2来控制所有灯的亮灭,每一个灯的亮与灭都是由层选端口与控制端口共同决定的。

整个设计主要分为三个模块,分别是主控模块、驱动模块、显示模块。

2 硬件设计2.1 硬件电路总体设计光立方的硬件电路主要分为三个模块,分别是主控模块、驱动模块、显示模块。

主控模块控制整个系统的运行,驱动模块用来驱动各个模块进行工作,显示模块则用来显示各种图案进行交互。

STC12C5A60S2单片机驱动模块显示模块电源图1 系统结构框图 根据光立方能完成的功能又可以分为时钟模块、温度模块、功放模块。

结构框图如图2: 时钟模块温度模块STC12C5A60S2单片机LED 显示驱动模块功放模块图22.2 单片机最小系统单片机最小系统就是让单片机能正常工作并发挥其功能时所必需的部分,也可以理解使用最少的元件组成的单片机可以工作的系统。

对于STC12C5A60S2单片机,最小系统一般应包括:单片机、电源、时钟电路、复位电路、输入/输出设备等。

STC12C5A60S2单片机时钟电路复位电路电源输入/输出设备图3 单片机最小系统结构框图2.3 光立方控制模块(单片机最小系统)设计通常采用89C51单片机作为主控芯片,但由于89C51只有8K的内存,而光立方需要形成多种动画程序量大,可能会有溢出的情况发生,而采用属于8051系列的增强型芯片60K STC12C5A60S2单片机作为控制核心,则可以避免这种情况。

STC12C5A60S2单片机与普通51单片机相比有以下特点:1、同样晶振的情况下,速度是普通51的8~12倍;2、有8路10位AD;3、多了两个定时器,带PWM功能;4、有SPI接口;5、有EEPROM;6、有1K内部扩展RAM;7、有WATCH_DOG;8、多一个串口;9、IO口可以定义,有四种状态;10、中断优先级有四种状态可定义。

由此可以看出,STC12C5A60S2单片机具有良好的稳定性和扩展性,STC12C5A60S2单片机和其它相关的外围电路构成光立方整个系统的控制模块(电路图见附录Ⅱ)。

2.4 显示模块电路设计选用8*8*8的圆形高亮发光二极管作为显示模块,显示电路采用每层64个灯共阴,每束8个灯共阳的接法。

灯之间距离1.5cm,采用15*20规格的洞洞板作为光立方的底座,底座上另有4个大号LED灯,在电路接通后会点亮,增加光立方的视觉效果。

通过对单片机编程,各个模块协同工作,利用程序来控制LED的亮灭,以达到动画和各种显示效果。

图4 显示模块部分电路2.4.1 时钟显示模块设计时钟模块采用具有低功耗、高性能、带RAM的实时时钟电路DS1302。

DS1302可以对年、月日时分秒进行计时,同时具有涓细电流充电的功能。

DS1302的引脚连接如图5,其中VCC2为主电源,VCC1为后备电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由VCC1或VCC2中较大的供电。

X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

I/O为串行数据输入输出端,SCLK为时钟输入端。

图5 时钟模块电路2.4.2 音频显示模块设计音频功率放大采用的是塑封8引线双列直插式LM386功率放大器,它具有自身功耗低、电源电压范围大、电压增益可调、外接元件少和总谐波失真小等优点。

通过接在1脚、8脚间的电容来改变增益,第7 脚端外接一个电解电容接地,起到滤除噪声的作用。

图6 音频输入电路图7 功放模块电路通过LM386音频功率放大器将输入音频信号进行功率放大,放大后的信号经ADC采样后,由模拟信号转变为数字信号,之后就可以对采样得到的数字信号进行快速傅里叶变换(FFT),这样就得到了音频频谱值,通过编写程序,经单片机处理后在光立方LED显示屏上呈现出各种各样的音频显示效果。

2.4.3 温度显示模块设计温度采集采用DS18B20温度传感器,它具有体积小、使用方便、精度高、抗干扰能力强等优点,测量范围在-55~+125℃之间。

通过温度传感器采集周围环境的温度,经过程序编写将采集到的数据输入单片机进行处理,之后将周围环境的温度在LED显示屏上显示出来。

图8 温度模块电路2.5 驱动模块设计由于单片机的输出信号比较小,无法直接驱动大负载,就需要驱动模块来扩展驱动电流或驱动电压。

驱动器采用八重达林顿晶体管阵列ULN2803,1至8脚为8路输入,11至18脚为8路输出,驱动能力为500mA\50V,光立方中有大量的发光二极管,所需电流较大,故比较合适。

层选驱动列选驱动部分图9 驱动模块电路驱动电路一般采用扫描驱动电路,扫描驱动电路中,既需要层选驱动,又需要列选驱动。

ULN2803的1~8脚接主控芯片的30~37脚,数据由主控芯片P2口输入经ULN2803从10~17脚输出,实现通过ULN2803来驱动每一层。

每个74HC573的2~9脚(数据输入)都连接在一起连接到主控芯片的P0口(32~39脚),数据从主控芯片P0口输送到74HC573,74HC573的1脚是三态,输出使能输入(低电平)一般都与地相接,74HC573的11脚(锁存使能输入)都连接在一起连接到主控芯片的P2口(21~28脚)作为锁存器。

当74HC573的11脚为高电平和2~9脚为高电平时,74HC573的12~19脚(三态锁存输出)为高电平,驱动一竖面的灯亮,当11脚为高低平、2~9脚为低电平时,74HC573的12~19脚则就为低电平,从而灯灭,当11脚为低电平时,2~9脚不管高低电平,12~19脚的输出不变。

主控芯片通过74HC573和ULN2803来驱动控制哪个点阵的哪一层的哪一个灯的亮与灭。

为了发光二极管的安全,在电路中接入了限流电阻。

2.6 按键模块设计由于光立方的功能较多,显示模式也是各不相同,为方便不同功能之间快速切换,在光立方原有模块的基础上添加了按键模块的设计,这样就能直接从一个功能模块迅速切换到另一个想要的功能模块。

这一设计在原有的基础上添加了三个按键,分别能够实现“确认”、“下一个”、“退出”的功能。

电路连接如图10:图10 按键模块电路其中,S1是“确认”功能键,S2是“下一个”功能键(在台灯模式可用来调节灯光亮度),S3是“退出”功能键。

在功能选择主界面,可使用S1、S2、S3来选择相应的功能,比如Y(音频频谱动画显示)、F(Flash动画显示)、T(时间、温度显示)、H(呼吸灯模式)、D(台灯模式)、C(待机模式),选择后即可进入相应界面。

在音频频谱动画显示时,可使用S2、S3来选择下一个和退出;在Flash动画显示、时间、温度显示、呼吸灯模式、待机模式时,可使用S3来退出当前功能;在台灯模式时,可使用S2来调节灯光亮度,使用S3退出当前模式。

如下表:模式Y(音频频谱动画显示)F(Flash动画显示)T(时间、温度显示)H(呼吸灯模式)D(台灯模式)C(待机模式)开关是否可用S1- -----S2√---√-S3√√√√√√3 软件设计3.1 软件总体设计系统软件采用C语言编写,按照模块化的设计思路设计程序。

首先分析程序所要实现的功能,程序要实现可静态显示、动态显示、三维立体显示以及时钟、温度、音频显示等,根据功能通过按键控制程序选择不同的显示程序进行显示。

开始系统初始化由键盘扫描程序读取控制数据处理后选择相应程序送至端口选择显示程序结束图11 软件总体设计流程图程序开始首先必须对单片机进行初始化设置,其中初始化设置内容包括:中断优先级的设定,中断初始化,定时器初始化,串行通信时通信方式的选择和波特率的设定,各IO口功能的设定等。

把各子程序写为一个可以单独执行的完整子程序段,各子程序编译没有错误后再下载到单片机进行测试,结果如和预想的一样,再将所有的程序进行整合,形成一个完整的程序再进行编译和测试。

3.2 主程序设计主程序总体设计思路如图11:开始系统初始化开机动画进入子程序模块功能选择窗口键盘扫描程序检测键盘输入NYYN图12 主程序设计流程图首先,将系统所需要的文件的宏定义文件包含进来。

相关文档
最新文档