3D8光立方制作

3D8光立方制作
3D8光立方制作

3D8光立方制作

目录

一、摘要 (1)

二、关键字 (1)

三、引言 (2)

四、正文 (2)

(一)、主要元件介绍 (3)

1、STC12C5A60S2 (3)

2、74HC573 (3)

3、ULN2803 (4)

(二)、工作原理 (5)

1、驱动模块原理 (6)

(三)、元器件选择 (7)

(四)、制作、调试 (8)

1、制作 (9)

2、调试 (11)

五、结束语 (13)

六、参考文献 (12)

七、附录(程序) (13)

光立方

一、摘要:

本设计采用8*8*8 的模式,硬件主要分为三个模块:主控模块、驱动模块、显示模块。采用的主控芯片为STC12C5A60S2 芯片,驱动电路是采用我们常用74HC573数字芯片。数组 OUT[0]代表光立方从第一层 D0 到第八层 D0 的数据,以此类推数组 OUT[1] 代表光立方从第一层 D1 到第八层 D1 的数据。本设计采用C语言编程,利用单片机控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。

二、关键字: LED光立方,74HC573,STC12C5A60S2,ULN2803

三、引言:

光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世,这是新中国成立六十周年国庆晚会最具创意的三大法宝之首,自从国庆60周年联欢晚会开始演练后,一个全新的名词“光立方”,吸引了全国人民的关注。国庆联欢晚会三样法宝,光立方为最,“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙。“光立方”可以根据爱国歌曲的不同内容,展示不同的造型和图案,具有丰富的视觉效果。

四、正文

(一)主要元件介绍:

1、STC12C5A60S2

STC12C5A60S2/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字节

5)片上集成1280字节RAM

6)外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿

中断的PCA模块,Power Down模式可由外部中断唤醒,INT0/P3.2,

INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2 ), CCP1/P1.4 (也可通过寄存器设置到P4.3)。

7)A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)

8)通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器

或PCA软件实现多串口

9)STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通

过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3)

10)工作温度范围:-40 - +85℃(工业级) / 0 - 75℃(商业级)

2、74HC573

74HC573是八进制 3 态非反转透明锁存器。器件的输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出,当输入的数据消失时,在芯片的输出端,数据仍然保持

3、ULN2803

ULN2803是八重达林顿管,1至 8脚为8路输入,18 到 11脚为8路输出。驱动能力为 500MA \50V。应用时9脚接地,10脚接负载电源V+,输入的电平信号为0或5V。输入0是输出达林顿管截止,输入为5V电平时,输出达林顿饱和。输出负载加在电源V+和输出口上,当输入为高电平时,输出负载工作,该电路为反向输出型,即输入低电平电压,输出端才能导通工作。

(二)工作原理

有8个8*8点阵,再用8个引脚来当充当各个8*8点阵的“开关”。只要将64个灯阳极连在一起,在连到这个引脚上。采用了hc573暂存的方法,来分别把64个灯的亮灭信息存到这个上面,然后再一起输出到灯上,573的64个输出引脚控制前面所述每一个面的64个灯;而每层灯的阴极全连接在一起接入uln2803,由

uln2803控制的每一个层灯。通过单片机主控芯片STC12C5A60S2来控制所有灯的亮灭,从而控制P0、P1、P2实现控制X、Y、Z空间立体控制来显示我们所需要显示的现象。

图1 8层面图2 64个灯孔

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

1、驱动模块原理

图3 74HC573驱动

图4 原理图

uln2803的1~8脚接主控芯片的P1口(1~8脚),数据由主控芯片P2口输入经过uln2803从11~18脚输出,实现通过uln2803来驱动每一层。每个573的2~9脚(数据输入)都连接在一起连接到主控芯片的P0口(32~39脚),数据从主控芯片P0口输送到573,573的1脚是3态输出使能输入(低电平)一般都与地相接,573的11脚(锁存使能输入)都连接在一起连接到主控芯片的P2口(21~28脚)作为锁存控制。当573的11脚为高电平和2~9脚为高电平时,573的12~19脚(3态锁存输出)为高电平,驱动一竖面的灯亮,当11脚为高低平、2~9脚为低电平时,573的12~19脚则就为低电平,从而灯灭,当11脚为低电平时,2~9脚不管高低电平,12~19脚的输出不变。主控芯片通过573+uln2803来驱动控制哪竖面的哪一层的哪个灯的亮灭。R1~R16是限流电阻。

(三)元器件选择

1)由于光立方的程序量比较大,而且要求相对比较高,因此用 51 系列的增强型芯片 STC12C5A60S2,选择的理由:1.无法解密,采用第六代加密技术; 2.超强抗干扰;3.内部集成高可靠复位电路,外部复位可用可不用;4.速度快,比 8051 快8-12 倍。

2)由于灯的个数比较多,因此所需要的电流相对也比较大,所以选择ULN2803。3)驱动部分使用了熟悉的74HC573,其优点有 1.高阻态,就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;2.数据锁存;当输入的数据消失时,在芯片的输出端,数据仍然保持;3.数据缓冲、加强驱动能力。

4)LED 灯的选择,出于外观和整体的形状美观,采用的是雾状蓝光的 LED 灯,由于高亮灯比雾状灯刺眼,所以选择雾状灯。

图 5 雾状LED灯

(四)制作、调试

1)制作:

1、我们首先完成的是驱动电路

驱动电路由于线比较多电路比较复杂,所以我们有比较多的跳线,由八个74HC573组成的,如下图:

图6 573驱动连接反面

图7 573驱动连接正面

2、主控电路

主控电路是最简单的电路,主要是最小系统,其中还有一个控制层的驱动芯片焊接在主控板上,如图所示:

图8 最小系统

3、显示模块

首先我们用一块比较大万能板,在上面做了8*8个点的标志,间距为2mm然后把灯按统一形状掰好管脚。然后固定在在万能板上进行焊接,焊接完如下图:

图9 灯的焊接

焊好的如图:每次焊完以后都要去检查测试每个灯是否会亮,很重要的步骤

图 10

把八个面做好以后就是把八个面一层一层的叠起来,在这里要注意的是必须用尺子量好各个角度的高度(我们做的间距为2厘米),必须使每一个面在同一水平面上,如下图所示:同样的每次焊完以后都要去检查测试每个灯是否会亮

图11 8层灯

显示部分反面,如下图:

图12

2)调试:

主要是检查全部的灯是否正常工作:

(1)程序烧写进单片机之后,发现有两列没有点亮,还好两列的都在边上,进而如果换灯也相对容易,我们用排除法来检查电路,首先是检查灯的线路是否虚焊,断路,果真有一列的是断路了,把它接上后这一列也亮了。

(2)还剩下另外一列,我们用同样的方法来做,从驱动电路到显示的都没有问题,而且在输入那一列的电压也正常,我们就想不通了,是什么原因呢?我们怀疑是不是有灯坏了,我们又一个一个的检查了这一列灯,但是全部都会亮,经过很细心的检查,发现有一个灯的亮度和其他的灯亮度完全不同,相对比较暗,于是我们把它换了下来,接上另外一个,果然是哪个灯的问题,原来是由于这灯的阻抗很大,把那一列的电平都拉低了,使灯无法亮起来。

