444光立方的设计与实现论文
光立方设计与实现论文详细教程

1绪论1.1课题背景在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。
随着宽带网络的发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。
与传统的显示设备相比,这种未来的巨大需求让LED大屏幕显示技术成为众人目光的焦点。
LED显示屏一般分为图文显示屏和视频显示屏,均由LED矩阵块组成。
动态图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维的动画、录像、电视、VCD节目以及现场实况转播。
不仅可以用于室内环境装饰还可以用于室外环境信息传播,具有投影仪、电视墙、液晶显示屏无法比拟的优点。
而且显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。
随着社会经济的不断进步,人们对LED显示器的认识不断加深,其应用领域越来越广。
目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展[1]。
1.2我国LED显示屏研究现状及发展趋势(1)我国LED产业发展现状目前国内主要LED广告大屏幕制造厂商主要集中在华东、华北、华南区域,大型制造商的市场范围几乎覆盖整个国内市场。
国产LED广告大屏幕的性价比比较高,市场占有率近100%。
我国的LED显示屏产业经过几年的发展,基本形成了一批具有一定规模的骨干企业。
我国LED显示屏产业在规模发展的同时,产品技术推陈出新,一直保持比较先进的水平。
LED显示屏产业正成为我国电子信息产业的重要组成部分,也是平板显示领域唯一立足国内形成的民族高科技产业[2]。
(2)LED显示屏的发展趋势二十一世纪的显示技术将是平板显示的时代。
基础材料的产业化,使LED基于单片机的光立方设计与实现全彩色显示产品成本下降,应用加快发展。
光立方论文

有关光立方的制作过程和心得体会在学习单片机课程时,组成光立方小组的我们就散发出了对单片机的浓厚兴趣,尽管身边的同学,往届的前辈们都指点我们道“这个设计不好过,郭老师很严厉的。
”,但是这些并没有阻止我们小组对单片机进行最终的选择:小组认为毕业前要做一件像样的事情,如果这个毕业设计做不好,我们认为自己还是没有毕业资格的;更重要的是小组对老师的向往,感谢我们的结识,感谢老师的指点。
刚刚开始与其它班级一同进行单片机的实训课程时,小组可以说是一头雾水,因为在开始设计作品之前,老师提出了一点当时我们并不认为是很重要的,但开始设计时才知道这点是很致命的一个要求:那就是老师不允许小组对设计进行同网络相同的层共阴列共阳概念设计。
经过资料查询,小组可以说是崩溃一般,想不出其它设计的方式,当时小组是钻了牛角尖的,把想法局限到了类似杜洋工作室设计的光立方概念那一方向。
直到一次小实验,小组用一片74hc573点亮了8个LED灯,小组看到了希望,因为这个亮度并不是非常低,LED灯没有像查询资料中所说的那么暗。
在此引导下,小组用Protues软件设计了电路图,并进行了初步测试程序的烧入,模拟的实验效果还是不错的,最终小组就决定了这个设计方式。
小组自己探讨的设计方式要用到8块74hc573,但是并没有用到uln2803,由单片机3个I/O口对整个设计进行控制,1个I/O口同时连接8块74hc573的输入端,进行并行传输数据,在通过单片机对74hc573的选通,实现8个74hc573对每一列8个LED灯阳极的供电;1个I/O口连接8块74hc573的使能端口,进行对74hc573不同时间的选通;1个I/O 口连接一层LED灯的负极,一共有8层LED灯。
工作原理就是由单片机先进行循环对74hc573进行选通,再由7hc573进行循环对每一列8个LED灯供电,再由单片机传输一组8位的负极信号,对选中供电的一列LED灯进行负逻辑点亮,这里一共有64列8个LED灯组成的列,通过负极信号的不同,实现立方效果的体现。
444光立方课程设计

