当前位置:文档之家› 光立方项目设计说明书

光立方项目设计说明书


2.2 系统构成
单片机89c58rd+ 74hc573锁存器 ULN2803驱动 LED阵列
2.3 主要设备及元器件选型
1、STC89C58RD+:8位低功耗微控制器,具有32k程序存储器,最 高40MHz工作频率。程序存储空间大 2、74hc573:八进制3态非反转透明锁存器,每个管脚可提供20mA 电流,能够满足驱动多只LED的需求。 3、ULN2803:达林顿管驱动器,包含8个NPN达林顿管,高耐压,大 电流,可满足驱动多只LED的需求。
else return(temp); } void display_face() { int a,b; int i,j,k; for(b=0;b<6;b++) { for(a=1;a<22;a++) { for(i=0;i<8;i++) for(j=0;j<8;j++) for(k=0;k<8;k++) if(i+j+k==a) add(i,j,k); scan(10); clear(); //清除tab为零,重新循环 } } for(b=0;b<6;b++) { for(a=21;a>0;a--) { for(i=7;i>=0;i--) for(j=7;j>=0;j--) for(k=7;k>=0;k--)
工程技术综合实践
项目设计报告
(电类)
8x8x8光立方点阵
西安理工大学工程训练中心 2012年 月 项目组成员及分工
序 号 姓 名 1 邓凯 学 号 班 级 工 作 内 容 系统设计及报告 备注 组长 3100431032 电子102

2 3 4
胡世 乐 马杰 祝龙
3100101356
材1012
硬件制作 程序编写 硬件制作
{ int i,j; for(i=0;i<8;i++) for(j=0;j<8;j++) tab[i][j]=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 0 { sw=1; }
if(i+j+k==a) add(i,j,k); scan(10); clear(); } } } void add(int x,int y,int z) { tab[x][y]=tab[x][y]|(1<<z); //添加点(x,y,z)第x层,第y列,第z个点 } void scan(int a) { int temp,x,y; for(temp=0;temp<a;temp++)//扫描a次 {for(x=0;x<8;x++) { LAYER_X=1<<x; //层选择 for(y=0;y<8;y++) { LAYER_Y=1<<y; LAYER_Z=tab[x][y]; //显示第x层,第y列图案 } delayms(2);//延迟2ms LAYER_X=0; } } } void clear()
void display_mtower() { int x,y,a; xdata int b[8][8]={0}; for(x=0;x<8;x++) for(y=0;y<8;y++) tab[x][y]=0x01;
for(a=1;a<5;a++) {scan(50); for(x=0;x<8;x++) for(y=0;y<8;y++) if(abs(x-3.5)<a && abs(y-3.5)<a) tab[x][y]=tab[x][y]<<1; } a=100; while(a--) { scan(10); for(x=0;x<8;x++) for(y=0;y<8;y++) { if(tab[x][y]==0x80 || tab[x][y]==0x01) b[x][y]=(b[x][y]+1)%2; if(b[x][y]==0) tab[x][y]=tab[x][y]<<1; else tab[x][y]=tab[x][y]>>1; } } clear(); } int abs(int temp) { if(temp<0) return(-temp);
3.2.3 功能模块2
void change(void)interrupt 0 { sw= 1; } //中断函数,主要实现画面的切换
3.2.4 完整代码
#include <reg51.h> #define LAYER_X P0 #define LAYER_Z P2 #define LAYER_Y P1 unsigned int sw=0; unsigned char tab[8][8]={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;
07 08 09 10 11 12 13 14
发光二极管 电阻 自锁开关 按键开关 USB母口 USB转TTL 模块 USB连接线 电路板
/ 1k / / / / / /
φ3 贴片0806 / / / / / 25.4*21.5
600 2 1 1 1 1 2 2
个 个 个 个 个 个 条 块
PCB设计
3 详细设计 3.1 硬件设计
单片机89c58rd+ usb转ttl模块 计算机 锁 存 器
LED ULN2803
3.1.1 系统原理图及元器件清单
1.原理图
2.元器件清单 序号 01 02 03 04 05 06 名称 单片机 锁存器 达林顿管驱 动器 晶振 电容 电容 型号 STC89C58RD+ 74HC573 ULN2803 30MHz 30pF 10uF 规格 LQFP-44 SOIC-20 SOIC-18 / 贴片0806 贴片0806 数量 2 10 2 1 5 5 单位 个 个 个 个 个 个
3100431031 电子102 3100101358 材1012
成绩评定
序 号 姓 名 1 2 3 4 邓凯 胡世 乐 马杰 祝龙 学 号 班 级 成 绩 备注 3100431032 电子102 3100101356 材1012
3100431031 电子102 3100101358 材1012
指导教师(签字): 1 概述
本作品是由512只LED组成的长宽高均为8个LED的正方体点阵,主要 实现文字,图形的显示,显示效果立体感强,能够成为一件科技感十 足的艺术品。
2 总体设计 2.1 系统功能及技术指标
系统控制采用51单片机,通过输出高低电平控制LED的状态, 74hc573扩展单片机IO口,使单片机具有64路输出。通过ULN2803控 制层,最终实现对512只LED中的任意一个的控制。本作品共使用了 8块74hc573锁存器,用来控制列,每个锁存器连接LED正极,每一 层所有LED的负极连接在ULN2803的输出端,用来控制层
2.4 系统核心处理策略
将文字内容通过软件取模得到的十六进制代码转换为坐标,图形内 容通过运算得到所显示点的坐标,将此坐标放入二维数组,数组每 次放入64个元素,即一层所显示的内容,通过层扫描显示所有层的 内容
2.5 其他
本作品的主体结构由led的引脚相互连接而成,具有一定的强度与韧 性;采用贴片元器件,主体突出;装置通过usb接口供电,亦可传输 数据;装置设计有电源开关与电源指示灯;设计有画面切换按键,方 便人机交互。
} void scan(int a) //该函数扫描数组 { int temp,x,y; for(temp=0;temp<a;temp++)//扫描a次 {for(x=0;x<8;x++) { LAYER_X=1<<x; //层选择 for(y=0;y<8;y++) { LAYER_Y=1<<y; LAYER_Z=tab[x][y]; //显示第x层,第y列图案 } delayms(2);//延迟2ms LAYER_X=0; } } } void clear() //该函数清空数组 { int i,j; for(i=0;i<8;i++) for(j=0;j<8;j++) tab[i][j]=0; }
for(b=0;b<8;b++) tab[a][b]=tab[a][b]>>1; } } void display_ball() { int i,j,k,a; for(a=0;a<5;a++) { for(i=0;i<8;i++) for(j=0;j<8;j++) for(k=0;k<8;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为零,重新循环 } }
相关主题