(3)在调试过程中,有一竖面的灯完全不亮,第一个想法是灯没有供电,检测供电电路法发现没有问题,于是我找到573这一部分,因为这一部分跳线较多且线路密集,逐一测量发现线头间短路了,从新焊接后测试,故障顺利排除。

(4)在调试过程中有几个灯一直不亮,用万用表欧姆档测量发现灯已经烧坏,拆下坏掉,但是有2个灯是存在虚焊问题,从新焊接后正常工作。

五、结束语

经过这次的设计,让我们更明确了团队合作的要领和精神,更明白了焊接技术的重要性,也让我们对单片机编程的进一步了解,为了这次设计我们找了查找了很

多资料,包括一些对该设计元件的作用、工作电压等资料的了解,感谢百度和Google

公司。他们的搜索功能庞大、快捷又免费,让我们很方便地搜索到了我们所需要的设计资料和丰富的知识。此次毕业设计,是我大学学习中遇到过的时段最长、涉及内容最广、工作量最大的一次设计。用老师的一句话概括就是这次毕业设计相当如是把以前的小课程设计综合在一起的过程,只要把握住每个小课设的精华、环环紧扣、增强逻辑,那么这次的任务也就不难了。同时感谢老师对我们的指导和为我们理清思路从而使我们更快我完成设计。

六、参考文献

【1】祈伟 杨亭.单片机C51程序设计教程与实验北京航空航天大学出版社2006年1月

【2】张瑞玲.单片机原理与应用西北工业大学出版社2010年12月

【3】赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003.

七、附录(源程序)

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar display[8][8];

/*rank:A,1,2,3,4,I,心,U*/

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,0x 66,0x60,0x38,0x60,0x60,0x66,0x3c,0x30,0x38,0x3c,0x3e,0x36,0x7e,0x30,0x3 0,0x3c,0x3c,0x18,0x18,0x18,0x18,0x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c ,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7e,0x3c};

/*the "ideasoft"*/

uchar code table_id[40]={0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x 89,0x00,0xf8,0x27,0x27,0xf8,0x00,0x8f,0x89,0x89,0xf9,0x00,0xff,0x81,0x8 1,0xff,0x00,0xff,0x09,0x09,0x09,0x01,0x0,0x01,0x01,0xff,0x01,0x01,0x00} ;

/*railway*/

uchar code dat[128]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0x f4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8, 0x4,0x25,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x 79,0x59,0x39,0x35,0x31,0x2d,0x29,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x9 6,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x6f,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,0x31,0 x2d,0x29,0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf 4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0 x4};

/*railway 2*/

uchar code dat2[28]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0x

f4,0xf8,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8, 0x4};

/*railway 3*/

uchar code dat3[24]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0 x66,0x65,0x64,0x63,0x62,0x61,0x60,0x50,0x40,0x30,0x20,0x10};

/*3p char*/

uchar code table_3p[3][8]={0xff,0x89,0xf5,0x93,0x93,0xf5,0x89,0xff,0x0e,0x1f,0x3f, 0x7e,0x7e,0x3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18};

/*initializtion

That is to initialize the program .

It is write to set the timer in c52 mcu.

So the program can renovate the led_3d_cube in fixed time use the interrupt function.*/

void sinter()

{

IE=0x82;

TCON=0x01;

TH0=0xc0;

TL0=0;

TR0=1;

}

void delay5us(void) //误差 -0.026765046296us STC 1T 22.1184Mhz

{

unsigned char a,b;

for(b=7;b>0;b--)

for(a=2;a>0;a--);

}

void delay(uint i)

{

while (i--) delay5us();//12t的mcu 注释这个延时即可

}

/*To judge the num bit判断数字点*/

uchar judgebit(uchar num,uchar b)

