光立方论文.docx

上传人:b****5 文档编号:8044429 上传时间:2023-01-28 格式:DOCX 页数:25 大小:2.33MB
下载 相关 举报
光立方论文.docx_第1页
第1页 / 共25页
光立方论文.docx_第2页
第2页 / 共25页
光立方论文.docx_第3页
第3页 / 共25页
光立方论文.docx_第4页
第4页 / 共25页
光立方论文.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

光立方论文.docx

《光立方论文.docx》由会员分享,可在线阅读,更多相关《光立方论文.docx(25页珍藏版)》请在冰豆网上搜索。

光立方论文.docx

光立方论文

 

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灯的阴极连接在一起就可以了。

图2

1.23DLED光立体的优越性以及主要应用

1.3DLED以其功耗低,寿命长,亮度高,视角大,可视距离远等优点而具有极为广阔的发展前景。

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

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

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

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

展现不同的立体效果。

可以说它是变幻无穷的。

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

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

这些技术在我们的生活中随处可见,电影院,会议场合,舞台设计,以及各种娱乐场所。

2设计课题硬件系统的设计

2.1LED管脚搭接方法:

为了保持整体的通透性,立体感,3dLED光立方没有设计额外的支架,所有的搭接直接用LED的管脚。

1.水平折弯:

基本徒手可以完成,将512个LED灯的阴极都弯曲成90度,为了焊接的统一性,折弯时尽量保持角度的统一,还要注意区分阴极与阳极,由于我们做的是共阴,所以将阴极折弯。

如图3

图3LED灯弯曲成90度

2.垂直折弯:

为了让阴极摆出发光体一部分,使其与上下的LED搭接,可利用尖嘴钳对LED进行垂直折弯。

3.由点到线:

自备一块木板,在上面打8*8的64个孔,每个孔的间距大约为2cm,将折好的LED插入一排后,其阴极正好搭接在一起,进行焊接,图4,实现LED共阴。

因为LED很脆弱,很容易因为焊接时温度过高而烧坏LED,所以每次焊接完后都要去检查每个灯是否会亮,这是很重要的一步。

图4

4.由线到面:

将焊接好的一条一条的LED平躺在平面上,将露出的LED的阴极折成直角,使其可以与前后同一层LED的阴极进行焊接,实现8*8平面的层共阴。

如图5,当你插好64个灯珠后,还要在做些准备工作,只要弯折的长度适合,管脚的末端会多出几毫米搭接到临近的弯折点上,,给所有的焊点先上锡,时间不要过久,免得烧坏了灯珠。

管脚上锡搞好后,再焊接时只需一手用镊子夹稳管脚,在用烙铁烫一下就好了,镊子夹的时候就先矫正了灯珠位置,确定无误后,再那烙铁补上这最后一下,第一个平面焊接好后就是这个样子:

图5

5.又面到体:

将焊接好的一个一个LED面叠起来,进行焊接,如图6,实现8*8*8光立方。

一个平面搞定后,不要觉得这样就完成了,把灯取下来之前,先用万用表检查,电子表有专门检查二极管的档,比机械的要方便些。

确保你焊接好的灯珠都是会亮的,焊接的时候,难免有的灯珠被烫坏或者有正负短接的地方;把灯珠在模板上取下的时候,要比较温柔,这个想必大家都会,取下之后呢,在仔细检查正面和背面有没有焊锡不够的地方(因为在模板上你只焊接到了一面,另一面肯定有焊锡不够、不均匀之处),小心的补上焊锡,这样以后就不会开焊了!

要不然组装后,你再想补修开焊点,那想都不要想,所以,现在不要怕麻烦,有耐心,慢慢来

需要说明的是,从第二层开始,就得注意层面的摆放了,上一层的管脚向下弯折90度后,慢慢的向下放,保证管脚不能和下一层的短接。

第一二层没什么问题,第三次开始,就开始有难度了,越往后越难,因为管脚越来越密集,上层的管脚往下插的时候,要需要长时间的镊子矫正,才能完全放稳。

图6

6.8*8*8光立方大功告成。

如图7。

LED的焊接,把2个LED的负极焊接在一起。

注意焊接时候速度要快,要不然温度会损害LED.还有就是LED的负极不要碰到正极。

图7

7.焊接完毕通电后效果图,图8。

图8LED通电后效果图

 

2.2设计课题电路原理图

2.3设计课题电路PCB图

2.4设计课题电路元器件布局图

2.5设计课题元器件清单

元件名称

型号

位号

数量

电阻

200

R1

1个

电阻

1K

R2,R3

2个

电容

33pF

C1,C2

2个

极性电容

22uF

C3

1个

芯片

74HC573

U0~U7

8片

下载口

CON2

XZK1,XZK2

2个

电源插座

CON2

Ja

1个

USB

CON2

USB

1个

四脚开关

SW-PB

S1,S2a~S4a

4个

六脚开关

SW-SPST

SS

1个

晶振

12MHz

Y1

1个

单片机

STC89C516RD

U1

1片

电源指示灯LED

LED

D9

1个

芯片

ULN2803

2803

1片

插针

CON8

J0~J7,Jc,Jout

10个

单排插

CON9

Jb

1个

LED光立方

LED

512个

3设计课题软件系统的设计

3.13dLED光立方代码图形

显示正方体6x6x6

翻转

正方体拼图

3.2设计课题软件系统程序清单

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodef2[8][8]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00,

0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//显示正方体6x6x6

ucharcodef7[8][8]=

