光立方制作+程序_第1页
光立方制作+程序_第2页
光立方制作+程序_第3页
光立方制作+程序_第4页
光立方制作+程序_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 光立方教程今天,给大家带来光立方的制作教程,基于本人制作的经验,给各位想要做的朋友分享制作过程。对于第一次制作的朋友,我们要先制作好一个日程表,如下图:我们要弄好一个计划,就好像单片机运行程序一样。当然,废话少说。接下来,我们需要一份购买材料的清单如上图所示,我们需要购买的万能板需要购买18*30的规格。这样子才有足够的空间去安装我们的电子元件。首先,我们需要用万能板作为骨架,每2cm*2cm就要焊接一个排针,上下左右间隔一样。不过对于初学者来说,一次性焊接64颗排针有点困难,所以我们需要用胶布把每一颗排针固定好,然后上焊,当然这是一个快捷的方法,也适合所有的初学者当我们把排针固定好后,我们

2、只需要把板子翻过来焊接就可以了。接下来,我们要把每一颗led灯折弯后侧着放置在排针中。从左到右,从上至下的安放,安放好后,我们只需要把他们的脚焊接即可。折弯时记住使用镊子折弯。效果图如下图所示显而易见,这是非常需要考焊功的活,各位制作时候要注意节点与节点之间的间距,并且注意焊点不要点太多的锡,会影响做出来的效果与美观。接下来,我们把弄好的8排led插在万能板上,注意:我们要注意每排之间的间隔。下一步,我们需要在把每排led的共阴极连接在一起,一共8层,每层都要连接好,当我们把每层连接好后,我们要在每层的末端或者初始端接一条输出线,作为共阴极连接UNL2803。当然,我们连接UNL2803的前提

3、是先把芯片接好。小编我直接把芯片焊接在板子上,这种方法对于初学者来说不可取,需要弄芯片底座,不然芯片烧掉了就很难拆下来了。接下来我们要按照电路图接线路了(是不是很开心,终于可以接线路了,好戏在后头),下面是74HC573集成电路的接法:首先我们先分析一下原理图:74HC573的1D8D都连接在一起,然后再接到单片机的P0.0P0.7端口;1Q8Q分别连接每排的共阳里,就是焊接在电路板上的光立方引脚;至于LE要分别接到单片机的P2.0P2.7。当然上图是我的接线实物图,是不是很乱😊,当然,只要我们可以把思路可以理清楚就可以。接下来,我们来接UNL2803的线与单片机的外设电路,下

4、面是原理图:UNL2803输入口是OUT1OUT8,接光立方的共阴极,输入前先加一个220欧的电阻,输出口是IN1IN8,这8个引脚接到单片机的P1.0P1.7口。其次,最重要的就是把单片机的外围电路接好,按照上面的电路图接法,我们可以直接按照它摆放的位置摆放元件接下来,我们要为音频功放做电路做准备,下图为原理图:如图,我们需要以TDA2030为主芯片做一个功放电路,该电路对于新手来说可能有点复杂,所以各位新手可以按照原理图的排版来布置元件(其实我也是这样),如下图,这是我布线的图片。最后,我们需要制作一个硬件电路我们要接一个max232来作为电平转换,串口下载线可以自己选择。下面是完成后的焊

5、接图接下来,就要公布一下程序文件了#include <intrins.h> /#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(未使用)sbi

6、t LED =P13;/变量区分定时器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 co

7、de tablew=0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE; uchar G;uchar buffer8;/功能初始化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;

8、 /P4端口接有按键,设置为输入P4M1 = 0xff;/573初始化initial573();/- ADC初始化 -P1ASF = 0x02; /0000,0010, 将 P1.1 置成模拟口AUXR1 &=0xFB; /1111,1011, 令 ADRJ=0EADC =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.

9、1);/- 定时器初始化 - /TMOD=0X12; /TH0=0xf0; /TL0=0xf0;/TH1=0xfe; /TL1=0Xd4; ET0 = 1; /定时器0中断 启用TR0 = 0; /定时器0 关闭ET1 = 1; /定时器1中断 启用TR1 = 0; /定时器1 关闭PT1 = 0; /定时器1 低优先级PT0 = 1; /定时器0 高优先级IPH = PADCH;IP = PADC; /中断优先级EA = 1; /总中断打开 clear(0); /清空显示缓冲区/按键设置P4SW = 0x70; /将NA、ALE、EX_LVD设置为准IO口(P4.4、P4.5、P4.6) /