{

char n;

num=num&(1<

if (num)

n=1;

else

n=0;

return n;

}

/*To figure out the round number计算出的轮数*/

uchar abs(uchar a)

{

uchar b;

b=a/10;

a=a-b*10;

if (a>=5)

b++;

return b;

}

/*To figure out the absolute value找出绝对值*/

uchar abss(char a)

{

if (a<0)

a=-a;

return a;

}

/*The function can comparat the character.

And remove the big one to the back.*/

void max(uchar *a,uchar *b)

{

uchar t;

if ((*a)>(*b))

{

t=(*a);

(*a)=(*b);

(*b)=t;

}

}

/*The function is to figure out the max number and return it.*/ uchar maxt(uchar a,uchar b,uchar c)

{

if (a

a=b;

if (a

a=c;

return a;

}

void clear(char le)

{

uchar i,j;

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

{

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

display[j][i]=le;

}

}

void trailler(uint speed)

{

char i,j;

for (i=6;i>=-3;i--)

{

if (i>=0)

{

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

display[j][i]=display[j][i+1];

}

if (i<4)

{

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

display[j][i+4]=0;

}

delay(speed);

}

}

void point(uchar x,uchar y,uchar z,uchar le)

{

uchar ch1,ch0;

ch1=1<

ch0=~ch1;

if (le)

display[z][y]=display[z][y]|ch1;

else

display[z][y]=display[z][y]&ch0;

}

void type(uchar cha,uchar y)

{

uchar xx;

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

{

display[xx][y]=table_cha[cha][xx];

}

}

/*The first variable is the distance from the midpoint.

The second is the layer.

the third is the flash speed of the time between each two point.

The forth is the enable io,it controls weather draw or claen.*/

void cirp(char cpp,uchar dir,uchar le)

{

uchar a,b,c,cp;

if ((cpp<128)&(cpp>=0))

{

if (dir)

cp=127-cpp;

else

cp=cpp;

a=(dat[cp]>>5)&0x07;

b=(dat[cp]>>2)&0x07;

c=dat[cp]&0x03;

if (cpp>63)

c=7-c;

point (a,b,c,le);

}

}

void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le) {

char t,a,b,c,a1,b1,c1,i;

a1=x2-x1;

b1=y2-y1;

c1=z2-z1;

t=maxt(abss(a1),abss(b1),abss(c1));

a=x1*10;

b=y1*10;

c=z1*10;

a1=a1*10/t;

b1=b1*10/t;

c1=c1*10/t;

for (i=0;i

{

point(abs(a),abs(b),abs(c),le);

a+=a1;

b+=b1;

c+=c1;

}

point(x2,y2,z2,le);

}

void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)

{

uchar i,j,t=0;

max(&x1,&x2);

max(&y1,&y2);

max(&z1,&z2);

for (i=x1;i<=x2;i++)

t|=1<

if (!le)

t=~t;

if (fill)

{

if (le)

{

for (i=z1;i<=z2;i++)

{

for (j=y1;j<=y2;j++)

display[j][i]|=t;

}

}

else

{

for (i=z1;i<=z2;i++)

{

for (j=y1;j<=y2;j++)

display[j][i]&=t;

}

}

}

else

{

if (le)

{

display[y1][z1]|=t;

display[y2][z1]|=t;

display[y1][z2]|=t;

display[y2][z2]|=t;

}

else

{

display[y1][z1]&=t;

display[y2][z1]&=t;

display[y1][z2]&=t;

display[y2][z2]&=t;

}

t=(0x01<

if (!le)

t=~t;

if (le)

{

for (j=z1;j<=z2;j+=(z2-z1))

{

for (i=y1;i<=y2;i++)

display[i][j]|=t;

}

for (j=y1;j<=y2;j+=(y2-y1))

{

for (i=z1;i<=z2;i++)

display[j][i]|=t;

}

}

else

{

for (j=z1;j<=z2;j+=(z2-z1))

{

for (i=y1;i<=y2;i++)

{

display[i][j]&=t;

}

}

for (j=y1;j<=y2;j+=(y2-y1))

{

for (i=z1;i<=z2;i++)

{

display[j][i]&=t;

}

}

}

}

}

void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le)

{

uchar i;

max(&z1,&z2);

if (fill)

{

for (i=z1;i<=z2;i++) line (x1,y1,i,x2,y2,i,le);

}

else

{

line (x1,y1,z1,x2,y2,z1,le);

line (x1,y1,z2,x2,y2,z2,le);

line (x2,y2,z1,x2,y2,z2,le);

line (x1,y1,z1,x1,y1,z2,le);

}

}

void poke(uchar n,uchar x,uchar y)

{

uchar i;

for (i=0;i<8;i++) point(x,y,i,judgebit(n,i));

}

void boxtola(char i,uchar n)

{

if ((i>=0)&(i<8)) poke(n,0,7-i);

if ((i>=8)&(i<16)) poke(n,i-8,0);

if ((i>=16)&(i<24)) poke(n,7,i-16);

}

void rolldisplay(uint speed)

{

uchar j;

char i,a;

for (i=23;i>-40;i--)

{

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

{

a=i+j;

if ((a>=0)&(a<24))

boxtola(a,table_id[j]);

}

delay(speed);

}

}

void roll_apeak_yz(uchar n,uint speed)

{

uchar i;

switch(n)

{

case 1: for

(i=0;i<7;i++){display[i][7]=0;display[7][6-i]=255;delay(speed);}break;

case 2: for (i=0;i<7;i++){display[7][7-i]=0;display[6-i][0]=255;delay(speed);}break ;

case 3: for

(i=0;i<7;i++){display[7-i][0]=0;display[0][i+1]=255;delay(speed);}break ;

case 0: for

(i=0;i<7;i++){display[0][i]=0;display[i+1][7]=255;delay(speed);}break;

}

}

void roll_apeak_xy(uchar n,uint speed)

{

uchar i;

switch(n)

{

case 1: for(i=0;i<7;i++){line(0,i,0,0,i,7,0);line(i+1,7,0,i+1,7,7,1);delay(spee d);} break;

case 2: for (i=0;i<7;i++){line(i,7,0,i,7,7,0);line(7,6-i,0,7,6-i,7,1);delay(speed); }break;

case 3: for (i=0;i<7;i++){line(7,7-i,0,7,7-i,7,0);line(6-i,0,0,6-i,0,7,1);delay(spe ed);}break;

case 0: for (i=0;i<7;i++){line(7-i,0,0,7-i,0,7,0);line(0,i+1,0,0,i+1,7,1);delay(spe ed);}break;

}

}

void roll_3_xy(uchar n,uint speed)

{

uchar i;

switch(n)

{

case 1: for (i=0;i<8;i++)

{

box_apeak_xy (0,i,0,7,7-i,7,1,1);

delay(speed);

if (i<7) box_apeak_xy (3,3,0,0,i,7,1,0);

};

break;

case 2: for (i=0;i<8;i++)

{

box_apeak_xy (7-i,0,0,i,7,7,1,1);

delay(speed);

if (i<7) box_apeak_xy (3,4,0,i,7,7,1,0);

};

break;

case 3: for (i=0;i<8;i++)

{

box_apeak_xy (0,i,0,7,7-i,7,1,1);

delay(speed);

if (i<7) box_apeak_xy (4,4,0,7,7-i,7,1,0);

}

break;

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

{

box_apeak_xy (7-i,0,0,i,7,7,1,1);

delay(speed);

if (i<7) box_apeak_xy (4,3,0,7-i,0,7,1,0);

}

}

}

void trans(uchar z,uint speed)

{

uchar i,j;

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

{

for (i=0;i<8;i++) display[z][i]>>=1;

delay(speed);

}

}

void tranoutchar(uchar c,uint speed)

{

uchar i,j,k,a,i2=0;

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

{

if (i<7)

box_apeak_xy (i+1,0,0,i+1,7,7,1,1);

box_apeak_xy (i2,0,0,i2,7,7,1,0);

a=0;

i2=i+1;

for (j=0;j<=i;j++) a=a|(1<

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

{

display[k][3]|=table_cha[c][k]&a;

display[k][4]|=table_cha[c][k]&a;

}

delay(speed);

}

}

void transss()

{

uchar i,j;

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

{

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

display[i][j]<<=1;

}

}

/*From now on,the function below is to display the flash.*/

void flash_1()

{

clear(0);type(1,0);delay(60000);type(2,0);delay(60000);type(3,0);del ay(60000);type(4,0);delay(60000);

delay(60000);clear(0);rolldisplay(30000);type(0,7);delay(60000);trai ller(6000);delay(60000);

}

void flash_2()

{

uchar i;

for (i=129;i>0;i--)

{

cirp(i-2,0,1);

delay(8000);

cirp(i-1,0,0);

}

delay(8000);

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

{

cirp(i,1,1);

delay(8000);

cirp(i-8,1,0);

}

delay(8000);

for (i=129;i>0;i--)

{

cirp(i-2,0,1);

delay(8000);

}

delay(8000);

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

{

cirp(i-8,1,0);

delay(8000);

}

delay(60000);

}

void flash_3()

{

char i;

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

{

box_apeak_xy(0,i,0,7,i,7,1,1); delay(20000);

if (i<7)

box_apeak_xy(0,i,0,7,i,7,1,0); }

for (i=7;i>=0;i--)

{

box_apeak_xy(0,i,0,7,i,7,1,1); delay(20000);

光立方设计原理

黎明途电子 一.光立方原理 你的思维有多宽,光立方的动画就有多多。我猜想大家做光立方都是为了能 随性所欲的控制每一个灯珠,来实现自己想的一些精美动画。那么,让我们从光立 方的原理开始入手。一讲到原理,估计很多同学就头痛了。这里借鉴在网上找的 一些资料来帮助大家理解光立方的原理。先从点阵的点亮原理说吧,如图所示 这是一张led 的点阵图,如果我们想要点亮任意位置的led,我们只要在该位置 led所使用的列线接地,行线接上+V即可。 学过单片机的朋友,都知道数码管是怎么点亮的,其中有位选和段选之分, 通过扫描来实现所有数码管能正常工作以实现我们想要的数字。 点阵也一样,尽管是8*8的点阵,如果我们让整体能随意显示图案,那也需 要用动态扫描的方式来实现,否则无法实现对其精准的控制。所谓动态扫描,就是说我们一次只能让一行排或者一竖排的灯亮。每次只能这么点亮,8次为一个周期,从 左至右依次点一次,那么循环起来,我们看到的就是完整的图像了。

在这里,一共有8层。 想必大家对光立方的连接已经有了一定的了解,纵向一束的负极性引脚是要连在一起, 而横向一层的正极性角连在一起。从扫描的角度去说,那一次也只能够点亮一层。 这里光立方的一层有64个灯,我们想成之前那个8*8的平面点阵。光立方的每一层虽然有64个灯,但是我们会有64跟线分别连接到这些灯上,从而实现一次性的对64个灯进行控制。我们将一个立体画面从下往上分为8层,每次扫面一层这样一副画面就完成了。通常单片机引脚较少,我们采用74hc595芯片进行拓展(74hc595原理请参考595用户手册)。下面来一张电路图,此图是用595进行拓展的。 (这张图是模块原理图的截图,接线不是很清晰,可以参考原理图) 在图中,数据通过串行的方式,分别传送到每一个 74hc595中,再内部控制器储存这些数据,从而实现一层64个灯同时的点亮。 描述一个固定画面的显示,需要硬件执行8次扫描的过程。 1.将第一层64个点的数据传入8个74hc595中,控制uln2803层控制芯片打开第 一层开关,使第一层点亮,这个时候,其他层是灭的。 2.等待时间t。 3.熄灭第一层,开始向74hc595中传输第二层的数据,锁存,开启第二层总控制 开关,点亮第二层。 4.等待时间t。 .......

光立方制作教程

五一长假漫漫,时间很充分,正好有时间去干那些因为时间不足而搁置已久的一些想法,首先想到的是做一个光立方,器件年前就买了,因为时间问题被长久搁置了。 之前论坛已经有人晒过,不过有的只是作品展示,在此我将详细的向大家解析一下光立方的制作流程,望大家喜欢。先上资料: 首先是前期准备工作,器件的选取,我的器件清单如下:

LED选取:如果有条件的话可以使用7色彩灯,视觉效果将会更好。或者是长方形发光二极管,方便焊接。 制作前先按照下图对小灯进行弯折处理(如果看不懂的话,请努力发挥自己的空间想象能力,之后就会豁然开朗的),这是一个漫长而痛苦的过程,建议每天睡前折一些,我断断续续干了近十天吧!(五一前虽然大块时间没有,但是每晚折小灯的时间绝对是有的)实际焊接时,请注意变通,每一层都会有一行需要多弯一下的,以实现共阴处理。

主要器件如下:

先在万用板上规划一下光立方小灯之间的间隔,建议2CM为宜,用铅笔或者彩笔在板子上确定64个点,以方便下一步操作。 找一块木板,最小是20*20CM,我找的时候费了点劲,采用爆破拆出来的,然后把万用板放在木板上,四角用大头钉固定(以确保扎点时位置不变),用圆规进行采点,记住是64个点,是7*7的方格。不要因为计算错误,以适用万用板而导致光立方间隔过密。 采用手钻打孔,不直接用大钻,是防止打孔过程中,孔洞打偏。

大钻扩孔,钻头选择要适宜,防止LED小灯插上后不稳,或者插上焊完取不出来,我采用的是2.8/2.9的钻头。游标卡车是为了测钻头大小的。

焊接时,建议一列一列的焊接,(层共阴,列共阳)这样操作起来比较容易,防止全部插上在焊接时,过多的小灯产生阻碍,由于我是左撇子,所以我是从右向左焊接。这是焊接好的第一层。焊完之后,现将小灯阳极管教理顺,与共阴平面呈垂直关系,以方便之后焊接。将LED点阵层起下的时候,为美观起见,请注意不要破坏小灯的相对位置及高低层次,(为了增强光立方坚固度,建议,每层上跨接一些硬些的细铜丝)。 要牢记:焊完一层后切记要记得检测是否有小灯在焊接过程中损坏。检测方法如下:层接地,即阴极接地,用一个串有1K限流电阻的导线接5V,然后依次接小灯阳极。

基于单片机的光立方设计毕业设计

基于单片机的光立方设 计毕业设计 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

毕 业设计 基于51单片机的光立方设计 基于51单片机的光立方设计 摘要 本文详细的介绍了光立方的搭建过程,以51系列的单片机STC12C5A60S2为主要的控制芯片,由512个LED 通过共阴的形式连接起来,由74HC595为扩展单片机的I/O 口,用ULN2803为驱动电路,形成一个规格为8*8*8(长,宽,高)14cm*14cm*20cm 立方 体,还介绍了这款芯片的特点和使用方法及在调试过程中遇到的软件和硬件方面的问题 及解决方法,详细的阐述了光立方的设计原理和架构方法,对光立方目前存在的意义也进行了详细的介绍。 关键词:光立方;74HC595;单片机;ULN2803;LED Light CuBe Based on 51 single ChiP miCroComPuter ABstraCt This PaPer introduCes the ProCess of Building Light CuBe, with 51 Series MCU STC12C5A60S2 as the main Control ChiP, ConneCted By 512 LED By CO Yin form, By 74HC595 for the exPansion of the MCU I/O Port, using ULN2803 as the drive CirCuit, the formation of a sPeCifiCation for 8*8* 8 (length, width, height) the 14Cm*14Cm*20Cm CuBe, also introduCes the CharaCteristiCs and methods of use of the ChiP and software and hardware in the ProCess of deBugging ProBlems and solutions, desCriBed in detail the design PrinCiPle and arChiteCture method Light CuBe, the CuBe existed at Present signifiCanCe have also Been introduCed in detail. Keywords: Light CuBe; 74HC595; STC12C5A60S2; ULN2803; LED 目录 姓 名: 梁泉明 学 号: 班 级: 10信科一班 专 业: 信息科学与技术 所在系: 电子信息工程系 指导教师: 郝芸

光立方设计

毕业设计题目: 学院: 专业: 届别: 学号: 姓名: 指导教师: 填写日期:2012-12-28

【摘要】本设计立体点阵系统,具有3D的显示效果,系统STC60S2单片机作为控制核心对灯的亮暗进行控制。采用74HC138和74HC595分别对每个灯进行控制,使8*8*8立体点阵显示出不同的花样,给人立体效果的展示。系统初始设定显示一种模式,当遥控的切换键按下时,可以切换不同花样。本系统还可以用遥控来对灯的亮度进行控制。 【关键词】立体点阵 STC60S2单片机 74HC138 74HC595 遥控器

第1章引言 随着人们生活水平的不断提高, 3D效果的欣赏已经成了人们的追求,美轮美奂的观赏让人醉心不已,给人带来无比宽松舒适的美感。3D技术的将来必有广泛应用。仅3D打印技术这一还处在萌芽阶段的技术就已经在世界掀起了巨大波澜。就现有来看3D技术已经应用于军工、航空航天、水下作业、模拟分析等高端领域。随着科技发展3D技术的成本也会越来越低,相信3D电视将来也会像液晶电视一样走入普通家庭。3D技术在未来还可以应用于教学,医学,地下采矿,空中导航等领域。 但就目前的发展,3D还不能够普及到人们的生活中,这也就萌发了人们对于3D的设计。因此,本课题以发光二极管的搭建的8*8*8立体点阵,是一个长、宽、高由8×8×8个LED 灯组成的真实3D立方体显示器。采用单片机STC60S2为核心编程技术,对发光二极管进行控制,使其显示出不同的花样,带给人未来3D技术的科技体验。 第2章设计任务及要求 2.1 设计任务 设计一个8×8×8的LED立体点阵,可以用红外遥控器进行花样的切换,能够进行亮度的调节。 2.2设计要求 (1)用红外遥控器进行控制。 (2)有多种的花样可以相互切换。 (3)可以对亮度进行调节。 第3章硬件系统总体设计 3.1 系统结构框图设计 经过分析,本系统主要是由电源模块、单片机主控模块、74HC595列驱动模块、74HC138行驱动模块、LED点阵显示模块,给出了系统电路原理框图如图所示。

光立方制作常见问题(光立方使用教程)

光立方制作常见问题 1、问:led面与面正极连接到最后一面的正极怎么连接? 答:剪掉最后一面led正极就可以了。 2、问:怎么连接音乐? 答:用我们用的音频线连接手机或者电脑输入音乐,光立方要调到音乐模式(开机后先按K1键,再按K4键进入音乐模式),如果光立方动画没有跟着音乐闪,可以调节输入音量的大小,观看光立方的变化。 3、问:为什么光立方不能播放音乐? 答:光立方本身是不带音乐的,有音乐频谱功能,用手机输入音乐,外接音箱就可以了。 4、问:为什么音乐输出有杂音? 答:光立方需要的电流比较大,灯亮得比较多的时候,需要很大的电流,会影响到音频的信号,使用2A电源供电就可以解决问题了。 5、问:上位机怎么用? 答:上位机功能是使用上位机软件在电脑上操控光立方,连接步骤:(1)、连接下载器,用四个杜邦线连接到光立方对应的接口上(把鼠标放在计算机图标上右键点管理,在里面可以看到下载器的端口) (2)、光立方调到上位机模式(开机先按K1键,再按K2键进入上位机模式)(3)、打开上位机软件

下载器与光立方的连接线: GND 接 GND 5v或者VCC 接 5v或者VCC RXD 接 RXD TXD 接 TXD 由于光立方的电流会影响到下载器,所以5V那条线不用接,直接用电源线供电,下载的时候单片机需要冷启动( 意思就是单片机需要断电后再重新上电才能下载),把电源开关当做冷启动就行,下载器连接好到,需要断开开关再 重新上电就可以下载了,上位机的连接方法一样(不用冷启动,不用拨电源线再插上),用电源线直接供电就行。 6、问:测试主板的时候有灯常亮或者不亮是什么问题? 答:主板焊接问题,请重新加锡焊接下对应的贴片芯片就可以了,不清楚焊接哪个芯片的话,麻烦看资料里面的原理图。 7、问:光立方全部制作好了,之前使用好好的,现在发现有一层的灯跟着其它层一起亮,其它层亮的时候那一层也跟着微亮是怎么原因呢? 答:那一层有哪个灯坏了,找出那个灯换掉就可以了。查找方法:(1)看那层有没有灯不亮的或者亮得不一样的,如果有把它换掉就可以了(2)如果没有第一种情况,那就用拔除法查找,先一排一排的拆掉那一面的正极,每拆一排的时候都要测试还有没有之前那种情况。 8、问:光立方自动死机重启,只运行到一点动画就重启了,重新上电也一样,是不是程序有问题啊? 答:亲不用当心,这不是程序问题,这是电源供电问题,请换一个2A电流电源供电就可以(用电脑供电电流达不到要求)

8x8x8的光立方设计

《单片机技术》课程设计说明书 8*8*8的光立方 学院:电气与信息工程学院 学生姓名: 指导教师:职称讲师 专业:电气工程及其自动化 班级: 学号: 完成时间:2015年07月

摘要 光立方不仅可以像发光二极管点阵一样显示平面的静态或动态画面,还可以显示立体的静态或动态画面,打破了传统的平面显示方案。同时又增加了显示的花样和立体图案显示效果,可以广泛用于传媒信息显示和各种装饰显示,为将来显示技术的进步和发展指导了方向,光立方显示比发光二极管点阵更具有视觉效果,而且画面图案更加非富多彩。 本设计包括硬件系统的设计和软件系统的设计。其中硬件系统包括核心控制器AT89S52单片机;驱动电路模块:ULN2803作为层驱动,74LS573作为行驱动和列驱动;时钟信号电路模块:采用普通晶体时钟源,其中晶体用12MHZ的石英晶振;显示模块:由512个发光二极管组成;供电模块:使用5V移动电源作为供电电源;键盘模块:由四脚按键组成。软件系统包括系统监控程序模块,光立方显示程序模块,键盘程序模块。通过软件编程控制数据下载到单片机完成设计图案的显示。软件采用自上而下的模块化设计思想,使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。 关键词: AT89S52单片机;74HC573锁存器;8×8×8LED显示;ULN2803

目录 1 设计要求与方案 (1) 1.1 设计目的 (1) 1.2 设计要求 (1) 1.3 设计方案 (1) 2 光立方的工作原理 (2) 2.1 模块简介 (2) 2.2 工作原理 (3) 3 方案选择 (4) 3.1 电源的选择 (4) 3.23D显示核心控制器 (4) 3.3I/O口扩展芯片的选择 (5) 3.4LED发光二级管 (5) 4 硬件整体设计概述及功能分析 (7) 4.1 系统概述 (7) 4.2 单片机简介 (8) 4.3 时钟电路设计 (8) 4.4 复位电路设计 (9) 4.574HC573芯片介绍 (9) 4.6 ULN2803芯片介绍 (10) 5 硬件电路设计 (11) 5.1 硬件电路元件分布图 (11) 5.2 LED灯焊接方法 (11) 5.2.1 焊接前准备工作 (11) 5.2.2 焊接 (11) 5.3 整体实物图 (12) 6 主程序设计 (14) 6.1 程序流程框图 (14) 6.2 显示程序的设计 (15) 7 设计结果分析 (16)

光立方设计报告

光立方设计报告

一、要求 1、利用单片机控制8*8*8的LED灯显示3D图形。 2、进行实物焊接,调试。 二、设计思路 首先,8*8*8光立方是由8个相同的面组成,每一个面有64个蓝色LED灯,不同的图案又这些点连接而成。如果我们想要驱动任意一个LED灯,我们让列接地,行接正极就可以实现,因此整个立方体列共阴极,行共阳极。实际上这个就是控制512个LED 的不同灯点亮。 三、电路设计 主要分为主控模块、驱动模块、显示模块 1、主控模块 主控模块我们选用STC12C5A60S2

图1 主控电路 其中C1、C2为去耦电容防止高频干扰2、驱动模块

图2 行驱动电路 可以用一个3—8译码器选择8个不同的共阳极层,但是译码器的驱动能力差,中间可以用双P沟道MOS管APM4953来增强驱动能力。这样就可以控制点亮不同的层。 图3 列驱动电路 我们可以用5026来选择不同的列,一片5026就可以控制16列,

一共有64列,因此只需要用到4片。在每一片5026电源端上加一个电容,主要防止高频干扰。 3、显示模块 每一个LED的负端都连接在一起,构成一列;每一层的LED 的阳极连在一起。一层一列刚好可以确定一个LED灯。这样就 可以通过主控电路和驱动电路来点亮所要点亮的LED,组成我 们想要的图案。 四、元器件选择 (1)由于光立方的程序量比较大,而且要求相对比较高,因此我们决定用51系列的增强型芯片STC12C5A60S2,选择的理由: 1.无法解密,采用第六代加密技术; 2.超强抗干扰; 3.内部集成高可靠复位电路,外部复位可用可不用; 4.速度快; (2)4953的作用:行驱动管,功率管。 每一显示行需要的电流是比较大的,要使用行驱动管,每片4953可以驱动2个显示行,其内部是两个CMOS管,1、 3脚VCC,2、4脚控制脚,2脚控制7、8脚的输出,4脚控 制5、6脚的输出,只有当2、4脚为“0”时,7、8、5、6 才会输出,否则输出为高阻状态。 (3)SN74HC245DW,8路双向总线收发器,具有三态输出;74HC245八路总线收发器被设计用于数据总线之间的异步双向通信。

51单片机电子设计制作444彩色光立方

课程设计开题报告 课程名称:单片机应用实训教程 设计题目: 51单片机电子设计制作4*4*4彩色光立方学院: 专业班级: 学号: 姓名: 指导教师: 设计时间:

目录 1. 设计要求 (3) 2. 设计方案 (4) 3. 电路图 (5) 3.1 单片机程序 (6)

设计要求 1.设计论文中心突出,内容充实,论据充分,论证有力,数据可靠,结构紧凑,层次分明,图表清晰,格式规范,字迹工整,结论正确。 2.设计制作一个4*4*4的三维发光二极管显示方阵,能够通过编写程序来实现对每一个发光二极管控制,从而来显示多种多样的图案。控制显示输出至少二十种显示效果。 3.通过大量编写程序调试实验现象结果分析研究数据形成规律,对规律总结得出结论并初步确定算法。

设计方案 本设计根据二极管点阵的原理由单片机I/O口控制点亮不同的二极管从而组成出不同的画面,根据人眼的视觉暂留现象即当物体移去时视觉神经对物体的印象不会立即消失而是要延续0.1-0.4秒的时间,来设置每幅画面的延迟时间是连续的一系列画面呈现动态。每一个层面的二极管阳极接在一起受一路I/O口的控制,实际电路中该路I/O 口输出的控制信号通过5V继电器的吸合和断开来控制的,再输入发光二极管的阳极使其驱动。每一个二极管的阴极分别受单片机扩展后的I/O控制。每个灯都是由片选端口和控制端口共同决定亮或灭。因此,我们可以随意的来点亮光立方中任意一处的灯,来构建多种多样的图案。

/* *程序功能:cube4光立方彩色版本,实现各种动画效果,配套取模软件 *作者:牛盾 * */ #include #include #define uint unsigned int #define uchar unsigned char #define MAX_Delay 8 #define MIN_Delay 1 sbit S_1 = P1 ^ 1; sbit S_2 = P1 ^ 2; unsigned int pwm; unsigned char TimeDelay = 10; unsigned char Mode = 1; unsigned char code tabP2[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //扫描uchar s=0; void DELAY_MS (uchar i){ // unsigned int i; // while( --a != 0){ // for(i = 0; i < 600; i++); // } uchar x,j; for(j=0;j0;x--) for(y=z;y>0;y--); } void timer1_init() { TMOD |= 0x10; TH1 = 0; TL1 = 0; ET1 = 1; TR1 = 1; EA = 1;

8×8×8光立方毕业设计说明书

毕业设计说明书题目:单片机8*8*8光立方

摘要 随着人们物质生活水平的提高,人们对精神生活的追求也愈加强烈,对信息的渴求已成为了人们必不可少的需要,更加简捷与新颖的信息传递方式无疑会给人们带来耳目一新的感受。而现代工具务求简捷化、便携化,因此,光立方显示装置的到来,必将会给人们带来一种新的方便的文化传递方式。 单片机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灯

目录 引言 (2) 一.系统设计方案 (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)

8x8x8-光立方设计报告

目录 摘要............................................................................. .. (1) Abstract....................................................................... (1) 第一章绪论............................................................................. (2) 光立方的意义: (5) 目的 (5) % 章节安排............................................................................. .. (5) 第二章基础软件技术介绍............................................................................. (6) proteus软件简介 (6) Protel Dxp技术简介 (6) Protel Dxp软件介绍 (6) Protel Dxp基本技术 (6) keil_μVision4软件 (7) 章节小结 (7) 】 第三章设计方案............................................................................. . (8) 总体设计方案 (8) 元件的选择 (9) 本章小结 (10) 第四章基础硬件设计............................................................................. (11) 74HC573芯片 (11) STC12C5A60S2 (11) ULN2803 ........................................................................... .. (13) !

基于单片机的光立方设计

XXXX大学本科课程设计 题目:基于单片机的光立方设计姓名: 学号: 院(系): 专业、年级: 指导教师: 二○XX年X月

一、设计任务 在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。新型的大屏幕要求显示画面色彩鲜艳,立体感强,静如油画,动如电影,这些设计广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。本设计旨在利用人眼视觉暂留的特点,通过AT89C52单片机控制一个由64盏LED灯组成的四层光立方模拟3D显示效果,实现三维显示。 该光立方具有以下功能: 1)能单独点亮每一个LED灯; 2)能点亮任意一条线上的LED灯; 3)能同时点亮任意一个面上的LED灯; 4)能同时点亮所有的LED灯; 5)能让LED灯自由亮灭,产生不同的显示效果。 二、设计方案 1、单片机资源分配情况 将LED光立方分成4层,分别由单片机的P2.0,P2.1,P2.2,P2.3,四个IO 口来控制每一层,由于采用的是共阳极所以当层电位为高电平有效,由P0口和P1的总共16个IO口来控制每层的16盏灯,低电平有效,P0口加上拉排阻。这样就可以通过控制IO口的输出电平来控制每盏灯的亮灭。 2、系统框图 本系统主要由时钟电路、复位电路、LED光立方电路组成;时钟电路和复位电路作为单片机输入,LED光立方电路作为单片机输出,显示出控制结果如图2- 1所示。 时钟电路:单片机的各个功能部件的运行都是以时钟控制信号为基准,一拍一拍的工作。因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的可靠性和稳定性。常用的时钟电路设计为内部时钟方式,单片机内部有一个由反向放大器构成的振荡电路,芯片上的XTAL1和XTAL2分别为振荡电路的输入和输出端。只要在这两个引脚上接一个石英晶体振荡器和两个微调电容就构成内部方式的振荡器电路,由振荡器产生自激振荡,便构成一个完整的振荡信号发生器。 复位电路:通过某种方式,使单片机内部各类寄存器的值变为初始状态的操作称为复位,复位主要通过外部电路实现。常见的复位电路包括上电复位、手动

