完整的word格式的光立方课设论文下载:
光立方.doc
(11.27 MB, 下载次数: 74)
下面是课设内容预览:
总分=实物*50%+课程设计报告书*50%。
2.元器件明细表:
3.附图: 1.整体电路图:
2.PCB板图:
3.作品照片:
目录
第一章 引言.................1
1.1设计要求..................1
第二章 设计方案分析与论证....................2
2.1总体电路分析.....................2
2.2方案论证..................3
第三章 单元电路设计..................5
3.1单片机电路设计.................5
3.2时钟电路设计.................5
3.3复位电路设计.................6
3.4驱动电路设计.................6
3.5 软件设计.................8
第四章 实物制作..................10 4.1
前期准备.................10
4.2电路板的制作....................10
第五章 测试结果分析与设计体会.....................12
5.1系统调试与误差分析..................12
5.2 总结及心得.....................15
参考文献...................16
附录.................17
第一章 引言 在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。随着宽带网络的发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。与传统的显示设备相比,这种未来的巨大需求让LED大屏幕显示技术成为众人目光的焦点。LED显示屏一般分为图文显示屏和视频显示屏,均由LED矩阵块组成。动态图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维的动画、录像、电视、VCD节目以及现场实况转播。不仅可以用于室内环境装饰还可以用于室外环境信息传播,具有投影仪、电视墙、液晶显示屏无法比拟的优点。而且显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。 随着社会经济的不断进步,人们对LED显示器的认识不断加深,其应用领域越来越广。目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。 1.1设计要求 本次设计制作一个8*8*8的三维的发光二极管立方显示体,能够通过编写程序来实现对每一个发光二级管的亮灭控制,从而可以显示多种多样的图案。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示显示模式的方法,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。这样程序书写就不会过于繁琐和重复,而且对核心控制器的内存空间要求不高。 借鉴单片机控制LED点阵显示的原理,通过系统分析,确定该系统该具有哪些功能,有哪些模块,各个模块之间是怎样连接,以及怎样组合电路是最合理最简单的,即硬件方案设计。编写硬件电路的相对应软件程序部分,利用仿真软件对程序进行测试修改。电路系统焊接完毕后,测试整个的系统模块的功能,看各个功能是否能正常运行,并依据实验结果找出程序中的错误,改正这些错误至测试成功完成课程设计要求。
第二章 设计方案分析与论证 2.1 总体电路分析 2.1.1总电路工作原理 本设计是用STC125A60S2单片机做控制芯片的,由单片机上的P2口来控制8个锁存器的锁存端,以此决定数据的输入和锁存。光立方有8层8x8点阵,用8个引脚来当充当各层8x8点阵的“开关”(每层共阴)。再将64个灯阳极连到74hc573的输出引脚上,每个74hc573控制8列LED。驱动采用了74hc573暂存的方法,来分别把64个灯的亮灭信息存到上面,然后再一起输出到灯上,74hc573的64个输出引脚控制前面所述每一个面的64个灯;而每层灯的阴极全连接在一起接入uln2803,由uln2803控制的每一个层灯。通过单片机主控芯片STC12C5A60S2来控制所有灯的亮灭,这样512个LED每一个都有单独的位置编码,灯的亮灭可以自由控制。总体电路原理框图如(图2.1):
图2.1
2.2方案论证 2.2.1电源电路的选择 方案一:选择采用5号电池作为3D光立方显示系统的电源。 优点:移动性强,方便随时使用。 缺点:该系统耗电量较大,需要长时间不间断的工作。虽然采用电池供电能够实现,但是这种方法不断更换电池,造成了各种使用不便与环保问题。 方案二:采用三端集成稳压器LM7805作为电源供电稳压核心。 优点:选用LM7805稳压器在功率问题上不仅满足了系统需求,而且安全、方便和可靠。 缺点:电源体积大,移动性不强。 基于以上分析,决定选取LM7805三端稳压器稳压电路作为系统供电电源。 2.2.2核心控制芯片的选择 方案一:单片机 。 优点:单片机拥有很强大的接口性能,集成了CPU、RAM和I/O口等电路,低成本、低电压和低功耗是单片机的特点,使得单片机的市场非常之大,教学上使用的单片机更是非常多,为了适应各种应用,各种各样的单片机出现,它们的性能可靠性,编程方便,开发成本低等各种优点都使得在教学,生产、民用、商业化等拥有非常多的市场。 缺点:ROM内存小,运行慢。 方案三:DSP 芯片。 优点: DSP 是数字信号处理器。它主要用于数字信号处理,在拥有非常多数据需要处理的系统下,DSP的能力会被无穷显现出来,当遇见高密度,运算量非常之大等情况下,DSP非常好处理。相对于一般的单片机,DSP的处理速度会快上2倍以上,在信号处理领域上D SP能够非常好的胜任工作,在光立方的大显示数据量,DSP更是显示它强大的功能。 缺点:需要模数转换,受采样频率的限制,处理频率范围有限;数字系统由耗电的有源器件构成,没有无源设备可靠。 基于以上分析,以上三种核心控制处理芯片都能够胜任3D光立方显示器的数据处理与控制,但是基于单片机的成本与技术难度较低,因此在权衡利弊之后决定选用的控制部分核心器件为单片机,单片机型号为STC12C5A60S2。 2.2.3列驱动电路的选择 方案一:选取串口输入并口输出芯片74HC595, 优点:74HC595中拥有8位移位寄存器和一个存储器,具有三态输出功能、数据锁存功能和数据输出功能,最重要是它具有串行输入并行输出的特点。 缺点:但是在3D光立方显示器,它依旧有不少的延迟时间。 方案二:采用锁存器74HC573, 优点:74HC573是一种硅门CMOS器件并且带有锁存数据和能够同步输出数据;通过控制使能端口,来控制锁存器锁存数据并且控制数据锁存保持的时间;当时钟处于上升沿状态下,8个74HC573同时正常工作,并且通过16个I/O口并行输入数据到芯片里,并行传输数据时间比串行传输数据的延迟时间更加少,满足设计要求。 综合以上各方面的分析和比较,决定选取74HC573作为每一列的驱动芯片。 2.2.4层驱动电路选择 光立方显示器拥有512个LED,当它们有同时工作时,层面积聚电流随之增大,所以需要把电流放大,提高驱动能力,驱动整个显示正常工作。电流不够而导致的部分LED不亮或出现亮度不够的问题,会导致显示信息出错等问题。整个层面驱动电路的设计在整个系统起到举足轻重的地位,以下有两种方案: 方案一:采用5V继电器来进行控制。 优点:可以使用5V继电器来充当开关实现控制, 缺点:会加大成本还有电路设计的复杂程度,显示器的重量也随之增大。 方案二:采用达林顿管ULN2803作为层面驱动电路芯片。 优点: ULN2803的驱动电流可以达到500mA,能够驱动层面的LED正常工作。测试结果稳定可靠,可以满足设计要求。 基于以上分析,决定选取ULN2803达林顿管作为层面电路控制器。
第三章 单元电路设计
3.1单片机电路设计 单片机又称微处理器,它是在一块硅片上集成了CPU、ROM、定时器和多种I/O接口电路等电路的集成块。单片机最小系统包括了单片机芯片、时钟电路和复位电路。时钟电路是用于产生STC12C5A60S2单片机正常工作的时钟频率,单片机的正常工作是在这种时钟电路产生的是时钟频率信号的控制下,严格地按照时序运作。单片机的初始化是由单片机的复位电路控制的。硬件电路满足复位时序要求,单片机进入从初始化工作状态。单片机电路图如(图3.1)所示。
图3.1 3.2时钟电路设计 STC12C5A60S2单片机芯片的内部时钟提供时钟频率方式是因内部设有一个振荡器,这个振荡器是由反向放大器构成的,而这个振荡电路的输入端与输出端为别为XTAL1和XTAL2,如果在引脚XTAL1和XTAL2上外接晶振,使用32MHZ晶振率,需要两个30pF电容值的电容连接,它们可以起到频率微侧的作用。时钟电路如(图3.2)所示。
图3.2 3.3复位电路设计 单片机最小系统的复位电路也是必不可少的,当STC12C5A60S2单片机在 正常运行时,需要复位,也就是重新开始运行程序时,使单片机从初始状态下重新工作,这个时候就需要复位电路了,所以复位电路也非常重要,单片机从初始值开始运行程序需要复位电路,当程序运行错误,或者进入死循环,这个时候也需要复位电路,只需要按下复位按键,使得RST引脚为高电平,这个时候STC12C5A60S2单片机就会从死循环跳出从程序初始值开始运行程序,上电复位与手动按键控制电平复位方式是最为常用的单片机复位方式,而这个显示系统选用上电复位控制电平复位的方式。上电复位电平复位电路图如(图3.3)所示。
图3.3 3.4驱动电路设计 3.4.1层驱动电路设计 ULN2803是本设计中的层面片选控制器电路的核心控制芯片。ULN2803是八重的达林顿管,1到8脚是8路输入,18到11脚是8路输出,驱动能力为500MA(V,使用时,引脚9接地,用来驱动感性负载,引脚10接负载电源,输入电平为0V或5V,当输入5V的电平时候,输出达林顿饱和;输入0V时候,输出达林顿截止。输出负载加在电源V+和输出口上,当输入高电平时候,输出负载工作。ULN2803的引脚图如图3.4所示。
图3.4 3.4.2列驱动电路设计 74HC573是一个八进制3态非反转透明锁存器(三态),是一种高性能硅门 CMOS器件,当使能(OE)为高时,Q 输出。当锁存使能端LE为高电平时,这些器件的锁存对于数据是同步输出。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时。当输入的数据消失时,在芯片的输出端,数据仍然保持。列驱动电路图如图3.5所示。
图3.5 3.5 软件设计 3.5.1主程序设计 光立方显示器的软件系统设计是通过模块化的设计思路来进行程序的设计与开发的,整个程序设计采用的是C语言编程的方法。第一先进行显示系统的实现功能的分析考虑,整个系统要实现的功能是能够进行静态显示、动态显示、模式转换和上位机控制。通过按键控制程序,可以选择不同的模式来进行显示。通过打开上位机串口,能够实现PC机控制光立方显示。主程序的工作流程如图3.6所示。
图3.6 3.5.2显示模块的程序设计 光立方显示器的显示部分采用显示机制是扫描的显示方法,因为采用的是扫描机制,所以选择单片机的数据从由低位到高位依次从数据输入端口输入,接着从锁存器输出端口输出数据与锁存器数据控制端口控制输出显示。光立方显示程序流程图如图3.5.1所示。首先单片机把想显示的图案转换为在相应在光立方上显示的点的数据,在把显示图案的数据从单片机P0口输出到相应的锁存器,锁存器接收这些数据,并通过控制端口,选择输出数据还是锁存数据,接着又把下一组的数据依次送到片选的锁存器进行输出显示,当所以的数据被正常输出并显示后,显示程序退出,等待下一次的显示数据到来。因为有8个锁存器,有64引脚控制列的数据显示,通过对应的控制端口的控制片选,由一个ULN2803控制每一层的数据显示,形成了各种各样的显示效果。显示模块的程序设计如图3.7所示。
图3.7 第四章 实物制作 4.1 前期准备 提前了解8x8x8光立方的相关资料并学习和掌握相关的知识,掌握相关知识后对8x8x8光立方进行仿真,如果仿真不成功就找出问题并解决,如果仿真成功就进行下一步,仿真成功后把所需的元器件清单列出来并购买回来。 4.2电路板的制作 在前期工作都完成后,就进行电路板的制作。我这里用的是Altium Dsigner6.9软件进行电路板的前期制作,在Altium Dsigner6.9把所有元器件都列出来,按照仿真成功的电路图进行绘制,绘制成功后转到pcb中进行排版,因为电路图有点难度需要跳线。最终的pcb电路图如图4.2所示。
图4.1
Pcb图完成后就进行腐板,腐好的电路板如图4.2所示。 图4.2 接下来就进行焊接元器件。
第五章 测试结果分析与设计体会
5.1系统调试与误差分析 5.1.1系统调试 电路测试:对焊接的每一个发光二极管进行必要的检测,一个发光二极管的显示故障导致的问题可能是程序或者是硬件,所以一开始就需要进行必要的发光二极管的检测。方法:使用数字式万用电表的红表笔接二极管的正极,黑表笔姐二极管的负极,观察二极管的发光情况。接下来对照电路图与实际的电路板上的线路连线正常情况。比如说,各个点的焊接情况,线路的连通情况,电容的正负极,电源的供电极性等,在所有检查完毕后在进行下一步通电检测。通电检测电路,通电后,把数字式万用电表调到电压档,测量接入电源的电压是否正常,如果不正常则立刻断开电源,如果有元器件发烫等情况应立刻断开电源并检测各个点,看哪里出现短路情况,排除各种故障。 5.1.2测试结果与分析 模式一:
模式二:
模式三:
模式四:
模式五:
经调试可见在调试过程中发光二极管亮度有问题,3D显示效果不是很明显,后来经过观察发现LED亮度有问题可能是限流电阻用的过大了,也可能是购买这种LED不适合在白天显示。3D效果不明显不原因可能是发光二极管在焊接过程中是焊得不是很好,出现了个别松动现象,不亮等元器件本身已经损坏问题,导致后面测试时显示的画面不是很立体。还有一问题就是在制板过程中由于没有考虑周全导致在后期阶段的操作出现了困难。 5.2 总结及心得 通过了这次的设计与制作,巩固了自己对所学的知识和理论,对计算机应用系统有了大概的了解,并且掌握了基本的单片机软件和硬件的开发方法,能够提升对实际的单片机软件和硬件开发的能力。同时,加强了我对实际遇到问题的分析能力和解决能力。系统的性能指标和运行的稳定性更是我关注的重点,以系统的稳定性和精确性为主的原则,采用了各种的优化方法,基本完成了设计规定的指标和要求,而且对于某些指标进行了功能扩展与优化。在制作课程设计过程中还要非常感谢我身边的同学,有了他们的帮助我才得以这么顺利的完成了我的设计,同时我也从他们的帮我的过程中学到了很多知识。 参考文献 [1] 张瑞玲.单片机原理与应用[M].西北工业大学出版社,2010,12 [2] 康华光.电子技术基础(数字部分)[M].高等教育出版社,2014,1 [3] 陈海宴.51单片机原理及应用—基于Keil C与Proteus[M].北京航空航天大学出版社,2013.3 [4] 谭浩强.C语言设计[M].清华大学出版社,2010,7 [5] 郭天祥.新概念51单片机C语言教程[M].北京,电子工业出版社,2009,46-79. [6] 姚永平等,STC12C5A60S2系列单片机器件手册[M]. [7] 张毅刚.基于proteus单片机课程的基础实验与课程设计[M].北京,人民邮电出版社,2012.32-99 [8] 阮永松.打造音乐频谱时钟.无线电[J].2012-6(第597期),44-47
附录
1.主要程序
- #include
- #include
- #define uchar unsigned char
- #define uint unsigned int
- uchar display[8][8];/*rank:A,1,2,3,4,I,心,U*/
- 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<<b);
- 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<b)
- a=b;
- if (a<c)
- a=c;
- return a;
- }
- 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 print() interrupt 1
-
- {
-
- uchar i;
-
- static uchar layer=0;
-
- P1=0;
-
- for (i=0;i<8;i++)
-
- {
-
- P2=1<<i;
-
- delay(3);
-
- P0=display[layer][i];
-
- delay(3);
-
- }
-
- P1=1<<layer;
-
- if (layer<7)
-
- layer++;
-
- else
-
- layer=0;
-
- TH0=0xc0;
-
- TL0=0;
-
- }
-
复制代码
|