444光立方课程设计一、教学目标本课程的教学目标是使学生掌握光立方的基本概念、原理和应用,提高学生的科学素养和解决问题的能力。
具体目标如下:1.知识目标:学生能够理解光立方的定义、特点和基本原理,掌握光立方的构造方法和操作技巧,了解光立方的应用领域。
2.技能目标:学生能够运用光立方进行简单的计算和建模,能够利用光立方解决实际问题,提高学生的科学思维和创新能力。
3.情感态度价值观目标:学生能够认识到光立方在科学技术和社会发展中的重要性,增强对科学的兴趣和好奇心,培养学生的科学精神和责任感。
二、教学内容本课程的教学内容主要包括光立方的基本概念、原理和应用。
具体内容包括:1.光立方的定义和特点:介绍光立方的概念,解释光立方的特性和优势,引导学生了解光立方的应用前景。
2.光立方的构造方法:讲解光立方的构造原理和方法,引导学生掌握光立方的制作技巧,培养学生的动手能力。
3.光立方的操作技巧:介绍光立方的操作方法和技巧,通过实际操作练习,使学生熟练掌握光立方的使用。
4.光立方的应用领域:讲解光立方的应用案例,使学生了解光立方的应用范围和价值,激发学生的学习兴趣。
三、教学方法为了实现教学目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
具体方法如下:1.讲授法:通过教师的讲解,使学生掌握光立方的基本概念和原理,引导学生理解光立方的构造方法和操作技巧。
2.讨论法:学生进行小组讨论,促进学生之间的交流和合作,培养学生的科学思维和创新能力。
3.案例分析法:通过分析光立方的应用案例,使学生了解光立方的实际应用,引导学生运用光立方解决实际问题。
4.实验法:安排学生进行实验操作,使学生亲身体验光立方的构造和操作过程,提高学生的动手能力和实践能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备适当的教学资源。
具体包括:1.教材:选择适合学生水平的教材,为学生提供系统的学习材料,帮助学生掌握光立方的基本概念和原理。
光立方论文说明书大学学位论文

毕业设计说明书学校代码:10129系 别:计算机技术与信息管理系 年 份:2015题 目:单片机8*8*8光立方 小组成员:孟斌、静厚霖、宋金宝 班 级:11计教甲班 指导教师:郭彬年 月摘要随着人们物质生活水平的提高,人们对精神生活的追求也愈加强烈,对信息的渴求已成为了人们必不可少的需要,更加简捷与新颖的信息传递方式无疑会给人们带来耳目一新的感受。
而现代工具务求简捷化、便携化,因此,光立方显示装置的到来,必将会给人们带来一种新的方便的文化传递方式。
单片机8*8*8光立方,在60周年国庆大典上,在天安门前,被称为三大国宝之一的节目就是由我们小组所选的设计光立方组合而成;并且光立方是由LED灯组成,近看几年的发展,LED灯的用途越加的广泛起来,小组看到LED灯的发展前景,经过小组讨论,依据上述两点,最终决定选择光立方作为毕业设计。
光立方是基于人的视觉暂留原理的,通过分时刷新8*8*8构成的512个LED灯来显示输出文字或图案等信息的立体显示装置。
输出信号频率的控制通过单片机连接74hc573芯片来实现,由于人的视觉暂留原理,会由8个LED灯为列到8*8个LED灯为面再到8*8*8个LED灯为立方的过程产生一个立体的视觉效果,在立体视觉效果内的LED灯通过不同频率的刷新,会在立方区域内产生三维立体的图像,从而达到在该立体视觉上传达信息的作用。
本文以单片机、74hc573芯片、LED灯的实际应用为背景,介绍了以单片机、74hc573芯片、LED灯为核心系统的光立方立体显示设计的基本结构和基本原理。
【关键词】单片机、74hc573芯片、LED灯目录引言 (1)一.系统设计方案 (2)1.设计目的 (2)2.设计要求 (2)3.设计思路 (2)二.系统硬件设计 (4)1.基本原理图 (4)2、各部分功能 (4)(1)外部驱动电路模块 (4)(2)LED显示模块 (5)3、系统硬件 (5)(1)单片机控制 (5)(2)显示功能 (5)三.系统软件设计 (7)1.软件设计思路 (7)2.主程序流程图 (7)四.系统的硬件调试及软件调试 (8)1.常见的硬件故障 (8)(1)逻辑错误 (8)(2)器件失效 (8)(3)可靠性差 (8)(4)电源故障 (8)2.硬件调试方法 (8)(1)脱机调试 (8)(2)联机调试 (9)3.软件调试方法 (9)4.具体调试过程 (10)五、有关光立方的制作过程和心得体会 (11)六、作品使用说明 (13)七、制作过程 (14)1.LED灯面的焊接方式 (14)2.逐层LED灯负极的焊接 (16)3.电路版制作 (18)4.电路板上飞线的制作 (19)5.显示部分与电路板之间的焊接 (20)6.每层LED灯负极信号飞线的焊接 (21)八、总结 (22)九、致谢 (23)十、参考文献 (24)引言单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机。
444光立方课程设计

