光立方原理图

合集下载

光立方原理

光立方原理

光立方原理1. 简介光立方是一种3D显示技术,利用光学原理和立方体结构,可以呈现逼真的立体图像。

光立方通常由透明的立方体结构和投影系统组成,能够在空中投射出立体图像,给人一种身临其境的感觉。

本文将介绍光立方的工作原理、应用场景以及发展前景。

2. 工作原理光立方的工作原理基于透明立方体和投影系统。

首先,在立方体内部使用多边形镜面反射结构,将投影系统的图像反射到不同的面上。

然后,通过透射和反射效果,立方体能够形成逼真的立体图像。

最后,通过适当的灯光照射,使得投影出的立体图像更加清晰和真实。

光立方主要依靠以下原理来实现立体图像的生成:•投影原理:使用投影系统将图像投影到立方体的反射面上。

•反射原理:立方体的多边形镜面反射结构将投影的图像反射到不同的方向。

•透射原理:由于立方体的透明性,图像可以通过立方体透射到空气中形成立体图像。

3. 应用场景光立方由于其独特的显示效果,在各个领域都有着广泛的应用。

以下是一些常见的应用场景:3.1 艺术展览光立方能够呈现逼真的3D图像,使得艺术展览更加生动和吸引人。

艺术家可以通过光立方展示设计作品、雕塑等,为观众带来不同寻常的观赏体验。

3.2 教育和培训光立方可以用于教育和培训领域,比如地理教学、生物展示等。

通过光立方,学生可以观察到地球的形状、动植物的结构等,增强对知识的理解和记忆。

3.3 广告宣传商家可以利用光立方来展示产品,吸引消费者的注意。

立体的广告图像更加生动,可以有效地吸引消费者的眼球,提升品牌和产品的关注度。

3.4 游戏娱乐光立方在游戏娱乐领域也有着广泛的应用。

游戏开发者可以利用光立方技术来打造逼真的虚拟场景,使得玩家身临其境,提升游戏的沉浸感。

4. 发展前景随着技术的不断进步,光立方显示技术有着广阔的发展前景。

未来,光立方有望在以下方面实现进一步的突破:•分辨率提升:随着投影技术和显示屏技术的改进,光立方的分辨率将会提升,呈现出更加逼真和清晰的立体图像。

光立方设计制作(全过程、带程序连接)

光立方设计制作(全过程、带程序连接)

摘要之前在网上看了一些光立方的演示视频,被它那些立体感吸引了。

想到自己学单片机也这么久了,于是乎就想做一个玩玩,同时可以复习一学期以来自己的编程能力和动手的能力,一举两得是一件很不错的事情。

向朋友要了一些资料,就开工了。

光立方顾名思义就是一个立方体,采用的是8*8*8的模式,整个立方大概是16cm*16cm*18cm(长.宽.高)的样子,主要分为三个模块:主控模块、驱动模块、显示模块;我所做的光立方,主控电路采用的主控芯片是STC12C5A60S2芯片,驱动电路是采用我们常用的74HC573数字芯片,以及ULN2803达林顿管。

关键字:光立方 74HC573 STC12C5A60S2 ULN2803电路原理图:图1.电路原理图元件的选择:(1)由于光立方的程序量比较大,而且要求相对比较高,因此经过考虑之后我们决定用51系列的增强型芯片STC12C5A60S2,选择的理由:1.无法解密,采用第六代加密技术;2.超强抗干扰;3.内部集成高可靠复位电路,外部复位可用可不用;4.速度快,比8051快8-12倍;(2)由于灯的个数比较多,因此所需要的电流相对也比较大,所以选择ULN2803,ULN2803是八重达林顿,1 至8脚为8路输入,18 到11脚为8路输出。

驱动能力500MA \50V。

应用时9脚接地,要是驱动感性负载,10脚接负载电源V+。

输入的电平信号为0,或5V。

输入0是,输出达林顿管截止。

输入为5V电平时,输出达林顿饱和。

