光立方制作+程序讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

光立方教程

今天,给大家带来光立方的制作教程,基于本人制作的经验,给各位想要做的朋友分享制作过程。

对于第一次制作的朋友,我们要先制作好一个日程表,如下图:

我们要弄好一个计划,就好像单片机运行程序一样。

当然,废话少说。接下来,我们需要一份购买材料的清单

如上图所示,我们需要购买的万能板需要购买18*30的规格。这样子才有足够的空间去安装我们的电子元件。

首先,我们需要用万能板作为骨架,每2cm*2cm就要焊接一个排针,上下左右间隔一样。不过对于初学者来说,一次性焊接64颗排针有点困难,所以我们需

要用胶布把每一颗排针固定好,然后上焊,当然这是一个快捷的方法,也适合所有的初学者

当我们把排针固定好后,我们只需要把板子翻过来焊接就可以了。

接下来,我们要把每一颗led灯折弯后侧着放置在排针中。从左到右,从上至下

的安放,安放好后,我们只需要把他们的脚焊接即可。折弯时记住使用镊子折弯。效果图如下图所示

显而易见,这是非常需要考焊功的活,各位制作时候要注意节点与节点之间的间距,并且注意焊点不要点太多的锡,会影响做出来的效果与美观。接下来,我们

把弄好的8排led插在万能板上,注意:我们要注意每排之间的间隔。

下一步,我们需要在把每排led的共阴极连接在一起,一共8层,每层都要连接好,当我们把每层连接好后,我们要在每层的末端或者初始端接一条输出线,作为共阴极连接UNL2803。

当然,我们连接UNL2803的前提是先把芯片接好。小编我直接把芯片焊接在板子上,这种方法对于初学者来说不可取,需要弄芯片底座,不然芯片烧掉了就很

难拆下来了。

接下来我们要按照电路图接线路了(是不是很开心,终于可以接线路了,好戏在后头),下面是74HC573集成电路的接法:

首先我们先分析一下原理图:74HC573的1D~8D都连接在一起,然后再接到单片机的P0.0~P0.7端口;1Q~8Q分别连接每排的共阳里,就是焊接在电路板上的光立方引脚;至于LE要分别接到单片机的P2.0~P2.7。

当然上图是我的接线实物图,是不是很乱 ,当然,只要我们可以把思路可以理

清楚就可以。

接下来,我们来接UNL2803的线与单片机的外设电路,下面是原理图:

UNL2803输入口是OUT1~OUT8,接光立方的共阴极,输入前先加一个220欧的电阻,输出口是IN1~IN8,这8个引脚接到单片机的P1.0~P1.7口。

其次,最重要的就是把单片机的外围电路接好,按照上面的电路图接法,我们可

以直接按照它摆放的位置摆放元件

接下来,我们要为音频功放做电路做准备,下图为原理图:

如图,我们需要以TDA2030为主芯片做一个功放电路,该电路对于新手来说可能有点复杂,所以各位新手可以按照原理图的排版来布置元件(其实我也是这样),如下图,这是我布线的图片。

最后,我们需要制作一个硬件电路

我们要接一个max232来作为电平转换,串口下载线可以自己选择。下面是完成后的焊接图

接下来,就要公布一下程序文件了

#include //

#include"STC12C5A60S2.H" //芯片头文件

#include"FFT.H" //FFT(快速傅里叶变换)功能头文件

#include"key.h" //按键扫描头文件

#include"zimo.h" //

#include"hc573.h" //hc573驱动

#include"flash.h" //

//定义ULN2803数据端口

#define anum P3

//指示用LED(未使用)

sbit LED =P1^3;

//变量区分定时器0功能(0:用于音乐频谱,1:用于动画)uchar flag1;

//uchar COUNT=15;

//uchar COUNT1=0;

uchar ADC_Count=0,LINE=15,G=0,T;

//uchar code tablew[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //uchar code tablew[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //uchar code tablew[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01};

uchar code tablew[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE};

uchar G;

uchar buffer[8];

//功能初始化

void Init()

{

//IO口默认状态

P0 = 0x00; //74HC573数据口

P2 = 0x00; //74HC573位选端

P3 = 0x00; //ULN2803数据口

//IO口模式初始化

P3M0 = 0xff; //ULN2803输出口设置为推挽输出

P3M1 = 0x00;

P0M0 = 0xff; //P0、P2用于控制74HC573,推挽输出P0M1 = 0x00;

P2M0 = 0xff;

P2M1 = 0x00;

P4M0 = 0x00; //P4端口接有按键,设置为输入

P4M1 = 0xff;

//573初始化

initial573();

//----- ADC初始化------------------------------------------------------------------------------

P1ASF = 0x02; //0000,0010, 将P1.1 置成模拟口

AUXR1 &=0xFB; //1111,1011, 令ADRJ=0

EADC =1; //AD中断打开

ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | channel; //1110 1001 1打开A/D (ADC_POWER)转换电源;11速度为90周期一次;

//0中断标志清零;1启动adc(ADC_START);001AD通道打开(这里为P1.1);

//----- 定时器初始化------------------------------------------------------------------------------

//TMOD=0X12;

//TH0=0xf0;

//TL0=0xf0;

//TH1=0xfe;

//TL1=0Xd4;

ET0 = 1; //定时器0中断启用

TR0 = 0; //定时器0 关闭

ET1 = 1; //定时器1中断启用

TR1 = 0; //定时器1 关闭

相关文档
最新文档