444光立方课程设计一、教学目标本课程旨在让学生掌握光立方的基本概念、原理和应用,培养学生的空间想象能力和创新能力。
具体目标如下:1.知识目标:学生能够理解光立方的定义、特点和基本原理,了解光立方的应用领域,如光学、物理、数学等。
2.技能目标:学生能够通过观察、实验和计算,分析和解决光立方相关的问题,提高学生的实践操作能力和科学思维能力。
3.情感态度价值观目标:学生能够培养对光立方的兴趣和好奇心,提高学生对科学探究的热情和积极性,培养学生的团队合作意识和创新精神。
二、教学内容本课程的教学内容主要包括光立方的定义和特点、光立方的原理和计算方法、光立方的应用领域等。
具体安排如下:1.第一章:光立方的定义和特点,介绍光立方的概念和特点,理解光立方的基本性质。
2.第二章:光立方的原理和计算方法,学习光立方的原理和计算方法,掌握光立方的操作技巧。
3.第三章:光立方的应用领域,了解光立方的应用领域,如光学、物理、数学等,探索光立方的实际应用案例。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体方法如下:1.讲授法:通过教师的讲解,介绍光立方的基本概念、原理和应用,帮助学生建立知识框架。
2.讨论法:学生进行小组讨论,分享对光立方的理解和思考,促进学生之间的交流和思维碰撞。
3.案例分析法:分析光立方的实际应用案例,让学生了解光立方的应用领域和实际价值。
4.实验法:进行光立方实验操作,让学生亲身体验光立方的原理和应用,提高学生的实践能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的教材,如《光立方导论》、《光立方实验指导》等,作为学生学习的主要参考资料。
2.参考书:提供相关的参考书籍,如《光学原理》、《数学模型》等,供学生进一步深入学习和研究。
3.多媒体资料:制作精美的多媒体课件和教学视频,通过图文并茂的形式,生动展示光立方的原理和应用。
51单片机电子设计制作444彩色光立方

{ //一次采集数据的数量
Adc_Delay(3);
R=Read(1); //读对应的口,触发对应的触摸按键
if(R<0x2f)
{//此参数可调整感应灵敏度值在0x01到0x2F
k++;
}
if(R == 0xFF)
{
j++;
}
}
if(k>1 && j>1)
{
mm++;
uint i;
while( --a != 0){
for(i = 0; i < 600; i++);
}
}
void Delay(uint z)
{
uint x,y;
for(x=80;x>0;x--)
for(y=z;y>0;y--);
}
void timer1_init()
{
TMOD |= 0x10;
TH1 = 0;
TL1 = 0;
ET1 = 1;
TR1 = 1;
EA = 1;
}
/******************************************************************************
********************** AD转换函数**************/
#define MIN_Delay 1
sbit S_1 = P1 ^ 1;
sbit S_2 = P1 ^ 2;
unsigned int pwm;
unsigned char TimeDelay = 10;
444光立方设计报告

444光立方设计报告目录第1章摘要 (1)第2章绪论 (2)第3章设计目的与要求 (3)3.1 设计目的 (3)3.2 设计要求 (3)第4章 444光立方基础技术 (4)4.1 STC89C52的标准功能 (4)4.2 STC89C52的主要特性 (5)4.3 STC89C52的器件参数 (6)第5章总体方案设计 (7)5.1 单片机资源分配情况 (7)5.2复位电路 (8)5.3 时钟电路 (8)5.4系统框图和程序流程图 (9)5.5系统的工作原理图 (10)第6章系统调试与测试 (13)第7章总结与展望 (14)第8章致辞 (15)第9章参考文献 (16)附录(原理图、源程序) (17)摘要当今社会,随着电子行业的不断发展,单片机凭借着其极高的性能价格比,受到人们的重视和关注,应用广泛,发展迅猛。
单片机体积小,质量小,抗干扰能力强,对环境要就不高,价格低廉,灵活性好,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。
成为现代生产和生活中不可缺少的一部分。
关键词:光立方单片机 STC89C52AbstractIn today's society, with the continuous development of electronic industry, single-chip microcomputer with its extremely high cost performance, is people's attention and concern, wide application, is developing rapidly. SCM small size, small quality, strong anti-jamming capability, the environment is not high, low price, good flexibility, has been widely used in industrial automation, communications, automatic detection, information home appliances, power electronics, aerospace and other aspects. Become an indispensable part of modern production and life.Keywords: light cube microcontroller STC89C52绪论为了让我们更加深入的了解单片机的原理及其部结构和功能,黄老师让我们用51单片机制作一个小作品,于是,我们组选择了制作4*4*4的光立方。
光立方毕业论文含程序+原理图+实物