输出负载加在电源V+和输出口上,当输入为高电平时,输出负载工作;(3)由于在刚刚接触锁存器的时候,就接触了74HC573,对它的使用也比较成熟,因此在驱动部分使用了熟悉的74HC573,其优点有:1.高阻态;就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;2.数据锁存;当输入的数据消失时,在芯片的输出端,数据仍然保持;3.数据缓冲; 加强驱动能力;(4)LED灯的选择,出于外观和整体的形状美观,个人推荐雾面蓝光方型LED。

光立方设计

光立方设计
CUBE8
光立方
Include
架构
原理 组装制作
3D编程 实现效果 改进创新
3D光立方原理
8*8*8 3D光立方如右 图所示:每个面64个灯,共有 8层。只要控制这64个灯使其 能够自由变换,然后再通过控 制每层依次点亮即可,由于我 们眼镜的视觉暂留,使我们感 觉看到的东西是一起亮的。这 样我们就可以看到了一个完整 的个体。
3D光立方设计本身技 术并不复杂,但是也不是 很简单,更多的是需要耐 心
64束/每层
设计电路
学过点阵都知道,如果要 控制8*8点阵,需要16个引脚, 那么有8个8*8点阵,就要用8 个引脚来充当各个8*8点阵的 “开关”即可。电路的基本原 理就知道了。那么如何让一个 引脚来当64个灯的“总开关” 呢?
1个
12 音频线 3.5mm 立体声 1 条
13 miniUSB 线
1条
说明 底板、立板各1 片 扁平长引脚式 LQFP48 贴片封装 制作呼吸灯
滤波电容 1.5m 长 MiniUSB 转USB-A,1.5m 长
焊接
需要说的是,一定注 意每个灯的焊接时间和焊 接齐度,焊接整齐度直接 影响整个制作效果。
只要将64个灯阳极或阴极 连在一起,再接到这个引脚上 即可。
还有个问题:那就是如何 用16个引脚来控制这64个等 的另外64个引脚呢?
采用HC573暂存的方法,来 分别把64个灯的亮灭信息储存,然后 再一起输出到灯上,这样通过查询相应 芯片的型号可以确定基本电路。
电路原理
573的64个输出引脚控 制前面所述每一个面的64 个灯。
每一层的二极管是共 阴的。连在一起的是阴极。
焊接如右图所示。
3D编程
CUBE8 两个独特优势:

光立方电路原理图

光立方电路原理图

这是用595的电路,材料清单如下:1:8个74HC595(封装为DIP—16);2:2个74HC04(封装为DIP—14);3:2个30PF的瓷介电容;一个10UF的电解电容;一个220UF的电解电容;4:一块89C516(单片机);5:每个芯片配套的座子;6:24或者12MHZ的晶振;7:1个1K,1个10K(都是碳膜电阻);8:一个按键开关,3个按键;9:最好买600个灯,因为焊接的时候可能会损坏(颜色随便你自己选择);10:你可以考虑买4个铜柱;备注:上面的3个按键可以只要1个,另外2个是我设计的外部中断,你可以不用它;同时我自己有开发板,所以我没有设计程序下载电路,全以最节省的方案为前提,你只要把单片机在开发板上下载好程序,再插到光立方上就好了。

同时画电路时每个芯片的电源引脚隐藏了,(单片机是20接负,40接正;595是8接负,16接正;7404是7接负,14接正。

),还有注意电解电容的极性。

关于你接电源的问题是你自己的事,我是在板子上面安装了一个USB的接口供电。

这是用573的电路,材料清单如下:1:8个74HC573(封装为DIP—20);2:2个74HC04(封装为DIP—14);3:2个30PF的瓷介电容;2个10UF的电解电容;一个220UF的电解电容;4:一块89C516(单片机);5:每个芯片配套的座子;6:24或者12MHZ的晶振;7:1个1K,2个10K,8个500欧(都是碳膜电阻);8:一个按键开关,1个按键;9:最好买600个灯,因为焊接的时候可能会损坏(颜色随便你自己选择);10:你可以考虑买4个铜柱;备注:画电路时每个芯片的电源引脚隐藏了,(单片机是20接负,40接正;573是10接负,20接正;7404是7接负,14接正。

),还有注意电解电容的极性。