3D8光立方制作

3D8光立方制作 目录 一、摘要 (1) 二、关键字 (1) 三、引言 (2) 四、正文 (2) (一)、主要元件介绍 (3) 1、STC12C5A60S2 (3) 2、74HC573 (3) 3、ULN2803 (4) (二)、工作原理 (5) 1、驱动模块原理 (6) (三)、元器件选择 (7) (四)、制作、调试 (8) 1、制作 (9) 2、调试 (11) 五、结束语 (13) 六、参考文献 (12) 七、附录(程序) (13)

光立方 一、摘要: 本设计采用8*8*8 的模式,硬件主要分为三个模块:主控模块、驱动模块、显示模块。采用的主控芯片为STC12C5A60S2 芯片,驱动电路是采用我们常用74HC573数字芯片。数组 OUT[0]代表光立方从第一层 D0 到第八层 D0 的数据,以此类推数组 OUT[1] 代表光立方从第一层 D1 到第八层 D1 的数据。本设计采用C语言编程,利用单片机控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。 二、关键字: LED光立方,74HC573,STC12C5A60S2,ULN2803 三、引言: 光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世,这是新中国成立六十周年国庆晚会最具创意的三大法宝之首,自从国庆60周年联欢晚会开始演练后,一个全新的名词“光立方”,吸引了全国人民的关注。国庆联欢晚会三样法宝,光立方为最,“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙。“光立方”可以根据爱国歌曲的不同内容,展示不同的造型和图案,具有丰富的视觉效果。 四、正文 (一)主要元件介绍: 1、STC12C5A60S2 STC12C5A60S2/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字节 5)片上集成1280字节RAM 6)外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿 中断的PCA模块,Power Down模式可由外部中断唤醒,INT0/P3.2,