10、* 主函数 */void main()uchar i = 0; /for循环变量/设备初始化Init();/正常工作循环while(1)clear(0);/清空刷新显示缓冲区 key_scan();/扫描按键/关闭显示if(key1flag=1)key1flag = 0;xiansi1(); /关闭所有573输出anum = 0xff; /关闭ULN2083输出TR1 = 0; /定时器1 关闭TR0 = 0; /定时器0 关闭/FFTif(key2flag=1)TMOD = 0x12; /T0: 8位自动重装 T1: 16位模式/TH0 = 0xb0; /ADC采样周期(80us或6.66u

11、s) 采样率 12.5 KHz /TL0 = 0xb0; /TH0 = 0x60; /ADC采样周期(80us或6.66us) 采样率 12.5 KHz TL0 = 0x60; /TH1 = 0xfe; /刷新显示周期(300us或25us) 刷新率 /TL1 = 0Xd4; /TH1 = 0xfd; /刷新显示周期(300us或25us) 刷新率 TL1 = 0Xa8; /while(1)flag1 = 0;TR1 = 1; /刷新显示TR0 = 1; /控制采样速率/P0 = 0xaa; /P0 未知作用1010 1010ADC_Count=0;TR1 = 1; /开启定时器中断1TR0

12、= 1; /开启定时器卸?EADC = 1; /开启ADC while(ADC_Count<128); /转换128次for(i=0;i<128;i+) /FFT参数虚部赋值Fft_Imagei=0; /原始数据 虚部赋值为0FFT(); /FFT运算并转换为各频段幅值/其他按钮,跳出key_scan();if(key2flag = 0) break;/顺序循环if(key3flag=1)TMOD=0x11;while(1)clear(0);flag1=1; /定时器0功能控制TR1=0; /关闭定时器1TR0=1; /开启定时器0/TH0=0xf0;/TL0=0xff;flash

13、_6();clear(0); key_scan(); if(key3flag = 0) break;flash_5();clear(0); key_scan(); if(key3flag = 0) break;flash_1();clear(0); key_scan(); if(key3flag = 0) break;flash_2();clear(0); key_scan(); if(key3flag = 0) break;flash_4();clear(0); key_scan(); if(key3flag = 0) break;flash_3();clear(0); key_scan()

14、; if(key3flag = 0) break;flash_8();clear(0); key_scan(); if(key3flag = 0) break;flash_7();clear(0); key_scan(); if(key3flag = 0) break;flash_11();clear(0); key_scan(); if(key3flag = 0) break;flash_9();clear(0); key_scan(); if(key3flag = 0) break;flash_10();clear(0); key_scan(); if(key3flag = 0) brea

15、k;flash_11();clear(0); key_scan(); if(key3flag = 0) break;flash_6();clear(0); key_scan(); if(key3flag = 0) break;flash_5();clear(0); key_scan(); if(key3flag = 0) break;flash_4();clear(0); key_scan(); if(key3flag = 0) break;flash_7();clear(0); key_scan(); if(key3flag = 0) break;flash_9();clear(0); ke

16、y_scan(); if(key3flag = 0) break;flash_8();clear(0); key_scan(); if(key3flag = 0) break;flash_4();clear(0); key_scan(); if(key3flag = 0) break;flash_2();clear(0); key_scan(); if(key3flag = 0) break; 仅供学习使用,禁止用于商业用途,版权所有翻版必究/定时器1中断 用于刷新显示(只在频谱显示时使用)void LED_Display() interrupt 3 /中断一次显示一列 /TH1=0xfe;/

17、TL1=0xD4;TH1 = 0xfd; /刷新显示周期(300us或25us) 刷新率 TL1 = 0Xa8; /G+; if(G>=17) G=1;switch(G) /往点阵屏填充一列的数据case 1: anum=tablew(LED_TAB1 )%8;hang1();break; /(LED_TAB1 )%8取八的余数case 2: anum=tablew(LED_TAB2 )%8;hang1();break;case 3: anum=tablew(LED_TAB3 )%8;hang2();break;case 4: anum=tablew(LED_TAB4 )%8;hang2

18、();break;case 5: anum=tablew(LED_TAB5 )%8;hang3();break;case 6: anum=tablew(LED_TAB6 )%8;hang3();break;case 7: anum=tablew(LED_TAB7 )%8;hang4();break;case 8: anum=tablew(LED_TAB8 )%8;hang4();break;case 9: anum=tablew(LED_TAB9 )%8;hang5();break;case 10:anum=tablew(LED_TAB10)%8;hang5();break;case 11:anum=tablew(LED_TAB11)%8;hang6();break;case 12:anum=tablew(LED_TAB12)%8;hang6();break;case 13:anum=tablew(LED_TAB13)%8;hang7();break;case 14:anum=tablew(LED_TAB14)%8;hang7();break;case 15:anum=tablew(LED_TAB15)%8;hang8();break;case 16:anum=tablew(LED_TAB15)%8;hang8();b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论