光立方制作+程序_第1頁
光立方制作+程序_第2頁
光立方制作+程序_第3頁
光立方制作+程序_第4頁
光立方制作+程序_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

光立方教程今天,給大家?guī)砉饬⒎降闹谱鹘坛蹋诒救酥谱鞯慕?jīng)驗,給各位想要做的朋友分享制作過程。對于第一次制作的朋友,我們要先制作好一個日程表,如下圖:我們要弄好一個計劃,就好像單片機(jī)運行程序一樣。當(dāng)然,廢話少說。接下來,我們需要一份購買材料的清單如上圖所示,我們需要購買的萬能板需要購買18*30的規(guī)格。這樣子才有足夠的空間去安裝我們的電子元件。首先,我們需要用萬能板作為骨架,每2cm*2cm就要焊接一個排針,上下左右間隔一樣。不過對于初學(xué)者來說,一次性焊接64顆排針有點困難,所以我們需要用膠布把每一顆排針固定好,然后上焊,當(dāng)然這是一個快捷的方法,也適合所有的初學(xué)者當(dāng)我們把排針固定好后,我們只需要把板子翻過來焊接就可以了。接下來,我們要把每一顆led燈折彎后側(cè)著放置在排針中。從左到右,從上至下的安放,安放好后,我們只需要把他們的腳焊接即可。折彎時記住使用鑷子折彎。效果圖如下圖所示顯而易見,這是非常需要考焊功的活,各位制作時候要注意節(jié)點與節(jié)點之間的間距,并且注意焊點不要點太多的錫,會影響做出來的效果與美觀。接下來,我們把弄好的8排led插在萬能板上,注意:我們要注意每排之間的間隔。下一步,我們需要在把每排led的共陰極連接在一起,一共8層,每層都要連接好,當(dāng)我們把每層連接好后,我們要在每層的末端或者初始端接一條輸出線,作為共陰極連接UNL2803。當(dāng)然,我們連接UNL2803的前提是先把芯片接好。小編我直接把芯片焊接在板子上,這種方法對于初學(xué)者來說不可取,需要弄芯片底座,不然芯片燒掉了就很難拆下來了。接下來我們要按照電路圖接線路了(是不是很開心,終于可以接線路了,好戲在后頭),下面是74HC573集成電路的接法:首先我們先分析一下原理圖:74HC573的1D~8D都連接在一起,然后再接到單片機(jī)的P0.0~P0.7端口;1Q~8Q分別連接每排的共陽里,就是焊接在電路板上的光立方引腳;至于LE要分別接到單片機(jī)的P2.0~P2.7。當(dāng)然上圖是我的接線實物圖,是不是很亂??,當(dāng)然,只要我們可以把思路可以理清楚就可以。接下來,我們來接UNL2803的線與單片機(jī)的外設(shè)電路,下面是原理圖:UNL2803輸入口是OUT1~OUT8,接光立方的共陰極,輸入前先加一個220歐的電阻,輸出口是IN1~IN8,這8個引腳接到單片機(jī)的P1.0~P1.7口。其次,最重要的就是把單片機(jī)的外圍電路接好,按照上面的電路圖接法,我們可以直接按照它擺放的位置擺放元件接下來,我們要為音頻功放做電路做準(zhǔn)備,下圖為原理圖:如圖,我們需要以TDA2030為主芯片做一個功放電路,該電路對于新手來說可能有點復(fù)雜,所以各位新手可以按照原理圖的排版來布置元件(其實我也是這樣),如下圖,這是我布線的圖片。最后,我們需要制作一個硬件電路我們要接一個max232來作為電平轉(zhuǎn)換,串口下載線可以自己選擇。下面是完成后的焊接圖接下來,就要公布一下程序文件了#include<intrins.h> //#include"STC12C5A60S2.H"http://芯片頭文件#include"FFT.H" //FFT(快速傅里葉變換)功能頭文件#include"key.h" //按鍵掃描頭文件#include"zimo.h" //#include"hc573.h" //hc573驅(qū)動#include"flash.h" ////定義ULN2803數(shù)據(jù)端口#defineanumP3//指示用LED(未使用)sbitLED=P1^3;//變量區(qū)分定時器0功能(0:用于音樂頻譜,1:用于動畫)ucharflag1;//ucharCOUNT=15;//ucharCOUNT1=0;ucharADC_Count=0,LINE=15,G=0,T;//ucharcodetablew[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//ucharcodetablew[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//ucharcodetablew[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01};ucharcodetablew[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE};ucharG;ucharbuffer[8];//功能初始化voidInit(){ //IO口默認(rèn)狀態(tài) P0=0x00;//74HC573數(shù)據(jù)口 P2=0x00;//74HC573位選端 P3=0x00;//ULN2803數(shù)據(jù)口 //IO口模式初始化 P3M0=0xff;//ULN2803輸出口設(shè)置為推挽輸出 P3M1=0x00; P0M0=0xff;//P0、P2用于控制74HC573,推挽輸出 P0M1=0x00; P2M0=0xff; P2M1=0x00; P4M0=0x00;//P4端口接有按鍵,設(shè)置為輸入 P4M1=0xff; //573初始化 initial573(); //-----ADC初始化------------------------------------------------------------------------------ P1ASF=0x02;//0000,0010,將P1.1置成模擬口 AUXR1&=0xFB;//1111,1011,令A(yù)DRJ=0 EADC=1; //AD中斷打開 ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START|channel;//111010011打開A/D(ADC_POWER)轉(zhuǎn)換電源;11速度為90周期一次; //0中斷標(biāo)志清零;1啟動adc(ADC_START);001AD通道打開(這里為P1.1);//-----定時器初始化------------------------------------------------------------------------------ //TMOD=0X12; //TH0=0xf0; //TL0=0xf0; //TH1=0xfe; //TL1=0Xd4; ET0=1; //定時器0中斷啟用 TR0=0; //定時器0關(guān)閉 ET1=1; //定時器1中斷啟用 TR1=0;//定時器1關(guān)閉 PT1=0; //定時器1低優(yōu)先級 PT0=1; //定時器0高優(yōu)先級 IPH=PADCH; IP=PADC; //中斷優(yōu)先級 EA=1; //總中斷打開 clear(0); //清空顯示緩沖區(qū) //按鍵設(shè)置 P4SW=0x70;//將NA、ALE、EX_LVD設(shè)置為準(zhǔn)IO口(P4.4、P4.5、P4.6)}/********主函數(shù)***************************************************************************************/voidmain(){ uchari=0;//for循環(huán)變量 //設(shè)備初始化 Init(); //正常工作循環(huán) while(1) { clear(0); //清空刷新顯示緩沖區(qū) key_scan(); //掃描按鍵 //關(guān)閉顯示 if(key1flag==1) { key1flag=0; xiansi1(); //關(guān)閉所有573輸出 anum=0xff;//關(guān)閉ULN2083輸出 TR1=0; //定時器1關(guān)閉 TR0=0; //定時器0關(guān)閉 } //FFT if(key2flag==1) { TMOD=0x12;//T0:8位自動重裝T1:16位模式 //TH0=0xb0;//ADC采樣周期(80us或6.66us)采樣率12.5KHz //TL0=0xb0;// TH0=0x60;//ADC采樣周期(80us或6.66us)采樣率12.5KHz 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未知作用10101010 ADC_Count=0; TR1=1;//開啟定時器中斷1 TR0=1;//開啟定時器卸? EADC=1; //開啟ADC while(ADC_Count<128);//轉(zhuǎn)換128次 for(i=0;i<128;i++) //FFT參數(shù)虛部賦值 { Fft_Image[i]=0; //原始數(shù)據(jù)虛部賦值為0 } FFT();//FFT運算并轉(zhuǎn)換為各頻段幅值 //其他按鈕,跳出 key_scan(); if(key2flag==0)break; } } //順序循環(huán) if(key3flag==1) { TMOD=0x11; while(1) { clear(0); flag1=1;//定時器0功能控制 TR1=0; //關(guān)閉定時器1 TR0=1; //開啟定時器0 //TH0=0xf0; //TL0=0xff; flash_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();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)break; 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);key_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; } } } }僅供學(xué)習(xí)使用,禁止用于商業(yè)用途,版權(quán)所有翻版必究//定時器1中斷用于刷新顯示(只在頻譜顯示時使用)voidLED_Display()interrupt3 //中斷一次顯示一列{ //TH1=0xfe; //TL1=0xD4; TH1=0xfd;//刷新顯示周期(300us或25us) 刷新率 TL1=0Xa8;// G++; if(G>=17)G=1; switch(G) //往點陣屏填充一列的數(shù)據(jù) { case1:anum=tablew[(LED_TAB[1])%8];hang1();break; //(LED_TAB[1])%8取八的余數(shù) case2:anum=tablew[(LED_TAB[2])%8];hang1();break; case3:anum=tablew[(LED_TAB[3])%8];hang2();break; case4:anum=tablew[(LED_TAB[4])%8];hang2();break; case5:anum=tablew[(LED_TAB[5])%8];hang3();break; case6:anum=tablew[(LED_TAB[6])%8];hang3();break; case7:anum=tablew[(LED_TAB[7])%8];hang4();break; case8:anum=tablew[(LED_TAB[8])%8];hang4();break; case9:anum=tablew[(LED_TAB[9])%8];hang5();break; case10:anum=tablew[(LED_TAB[10])%8];hang5();break; case11:anum=tablew[(LED_TAB[11])%8];hang6();break; case12:anum=tablew[(LED_TAB[12])%8];hang6();break; case13:anum=tablew[(LED_TAB[13])%8];hang7();break; case14:anum=tablew[(LED_TAB[14])%8];hang7();break; case15:anum=tablew[(LED_TAB[15])%8];hang8();break; case16:anum=tabl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論