光立方项目设计说明书

工程技术综合实践 项目设计报告 (电类) 8x8x8光立方点阵 西安理工大学工程训练中心 2014年 10月 27 日

指导教师(签字):

1 概述 二十一世纪的显示技术将是平板显示的时代。基础材料的产业化,使LED 显 示产品成本下降,应用加快发展。LED 产品性能的提高,使LED 灯的显示屏的亮度、色彩、白平衡均达到比较理想的效果。但是考虑到此次光立方显示的效果问题,我们还是决定选用5mm 的蓝色雾灯。本次设计制作一个8*8*8的三维的发光二极管立方显示体,能够通过编写程序来实现对每一个发光二级管的亮灭控制,从而可以显示多种多样的图案。为了吸引观众增强显示效果,可以有多种显示模式。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。 2 总体设计 2.1 系统功能及技术指标 本作品是由512只LED 组成的长宽高均为8个LED 的正方体点阵,主要实现文字,图形的显示,显示效果立体感强,能够成为一件科技感十足的艺术品。系统控制采用51单片机,通过输出高低电平控制LED 的状态,74hc595扩展单片机IO 口,使单片机具有64路输出。通过74HC245D 控制层,最终实现对512只LED 中的任意一个的控制。 2.2 系统构成 2.3 主要设备及元器件选型 (1)STC12C5A60S2系列单片机是单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D 转换(250K/S),针对电机控制,强干扰场合, 能够满足快

