找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6131|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机光立方设计(protel protues仿真)+代码

[复制链接]
跳转到指定楼层
楼主
基于51单片机的光立方设计原理图(protel protues 仿真)+代码


全部资料51hei下载地址:
光立方.rar (350.19 KB, 下载次数: 88)


由于实训的时候要求用的是单面板的,所以PCB是单面布线的,排PCB的时候没有考虑到插针的位置,所以飞线很多.PCB的话建议自己再画一下,多加几个插针。电路就比较没有那么复杂.

电子创新实训报告



学       院     电子信息科学学院   

实 训 题 目    基于单片机的光立方  
专 业 名 称      电子信息工程         
班       级                  
学       号            
学 生 姓 名
指 导 教 师                     
目录
任 务 书... 2
实训应达到的目的:... 2
二、实训任务和基本要求... 2
摘要:... 3
1、光立方的制作... 3
1.1 光立方的概述... 3
1.2 LED灯的选用... 4
1.3 光立方的焊接... 4
2、模块设计... 6
2.1 主控模块... 7
2.1.1晶振电路... 7
2.1.2复位电路... 7
2.1.3主控电路图... 8
2.2驱动模块... 9
2.2.1  ULN2803芯片... 9
2.2.274HC573芯片... 9
2.3  显示模块... 11
2.4  电路原理图... 13
2.5电路仿真... 13
2.6电路实物图... 15
3.软件开发... 16
3.1光立方的动态显示... 16
4.电路的焊接与调试... 16
4.1LED灯二维平面点阵的搭建... 16
4.2LED面到体的搭建... 17
5.元器件清单... 18
6.结束语... 19
7.参考文献... 20
电子创新实训
基于单片机的光立方
摘要:3D光立方是由长宽高均8颗LED灯组成,即总共512颗LED点阵构成的三维立方体。本光立方的搭建方式是引导出8 个层引出线,这些引出线将作为各个点阵层面的“开关”,再将64个LED灯的正极连在一起,之后再连接到这个引出线上,总共引出72根线。本设计是采用延时控制的方式,由C51编写的控制程序烧录到单片机中,通过单片机来控制LED灯的亮灭情况,使整个光立方能够展现五花八门的动态造型。
本设计采用的是STC89C51RD+单片机芯片实现的实现8*8*8的光立方的动态显示。


1、光立方的制作
1.1 光立方的概述

我们通过平时常见的LCD1602、LCD12864 和LED 点阵屏等的学习,懂得了2D 平面图形的设计、生成和编程,这一过程会让我们受到启发,在光立方的制作当中,把我们的2D思维提升到3D 的思维方式。3D 图形的编程也是很巧妙的事情,并不只是简单地把几个2D 的图形叠加起来这么简单。设计3D 图形,需要有新的思维方式,发现三维空间中点、线、面、体的算法规律。在程序中运用循环、判断语句、参数逻辑运算等方法,用最
少的语句达到最佳的显示效果。一改以往的平面显示效果,采用全新的立体显示,展示3D的超炫表现力,让人享受各种视觉上的冲击,迎合3D显示时代的到来。
光立方为一个立体LED点阵。本项目制作并实现了一个8*8*8的光立方,较之平时常见的LED点阵屏,其拥有独特的特点:
1、8*8*8的LED阵列立体显示器;
2、连贯的图形显示效果,浑然一体,一气呵成;
3、超炫的立体动态显示,多种显示样式;


1.2 LED灯的选用LED发光体的体积越小,光立方整体的通透性就越好,也就是说后排的LED就越不容易被前排的LED挡住;而另一方面,发光体越大,越容易看到光点,例如使用直径更大的LED或是使用雾面而非光面的LED。这二者是有一定的相互矛盾的关系。此外还要注意LED光点的可视角度,雾面LED要比光面LED要大,而草帽头LED的可视角度又比普通窄体的LED要大。另外,一样可以根据摆放位置,角度,将LED的朝向进行改变,以获得更好的观感。
本项目使用的LED为台湾产的3MM、圆头、蓝色、雾状散光LED,其最大电流为20mA,电压范围3.0-3.5V,波长460-465nm,亮度,1000mcd,发光角度120度,正极的引脚长度为27mm,负极的为25mm。实物图如图1.1所示:

1.3 光立方的焊接首先,为了保持整体的通透性、立体感,3D8光立方没有设计额外的LED支架,所有搭接直接使用LED自身的管脚,我们先将512个LED的正引脚弯折,且正负引脚的夹角一定是90°,弯折后的LED灯如图1.2所示:

   其次,我们可以把它分为8个层,每层含8*8个LED灯,每一层的LED阵列都要求排列整齐,互相看齐,将弯曲的LED一个个进行排列焊接,每一层焊接的效果如图所示:
         

最后,要进行LED灯立体矩阵的搭建。LED搭接过程比较繁琐,我们需要8 层的LED阵,列内共阴,层内共阳。焊接直接在LED管脚上进行。为使光立方外形的美观,每一层的LED阵列都要求排列整齐,互相看齐,完整的光立方如图所示:
               
我们只要控制这64个灯使其能够自由变换,然后再通过控制每个层依次点亮即可,由于我们眼睛的视觉暂留(大概50ms至200ms),使我们感觉看到的东西是同时亮的,这样我们就看到了一个完整的个体。
2、模块设计
本系统主要是由以下四个模块组成的,分为:主控模块、驱动模块、显示模块。主控模块:以高性能的STC89C51RD+单片机为控制核心。驱动模块:由锁存器74HC573和驱动器ULN2803两个硬件构成。显示模块:利用512个LED灯组成8*8*8的立方体结构。

图1 系统总体的模块框图
2.1 主控模块本项目采用51单片机 最小系统,以高性能的STC89C51RD+单片机为控制核心。主要特点是:加密性强,低功耗,价格便宜,高速,高可靠、强防静电,强抗干扰。主要是由于本次设计需要写入的代码比较多,那么就需要较大的空间的单片机来实现。由于STC89C51RD+的RAM会比较大,其大小为1280
其引脚图同普通的51单片机一样.      
2.1.1 晶振电路AT89C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。AT89C51单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。晶振是给单片机提供工作信号脉冲的这个脉冲就是单片机的工作速度 比如 12M晶振单片机工作速度就是每秒12M 当然单片机的工作频率是有范围的不能太大一般24M就不上去了不然不稳定。本次设计采用的是内部时钟方式:
  如图二所示:晶振与单片机的脚XTAL0和脚XTAL1内部的振荡电路便产生自激振荡。构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波) 这个波对电路的影响不大, 但会降低电路的时钟振荡器的稳定性。为了电路的稳定性, ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响所以晶振所配的电容在10pf-50pf之间都可以的没有什么计算公式。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。如图3所示为时钟电路。

图3晶振电路
2.1.2 复位电路在电路图中,电容的的大小是1uf,电阻的大小是100。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是100*1UF=0.0001S。也就是说在电脑启动的0.0001S内,电容两端的电压时在0~3.5V增加。这个时候100电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.0001S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.0001S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.0001S左右)。
复位方法有上电自动复位和手动复位两种,单片机在时钟电路工作以后, 在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us。本设计采用的是自动复位电路。如图4所示为复位电路。

图4 复位电路

2.1.3 主控电路图

图5 主控电路图