关于你接电源的问题是你自己的事,我是在板子上面安装了一个USB的接口供电。

还有就是这个电路我没有画全,因为全部都一样的:就是:1:把8个573的2—9引脚对应接在一起;2:把8个573的11脚接在一起;总结:上面的2个电路,每个595或者573都有8个引脚没有接,那是用来接灯的负极的,8*8=64;7404的八个引脚是来接灯的正极的,8层就是8个引脚;同时最好把芯片按顺序依次的排列和连接,这样可以大大方便写程序。

光立方制作+程序

光立方制作+程序

光立方教程今天,给大家带来光立方的制作教程,基于本人制作的经验,给各位想要做的朋友分享制作过程。

对于第一次制作的朋友,我们要先制作好一个日程表,如下图:我们要弄好一个计划,就好像单片机运行程序一样。

当然,废话少说。

接下来,我们需要一份购买材料的清单如上图所示,我们需要购买的万能板需要购买18*30的规格。

这样子才有足够的空间去安装我们的电子元件。

首先,我们需要用万能板作为骨架,每2cm*2cm就要焊接一个排针,上下左右间隔一样。

不过对于初学者来说,一次性焊接64颗排针有点困难,所以我们需要用胶布把每一颗排针固定好,然后上焊,当然这是一个快捷的方法,也适合所有的初学者当我们把排针固定好后,我们只需要把板子翻过来焊接就可以了。

接下来,我们要把每一颗led灯折弯后侧着放置在排针中。

从左到右,从上至下的安放,安放好后,我们只需要把他们的脚焊接即可。

折弯时记住使用镊子折弯。

效果图如下图所示显而易见,这是非常需要考焊功的活,各位制作时候要注意节点与节点之间的间距,并且注意焊点不要点太多的锡,会影响做出来的效果与美观。

接下来,我们把弄好的8排led插在万能板上,注意:我们要注意每排之间的间隔。

下一步,我们需要在把每排led的共阴极连接在一起,一共8层,每层都要连接好,当我们把每层连接好后,我们要在每层的末端或者初始端接一条输出线,作为共阴极连接UNL2803。

当然,我们连接UNL2803的前提是先把芯片接好。

小编我直接把芯片焊接在板子上,这种方法对于初学者来说不可取,需要弄芯片底座,不然芯片烧掉了就很难拆下来了。

接下来我们要按照电路图接线路了(是不是很开心,终于可以接线路了,好戏在后头),下面是74HC573集成电路的接法:首先我们先分析一下原理图:74HC573的1D~8D都连接在一起,然后再接到单片机的P0.0~P0.7端口;1Q~8Q分别连接每排的共阳里,就是焊接在电路板上的光立方引脚;至于LE要分别接到单片机的P2.0~P2.7。

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

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

目录摘要 .......................................................................................................................................................... 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)。

光立方电路原理图与其所需元件