光立方讲解

电子DIY光立方制作教程淘宝店铺:https://www.360docs.net/doc/5013446692.html,/

题记:本人刚毕业的学生兼职做DIY小东西,看到这个比较漂亮就多做了几套 兼职。提供技术支持,可在旺旺上询问,或者加QQ。网上看到很多都是光立方的例子,这里首先声明,本程序并非自己独立编写。是从网上copy 下来,修改。代码比较长,第一次下载下来的时候,很多程序都是残缺程序,有些人随意更改一些语句导致不能正常运行。下面就让我来教大家一起来做光立方。 一、光立方原理 你的思维有多宽,光立方的动画就有多多。我猜想大家做光立方都是为了能随性所欲的控制每一个点,来实现自己想的一些精美动画。那么,让我们从光立方的原理开始入手。一讲到原理,估计很多同学就头痛了。这里借鉴在网上找的一些资料来帮助大家理解光立方的原理。先从点阵的点亮原理说吧,如图所示 这是一张led的点阵图,如果我们想要点亮任意位置的led,我们只要在该位置led所使用的列线接地,行线接上+V即可。 学过单片机的朋友,都知道数码管是怎么点亮的,其中有位选和段选之分,

通过扫描来实现所有数码管能正常工作以实现我们想要的数字。 点阵也一样,尽管是8*8的点阵,如果我们让整体能随意显示图案,那也需要用扫描的方式来实现否则,无法实现对其精准的控制。所谓扫描,就是说,我们一次只能让一行排或者一竖排的灯亮。每次只能这么点,8次为一个周期,从左至右依次点一次,那么循环起来,我们看到的就是完整的图像了。 在这里,一共有8层,想必大家对光立方的连接已经有了一定的了解,纵向一束的某根引脚是要连在一起,而横向一层的另一根一角连在一起。从扫描的角度去说,那一次也只能够点亮一层。为什么这么说呢?这里光立方的一层虽然有64个灯,但不要想成之前那个8*8的平面点阵,一般情况下,8*8的平面点阵需要进行一个周期的扫描,才能将图像映像到点阵上,而我们的光立方,因为纵向需要扫描所以横向不允许再去做扫描,那样会影响到亮度以及效,率,更影响成像效果。 所以一般情况下,光立方的每一层虽然有64个灯,但是我们会有64跟线分别连接到这些灯上,从而实现一次性的对64个灯进行控制,通常单片机引脚较少,一般将采用74hc573,74hc595等芯片进行拓展。 下面来一张电路图,此图是用573进行拓展的。 (这张图是从网上copy的,接线比较清晰,不是本人做的原理图)