{0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,

0x00,0x1E,0x21,0xC1,0xC1,0x21,0x1E,0x00,};//花瓶1

ucharcodef9[8][8]=

{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,

0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,

0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,

0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,

0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//旋转1

ucharcodef21[8][8]=

{0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,

0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,

0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,

0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,

0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,

0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,

0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,

0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//翻转1

ucharcodef26[8][8]=

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,

0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,

0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,

0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//爆炸1

ucharcodef36[8][8]=

{0xE7,0xA5,0xE7,0x00,0x00,0xE7,0xA5,0xE7,

0xA5,0x00,0xA5,0x00,0x00,0xA5,0x00,0xA5,

0xE7,0xA5,0xE7,0x00,0x00,0xE7,0xA5,0xE7,

0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,

0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,

0xE7,0xA5,0xE7,0x00,0x00,0xE7,0xA5,0xE7,

0xA5,0x00,0xA5,0x00,0x00,0xA5,0x00,0xA5,

0xE7,0xA5,0xE7,0x00,0x00,0xE7,0xA5,0xE7,};//正方体拼图1

*/

/********************************

函数名:

毫秒延时函数

函数功能:

产生毫秒级延时

函数入口:

cout需延时的毫秒数

函数出后:

*********************************/

voidDelay_1ms(uintcount)

{

uintj;

while(count--!

=0)

{

for(j=0;j<80;j++);

}

}

/********************************

函数名:

send_num

函数功能:

将一个面的数据送入74ls573

函数入口:

*p需要送入数据的起始地址

函数出后:

*********************************/

voidsend_num(uchar*p)

{

uchari,j=0xFE;

for(i=0;i<8;i++)

{

P0=j;

P1=*(p+i);

j=_crol_(j,1);

}

P0=0XFF;

}

/********************************

函数名:

send_dis

函数功能:

将8各面的数据给别送入573并动态显示出来

函数入口:

函数出后:

*********************************/

voidsend_dis1()

{

uchari,k,j=0x01;

for(k=0;k<5;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f1[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=5;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f1[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis2()

{

uchari,k,j=0x01;

for(k=0;k<2;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f5[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=2;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f5[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis3()

{

uchari,k,j=0x01;

for(k=0;k<2;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f7[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=2;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f7[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis4()

{

uchari,k,j=0x01;

for(k=0;k<12;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f9[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=5;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f9[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis5()

{

uchari,k,j=0x01;

for(k=0;k<5;k++)

{

for(i=0;i<5;i++)

{

P2=j;

send_num(f21[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=5;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f21[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis6()

{

uchari,k,j=0x01;

for(k=0;k<4;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f26[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=4;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f26[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis7()

{

uchari,k,j=0x01;

for(k=0;k<7;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f29[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=7;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f29[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis8()

{

uchari,k,j=0x01;

for(k=0;k<2;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f36[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=2;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f36[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis9()

{

uchari,k,j=0x01;

for(k=0;k<3;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f38[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=3;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f38[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidsend_dis10()

{

uchari,k,j=0x01;

for(k=0;k<8;k++)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f41[i]+k);

Delay_1ms

(2);

j=_crol_(j,1);

}

}

Delay_1ms

(1);

for(k=8;k<0;k--)

{

for(i=0;i<8;i++)

{

P2=j;

send_num(f41[i]+k);

Delay_1ms

(1);

j=_crol_(j,1);

}

}

}

voidmain()

{

while

(1)

{

send_dis1();

Delay_1ms

(1);

send_dis2();

Delay_1ms

(1);

send_dis3();

Delay_1ms

(1);

send_dis4();

Delay_1ms

(1);

send_dis5();

Delay_1ms

(1);

Delay_1ms

(1);

send_dis6();

Delay_1ms

(1);

send_dis7();

Delay_1ms

(1);

send_dis8();

Delay_1ms

(1);

send_dis9();

Delay_1ms

(1);

send_dis2();

Delay_1ms

(1);

send_dis4();

Delay_1ms

(1);

send_dis7();

Delay_1ms

(1);

send_dis4();

Delay_1ms

(1);

send_dis1();

Delay_1ms

(1);

send_dis8();

Delay_1ms

(1);

}

}

 

4设计结论

4.1设计总结与使用说明

通过这次3dLED光立方的设计,加强了我们动手、思考和解决问题的能力。

在整个设计过程中,我们通过这个方案包括设计了一套电路原理和PCB连接图,和芯片上的选择。

这个方案总共使用了STC89C516RD,ULN2803,74HC573八块。

我觉得做光立方设计的同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。

通过动手实践让我们对各个元件映象深刻。

认识来源于实践,实践是认识动力和最终目的,实践是检验真理的唯一标准。

3dLED光立方通过程序控制512个LED灯的亮灯与灭灯,从而显现出不同的形状,因为是8*8*8光立方,我们把它拆成8个面,每个面64个灯,或说成64束。

我们要控制这64个灯使其自由变换,把64个LED灯的阴极连接在一起,然后控制每个层依次点亮,达到我们预期的效果。

4.2电路的调试和调试出现的问题

完工以后抱着很激动的心情,编写了调试的程序,主要是检查全部的灯是否会亮,但是单把程序烧写进去之后,发现有一列没有点亮,还有一列灯中有个别灯不亮,还好两列的都在边上,进而如果换灯也相对容易,我们用排除法来检查电路,首先是检查灯的线路是否虚焊,断路,果真有一列的是断路了,把它接上后这一列也亮了,还剩下另外一列,我们用同样的方法来做,从驱动电路到显示的都没有问题,而且

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1