目录第一章绪论............................................................................................................................................... - 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 单片机光立方的设计并阐述了整体设计思路,介绍了系统软硬件设计的主要方法。
光立方_毕业论文(含程序原理图实物图)

目录摘要 .......................................................................................................................................................... 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)。
光立方论文

电子与信息工程学院“创兴杯”电子设计竞赛参赛题目:光立方的设计与制作小组成员:指导教师:无专业班级:电子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个灯的亮灭。
光立方

小制作论文系列(3)题目:4*4*4 光立方制作者:白会荣专业:自动化日期:2013.03.15前言:本设计是基于数码管扫描方式进行工作的。
数码管的工作原理:分时送段码和位选位,由于扫描的时间非常之短,利用“人眼暂留”现象,使人们看到的是连续的数字。
本4*4*4光立方就是利用这个特性制作的。
该设计由于有4层,每层16个LED灯,共计64个。
把每一层的LED正极以搭桥的方式叠加在一起这样每一层的正极是连在一起的。
之后将每一层16LED的负极与相邻层的负极相连。
最后,这样就形成了16个负极接在P0,P2口上,4层的正极接在P1口低四位,这样的结构就可以保证分别控制每一个LED。
制作过程:1、在LED选择上我选用了5mm白发兰的小灯来搭建。
2、将每个LED的正极折成90度直角,负极与其垂直,将4个为一组焊接称一下形状。
(2组8个)3、将上述的2组正极拼成一个16个LED 的一层。
为了美观缺少的引脚部分,我用以前收集的元件引脚补齐了。
4、按以上的步骤焊接好其余的三个面。
5、将两个面的所有负极上下两两焊接上,为了焊接方便,可以先将上一层的所有负极向内弯曲一点。
6、然后将剩余的两个面同样的焊接其负极,形成四层架构的正方体.7、焊接正方体光立方固定在面包板上(即将最底层的16个负极固定),8、焊接单片机电路,注意这里连接一定要有次序,比如第一排从左到右是1,2,3,4第二排5678第三排910.11.12.第四排13.14.15.16,这样编排有益于编程.但很美观哦.10、最终的完成图就是这样的!漂亮的图案:软件参考程序://************************************ ******//程序名称:4*4*4光立方图案设计//编写人:白会荣//参考来源:《电子制作》2013年第3期"洞洞板上的光立方--迷你型4*4*4梦幻光立方" 伍浩荣//编写时间:2013.03.15//硬件接口定义:数据口P0与P2口,层选公共端(共阳)P1口低四位。
基于单片机的光立方课程设计

单片机课程设计报告题目基于单片机的4*4*4光立方设计系别计算机科学系专业计算机科学与技术班级学号姓名指导教师日期【摘要】当今社会,随着电子行业的不断发展,单片机的应用从根本上改变了传统的控制系统设计思想和设计方法,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。
成为现代生产和生活中不可缺少的一部分。
我们学习单片机也一个学期了,此次单片机课程设计,我采用的是STC12C5A60S2系列的单片机,设计一个4*4*4模式的“光立方”。
将LED灯分成4层,利用程序来编写各种不同的效果来控制LED的亮灭,最终使得整个立方体展现不同的变换,美轮美奂,绚丽多彩。
【关键词】单片机课程设计光立方1绪论1.1课题研究的背景“光立方”一词正逐渐引起了全国人民的关注,并得到了全球的高度肯定。
所谓“光立方”:就是在平面LED基础上发展起来的新的显示技术,通过复杂的程序控制,在三维空间能够显示具有立体感的图形、动画等。
由此,也掀起了光立方的设计与学习热潮,在原有的基础上不断增加难度,增加变换花样,吸引电子爱好者对其研究、创新。
光立方是由LED灯组成,由于发光二级管质量比较稳定,使用寿命长,不用频繁地去更换,能减少成本,更节能。
光立方作为一种特殊的显示资源,已用于一些广告行业、家庭、娱乐厅、会议室、大型演唱会、城市地标广场等场所的布置和装饰,还可以用于更广泛方面,具有广阔的应用前景。
1.2课题研究的意义本次毕业设计一改传统的平面流水灯的风格,而是从平面向立体发展,通过更宽广的三维空间呈现出更加绚丽的效果,直接冲击着人们审美视觉,不在停留在乏味的平面成像。
光立方主体部分由64个LED灯组成,在制作过程中锻炼学习动手焊接能力,并以低成本,智能化产品对实现经济利益、商业价值的形成具有积极的推动作用。
光立方的研究极具创意和启发,而且可以低成本、高效益的研究未来的3D技术。
2总体设计2.1设计目的1.进一步掌握单片机的原理及其功能。
444光立方双色制作方法