制作CUBE8光立方

制作CUBE8光立方(3D立方体LED显示器) 作者杜洋来源《无线电》杂志浏览2270发布时间2012-04-12 何为CUBE8光立方 没错,CUBE8光立方,与北京奥运会无关。如本文题图所示,CUBE8是一个长、宽、高由8×8×8个LED灯组成的真实3D立方体显示器。其最大的特点,就是带给你未来3D技术的科技体验。 光立方并非我的首创,在网上早有光立方的视频。许多电子爱好者,看过这些视频之后,都会被其超酷的3D显示效果所震撼,我就是其中之一,于是我也想仿制一个玩玩。在网上搜索了大量相关资料后,我却发现,网上各种版本的光立方的制作方法都很复杂,不仅需要很强的动手能力来组装512个排列整齐的LED和金属支架,还需要有足够的耐心设计一大堆单片机和驱动芯片,最后还要为硬件成品设计显示程序,好让光立方动起来。这样看来,不是高级焊接技师兼资深单片机工程师的“小菜”们,想制作出一个拿得出手的光立方,还不如直接购买我精简设计的光立方套件。对,我要为电子制作爱好者设计一款只许极少元器件、制作简单、能让初学者也可以制作出来的规范、美观的光立方套件。当我这么想的时候,我那天马行空的大脑开始运转,在想像力的世界里设计着前所未有的光立方。 首先这个光立方必须制作简单,简单到整机只有一个芯片。然后要保证制作美观,将动手能力导致的美观差异降到最低。在保证以上两点的情况下,如果还可以让它的功能强大,且有爱好者自由发挥的空间,那么我的光立方将会是一个完美的设计——至少我自己这样认为。

