综合实训报告灯立方.docx
- 文档编号:5091659
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:19
- 大小:291.91KB
综合实训报告灯立方.docx
《综合实训报告灯立方.docx》由会员分享,可在线阅读,更多相关《综合实训报告灯立方.docx(19页珍藏版)》请在冰豆网上搜索。
综合实训报告灯立方
河南机电高等专科学校
综合实训报告
系部:
专业:
班级:
学生姓名:
学号:
实训任务书
1.时间:
2012年5月28日~2012年6月22日
2.实训单位:
3.实训目的:
熟悉电路板及电子产品的制作全过程
4.实训任务:
①了解电路板图得来的方法,掌握电路板图的打印技巧;
②会使用热转印机将电路图转印到覆铜板上;
③掌握电路板的腐蚀过程及注意事项;
④会使用高速钻床给电路板打孔;
认识电子元器件,熟悉常用元器件的特性;
熟练掌握焊接方法和技巧,完成电路板的焊接;
掌握电子产品通电调试的注意事项,会编写程序;
作好实训笔记,对自己所发现的疑难问题及时请教解决;
联系自己专业知识,体会电子产品制作过程,总结自己的心得体会;
参考相关的书籍、资料,认真完成实训报告。
综合实训报告
前言:
光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世。
这是新中国成立六十周年国庆晚会最具创意的三大法宝之首。
自从国庆60周年联欢晚会开始演练后,一个全新的名词“光立方”,吸引了全国人民的关注。
国庆联欢晚会三样法宝,光立方为最。
实训报告:
“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙。
“光立方”可以根据爱国歌曲的不同内容,展示不同的造型和图案,具有丰富的视觉效果。
本文主要介绍基于单片机统硬件组成的光立方,利用单片机控制LED的亮灭,并利用延时控制LED亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂,绚丽多彩!
一、主要元器件介绍
1、T89S51简介
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚(引脚图如图2所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
图一管脚图
2、74HC573
图二74HC573管脚图
74HC573是高性能硅门CMOS器件,SL74HC573跟LS/AL573的管脚一样。
器件的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
×\u36755X出能直接接到CMOS,NMOS和TTL接口上
×\u25805X作电压范围:
2.0V~6.0V
×\u20302X输入电流:
1.0uA
×CMOS器件的高噪声抵抗特性
二、8*8*8光立方原理图
图三8*8*8光立方原理图
三、8*8*8光立方PCB图
图四PCB图
四、具体操作流程
设计原理图、打印PCB图、热转印、腐蚀与打孔、焊接、调试与检测,具体如下:
A、设计原理图利用绘图软件PROTEL99SE。
B、打印PCB图把整理好的PCB图用专用的打印纸打印出来。
C、热转印先把印制需要的铜板用细砂纸打磨平整,再把打印好的PCB图的打印纸包裹在铜板上面,接着把热转印机的温度调到大于100度,再把包裹好的铜板进行热转印。
完毕后,看看转印的图面是否清晰,如果有不清晰的地方用专用的油笔进行涂抹。
D、腐蚀、打孔把转印好的铜板浸泡在一定浓度的FeCl3溶液中并进行一定的加热,目的是加快反应的速度。
待反应完全之后,取出再用细砂布把铜线上的油墨洗去。
用0.5mm、0.8mm、1.2mm的钻头进行打孔。
对于自己设计的封装要注意孔径的大小,选取合适的钻头。
E、按照PCB图的元器件的位置放好元器件,调整合适的距离,用烙铁和焊锡以及松香,焊接牢固。
F、把焊接好事物接好电源,进行调试工作。
对于可能出现的情况进行及时地分析找出原因的所在,做到通过现象学习知识、学习处理问题的能力。
对于处理不了的问题及时的请教老师,帮助及时地解决。
五、LED灯焊接方法
1、焊接前准备工作
准备好烙铁、焊锡丝、钳子等工具,以及LED。
LED的正负极很好判别,长的引脚为+,短的为-。
LED最好选用直径3mm的LED,推荐选蓝色。
长脚的LED可以省很多工作量。
实际测量长脚是29mm,短脚为27mm,由于LED光立方板子灯的间距决定了,每个LED的间距是20mm。
这样长短引脚都符合这个尺寸。
由于所有LED框架焊接好后,一旦有LED损坏更换难度很大,所以焊接前要测试所有LED,用一般数字显示万用表打到二极管量程,用万用表红表笔接长引脚,黑的接短引脚。
LED正常发光并且亮度基本一致,这样的LED就是好的,否则是坏灯。
如果为了确保可靠也可以焊接好一层后测试LED是否能点亮。
2、焊接第一步
将8个LED焊接为一组,可以通过2种方法完成
第一种方法需要用钳子将LED的正极扭弯,这个弯,一定要小,正好露出LED外围打弯正合适,LED的正极折弯后留下的引脚长度必须大于LED的间距20mm,以确保有足够的重合位LED灯脚全部折好后,就可以焊接了,为了方便焊接可以在万能板上面钻几个2mm的孔,间距为8个洞洞置以便焊接。
焊接细节,将一个LED正极的引脚靠近到另一个LED正极的打弯处,然后上焊锡焊接,焊接要光亮可靠,有一定机械强度。
这样将全部LED焊接成8个一组的LED灯排待用。
焊接时避免用过多助焊剂,要不会粘到LED表面,影响外观。
焊机避免正负2极短路。
注意每一层的二极管都是共阴的。
第二种方法需要借助一个工艺设备,这个东西可以自己动手制作,用这个辅助焊接当然要容易些。
焊接方法也是一样的,将一个LED正极的引脚靠近到另一个LED正极的打弯处,然后上焊锡焊接,焊接要光亮可靠,有一定机械强度。
这样将全部LED焊接成8个一组的LED灯排待用。
焊接小经验,由于LED灯脚有一定弹性,一个LED的引脚靠近到另一个LED正极的打弯处时,一松手就又弹远了,所以建议焊接时多掰一点,掰过了之后利用弹性将两个要焊接的引脚
靠进,这样焊接会容易许多。
以下是这个模具的快照:
以上是我的方法,在木板上按照规则扎64个孔。
最后通过架设支撑架的方式把各个层架起来,然后用电烙铁焊接起来就行了。
六、效果图
七、参考程序
#include"3d8.h"
#include
voidreset()//复位
{
Y=0xff;
Z=0x00;
X=0x00;
}
voiddelay(uintz)//延时函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
voiddelay_ms(uintz)//毫秒延时函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
voidvalue_YZ_face(ucharx_date,uchartime)
{
reset();
Y=0xff;
X=x_date;
Z=~0xff;
delay(time);
}
voidvalue_XZ_face(uchary_date,uchartime)
{
reset();
Y=y_date;
X=0xff;
Z=~0xff;
delay(time);
}
voidvalue_XY_face(ucharz_date,uchartime)
{
reset();
Y=0xff;
X=0xff;
Z=~z_date;
delay(time);
}
voidset_dot(ucharx,uchary,ucharz,bitstatus,uchartime)
{
reset();
if(status)
{
Y=(1< Z=~(1< X=(1< } else { Y=~(1< Z=(1< X=~(1< } delay(time); } voidset_line_X(uchary,ucharz,ucharx_date,bitstatus,uchartime)//平行于X轴的线 { reset(); if(status) { Y=(1< Z=~(1< } else { Y=~(1< Z=(1< } X=x_date; delay(time); } voidset_line_Y(ucharx,ucharz,uchary_date,bitstatus,uchartime)//平行于Y轴的线 { reset(); Y=y_date; if(status) { Z=~(1< X=(1< } else { Z=(1< X=~(1< } delay(time); } voidset_line_Z(ucharx,uchary,ucharz_date,bitstatus,uchartime)//平行于Z轴的线 { reset(); if(status) { Y=(1< Z=z_date; X=(1< } else { Y=~(1< Z=z_date; X=~(1< } delay(time); } voidset_line(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,bitstatus,uchartime)//通过两点坐标生成直线 { uchari,i1,i2,x_flag=0,y_flag=0,z_flag=0; charx,y,z; x=x1-x2;y=y1-y2;z=z1-z2; if(x! =0) { if(x<0) {i=x2-x1;x_flag=2;} else {i=x1-x2;x_flag=1;} } if(y! =0) { if(y<0) {i=y2-y1;y_flag=2;} else {i=y1-y2;y_flag=1;} } if(z! =0) { if(z<0) {i=z2-z1;z_flag=2;} else {i=z1-z2;z_flag=1;} } /*SBUF='0'+i; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+x_flag; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+y_flag; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+z_flag; while(! TI); TI=0; SBUF=''; while(! TI); TI=0;*/ //i=x2-x1;x_flag=2;y_flag=2;z_flag=2; for(i2=time;i2>0;i2--) { x=x1;y=y1;z=z1; for(i1=i+1;i1>0;i1--) { set_dot(x,y,z,status,3); /* switch(x_flag) { case0: ;break; case1: x-=1;break; case2: x+=1;break; } switch(y_flag) { case0: ;break; case1: y-=1;break; case2: y+=1;break; } switch(z_flag) { case0: ;break; case1: z-=1;break; case2: z+=1;break; }*/ if(x_flag==1) x-=1; if(x_flag==2) x+=1; if(y_flag==1) y-=1; if(y_flag==2) y+=1; if(z_flag==1) z-=1; if(z_flag==2) z+=1; } } } voidset_solid_cube(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,bitstatus,uchartime)//实心立方体 { ucharX1,Y1,Z1,t; if(x1>x2) {t=x1;x1=x2;x2=t;} if(y1>y2) {t=y1;y1=y2;y2=t;} if(z1>z2) {t=z1;z1=z2;z2=t;} reset(); X1=((0xff< Y1=((0xff< Z1=~((0xff< if(status) {Y=Y1;X=X1;Z=Z1;} else {Y=~Y1;X=~X1;Z=~Z1;} delay(time*10); } voidset_frame_cube(ucharx1,uchary1,ucharz1,ucharx2,uchary2,ucharz2,bitstatus,uchartime)//框架立方体 { ucharX1,Y1,Z1,t,i; if(x1>x2) {t=x1;x1=x2;x2=t;} /*SBUF='0'+x1; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+x2; while(! TI); TI=0; SBUF=''; while(! TI); TI=0;*/ if(y1>y2) {t=y1;y1=y2;y2=t;} /*SBUF='0'+y1; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+y2; while(! TI); TI=0; SBUF=''; while(! TI); TI=0;*/ if(z1>z2) {t=z1;z1=z2;z2=t;} /*SBUF='0'+z1; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+z2; while(! TI); TI=0; SBUF=''; while(! TI); TI=0;*/ reset(); X1=((0xff< Y1=((0xff< Z1=~((0xff< for(i=time;i>0;i--) { set_line_X(y1,z1,X1,status,5); set_line_X(y1,z2,X1,status,5); set_line_X(y2,z1,X1,status,5); set_line_X(y2,z2,X1,status,5); set_line_Y(x1,z1,Y1,status,5); set_line_Y(x1,z2,Y1,status,5); set_line_Y(x2,z1,Y1,status,5); set_line_Y(x2,z2,Y1,status,5); set_line_Z(x1,y1,Z1,status,5); set_line_Z(x1,y2,Z1,status,5); set_line_Z(x2,y1,Z1,status,5); set_line_Z(x2,y2,Z1,status,5); /*SBUF='0'+y1; while(! TI); TI=0; SBUF=''; while(! TI); TI=0; SBUF='0'+y2; while(! TI); TI=0; SBUF=''; while(! TI); TI=0;*/ } } 心得体会: 通过这次实训,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。 在实训刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。 通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机方面的各种各样的发展,和它们之间的竞争。 了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。 在这次实训的过程中,焊接LED灯花费了我不少时间,而且焊接起来特别麻烦,当时的心情真是纠结。 不过,最后我终于彻底的完成了这个作品,我特别高兴。 正所谓一分耕耘一分收获,无论再苦再累,坚持就是胜利!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 报告 立方