双色灯光立方焊接介绍先上个焊接好的整图大家看看,好有个整体概念,整个焊接过程时间比较长,需要一定的焊接基础,一定要仔细,特别是led灯焊接时需要注意焊接时间不能太长(防止焊接对led灯造成的损坏)一、主板的焊接1、焊接四个led(注意长脚为正极,焊接在主板底面)2、焊接四个1k电阻(没有方向,焊接在主板底面)3、焊接单片机底座(有方向,焊接在主板底面)4、焊接其它元件(焊接在主板底面)5、这些孔不用焊接二、Led立方灯的焊接1.接线下灯座的制作方法:把40P圆排母用水口钳或者斜口钳剪成单针:接下来再用水口钳或者斜口钳把针座旁边的塑料剪去,这个用水口钳是比较好剪的,当然不剪也是可以,只是比较不美观:2整形LED ,每个LED都整形如下图:2整形好后焊接一个固定LED的万用板,方便焊接LED支架。
用这样的方法焊接出来的LED阵列就比较整齐美观:用一个9*15或者更大的万用板焊接16个排针,然后把整形好的LED夹在排针上面,纵向焊接正极,横向焊接负极:注意排针间距:横向6孔,纵向9孔看清楚排针的焊接距离!用一个9*15或者更大的万用板焊接16个排针,然后把整形好的LED夹在排针上面,纵向焊接正极,横向焊接负极:注意排针间距:横向6孔,纵向9孔这样焊接下来正好是16个LED ,也就是1面,等4面都制作好后,便可以组装1个4*4*4的光立方了。
三、光立方组装:本光立方采用束共阳层共阴的接法。
先介绍一下,层的接法:P2.0-P2.7为层控制线,我们先帮光立方分为左右2侧,每测2列LED负极接在一起为1个层。
左侧最顶层(也就是第4层)的共阴极层控制线为P2.0,左侧第2层的共阴极层控制线为P2.1,左侧第3层的共阴极层控制线为P2.2,左侧第4层(也就是最底层)的共阴极层控制线为P2.3,右侧最顶层(也就是第4层)的共阴极层控制线为P2.4,右侧第3层的共阴极层控制线为P2.5,右侧第2层的共阴极层控制线为P2.6,右侧第1层(也就是最底层)的共阴极层控制线为P2.7。
光立方论文

目录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. 投影范围扩大目前,光立方的投影范围相对较小,限制了其在实际应用中的使用。
未来,我们可以通过改进光立方的投影系统,使其能够实现更大范围的投影,提供更广阔的观看体验。
光立方制作论文

西安科技大学光立方制作论文目录一.摘要 (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字节。
444光立方课程设计

444光立方课程设计一、课程目标知识目标:1. 学生能理解光立方的基本原理,掌握光立方中光的传播、反射、折射等物理现象。
2. 学生能掌握光立方中光学元件的使用,如透镜、反射镜等,并了解其在光路中的作用。
3. 学生能运用数学知识,如几何、三角等,分析光立方中光路的变化和计算相关参数。
技能目标:1. 学生能运用光立方设备进行实验操作,掌握基本的实验技巧和数据处理方法。
2. 学生能通过团队合作,设计并搭建光路,解决实际问题。
3. 学生能运用所学知识,创新设计光立方应用,提高实际操作能力。
情感态度价值观目标:1. 学生通过学习光立方,培养对物理科学的兴趣和好奇心,增强探究精神。
2. 学生在团队合作中,学会相互尊重、沟通协作,培养团队精神和责任感。
3. 学生通过光立方课程,认识到物理知识在实际应用中的价值,提高学以致用的意识。
本课程针对四年级学生,结合课程性质、学生特点和教学要求,设计具有实用性和趣味性的光立方教学内容。
通过本课程的学习,学生将掌握光立方的基本知识和技能,提高解决问题的能力,同时培养良好的情感态度价值观。
课程目标具体明确,便于后续教学设计和评估。
二、教学内容本章节教学内容主要包括以下三个方面:1. 光立方基本原理:- 光的传播、反射、折射等物理现象;- 光学元件(透镜、反射镜等)的作用及其在光路中的应用;- 光路分析及几何、三角等数学知识的运用。
2. 实践操作与技能培养:- 光立方设备的认识与操作;- 实验技巧和数据处理方法;- 设计并搭建光路,解决实际问题。
3. 创新设计与团队协作:- 光立方应用的创新设计;- 团队合作能力的培养;- 物理知识在实际应用中的价值体现。
教学内容按照以下教学大纲安排和进度:第一周:光立方基本原理学习,光学元件的认识;第二周:光的传播、反射、折射现象实验,光路分析;第三周:透镜、反射镜在光路中的应用,几何、三角知识运用;第四周:实践操作,设计并搭建光路;第五周:创新设计光立方应用,团队协作与展示。
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)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
光立方444电子设计报告完美版

