光立方项目设计说明书.doc_第1页
光立方项目设计说明书.doc_第2页
光立方项目设计说明书.doc_第3页
光立方项目设计说明书.doc_第4页
光立方项目设计说明书.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工程技术综合实践项目设计报告(电类)8x8x8光立方点阵西安理工大学工程训练中心2012年 月 日项目组成员及分工序 号姓 名学 号班 级工 作 内 容备注1邓凯3100431032电子102系统设计及报告组长2胡世乐3100101356材1012硬件制作3马杰3100431031电子102程序编写4祝龙3100101358材1012硬件制作成绩评定序 号姓 名学 号班 级成 绩备注1邓凯3100431032电子1022胡世乐3100101356材10123马杰3100431031电子1024祝龙3100101358材1012指导教师(签字):1 概述本作品是由512只LED组成的长宽高均为8个LED的正方体点阵,主要实现文字,图形的显示,显示效果立体感强,能够成为一件科技感十足的艺术品。2 总体设计2.1 系统功能及技术指标系统控制采用51单片机,通过输出高低电平控制LED的状态,74hc573扩展单片机IO口,使单片机具有64路输出。通过ULN2803控制层,最终实现对512只LED中的任意一个的控制。本作品共使用了8块74hc573锁存器,用来控制列,每个锁存器连接LED正极,每一层所有LED的负极连接在ULN2803的输出端,用来控制层2.2 系统构成单片机89c58rd+74hc573锁存器ULN2803驱动LED阵列2.3 主要设备及元器件选型1、STC89C58RD+:8位低功耗微控制器,具有32k程序存储器,最高40MHz工作频率。程序存储空间大2、74hc573:八进制3态非反转透明锁存器,每个管脚可提供20mA电流,能够满足驱动多只LED的需求。 3、ULN2803:达林顿管驱动器,包含8个NPN达林顿管,高耐压,大电流,可满足驱动多只LED的需求。2.4 系统核心处理策略将文字内容通过软件取模得到的十六进制代码转换为坐标,图形内容通过运算得到所显示点的坐标,将此坐标放入二维数组,数组每次放入64个元素,即一层所显示的内容,通过层扫描显示所有层的内容2.5 其他本作品的主体结构由led的引脚相互连接而成,具有一定的强度与韧性;采用贴片元器件,主体突出;装置通过usb接口供电,亦可传输数据;装置设计有电源开关与电源指示灯;设计有画面切换按键,方便人机交互。3 详细设计3.1 硬件设计单片机89c58rd+usb转ttl模块计算机锁存器LEDULN28033.1.1 系统原理图及元器件清单1.原理图2.元器件清单序号名称型号规格数量单位01单片机STC89C58RD+LQFP-442个02锁存器74HC573SOIC-2010个03达林顿管驱动器 ULN2803SOIC-182个04晶振30MHz/1个05电容30pF贴片08065个06电容10uF贴片08065个07发光二极管/3600个08电阻1k贴片08062个09自锁开关/1个10按键开关/1个11USB母口/1个12USB转TTL模块/1个13USB连接线/2条14电路板/25.4*21.52块3.1.2 PCB设计3.1.3 系统硬件资源清单序号名称型号规格数量1发光二极管/36002电路板/23.2 软件设计3.2.1 软件功能模块开始初始画面N是否按下Y下一个画面3.2.2 功能模块1void add(int x,int y,int z) /该函数将坐标添加到数组 tabxy=tabxy|(1z); /添加点(x,y,z)第x层,第y列,第z个点 void scan(int a) /该函数扫描数组 int temp,x,y;for(temp=0;tempa;temp+)/扫描a次for(x=0;x8;x+) LAYER_X=1x; /层选择 for(y=0;y8;y+) LAYER_Y=1y; LAYER_Z=tabxy; /显示第x层,第y列图案 delayms(2);/延迟2msLAYER_X=0; void clear() /该函数清空数组 int i,j;for(i=0;i8;i+)for(j=0;j8;j+)tabij=0; 3.2.3 功能模块2void change(void)interrupt 0 /中断函数,主要实现画面的切换sw= 1;3.2.4 完整代码#include #define LAYER_X P0#define LAYER_ZP2#define LAYER_Y P1unsigned int sw=0;unsigned char tab88=0;void scan(int);void delayms(int);void timer1delay(int);void add(int,int,int);void display_face();void display_ball();void display_move();void display_mtower();void display_start();void clear();int abs(int);void main() IE=0x81; display_start();while(1)sw=0;while(sw=0);display_mtower();display_ball();display_face();display_move();sw=0;clear();void delayms(int x) int i,j;for(i=x;i0;i-)for(j=120;j0;j-); void display_move()int mod8=0x83,0xC3,0xE3,0xF3,0xDB,0xCF,0xC7,0xC3;int a,b,c,temp=0;for(a=0;a8;a+) for(b=0;b8;b+) if(moda&(1b)!=0) tabab=0x80;for(c=0;c8;c+)scan(40);for(a=0;a8;a+) for(b=0;b1; void display_ball()int i,j,k,a; for(a=0;a5;a+) for(i=0;i8;i+)for(j=0;j8;j+)for(k=0;k8;k+)if(i-3.5)*(i-3.5)+(j-3.5)*(j-3.5)+(k-3.5)*(k-3.5)(a*a)add(i,j,k);scan(100);clear(); /清除tab为零,重新循环 void display_mtower()int x,y,a;xdata int b88=0;for(x=0;x8;x+)for(y=0;y8;y+)tabxy=0x01;for(a=1;a5;a+)scan(50);for(x=0;x8;x+)for(y=0;y8;y+)if(abs(x-3.5)a & abs(y-3.5)a)tabxy=tabxy1;a=100;while(a-) scan(10);for(x=0;x8;x+)for(y=0;y8;y+) if(tabxy=0x80 | tabxy=0x01) bxy=(bxy+1)%2;if(bxy=0)tabxy=tabxy1;clear();int abs(int temp)if(temp0)return(-temp);else return(temp);void display_face() int a,b;int i,j,k;for(b=0;b6;b+) for(a=1;a22;a+)for(i=0;i8;i+)for(j=0;j8;j+)for(k=0;k8;k+)if(i+j+k=a)add(i,j,k);scan(10);clear(); /清除tab为零,重新循环for(b=0;b0;a-)for(i=7;i=0;i-)for(j=7;j=0;j-)for(k=7;k=0;k-)if(i+j+k=a)add(i,j,k);scan(10);clear();void add(int x,int y,int z) tabxy=tabxy|(1z); /添加点(x,y,z)第x层,第y列,第z个点 void scan(int a) int temp,x,y;for(temp=0;tempa;temp+)/扫描a次for(x=0;x8;x+) LAYER_X=1x; /层选择 for(y=0;y8;y+) LAYER_Y=1y; LAYER_Z=tabxy; /显示第x层,第y列图案 delayms(2);/延迟2msLAYER_X=0; void clear() int i,j;for(i=0;i8;i+)for(j=0;j8;j+)tabij=0; void display_start()LAYER_Y=0xff;LAYER_Z=0xff;LAYER_Y=0x00;LAYER_X=0xFF;delayms(2500);LAYER_X=0x00; void change(void)interrupt 0sw=1;3.3 结构设计结构示意图512只LED焊接成为8层,基座为一块250mm*210mm的PCB,LED插接在PCB上4 调试与测试焊接完成后首先测试单片机是否正常工作,我们用到的测试方法是通过烧写软件写入hex文件,若能够正常写入,则说明单片机正常工作。经测试,单片机能够正常写入数据。接着测试单片机能否控制LED,即测试外围电路是否正常工作。编写代码使锁存器全部输出低电平,使ULN2803全部输出高电平,预期结果是所有LED点亮。写入数据,LED并未点亮,测量引脚发现锁存器输出为低电平,但ULN2803并未输出高电平,查阅资料发现ULN2803为吸收电流的驱动器,故不能输出高电平!由于焊接时LED的两极已确定,所以只能将LED旋转90插接。在调试过程中,我们发现在设计时用单片机P0口控制ULN2803,要使ULN2803输出低电平,P0应输出高电平,而P0在单片机内部悬空,即没有上拉电阻,无法输出高电平,由于PCB已无法改动,我们只能在ULN2803的引脚旁接上拉电阻。改动代码,使锁存器全部输出高电平,ULN2803全部输出低电平,写入代码,LED全部点亮。我们发现LED虽然点亮,但是亮度较低,经分析发现问题在于ULN2803输出时串联的330电阻。由于ULN2803每个输出引脚控制64只LED,电流可达数百毫安,流过电阻时产生很大的压降,使加在LED上的电压很低,故亮度较低。考虑到最终在运行时采用的方式是扫描,单个LED单位时间内通电时间极短,故将该电阻省去。经测试,LED工作正常。在调试中断程序时,发现单片机无法进入中断,检查原理图,发现按键接通时P3.2连接在vcc上,而进入中断需要低电平或者下降沿触发。对PCB稍作改动,将原先连接vcc的铜线切断,接在gnd上,问题解决。至此,整个系统调试完毕,系统能够按照预期正常工作。5 结论系统硬件达到预期的目标,能够通过编程任意显示,软件实现了4种动画的显示,但由于时间限制程序未能调试成功,未能实现按键切换,目前按键的作用是在开始画面结束后,按下按键开始按顺序显示4个动画。由于时间仓促,作品实现的动画效果还比较单一,但本作品可作为一个硬件平台,今后通过算法的优化以及新的编程思路和想法,实现更多更绚丽的动画效果。6 感想这次制作从想法的诞生,到整个作品的完成,历时近一学期,整个过程虽不能说充满艰辛,但也历经了不少曲折。选择这个制作题目是因为当初选题时在网络上看到了光立方的视频,被它的独特效果所吸引,深入了解它的控制原理后感觉难度在我们的接受范围之中。这个作品难度最大之处在于LED的焊接,所有听到我们要焊接512只LED的人都感到惊讶,我们参考网络上的制作方案,寻找合适的工具,讨论,分工,最终我们四人用了两周的时间就完成了这512只LED的焊接,不得不承认集体的力量远大于个人之和。之后就是画原理图,生成PCB,这都是第一次接触的东西,需要自己查阅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论