2.2驱动模块2.2.1  ULN2803芯片我选择采用ULN2803芯片的理由是因为光立方的制作所用到的LED灯数量比较多,要选择能承受较大电流的芯片,而ULN2803芯片正好符合条件。
ULN2803是八重的达林顿管,NPN型.1到8脚是8路输入,18到11脚是8路输出,驱动能力为500mA(使用时,引脚9接地,用来驱动感性负载,引脚10接负载电源,输入电平为0V或5V,当输入5V的电平时候,输出达林顿饱和,不需要通过标准的逻辑缓冲器处理数据,它能够直接处理数据;输入0V时候,输出达林顿截止。输出负载加在电源V+和输出口上,当输入高电平时候,输出负载工作。它不但工作电压高,而且工作电流也大,可以达到500毫安。通常连接在阵列中,极其适合逻辑接口的电平数字电路和较高的电流、电压中。
ULN2803引脚图如图6所示:

内部原理图  外部引脚图
                    图6 ULN2803芯片引脚图


2.2.2 74HC573芯片选择74HC573芯片驱动,它有以下优点:1.它的输出不是低电平或者高电平,而是高阻态,并且支持多个芯片并联输出;2.能够缓冲控制输入,有改善使能输入抗扰度滞后的作用;3.数据能够锁存,保存数据;4.具有缓冲数据及加强驱动的能力。
74HC573的引脚图如图7所示;

图7 74HC573引脚图
74HC573芯片的逻辑图如图8所示;
图8  74HC573芯片逻辑
74HC573属于硅门 CMOS 器件,不仅引脚与LS/AL573相同,并且74HC573的输出也能与之输出兼容。74HC573有三态总线驱动输出,工作的电压在两伏特到六伏特之间,低输入电流为1.0uA。置数能够全并行的存取,缓冲控制输入,并能使能输入能够具有改善抗扰度滞后的作用。假如锁存的使能端变高了,就表示器件的锁存相对而言数据是透彻的;假如锁存的使能端变低了,那么吻合设立时间还有维系时间的数据将会被它锁存住。74HC573的功能表如下图所示。
  
2.3 显示模块考虑到外观及整体形状的美观,本设计采用LED雾状蓝方灯,因为雾状灯的亮度比高亮灯的亮度更均匀柔和,所以选择雾状灯。

图8 显示模块


2.4 电路原理图
2.5电路仿真Protues仿真
LED灯与74HC573连接图

ULN2803接线图

电路总原理图

电路总Pcb图


由于板子不够大,所以分成两块板子来打印,所以中间有两根飞线没有办法在PCB中生成布线

2.6电路实物图

实体整体图


74HC573实物接线图

主控板电路
      


3.软件开发3.1光立方的动态显示光立方虽然不同于平时常见的LED点阵屏,但其原理还是一样的,都是通过对LED的快速扫描,利用人眼视觉暂留效应,以达到动态显示的效果。只不过设计3D 图形,需要有新的思维方式,发现三维空间中点、线、
面、体的算法规律。在程序中运用循环、判断语句、参数逻辑运算等方法,用最少的语句达到最佳的显示效果。
要实现光立方的动态扫描,那么首先得先点亮一个灯,然后通过快速依次点亮想显示图形的每一个灯,即可得到动态显示图形。
4.电路的焊接与调试4.1 LED灯二维平面点阵的搭建   搭建LED灯二维平面点阵,首先将LED灯的正负极弯折好如图1所示,再把LED灯放入平面模板中,并将各个灯的负极焊接在一起。在弯折负极的时候,我们将弯曲的地方尽可能靠近灯的根部,这样可以有效避免在焊接正极之时造成短路的情况。


      
             图1                                      图2
所有LED灯的正极与正极相连,负极与负极相连,管脚之间用焊锡固定住。因为焊接时烙铁温度比较高容易损坏LED灯,所以我们在焊接工作完成完之后对每个LED灯都进行了第二次测试,确保每个灯正常发光。焊好之后将所有灯从模板上取下,如图2所示就可完成二维平面点阵了。
4.2 LED面到体的搭建把已经焊接好的8个面一层一层有序的插到底板上,每插一面灯,都用焊锡将灯的正极管脚与底板固定。8个面焊接结束后,我们可以用手将8个灯面微调,以保证光立方的美观。
然后用9根镀锡钢线,每一层都用一根镀锡钢线搭接好,多余的一根镀锡钢线搭接在光立方的另一面的顶层,起到一个稳固的作用。确保面与面、层与层之间在同一水平面上,排列整齐,搭建完成后再测试一次层与层之间连接的LED灯的好坏。搭建完成后的光立方成品如图3所示。

5.元器件清单
  序号
        材料名称
        规格与型号
        数量
  
  1
        51单片机 最小系统
  
        40P锁紧座带活动座电子模块支持
  STC12C5A60S2,STC89C52RC
        1
  
  2
        单片机芯片
        STC89C51RD+
        1
  
  3
        74HC573
   
        74HC573N
  八路D类锁存器 直插DIP20 IC
  
        8
  
  4
        ULN2803
        ULN2803
        1
  
  5
        IC插座
        18P
  
        9
  
  6
        下载线
        USB转TTL CH340模块 USB转串口 单片机下载线 刷机板 升级小板
  
        1
  
  7
        杜邦线
        
        若干
  
  8
        M雾状蓝色
  LED
  
        2*5*7MM雾状蓝色 2X5X7MM 方形蓝灯 LED发光二极管 光立方灯珠
  
  
        512
  

6.结束语一、设计过程中遇到的问题:
1.代码问题
    ① 首先是时间间隔的计算,由于用的是C语言来编写的程序,所以在延时控制这方面没有用汇编语言来得精准,所以在设计延时的时候遇到了比较的问题,延时的时间和晶振频率以及延时程序中设置的代码参数有关,后来经过仿真调试使得延时程序得到了解决
    ② 主要是显示上的问题,由于本次实现的灯的变化都是完全由单片机芯片内的代码完全实现的,所以需要把想要实现的图形都写进代码里,这里就部分参考了网上设计好的图形的程序。

2.原理图及仿真问题
① 首先在原理图上出现的问题是,选择合适的芯片,经过上网查阅资料以及借鉴经验贴决定了使用ULN2803和74HC573这两种芯片来作为驱动。
对与驱动的问题,还有一个就是在P0口需要接一个上拉电阻,这样驱动才会足够不然会发现等不够亮。
② 原本是打算采用STC15F2K60S2这个芯片来实现led灯的动态显示以及音乐频谱的改变的,但是由于protues这个软件没有STC15F2K60S2这个芯片可以来实现仿真,并且在买元器件的时候没有买MAX232以及串口转USB线所以最终选择采用STC89C51RD+来实现光立方灯的变化。
③ 在protel中绘制pcb的时候,如果把分开的两块板子放在一起的话,自动布线会不成功并且线路会很密集不好分。为了使线路更好分以及保证线路不断的情况下我们分成了两个电路板来绘制PCB板子。
连接电路与检测电路遇到的问题
    ④ 本次电路的线是很多的,但是由于引出来的插针不够,所以只能用导线含在背面,这样增加了工作量。下次在绘制pcb的时候一定要更加认真思考需要引出来的线
在接线的过程中遇到的最多的问题就是焊点虚焊。在保证电源正负极不接在一起的情况下,我们把程序烧到了芯片中让电路运行。查看那些灯不亮。
在检查的时候,发现有一整排的灯不亮,最后发现是这排灯接的74hc573的20引脚也就是电源没有与它连接上
⑤ 在检查的时候,还发现有一些灯是不会亮的。经过检查线路之后发现是所有74hc573的1引脚都没有接到GND上所以导致了功能的选择上出现了错误,也就是显示的效果不理想
⑥ 我们的线路还有一小列的灯会有时闪一下,经过检查,线路是没有问题的,至今还没有解决
⑦ 关于下载和电源的问题
1.下载线与光立方的连接线:GND         接   GND5v或者VCC        接   5v或者VCC RXD         接   RXDTXD         接   TXD 

2.电源:直接将下载线与光立方连接,转USB

二、本次设计的收获
在本项目的过程中,光立方的制作对焊接和布局提出了一定要求,其次是FFT的学习与应用。经过本次制作,进一步加深了点阵的扫描控制,也学会了如何将理论联系实际,把所学的书本知识应用到实际运用中去。每一次的项目制作,都让自己有一种新的收获,这便是经验逐步积累的过程。




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:577349 发表于 2019-7-4 15:33 | 只看该作者
谢谢,太感谢了,多谢啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表