3D4光立方设计说明书课题名称:基于STC12C5A60S2的LED立方体设计学生姓名专业电子信息工程技术班级时间指导教师目录一、摘要 ---------------------------------------2二、设计目的与要求 ------------------------ 22.1设计目的 -----------------------------------22.2设计要求 -----------------------------------3三、硬件方案设计 ---------------------------33.1单片机资源分配情况 ------------------- 33.2复位电路 ---------------------------------- 43.3时钟电路 ---------------------------------- 43.4系统的工作原理图 -----------------------53.5焊接实物图 -------------------------------6四、软件设计 ---------------------------------74.1系统框图 -----------------------------------8五、心得体会 ----------------------------------8六、参考文献 ----------------------------------8摘要当今社会,随着电子行业的不断发展,单片机凭借着其极高的性能价格比,受到人们的重视和关注,应用广泛,发展迅猛。
单片机体积小,质量小,抗干扰能力强,对环境要就不高,价格低廉,灵活性好,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。
成为现代生产和生活中不可缺少的一部分。
对于我们来说,学习单片机也有半年之久了,对单片机有了大体的了解,此次单片机课程设计,我们采用的是STC12C5A系列的单片机,利用此单片机来控制一个“光立方”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计说明书(论文)作者: 学号:系:专业:题目: 4*4*4光立方的设计与实现(姓名) (专业技术职务)评阅者:(姓名) (专业技术职务)毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要南京理工大学紫金学院毕业设计(论文)评语学生姓名:唐佳恒班级、学号:110404333题目:4*4*4光立方的设计与实现综合成绩:毕业设计(论文)评语本科毕业设计说明书(论文)第I 页共I 页目次1 绪论 (1)1.1 光立方的发展背景 (1)1.2 研究意义 (1)1.3 章节安排 (1)2 总体设计 (3)2.1 光立方控制原理 (3)2.2 系统的总体设计方案 (3)2.3 各个模块的方案比较 (4)3 系统硬件设计 (6)3.1 单片机选型 (6)3.2 单片机总控制电路 (8)3.3 光立方显示电路 (12)4 系统软件设计 (13)4.1 软件编译 (13)4.2 流程设计 (15)4.3 显示设计 (16)4.4 小结 (22)结论与展望 (23)致谢 (28)参考文献 (29)附录: (30)1 绪论1.1 光立方的发展背景光立方在我国的起步还是相对比较晚,直到2009年,在北京天安门广场举行的国庆晚会才与大家相见。
“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙[1]。
光立方在国庆联欢晚会上演习结束之后, “光立方”这一个新名词在不知不觉之中吸引了许多人的目光。
之后以“光立方”制作而成的手电筒也被应用在2010年的世博会的主题馆和中国馆。
随后“光立方”在中国被越来越多的人所留意,也有越来越多的人学习和制作光立方,他们在此基础上不断创新,开发出了更多的花样。
其实在我们的日常生活中,“光立方”的各种产品早就已经存在了,只是我们没有去关注它。
例如照明类光立方,常见的是在景观处所使用的装饰灯;还有就是应用在各种活动中的大屏幕上,色彩斑斓的效果非常绚丽。
1.2 研究意义随着人们生活水平的提高,3D效果的欣赏已经成为了人们的追求,但是发展到现在3D还不能够普及到人们的生活当中去,因此要更好地把3D推广到日常生活中。
在这一次的设计中,放弃了对平面LED灯的制作,而是转向3D效果的设计,利用3D制作出来的效果更加丰富多彩,不但可以吸引人们的目光,还可以提升人们的审美观,不用把视线集中在平面成像上。
3D光立方是一种新型的显示资源,因此它所拥有的优势也是比较明显的,在体积方面非常小、功率消耗方面相比同类也降低很多、功能强大、优秀的拓展能力、微型化等。
比起市面上使用的电子或数字电路的光照设备,在每一个方面都有显著的优势。
最重要的是它的研究极具创意和启发,还可以应用于未来的3D手机、节能灯等产品,并且由于制作成本低廉,用3D所实现的智能产品对市场经济发展有很大的推动作用。
1.3 章节安排具体安排如下:第二章:主要说明了光立方的总体设计原理和各个结构都有一些什么特点,并且对不同的方案都作了比较。
第三章:详细说明了电路各个部分的排布、设计和功能,主要包括控制电路、驱动电路还有显示电路在光立方工作过程中的作用。
第四章:主要说明了软件调试的过程,软件设计的具体做法更加方便读者理解设计的整个架构和逻辑关系。
最后,对光立方的设计过程做出总结,并对光立方的发展前景进行描述。
2 总体设计2.1 光立方控制原理3D光立方看起来就像是一个三维的显示器,只不过这个光立方是由发光二极管组成的一个立方体。
光立方显示的原理简单来说就是用单片机控制64个发光二极管,在不同时间段点亮动画效果所需要的发光二级管,然后便能看到图案或动画效果了。
光立方的具体原理如下:整个光立方由下到上一共分为4层,将每一层的总共16个发光二级管的负极焊接在一直线上,由于是双色的发光二极管,所以将32个正极分为两路焊接,其他层都对应焊接,然后再曾与曾直接对应焊接起来。
然后再根据所要实现的动画效果,编写相应的程序来控制发光二极管。
根据人眼的视觉暂留效果,设置每幅画面呈现动态,最终达到所要显示的内容。
每一个发光二级管的点亮或者熄灭,都是由层控制端所决定的。
2.2 系统的总体设计方案此次的光立方设计用的是层整体控制的方法,每一层都要引出两个正极引脚,然后将16个灯的阴极分为2路焊接起来,最后焊接到PCB板相对应引脚上就可以了。
用64个双色发光二级管灯作为显示模块来构成光立方,再加上查询芯片的功能和作用,就可以确定基本思路。
系统模块框图如图2.1所示。
图2.1 系统模块框如上图2.1所示,此次设计的系统整体模块包括了以单片机为核心的控制模块,驱动模块、运放模块和显示模块。
2.3 各个模块的方案比较2.3.1 单片机模块方案一:采用常规的51单片机的作为光立方的主要控制芯片,存在两个明显的不足之处。
第一,51单片机的内存比较小,而相对的制作3D光立方的动画所要的程序量比较大,会出现内存不足的情况。
第二,如果采用89c51单片机作为主要控制芯片,还需要添加另外的芯片,这样的话不仅制作的成本上来了,在这同时也增加了工作量。
所以不采用此方案。
方案二:采用MCS-51系列的STC12C5A60S2芯片作为控制芯片,这个芯片具有60K 的超大内存,非常适合用来存储光立方形成的多种动画的程序量,并且此芯片完全兼容普通8051单片机,而且内部集成度又非常高,具有超强的抗干扰能力,外部的复位可用可不用,运行的速度也比普通8051单片机快10倍左右。
正是因为内部的高度集成,不需再添加其它的芯片,降低了成本,节约了时间,还在一定程度上减小了PCB 板的面积,更加小巧。
2.3.2 驱动模块方案一:采用8个8050NPN三极管驱动。
如果使用这一类驱动,就需要8个三极管对双色LED进行控制,数量太多,影响整理的布局和美观,最重要的是性价比不高,所以不建议使用此方案。
方案二:采用达林顿ULN2803来驱动,如果使用这一类驱动,第1个引脚到第8个引脚作为输入端,第11引脚到18作为输出端,工作能力是500mA\50V。
虽然在很大程度上缩小了元件占用的空间,但是64个LED灯所需的电流没有那么大,因此性价比也不是很高,所以也不考虑此方案。
方案三:采用MCS-51系列的STC12C5A60S2芯片。
由于此芯片的高度集成化,可以用I\O口直接驱动LED二极管,功率消耗也不大,而且可以只用一个芯片就能驱动LED,所以直接采用此芯片直接驱动。
2.3.3 运放模块方案一:选用LM4562,这个芯片是高性能音频专用双运算放大器,这款芯片常用于制作专业级或者高端的音频系统,在本次的设计中,由于性价比不高,所以不推荐使用。
方案二:选用LM358p,这个芯片内部具备两个独立的、高增益、频率补偿的双运算放大器,功耗低,价格低廉,非常适合本次的设计。
2.3.4 显示模块方案一:我们在生活中常用的LED不容易聚光,当LED被点亮的时候光发散比较厉害,灯与灯之间会相互影响,效果比较混乱,直接导致视觉效果达不到要求,而且在质量方面也不过关。
方案二:我们选用方形或者草帽型双色雾状LED发光二极管,此类二极管的工作电压是3.5V左右,工作电流在6mA左右。
这种二极管的特点是同时可以显示两种颜色,分别是红色和蓝色,在适当的控制下,可以变换更多的颜色,当64 个灯同时被点亮的时候效果更佳。
效果如图2.2所示:图2.2 方形双色雾状发光二极管3 系统硬件设计系统的硬件设计采用的方法很多,此次的设计在要求精简的前提下,又保证了功能的正常运行。
3.1 单片机选型MCS-51系列的STC12C5A60S2单片机是宏晶科技生产的一款功能较为强大的单时钟/机器周的单片机,它是MCS-51系列单片机衍生产品中代表。
这个系列的单片机在指令代码上可以完全兼容普通的8051单片机,而且这个单片机的与传统的单片机所不同的是它具有1T的内核,所以在速度上比普通8051单片机快10倍左右。
但是在碰到对延迟有特殊要求的时候,便会对应转换成单片机的1/12。
总的来说这款单片机是具有速度快,功率消耗低,抗干扰能力强等特点的新一代8051单片机。
特别是在电机控制的方面,干扰信号比较强的情况下比传统8051单片机优势明显。
单片机特点1)属于功能增强型51单片机,具有1T的内核,内部单时钟/机器周期,传统8051单片机的指令和代码在这款单片机中都可以运行2)工作电压:STC12C5A60S2系列单片机工作的电压为3.5V -5.5VSTC12LE5A60S2 系列单片机工作的电压为2.2V -3.6V3)工作频率范围:0~35MHZ,近似于普通8051单片机的0~420MHZ4)用户可用的应用程序的空间大有8K / 16K / 20K / 32K / 40K / 48K / 52K / 60最大64k字节5)片上集成1280字节RAM6)通用I/O口(36/40/44个),复位后为准双向口/弱上拉(一般8051单片机I/O)可以设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可到达20mA,但是整个芯片最大不要超过120mA 7) ISP/IAP,ISP指的是直接将写好的程序下载到芯片里面,而芯片不需要从PCB板上取出来,IAP指的是通过操作之后将程序下载到芯片,也不需要特定的仿真器,只要通过串口(P3.0/P3.1)就可以下载已经编写好的程序代码,几秒内就可以完成8)具备EEPROM功能,但是要注意的是此款单片机内部没有这个功能9)看门狗功能10)内部集成MAX810复位电路,不用再设计外部的复位电路,而且这个复位是非常可靠的,如果需要的话只要在外部接一个复位按键11)外部掉电检测电路:这个电路主要是在遇到突发情况的时候可以把数据保存在EEPROM当中12)时钟源:在外面接一个高精度的晶振,设计者在下载已经编写完成的程序时,能选择用外部高精度晶振/时钟,3.3V单片机为10MHZ左右。
在设计的精确度不需要非常高的情况下,也可以用单片机的内部时钟,只是每一个单片机都存在制造误差,所以还是要根据实际测量的值作为标准13)共有4个16位定时器,两个与传统的8051单片机兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但是有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可以实现2个16位定时器14)3个时钟输出口,独立波特率发生器可以在P1.0口输出时钟,其中选用这款单片机最主要的原因还是因为它本身具有A/D转换功能,而不需要外接其它A/D转换模块,这样不但使电路看起来更加精致和简单,与此同时也降低了制作成本,节约了时间,并且能够存储足够多的动画,达到非常好的效果15) 2路PWM/PCA---可以用来当做2路D/A使用---可以用来当做另外的两个定时器---可以用来再实现2个外部中断16)通用全双工异步串行口,由于此单片机是增强型MCS-51,可以再使用别的一些软件来达成多串口的目的17)封装:当I/O接口不够用的时候,可以用2到3根普通I/O口外接来扩展I/O端口,还可以用A/D作为按键扫描来节省I/O/,或者用双CPU,这样做的话就可以实现多线通信,STC12C5A60S2单片机各个引脚功能不同,P0、P1、P2和P3口在常规状态下是双向I/O口,其余的有的引脚有双功能。