光立方电路原理图与其所需元件
while(1)
{
daojishi();//倒计时7—0
for(j=0;j<50;j++)
{
suofang();//方框缩放
}
//xingdian();//星点
void xingdian()
{
uchar x,y,z;
for(z=0;z<8;z++)
for(y=0;y<8;y++)
{
for(x=0;x<8;x++)
{
if((y==0)||(y==2)||(y==4)||(y==6)||(y==1)||(y==3)||(y==5)||(y==7))
{
P1=y1[y];
5:每个芯片配套的座子;
6:24MHZ或者12MHZ的晶振;
7:1个1K,1个10K(都是碳膜电阻);
8:一个按键开关,3个按键;
9:最好买600个灯(一包也可以,比较便宜),因为焊接的时候可能会损坏,颜色随便你自己选择;
备注:上面的3个按键可以只要1个,另外2个是我设计的外部中断,你可以不用它;同时我自己有开发板,所以我没有设计程序下载电路,全以最节省的方案为前提,你只要把单片机在开发板上下载好程序,再插到光立方上就好了。同时画电路时每个芯片的电源引脚隐藏了,(595是8接负,16接正;7404是7接负,14接正。),还有注意电解电容的极性。我是在板子上面安装了一个USB的接口供电。
P2=z1[r];
Set595(x1[0]);
dis595();
}
}
}
for(e=0;e<8;e++)
{
for(r=0;r<8;r++)

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

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

目录第一章绪论............................................................................................................................................... - 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 单片机光立方的设计并阐述了整体设计思路,介绍了系统软硬件设计的主要方法。

基于74hc595n的光立方

基于74hc595n的光立方

首先上595光立方的原理图:1.单片机部分:2.按键和ULN2803部分:3.74hc595n部分:8个的样子:4.灯座部分:64个的样子:与灯座相连的电阻,可根据自己的LED来选。

只要不超过LED的耐压值即可。

然后是参考的PCB图:芯片连接部分:先来讲解一下原理图:首先是51单片机的由晶振电路和复位电路组成的单片机的最小系统。

74hc595的8个输出脚与灯座相连,8个595的Ds、STcp、SHcp 接到一起,分别接到单片机的IO口。

8个595的MR直接接到VCC。

595的控制引脚OE分别与单片机IO口相连,控制595是否被选中,低电平有效。

然后介绍一下,如何焊接LED等的问题。

一种是长方体雾状的LED灯:焊接参考:/link?url=SXmoc9lSihpyBXd6qBQ0XsWZaoBV UykrQawWIJKRz4WmNMohW_Z1WrSQOGYdeIzNLNJdNcwueAAyzgiIE bPhQFBaMZJj-GwVZ79TZ1BVTQ7另一种是圆形灯:焊接参考:/view/fb02d823a8114431b90dd84d.html两种方式焊接都注意把灯的正极焊接到灯座上,灯座可以用圆形的排母或者普通的排针。

示例程序:#include "reg52.h"#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit stcp1=P3^6;sbit ds1=P3^5;sbit shcp1=P3^7;void delay(){int i,j;for(i=0;i<50;i++)for(j=0;j<1000;j++);}void QR0_5951(uchar num1){uchar j;for (j=0;j<8;j++){num1=num1<<1 ;ds1=CY;shcp1=1;//上升沿发生移位shcp1=0;}}void OUT_5951()//将移位寄存器内的数据锁存到输出寄存器并显示{stcp1=0;stcp1=1;//上升沿将数据送到输出锁存器stcp1=0;}void tuan1(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0xfe); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xfd); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xfb); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xf7); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xef); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xdf); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xbf); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x7f); //yOUT_5951();delay();P2=0x00;}void tuan2(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0x01); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x02); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x04); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x08); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x10); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x20); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x40); //y OUT_5951();delay();P2=0xff; //z全部选中QR0_5951(0x80); //yOUT_5951();// delay();P2=0x00;}void tuan3(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0x80); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x40); //yOUT_5951();delay();P2=0xff; //z全部选中QR0_5951(0x20); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x10); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x08); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x04); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x02); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x01); //yOUT_5951();delay();P2=0x00;}void tuan4(){P1=0x00; //x全部选中QR0_5951(0xff); //y全部选中OUT_5951();P2=0x01; //zdelay();P2=0x00;P2=0x02; //zdelay();// P2=0x00;P2=0x04; //zdelay();// P2=0x00;P2=0x08; //zdelay();/// P2=0x00;P2=0x10; //zdelay();// P2=0x00;P2=0x20; //zdelay();// P2=0x00;P2=0x40; //zdelay();// P2=0x00;P2=0x80; //z// delay();// P2=0x00;}void tuan5(){P1=0x00; //x全部选中QR0_5951(0xff); //y全部选中OUT_5951();P2=0x80; //zdelay();// P2=0x00;P2=0x40; //zdelay();// P2=0x00;P2=0x20; //zdelay();// P2=0x00;P2=0x10; //zdelay();/// P2=0x00;P2=0x08; //zdelay();// P2=0x00;P2=0x04; //zdelay();// P2=0x00;P2=0x02; //zdelay();// P2=0x00;P2=0x01; //zdelay();// P2=0x00;}void main(){P1=0x00; //xwhile(1){// tuan1();tuan2();tuan3();tuan4();tuan5();}}。

光立方的工作原理

光立方的工作原理

光立方的工作原理
光立方由若干个二极管led灯以立方体形式搭建,4*4*4、8*8*8、16*16*16甚至更多,又由单片机、锁存器、译码器等电器元件驱动,形成立体动画效果。

其中8*8*8光立方最为常见。

例如:8*8*8光立方是由512个发光二极管按照立方体的方式搭建焊接起来的,有层共阴束共阳和层共阳束共阴两种方案,每一层有8*8个发光二极管,共8层。

用c语言编译单片机程序使自定义动画效果得以实现。

光立方工作原理
光立方简单讲就是用单片机控制很多规则排列的LED的亮和灭。

1、单个LED的控制方式
先了解单个LED的控制方式,可以是将正极接电源,负极通过一个限流电阻连接至单片机的某个IO口。

IO口输出低电平时,LED就亮,反之,LED灭。

光立方工作原理

光立方工作原理

光立方工作原理
光立方是一种通过使用激光束和透明材料来展示3D图像的设备。

它利用了强大的激光光源和高速旋转的透明材料来创建立体效果。

光立方的工作原理是这样的:首先,一个强大的激光光源会发出一束单色激光束,通常是红、绿、蓝三种基本颜色的激光束。

这个激光束会经过一系列的光学元件,如镜片和反射器,来对激光进行调整和控制。

接着,激光束会被聚焦到透明的旋转材料上。

这个旋转材料通常是一个透明的棱镜或圆柱体,在设备的顶部被高速旋转。

旋转材料的旋转速度非常快,通常在几千到几万转每分钟之间。

当激光束照射到旋转材料上时,由于材料的旋转,光线会以一种特殊的方式通过材料,形成由无数个点组成的图像。

这是因为旋转材料的折射率会导致光线在旋转材料内部发生折射和反射,从而产生三维效果。

最后,这些点通过快速扫描技术被不断地投影到空间中的不同位置,形成一个连续的立体图像。

观察者只需站在适当的位置,就能看到一个栩栩如生的3D图像,就好像它们悬浮在空中一样。

总之,光立方利用激光束和旋转的透明材料来创建立体图像。

通过激光的调整和控制,以及旋转材料的折射和反射特性,光
立方能够产生逼真的3D效果,为观察者带来沉浸式的视觉体验。

光立方制作方法

光立方制作方法

光立方的制作01、LED灯珠,最好选择长脚5mm,雾状(乳状)蓝色的灯珠,效果更好。

记住,长脚的,不要短脚的,3mm的也可以,当然也能自己换喜欢的颜色,仅仅是推荐蓝色。

(话说我就是短脚的,结果效果很不好。

)价格在70-90元一包,一包1000个,店家不会散卖的。

02、74HC573,8个,记得要1-2元左右的,太便宜的可能是用过返新的,IC芯片都是一分钱一分货,便宜的全是旧的,别老想着贪便宜。

(建议买十个,多买两个以备特殊情况。

)03、UNL2803,1个,这个便宜,要0.5-1.5元的就行,同样建议买俩。

04、IC座,9个,不过一般商家不会单卖,一卖就得卖10或15个,这个可以多买点,记得买20P的。

一般0.2-0.6元一个。

05、焊接飞线,自己有导线也行,一定要结实耐用,准备10米,一定要多准备,我仅仅焊接一个9cm*12cm的驱动板就用了6米的飞线。

06、电阻,基本上100-500欧都可以,我用的是220欧的,用来接在UNL2803上,给LED 分压。

不过最好是100欧的,其实2803不加电阻也完全可以。

一般都是卖一包,很稍有单卖的,一包12-18元,买精度低的就行,精度低的便宜,12-15左右。

07、排针,用来焊接,这个就不多说了。

0.5元一排,40个。

08、杜邦线,8p的4个,2p的1个,建议多买点,以备不时之需。

0.25元一根,记得买30cm 的,短的不好使,8p的一般0.8-1.2元。

09、3节一体的电池盒,用于装3节5号南孚电池。

1.2-2元。

10、南孚电池,一板,5号的。

这个木有价格木有图。

11、洞洞板,初学者建议用面积比较大的,15cm*20cm的,别买太小的,不好焊接。

(话说我用的是9cm*12cm的,结果焊的时候那个纠结啊。

)稍微好点的8-16元,用单面覆铜的就行。

12、木板,用来做模具。

尽量找光滑的,容易打眼的,塑料板也行。

13、电烙铁,30W或40W的,如果有经济条件最好买防静电的,带焊台,手头不宽裕那就买十几块一个的普通电烙铁就行。

光立方设计电路原理图

光立方设计电路原理图

光立方设计电路原理图7月的时候,做出了光立方,在杂志、网络发布以来,广受好评,这段时间来,收到很多网友的建议,因此决心把原有的光立方硬件升级,让电路更简单,程序更简洁,以前的设计是由16个IC驱动的,好处是有可切换的坐标系(详见《无线电》杂志第十期),但16个IC和128根连接线的工作量实在不小,虽然控制程序只有60多行,但硬件的复杂让很多初学者望而却步。

一直以来,我都在思考做什么样的设计给大家,就拿光立方来说,为了程序的简洁、易于理解,我的硬件电路不同于美国的原版设计,也因为8位单片机的局限性,这也是当时我能想到最好的解决方案。

程序的简化是硬件的复杂弥补的。

可是工作室的这种设计行吗?就效果而言是可行的,后来很多网友都仿做了出来,可我觉得不行。

美国原版的设计电路要比我的简单,那么有没有硬件更简单且程序更短的?抱着这种想法,我在11月初开始了设计,一周的时间,竟然完成了。

现在的光立方,硬件更简单,只有5个IC控制,不想用245的可以去掉,改为4个IC控制。

这样硬件电路焊接比起之前的设计,大为简化,连接线也由以前的128根改为72根(和美国原作一样)。

控制端口也有以前的三组改为2组16个。

程序不但没有加长,反而更加简短。

也不需要外接电源,USB供电即可。

我实物用的是手机充电器供电,5V500ma,效果很好。

这次的改进,唯一的缺点就是失去了可切换的坐标系,程序虽然简单,但需要一段时间理解。

接下来就是秉承工作室传统,开始图文解说。

因为改了硬件,动画代码应该也做修改的,以为工作繁忙,就没时间做这部分了,所以大家看到的图案是与之前比,是上下颠倒的,有耐心的同学自己可以修改动画字符,每行的动画字符左右对称调换位置即可。

这次的视频里,我特意修改的动画切换时间,而且这次也用的是非增强型单片机,就是想证明下,8位非增强型单片机,一样可以有这种效果,之前有网友评论说速度不够快,估计是没看程序就这么说了。

先是原理图(点击看高清源图):。

光立方的工作原理_基于74hc573的8-8-8光立方LED的控制方式

光立方的工作原理_基于74hc573的8-8-8光立方LED的控制方式

光立方的工作原理_基于74hc573的8*8*8光立方LED的控制方式光立方由若干个二极管led灯以立方体形式搭建,4*4*4、8*8*8、16*16*16甚至更多,又由单片机、锁存器、译码器等电器元件驱动,形成立体动画效果。

其中8*8*8光立方最为常见。

例如:8*8*8光立方是由512个发光二极管按照立方体的方式搭建焊接起来的,有层共阴束共阳和层共阳束共阴两种方案,每一层有8*8个发光二极管,共8层。

用c语言编译单片机程序使自定义动画效果得以实现。

光立方工作原理光立方简单讲就是用单片机控制很多规则排列的LED的亮和灭。

1、单个LED的控制方式先了解单个LED的控制方式,可以是将正极接电源,负极通过一个限流电阻连接至单片机的某个IO口。

IO口输出低电平时,LED就亮,反之,LED灭。

如果我们想驱动任意位置的led,我们只需要在该位置led所使用的列线接地,行线接上+V 即可。

学过单片机的朋友们,都知道数码管是怎么点亮的,其中有位选和段选之分,通过扫描来实现所有数码管能正常工作以实现显示我们想要的数字。

点阵也一样,尽管是8*8的点阵,如果我们让整体能随意显示图案,那也需要用扫描的方式才能够实现,否则,无法实现对其精准的控制。

所谓扫描,就是说,我们一次只能让一行排或者一竖排的灯亮。

每次只能这么点,8次为一个周期,从左至右依次点一次,那么循环起来,我们看到的就是完整的图像了。

2、每一层LED的控制方式若按照单个LED的控制方式,每个LED需要占用单片机的一个IO口,控制100个LED 就需要100个IO口。

那么,有没有一种方式,可以用较少的IO口,控制较多的LED呢?答案是肯定的,这种方法,就是扫描驱动电路。

光立方 (2)

光立方 (2)

电子课程设计——光立方学院:电子信息工程学院专业、班级:姓名:学号:指导教师:李小松2013年12月一:设计任务和要求 (2)二:总体框图和所用到的器件 (9)三:器件选择 (11)四:功能模块 (13)五:总体pcb图: (15)六:实物图及心得体会 (16)一:设计任务和要求光立方顾名思义是一个立方体,我采用的是8*8*8的模式,主要分为三个都是纯手工焊接。

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

利用512个LED组成的8x8x8的立方体结构,每层共64个LED采用共阴的接法,一共8层,利用锁存器74HC573与驱动器ULN2803的硬件组合而成。

用控制器控制焊接好的8*8*8光立方是之显示不同的图案,具体步骤如下:1.将8*8*8个发光二极管焊接好。

焊接方法如下:1.先将二极管弯曲成如图1-1-1所示形状阳极,先弯曲90度,在弯曲90度。

这样做是为了和上面的二极管连接时做到无缝隙。

阴极,直接弯曲90度。

这样做为了和横排的二极管相连接。

进行八次上诉焊接后接下来就是将8束的LED焊接起来。

在从点到线时是将所有LED的阴极连在一起,而这次则是将所有LED阳极弯折并依次连接,焊接好的二极管示意图如图1-1-1所示。

注意:由于焊接过程中将产生静电容易将LED烧坏,因此本项工作完成后请认真检查每个灯的好坏,可以用万用笔等工具检测。

图1-1-1 二极管的弯曲示意图2.将八个一组的二极管阴极连到一起,依次焊接。

焊接时最好放在模板上。

这样可以保证灯之间的距离。

否则在进行搭焊时,容易不匹配进行八次上诉焊接后接下来就是将8束的LED焊接起来。

在从点到线时是将所有LED的阴极连在一起,而这次则是将所有LED 阳极弯折并依次连接,连接好的二极管如图1-1-2所示,注意:由于焊接过程中将产生静电容易将LED烧坏,因此本项工作完成后请认真检查每个灯的好坏,可以用万用笔等工具检测。

cube8制作(完整:含原理图、代码)

cube8制作(完整:含原理图、代码)

PPPPIIIIUUUU111111113210000000001111PPP0123IIIR9RR1780000x7110CCCRRRR1OOORR5789R579101000xxPPP7I7IIR9RR1780000x722PPP02IIIPPP111000000786
1 2 3 4 5 6 7 8
CYOY11 24M
STC12C5A60S2
PIC901 PIC902
104 GND 40 PIU399040 Y0
PIU9039
38 Y1
PIU9038
PIU397037 Y2 36 Y3
PIU395036 Y4
PIU9035
PIU394034 Y5 33 Y6
PIU392033 Y7
PIU9032
31
PIU9031
30 PIU299030 PIU298029 Z7
PIU9028
27 NZLZ66
PIU9027
26 NZLZ55 PIU295026 NZLZ44 PIU294025 Z3
PIU9024
23 NZLZ22 PIU292023 NZLZ11 PIU291022 NZLZ00
PIU9021
CCOC11 CCOC22 CCOC33 CCOC44
PIC102 104 PIC202 104 PIC302 104 PIC402 104
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
PIU1202 3
PIU103
PIU1404 PIU1505
6
PIU106
7
PIU107
PIU1808 PIU1909
PIU6012 PIP608
1 2 3 4 5 6 7 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档