功能方面,它除了要能显示3D图形,还需要有多级亮度和速度调整,最好可以有音频显示功能,像DIS.MUSIC21音乐显示器一样。当然,还要为单片机爱好者设计一个用户自定义图形功能,连接普通的单片机就可以显示出爱好者自己编写的图形。这样,不仅让光立方的显示更丰富,而且从中又锻炼了爱好者的3D编程能力。最后,还要用高质量的设计、材料和生产工艺,让品质对得起硬件的精简设计。用炫酷、连贯、有节奏的图形效果,让显示效果对得起高品位要求的观众。这么经典的设计,需要一个简洁、响亮的名字,立方体的英文单词是Cube,又因为我要制作8×8×8的3D显示阵列,所以综合得名——CUBE8光立方。

光立方课程设计

江苏师范大学物电学院 课程设计报告 课程名称:光学课程设计 题目:LED光立方设计 专业班级:光电信息科学与工程 13物81 学生姓名:郭程程 学生学号: 130228004 日期: 2015年12月16号 指导教师:蔡廷栋 物电学院教务部印制

基于STC12C5A60S2单片机的LED光立方设计 摘要 本文详细的介绍了光立方的搭建过程,以51系列的单片机STC12C5A60S2为主要的控制芯片,由512个LED通过共阴的形式连接起来,由74HC573为扩展单片机的I/O口,用ULN2803为驱动电路,形成一个规格为8*8*8(长,宽,高)14cm*14cm*20cm立方体,还介绍了这款芯片的特点和使用方法及在调试过程中遇到的软件和硬件方面的问题及解决方法,详细的阐述了光立方的设计原理和架构方法,对光立方目前存在的意义也进行了详细的介绍。 关键词:光立方;74HC573;单片机;ULN2803;LED

The LED light cube design based on STC12C5A60S2 microcontroller Abstract This PaPer introduCes the ProCess of Building Light CuBe, with 51 Series MCU STC12C5A60S2 as the main Control ChiP, ConneCted By 512 LED By CO Yin form, By 74HC573 for the exPansion of the MCU I/O Port, using ULN2803 as the drive CirCuit, the formation of a sPeCifiCation for 8*8* 8 (length, width, height) the 14Cm*14Cm*20Cm CuBe, also introduCes the CharaCteristiCs and methods of use of the ChiP and software and hardware in the ProCess of deBugging ProBlems and solutions, desCriBed in detail the design PrinCiPle and arChiteCture method Light CuBe, the CuBe existed at Present signifiCanCe have also Been introduCed in detail. Keywords:Light CuBe; 74HC573; STC12C5A60S2; ULN2803; LED

毕业设计(论文)-基于单片机的光立方的设计

郑州科技学院 本科毕业设计(论文) 题目基于单片机的光立方的设计 学生姓名王德敏 专业班级08 电子科学与技术1班 学号200831011 院(系)电气工程学院 指导教师(职称)朱小会(讲师) 完成时间 2012 年05月18日

郑州科技学院毕业设计(论文)任务书 题目基于单片机的光立方的设计 专业电子科学与技术学号 200831011 姓名王德敏 主要内容、基本要求、主要参考资料等: 一、主要内容 1.设计方案的选择和方案说明; 2.光立方的硬件构成; 3.光立方的单片机编程; 4.设计并绘制电路原理图; 5.制作实物并调试电路; 6.撰写论文; 7.撰写文献综述和论文。 二、基本要求 1.论文内容充实,有理有据,条理清晰。 2.设计制作一8*8*8的三维的发光二极管显示方阵,能够实现对每一个发光二级管实现控制。控制显示输出至少二十种显示效果。 3.研究数据表形成规律,并初步确定算法。 三、主要参考资料 1.林占江.电子测量技术.北京:电子工业出版社,2011. 2.童诗白.模拟电子技术基础.北京:高等教育出版社,2006. 3.赵景波.Prote199SE应用与实例教程.北京:人民邮电出版社,2009. 4.尹勇.Multisim电路仿真入门与进阶.北京:科学出版社,2005. 5.彭虎.微机原理与接口技术.北京:电子工业出版社,2008. 6.张毅刚.单片机原理及应用.北京:高等教育出版社,2003. 完成期限: 2012年5 月17日 指导教师签名: 专业负责人签名: 年月日

郑州科技学院毕业设计(论文)开题报告 课题名称基于单片机的光立方的设计 课题来源教师命题课题类型EX 指导教师朱小会 学生姓名王德敏学号200831011 专业电子科学与技术开题报告内容:(调研资料的准备,设计的目的、要求、思路与预期成果; 任务完成的阶段内容及时间安排;完成设计(论文)所具备的条件因素等。)一、调研资料准备 LED点阵显示屏已经应用到了我们生活中的方方面面,科技发展的脚步一 直向前,3D电影给人们带来了更加震撼的视觉体验。于是想设计出一种3D显示屏。通过学习《单片机原理与应用》一书,知道LED显示分静态显示和动态显示,以及两种显示的控制方法。加上《模电》《数电》的学习,理解了LED 共阴和共阳接法不同的驱动方法。在网站上查找相关文献时,了解LED显示技术的特色之处:一是节能(直接功耗,间接耗能),二是基本无电离辐射,三提高空间利用率。LED点阵显示屏的特点还有比数码管具有实用、便宜、亮度高等优点,而且做出来的LED显示很耐用。LED显示屏还具有亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定等优点。LED点阵显示屏的发展前景极为广阔,目前正朝着更高亮度,更高耐气候性,更高的发光密度,形状的多样性,更高的发光均匀性、可靠性、多色化方向发展。另外在电子工程师之家看过网友发帖晒自己制做的3D光立方显示,有5X5X5的、8X8X8的、甚至还有一个16X16X16的。在爱折腾网站也曾看过有用蓝色LED和白色LDE 制作的光立方。于是我最终确定也制作一个蓝色LED显示8X8X8的光立方。 二、设计目的 在当今现代信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。随着宽带网络的发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。为追求舒适、逼真、清晰的3D视频显示,为此制作出一个三维立体显示图案的LED光立方。该设计方案将打破了传统的平面显示视频的方法,该方案设计的LED显示屏显示画面色彩鲜艳,立体感强,

相关文档
最新文档