版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 光立方设计论文 班级:微电子1104 学号:110205040 姓名: 2013年 07月15日目录1、 摘要.12、 关键字.13、 引言.24、 正文.2(1) 、主要元件介绍.31、stc12c5a60s2.32、74hc573.33、 uln2803.4(2) 、工作原理.51、 驱动模块原理.6(三)、元器件选择.7(四)、制作、调试.81、制作.92、调试.11五、结束语.13六、参考文献.12七、附录(程序).13光立方一、摘要: 本设计采用8*8*8 的模式,硬件主要分为三个模块:主控模块、驱动模块、显示模块。采用的主控芯片为stc12c5a60s2 芯片,驱动电路是采用我们
2、常用74hc573数字芯片。数组 out0代表光立方从第一层 d0 到第八层 d0 的数据,以此类推数 组 out1 代表光立方从第一层 d1 到第八层 d1 的数据。本设计采用c语言编程,利用单片机控制led的亮灭,采用延时控制led亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。二、关键字:led光立方,74hc573,stc12c5a60s2,uln2803三、引言: 光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世,这是新中国成立六十周年国庆晚会最具创意的三大法宝之首,自从国庆60周年联欢晚会开始演练后,
3、一个全新的名词“光立方”,吸引了全国人民的关注。国庆联欢晚会三样法宝,光立方为最,“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙。“光立方”可以根据爱国歌曲的不同内容,展示不同的造型和图案,具有丰富的视觉效果。四、正文(1) 主要元件介绍:1、stc12c5a60s2stc12c5a60s2/ad/pwm系列单片机是宏晶科技生产的单时钟/机器周期(1t)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路p
4、wm,8路高速10位a/d转换(250k/s),针对电机控制,强干扰场合。1) 增强型8051 cpu,1t,单时钟/机器周期,指令代码完全兼容传统80512) 工作电压:stc12c5a60s2系列工作电压:5.5v- 3.3v(5v单片机)3) 工作频率范围:0 - 35mhz,相当于普通8051的0420mhz4) 应用程序空间8k /16k / 20k / 32k / 40k / 48k / 52k / 60k / 62k字节5) 片上集成1280字节ram6) 外部中断i/o口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的pca模块,power down模式可由外部中
5、断唤醒,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) 工作温度范围:
6、-40 - +85(工业级) / 0 - 75(商业级)2、74hc573 74hc573是八进制 3 态非反转透明锁存器。器件的输入是和标准 cmos 输出兼容的;加上拉电阻,他们能和ls/alsttl输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出,当输入的数据消失时,在芯片的输出端,数据仍然保持3、uln2803 uln2803是八重达林顿管,1至 8脚为8路输入,18 到 11脚为8路输出。驱动能力为 500ma
7、50v。应用时9脚接地,10脚接负载电源v+,输入的电平信号为0或5v。输入0是输出达林顿管截止,输入为5v电平时,输出达林顿饱和。输出负载加在电源v+和输出口上,当输入为高电平时,输出负载工作,该电路为反向输出型,即输入低电平电压,输出端才能导通工作。(2) 工作原理 有8个8*8点阵,再用8个引脚来当充当各个8*8点阵的“开关”。只要将64个灯阳极连在一起,在连到这个引脚上。采用了hc573暂存的方法,来分别把64个灯的亮灭信息存到这个上面,然后再一起输出到灯上,573的64个输出引脚控制前面所述每一个面的64个灯;而每层灯的阴极全连接在一起接入uln2803,由uln2803控制的每一个
8、层灯。通过单片机主控芯片stc12c5a60s2来控制所有灯的亮灭,从而控制p0、p1、p2实现控制x、y、z空间立体控制来显示我们所需要显示的现象。 图1 8层面 图2 64个灯孔整个设计主要分为三个模块分别是主控模块、驱动模块、显示模块1、驱动模块原理 图3 74hc573驱动 图4 原理图 uln2803的18脚接主控芯片的p1口(18脚),数据由主控芯片p2口输入经过uln2803从1118脚输出,实现通过uln2803来驱动每一层。每个573的29脚(数据输入)都连接在一起连接到主控芯片的p0口(3239脚),数据从主控芯片p0口输送到573,573的1脚是3态输出使能输入(低电平)
9、一般都与地相接,573的11脚(锁存使能输入)都连接在一起连接到主控芯片的p2口(2128脚)作为锁存控制。当573的11脚为高电平和29脚为高电平时,573的1219脚(3态锁存输出)为高电平,驱动一竖面的灯亮,当11脚为高低平、29脚为低电平时,573的1219脚则就为低电平,从而灯灭,当11脚为低电平时,29脚不管高低电平,1219脚的输出不变。主控芯片通过573+uln2803来驱动控制哪竖面的哪一层的哪个灯的亮灭。r1r16是限流电阻。(三)元器件选择1) 由于光立方的程序量比较大,而且要求相对比较高,因此用 51 系列的增强型芯片 stc12c5a60s2,选择的理由:1.无法解密
10、,采用第六代加密技术; 2.超强抗干扰;3.内部集成高可靠复位电路,外部复位可用可不用;4.速度快,比 8051 快 8-12 倍。 2)由于灯的个数比较多,因此所需要的电流相对也比较大,所以选择uln2803。 3)驱动部分使用了熟悉的74hc573,其优点有 1.高阻态,就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;2.数据锁存;当输入的数据消失时,在芯片的输出端,数据仍然保持;3.数据缓冲、加强驱动能力。4)led 灯的选择,出于外观和整体的形状美观,采用的是雾状蓝光的 led 灯 ,由于高亮灯比雾状灯刺眼,所以选择雾状灯。 图 5 雾状led
11、灯(四)制作、调试1)制作:1、我们首先完成的是驱动电路 驱动电路由于线比较多电路比较复杂,所以我们有比较多的跳线,由八个74hc573组成的,如下图: 图6 573驱动连接反面 图7 573驱动连接正面2、 主控电路 主控电路是最简单的电路,主要是最小系统,其中还有一个控制层的驱动芯片焊接在主控板上,如图所示: 图8 最小系统3、显示模块 首先我们用一块比较大万能板,在上面做了8*8个点的标志,间距为2mm然后把灯按统一形状掰好管脚。然后固定在在万能板上进行焊接,焊接完如下图: 图9 灯的焊接 焊好的如图:每次焊完以后都要去检查测试每个灯是否会亮,很重要的步骤 图 10 把八个面做好以后就是
12、把八个面一层一层的叠起来,在这里要注意的是必须用尺子量好各个角度的高度(我们做的间距为2厘米),必须使每一个面在同一水平面上,如下图所示:同样的每次焊完以后都要去检查测试每个灯是否会亮 图11 8层灯显示部分反面,如下图: 图12 2) 调试: 主要是检查全部的灯是否正常工作:(1)程序烧写进单片机之后,发现有两列没有点亮,还好两列的都在边上,进而如果换灯也相对容易,我们用排除法来检查电路,首先是检查灯的线路是否虚焊,断路,果真有一列的是断路了,把它接上后这一列也亮了。(2)还剩下另外一列,我们用同样的方法来做,从驱动电路到显示的都没有问题,而且在输入那一列的电压也正常,我们就想不通了,是什么
13、原因呢?我们怀疑是不是有灯坏了,我们又一个一个的检查了这一列灯,但是全部都会亮,经过很细心的检查,发现有一个灯的亮度和其他的灯亮度完全不同,相对比较暗,于是我们把它换了下来,接上另外一个,果然是哪个灯的问题,原来是由于这灯的阻抗很大,把那一列的电平都拉低了,使灯无法亮起来。(3)在调试过程中,有一竖面的灯完全不亮,第一个想法是灯没有供电,检测供电电路法发现没有问题,于是我找到573这一部分,因为这一部分跳线较多且线路密集,逐一测量发现线头间短路了,从新焊接后测试,故障顺利排除。(4)在调试过程中有几个灯一直不亮,用万用表欧姆档测量发现灯已经烧坏,拆下坏掉,但是有2个灯是存在虚焊问题,从新焊接后
14、正常工作。五、结束语经过这次的设计,让我们更明确了团队合作的要领和精神,更明白了焊接技术的重要性,也让我们对单片机编程的进一步了解,为了这次设计我们找了查找了很多资料,包括一些对该设计元件的作用、工作电压等资料的了解,感谢百度和google公司。他们的搜索功能庞大、快捷又免费,让我们很方便地搜索到了我们所需要的设计资料和丰富的知识。此次毕业设计,是我大学学习中遇到过的时段最长、涉及内容最广、 工作量最大的一次设计。用老师的一句话概括就是这次毕业设计相当如是把以前的小课程设计综合在一起的过程,只要把握住每个小课设的精华、环环紧扣、增强逻辑,那么这次的任务也就不难了。同时感谢老师对我们的指导和为我
15、们理清思路从而使我们更快我完成设计。6、 参考文献【1】 祈伟杨亭.单片机c51程序设计教程与实验 北京航空航天大学出版社2006年1月 【2】张瑞玲.单片机原理与应用 西北工业大学出版社2010年12月【3】赵亮,侯国锐.单片机c语言编程与实例m.北京:人民邮电出版社,2003. 七、附录(源程序) #include #include #define uchar unsigned char#define uint unsigned int uchar display88; /*rank:a,1,2,3,4,i,心,u*/uchar code table_cha88=0x51,0x51,0x5
16、1,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,0x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7e,
17、0x3c;/*the ideasoft*/uchar code table_id40=0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf8,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;/*railway*/uchar code dat128=0x0,0x20,0x40,0x60,0x80,0xa0,
18、0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,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,0x79,0x59,0x39,0x35,0x31,0x2d,0x29,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x6f,0x8f,0x9
19、3,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,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,0
20、x4;/*railway 2*/ uchar code dat228=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;/*railway 3*/uchar code dat324=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5
21、0,0x40,0x30,0x20,0x10;/*3p char*/uchar code table_3p38=0xff,0x89,0xf5,0x93,0x93,0xf5,0x89,0xff,0x0e,0x1f,0x3f,0x7e,0x7e,0x3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18;/*initializtionthat is to initialize the program .it is write to set the timer in c52 mcu.so the program can renovate the led
22、_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;b0;b-) for(a=2;a0;a-);void delay(uint i) while (i-) delay5us();/12t的mcu 注释这个延时即可/*to judge the num bit判
23、断数字点*/uchar judgebit(uchar num,uchar b)char n; num=num&(1=5) b+; return b;/*to figure out the absolute value找出绝对值*/uchar abss(char a) 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 (ab) a=b; if (ac) a=c; retu
24、rn a; void clear(char le) uchar i,j; for (j=0;j8;j+) for (i=0;i=-3;i-) if (i=0) for (j=0;j8;j+) displayji=displayji+1; if (i4) for (j=0;j8;j+) displayji+4=0; delay(speed); void point(uchar x,uchar y,uchar z,uchar le) uchar ch1,ch0; ch1=1x; ch0=ch1; if (le) displayzy=displayzy|ch1; else displayzy=dis
25、playzy&ch0;void type(uchar cha,uchar y) uchar xx; for (xx=0;xx8;xx+) displayxxy=table_chachaxx; /*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.
26、*/void cirp(char cpp,uchar dir,uchar le) uchar a,b,c,cp; if (cpp=0) if (dir) cp=127-cpp; else cp=cpp; a=(datcp5)&0x07; b=(datcp2)&0x07; c=datcp&0x03; if (cpp63) 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
27、-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;it;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;
28、max(&x1,&x2); max(&y1,&y2); max(&z1,&z2); for (i=x1;i=x2;i+) t|=1i; if (!le) t=t; if (fill) if (le) for (i=z1;i=z2;i+) for (j=y1;j=y2;j+) displayji|=t; else for (i=z1;i=z2;i+) for (j=y1;j=y2;j+) displayji&=t; else if (le) displayy1z1|=t; displayy2z1|=t; displayy1z2|=t; displayy2z2|=t; else displayy1
29、z1&=t; displayy2z1&=t; displayy1z2&=t; displayy2z2&=t; t=(0x01x1)|(0x01x2); if (!le) t=t; if (le) for (j=z1;j=z2;j+=(z2-z1) for (i=y1;i=y2;i+) displayij|=t; for (j=y1;j=y2;j+=(y2-y1) for (i=z1;i=z2;i+) displayji|=t; else for (j=z1;j=z2;j+=(z2-z1) for (i=y1;i=y2;i+) displayij&=t; for (j=y1;j=y2;j+=(y
30、2-y1) for (i=z1;i=z2;i+) displayji&=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); elseline (x1,y1,z1,x2,y2,z1,le);line (x1,y1,z2,x2,y2,z2,le);line (x2,y2,z1,x2,y2,z2,le);line
31、(x1,y1,z1,x1,y1,z2,le);void poke(uchar n,uchar x,uchar y)uchar i;for (i=0;i=0)&(i=8)&(i=16)&(i-40;i-)for (j=0;j=0)&(a24)boxtola(a,table_idj);delay(speed);void roll_apeak_yz(uchar n,uint speed)uchar i;switch(n)case 1:for (i=0;i7;i+)displayi7=0;display76-i=255;delay(speed);break;case 2: for (i=0;i7;i+
32、)display77-i=0;display6-i0=255;delay(speed);break;case 3:for (i=0;i7;i+)display7-i0=0;display0i+1=255;delay(speed);break;case 0:for (i=0;i7;i+)display0i=0;displayi+17=255;delay(speed);break;void roll_apeak_xy(uchar n,uint speed)uchar i;switch(n)case 1: for(i=0;i7;i+)line(0,i,0,0,i,7,0);line(i+1,7,0,
33、i+1,7,7,1);delay(speed); break;case 2: for (i=0;i7;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;i7;i+)line(7,7-i,0,7,7-i,7,0);line(6-i,0,0,6-i,0,7,1);delay(speed);break;case 0: for (i=0;i7;i+)line(7-i,0,0,7-i,0,7,0);line(0,i+1,0,0,i+1,7,1);delay(speed);break;voi
34、d roll_3_xy(uchar n,uint speed)uchar i;switch(n)case 1: for (i=0;i8;i+) box_apeak_xy (0,i,0,7,7-i,7,1,1); delay(speed); if (i7) box_apeak_xy (3,3,0,0,i,7,1,0); ; break;case 2: for (i=0;i8;i+) box_apeak_xy (7-i,0,0,i,7,7,1,1); delay(speed); if (i7) box_apeak_xy (3,4,0,i,7,7,1,0); ; break;case 3: for (i=0;i8;i+)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船舶维修杂工施工合同
- 教育设施大白施工合同
- 体检科信息化建设管理办法
- 美术馆讲解员聘用合同
- 律师事务所信息安全指南
- 水利工程架电施工协议
- 西安市购物中心商铺租赁合同
- 水泥公司法定代表人聘用协议
- 恒大水产养殖招标流程
- 白血病用药护理
- 《婴幼儿行为观察、记录与评价》习题库(项目一)认识婴幼儿行为观察、记录与评价
- 烟草局考试计算机专业考试题
- 2023年浙江省衢州市七年级上学期数学期中考试试卷附答案
- 2023年中国船级社人才招聘笔试参考题库附带答案详解
- 学生综合素质评价管理机制和保障制度精选范文
- 初中学生综合素质评价表
- 冷热源工程课程设计
- 储罐气柜基础施工质量确认复测记录
- 员工技能矩阵图
- 职业技能鉴定《高级眼镜验光员》考前点题卷二
- 三年级上册语文分层作业优秀设计案例《秋天的雨》
评论
0/150
提交评论