標(biāo)題: DIY單片機(jī)迷你音樂(lè)頻譜顯示器 點(diǎn)陣顯示 帶FFT [打印本頁(yè)]
作者: 51hei學(xué)習(xí)技術(shù)中 時(shí)間: 2016-10-25 14:02
標(biāo)題: DIY單片機(jī)迷你音樂(lè)頻譜顯示器 點(diǎn)陣顯示 帶FFT
0.png (59.82 KB, 下載次數(shù): 206)
下載附件
2016-10-25 13:58 上傳
所有制作資料打包下載:
迷你音樂(lè)頻譜顯示器.rar
(1.81 MB, 下載次數(shù): 526)
2016-10-25 14:01 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
實(shí)現(xiàn)功能:
# 電路制作簡(jiǎn)單,無(wú)需PCB板,只需元器件,采用USB 接口供電
# 采用LED點(diǎn)陣16*8顯示,隨音頻變化而起伏顯示
# 自動(dòng)增益校正功能,音量調(diào)大調(diào)小都不會(huì)過(guò)滿顯示或顯示過(guò)少(當(dāng)然,音量也不能太小了。輸入音量過(guò)小、電平比較低時(shí),可以把音響的音量調(diào)小一點(diǎn),音源的音量調(diào)大一些)
電路原理圖:
1.001.jpg (35.43 KB, 下載次數(shù): 200)
下載附件
2016-10-25 13:54 上傳
管腳連接說(shuō)明:
單片機(jī)的1腳為音頻信號(hào)輸入端,2~9/32~39為LED1點(diǎn)陣引腳,10~17/24~31為LED2點(diǎn)陣引腳,18/19為晶振、電容引腳,21/22為指示燈引腳(21為負(fù)極,22為正極),
40腳為VCC電源5V正極,20腳為GND電源負(fù)極(也是音頻信號(hào)輸入負(fù)極),23腳為空腳懸空。
制作說(shuō)明:
1、用熱熔膠或502膠水將USB公頭反向粘到芯片底座的左側(cè)(底座缺口一側(cè))
1.002.jpg (20.11 KB, 下載次數(shù): 177)
下載附件
2016-10-25 13:54 上傳
1.003.jpg (19.36 KB, 下載次數(shù): 156)
下載附件
2016-10-25 13:54 上傳
2、將USB公頭上的正極連至40腳,負(fù)極連至20腳,將2PIN排針粘到芯片底座的右側(cè)(頻譜接口),上端接1腳,下端接20腳
1.004.jpg (22.27 KB, 下載次數(shù): 176)
下載附件
2016-10-25 13:54 上傳
1.005.jpg (20.48 KB, 下載次數(shù): 174)
下載附件
2016-10-25 13:54 上傳
1.006.jpg (18.13 KB, 下載次數(shù): 192)
下載附件
2016-10-25 13:54 上傳
3、2個(gè)30PF電容連接至芯片底座的18、19、20腳(一個(gè)接18、20腳,另一個(gè)接19、20腳)
1.007.jpg (25.84 KB, 下載次數(shù): 175)
下載附件
2016-10-25 13:54 上傳
4、32.768MHZ晶振連接至芯片底座的18、19腳
1.008.jpg (25.24 KB, 下載次數(shù): 176)
下載附件
2016-10-25 13:54 上傳
1.009.jpg (23.59 KB, 下載次數(shù): 186)
下載附件
2016-10-25 13:54 上傳
5、將芯片安放置底座上,缺口對(duì)缺口
1.010.jpg (22.75 KB, 下載次數(shù): 192)
下載附件
2016-10-25 13:54 上傳
6、8*8點(diǎn)陣管腳識(shí)別方法:點(diǎn)陣旁邊的字朝下,下邊那行的左邊開(kāi)始數(shù)是第一腳,然后逆時(shí)針走一圈1~16腳,和集成塊的數(shù)法一樣,然后對(duì)照點(diǎn)陣原理圖看!
1.011.jpg (33.8 KB, 下載次數(shù): 192)
下載附件
2016-10-25 13:54 上傳
7、將2個(gè)8*8點(diǎn)陣安放于另一個(gè)芯片底座上,如圖所示,左側(cè)空出1列,右側(cè)空出3列,右側(cè)底下兩只腳接發(fā)光二極管(左正右負(fù))
1.012.jpg (36.76 KB, 下載次數(shù): 186)
下載附件
2016-10-25 13:54 上傳
8、將兩塊芯片底座合并,40個(gè)管腳依次焊接到一起,USB公頭接上USB延長(zhǎng)線到電腦,音頻接口接上杜邦線到音頻線,到音頻分離器
1.013.jpg (25.08 KB, 下載次數(shù): 162)
下載附件
2016-10-25 13:54 上傳
9、制作音頻線:
1.014.jpg (35.78 KB, 下載次數(shù): 207)
下載附件
2016-10-25 13:54 上傳
1.015.jpg (49.1 KB, 下載次數(shù): 177)
下載附件
2016-10-25 13:54 上傳
10、一分二音頻分線器可以讓音樂(lè)頻譜顯示器與音響并聯(lián)
1.016.jpg (3.64 KB, 下載次數(shù): 173)
下載附件
2016-10-25 13:54 上傳
1.017.jpg (1.79 KB, 下載次數(shù): 166)
下載附件
2016-10-25 13:54 上傳
1.018.jpg (1.76 KB, 下載次數(shù): 159)
下載附件
2016-10-25 13:54 上傳
1.019.jpg (18.88 KB, 下載次數(shù): 167)
下載附件
2016-10-25 13:54 上傳
11、音樂(lè)頻譜顯示器通過(guò)USB接口取電,從音頻接口采集音樂(lè)信號(hào)
1.020.jpg (33.05 KB, 下載次數(shù): 153)
下載附件
2016-10-25 13:54 上傳
注意事項(xiàng):
1.021.jpg (5.7 KB, 下載次數(shù): 156)
下載附件
2016-10-25 13:54 上傳
1、電腦音量不能太小,因?yàn)闄z測(cè)電壓幅值,音量太小了對(duì)單片機(jī)ADC采集會(huì)有影響,建議音量調(diào)到中等以上為最佳顯示效果。同時(shí),可以通過(guò)調(diào)節(jié)音響的音量來(lái)控制聲音的大�。ò岩繇懙囊袅空{(diào)小一點(diǎn),電腦的音量調(diào)大一些)。
2、拔掉音頻接口信號(hào)輸入端(懸空),顯示會(huì)滿屏,拔掉音頻接口信號(hào)接地端,只顯示最下面一行!
3、在靜音的狀態(tài)下,顯示屏若時(shí)有波動(dòng),這是空中的電磁波的影響,是屬于正常情況。
12、成品展示
1.022.jpg (32.08 KB, 下載次數(shù): 168)
下載附件
2016-10-25 13:54 上傳
1.023.jpg (30.63 KB, 下載次數(shù): 171)
下載附件
2016-10-25 13:54 上傳
1.024.jpg (31.96 KB, 下載次數(shù): 182)
下載附件
2016-10-25 13:54 上傳
1.025.jpg (28.72 KB, 下載次數(shù): 164)
下載附件
2016-10-25 13:54 上傳
1.026.jpg (30.45 KB, 下載次數(shù): 162)
下載附件
2016-10-25 13:54 上傳
元器件清單:
1、單片機(jī)STC12C5A60S2 PDIP40 (1片)
2、0788形紅色8*8LED點(diǎn)陣屏(2塊)
3、普通芯片座PIN40(2個(gè))
4、USB公頭(1個(gè))
5、32.768MHz石英晶體(1個(gè))
6、30pF電容(2個(gè))
7、2PIN排針(1個(gè))
8、1PIN杜邦線(2根)
9、USB延長(zhǎng)線公對(duì)母(1根)
10、音頻頭(1個(gè))
11、音頻線(1根)
12、音頻分離器(1個(gè))
13、發(fā)光二極管(1個(gè))
14、導(dǎo)線 若干
主程序:
fft程序:
- #ifndef _FFT_INCLUDED_
- #define _FFT_INCLUDED_
- struct compx
- {
- float real;
- float imag;
- };//定義數(shù)據(jù)存放機(jī)構(gòu)體
- struct compx dd[65]; //FFT數(shù)據(jù)段
- code float iw[64]=
- {
- 1.000,0,0.9952,-0.0980,0.9808,-0.1951,0.9569,-0.2903,0.9239,-0.3827,0.8819,-0.4714,0.8315,-0.5556,
- 0.7730,-0.6344,0.7071,-0.7071,0.6344,-0.7730,0.5556,-0.8315,0.4714,-0.8819,0.3827,-0.9239,0.2903,-0.9569,
- 0.1951,-0.9808,0.0980,-0.9952,0.0,-1.0000,-0.0980,-0.9952,-0.1951,-0.9808,-0.2903,0.9569,-0.3827,-0.9239,
- -0.4714,-0.8819,-0.5556,-0.8315,-0.6344,-0.7730,-0.7071,-0.7071,-0.7730,-0.6344,-0.8315,-0.5556,-0.8819,-0.4714,
- -0.9239,-0.3827,-0.9569,-0.2903,-0.9808,-0.1951,-0.9952,-0.0980
- };//w值緩存區(qū)
- data struct compx temp;
- //復(fù)數(shù)乘法
- void ee(struct compx b1,uchar data b2)
- {
- temp.real=b1.real*iw[2*b2]-b1.imag*iw[2*b2+1];
- temp.imag=b1.real*iw[2*b2+1]+b1.imag*iw[2*b2];
- }
- //乘方函數(shù),計(jì)算 nbottom^ntop
- uint mypow(uchar data nbottom,uchar data ntop)
- {
- uint data result=1;
- uchar data t;
- for(t=0;t<ntop;t++)result*=nbottom;//nbottom^ntop
- return result;
- }
- //快速傅立葉變換
- void fft(struct compx *xin,uchar data N)
- {
- uchar data fftnum,i,j,k,l,m,n,disbuff,dispos,dissec;
- data struct compx t;
- fftnum=N;//傅立葉變換的點(diǎn)數(shù)
- for(m=1;(fftnum=fftnum/2)!=1;m++);//求得M的值
- for(k=0;k<=N-1;k++)//碼位倒置
- {
- n=k;
- j=0;
- for(i=m;i>0;i--)//倒置
- {
- j=j+((n%2)<<(i-1));
- n=n/2;
- }
- if(k<j){t=xin[1+j];xin[1+j]=xin[1+k];xin[1+k]=t;}//交換數(shù)據(jù)
- }
- for(l=1;l<=m;l++)//fft運(yùn)算
- {
- disbuff=mypow(2,l);//求得碟間距離
- dispos=disbuff/2;//求得碟形兩點(diǎn)之間的距離
- for(j=1;j<=dispos;j++)
- for(i=j;i<N;i=i+disbuff)//遍歷M級(jí)所有的碟形
- {
- dissec=i+dispos;//求得第二點(diǎn)的位置
- ee(xin[dissec],(uint)(j-1)*(uint)N/disbuff);//復(fù)數(shù)乘法
- t=temp;
- xin[dissec].real=xin[i].real-t.real;
- xin[dissec].imag=xin[i].imag-t.imag;
- xin[i].real=xin[i].real+t.real;
- xin[i].imag=xin[i].imag+t.imag;
- }
- }
- }
- //對(duì)fft數(shù)據(jù)進(jìn)行處理,得到各個(gè)頻率段的電壓幅值
- void processfft( )
- {
- uchar data pt=0,tmp;
- for(pt=1;pt<65;pt++)
- {
- dd[pt].imag=0; //清零虛部
- }
- fft(dd,64);//對(duì)當(dāng)前數(shù)據(jù)進(jìn)行傅立葉變換
- dd[0].imag=0; dd[0].real=0;
- for(pt=1;pt<65;pt++)
- {
- dd[pt].real=sqrt(dd[pt].real*dd[pt].real+dd[pt].imag*dd[pt].imag);//取均方根
- }
- if(Menu==1)
- {
- for(pt=2;pt<34;pt+=2)
- {
- for(tmp=(dd[pt].real/32)+1,LEDBuf[pt]=0xFF;tmp>=1;tmp--) //tmp>1;不保留 最低位那一行常亮;{}一次也不執(zhí)行;
- {
- LEDBuf[pt]<<=1;
-
- }
- LEDBuf[pt]=~(LEDBuf[pt]);
- }
- }
- else if(Menu==2)
- {
- //下落感頻譜
- for(pt=2;pt<34;pt+=2)
- {
- tmp=(dd[pt].real/32)+1;
- if(refreshflag[pt]<tmp) //刷新數(shù)據(jù),取較大高度值 存儲(chǔ)顯示
- {
- for(LEDBuf[pt]=0xFF;tmp>1;tmp--) //tmp>1;不保留 最低位那一行常亮;{}一次也不執(zhí)行;
- {
- LEDBuf[pt]<<=1;
-
- }
- refreshflag[pt]=(dd[pt].real/32)+1;
- }
- else
- {
- if(refreshflag[pt]>1)refreshflag[pt]--; //頂端下落速度控制 改變值可以改變下降速度
- for(LEDBuf[pt]=0xFF,tmp=refreshflag[pt];tmp>1;tmp--) //tmp>1;不保留 最低位那一行常亮;{}一次也不執(zhí)行;
- {
- LEDBuf[pt]<<=1;
-
- }
- }
-
- }
- }
- else if(Menu==0)
- {
- //下落感頻譜
- for(pt=2;pt<34;pt+=2)
- {
- tmp=(dd[pt].real/32)+1;
- if(refreshflag[pt]<tmp) //刷新數(shù)據(jù),取較大高度值 存儲(chǔ)顯示
- {
- for(LEDBuf[pt]=0xFF;tmp>=1;tmp--) //tmp>1;不保留 最低位那一行常亮;{}一次也不執(zhí)行;
- {
- LEDBuf[pt]<<=1;
-
- }
- refreshflag[pt]=(dd[pt].real/32)+1;
- }
- else
- {
- if(refreshflag[pt]>1)refreshflag[pt]--; //頂端下落速度控制 改變值可以改變下降速度
- for(LEDBuf[pt]=0xFF,tmp=refreshflag[pt];tmp>=1;tmp--) //tmp>1;不保留 最低位那一行常亮;{}一次也不執(zhí)行;
- {
- LEDBuf[pt]<<=1;
-
- }
- }
- LEDBuf[pt]=~(LEDBuf[pt]);
-
- }
- }
-
- }
- #endif
復(fù)制代碼
作者: 好久不見(jiàn) 時(shí)間: 2016-11-20 18:19
你好問(wèn)一下,那個(gè)音頻頭上三根線,為什么到單片機(jī)上就兩根了(p1.0和GND),還有我用32M晶振可以嗎?最近做了一個(gè)但是不亮,可以恢復(fù)一下嗎,萬(wàn)分感謝
作者: 好久不見(jiàn) 時(shí)間: 2016-11-20 18:28
你好問(wèn)一下,那個(gè)音頻頭上三根線,為什么到單片機(jī)上就兩根了(p1.0和GND),還有我用32M晶振可以嗎?最近做了一個(gè)但是不亮,可以恢復(fù)一下嗎,萬(wàn)分感謝
作者: 年時(shí)01 時(shí)間: 2016-12-27 09:51
拿走了啊
作者: zeng_fanlong 時(shí)間: 2016-12-28 08:52
好東西,自己也做一個(gè)
作者: comcomcat 時(shí)間: 2017-3-22 15:09
不錯(cuò),不錯(cuò)
作者: zaizaidage 時(shí)間: 2017-3-22 23:18
hahahahah
作者: zqy181818 時(shí)間: 2017-3-22 23:56
給力!
作者: 51阿倫 時(shí)間: 2017-4-8 16:26
哇 還不錯(cuò) 想自己diy一個(gè)大一點(diǎn)的 40*40的,不知道還要改哪里
作者: 51阿倫 時(shí)間: 2017-4-30 20:45
好東西,感謝樓主的分享
作者: 後輪追前輪 時(shí)間: 2017-5-16 10:40
學(xué)習(xí)
作者: allen2016 時(shí)間: 2017-7-31 14:00
不錯(cuò)不錯(cuò),多謝分享。想搞一個(gè)簡(jiǎn)單的
作者: yzb1048294351 時(shí)間: 2017-9-11 13:30
厲害厲害
作者: 958842929qq 時(shí)間: 2017-10-5 17:53
點(diǎn)陣屏是主流。很不錯(cuò)。
作者: xi@n 時(shí)間: 2017-10-23 11:00
這個(gè)挺好的
作者: 958842929qq 時(shí)間: 2017-11-19 14:06
你好,可以問(wèn)一下8*8的LED點(diǎn)陣屏在protel里原理圖的器件和pcb里的封裝有嗎。
作者: cz取 時(shí)間: 2017-11-22 12:05
這個(gè)需要matlab仿真嗎,如果不需要為什么函數(shù)標(biāo)識(shí)用FFTMTL呢??
作者: 秋葉楓 時(shí)間: 2017-12-20 23:12
馬上可以來(lái)試試��!
作者: 秦延雷 時(shí)間: 2018-1-4 17:58
有沒(méi)有辦法收集成語(yǔ)音信號(hào)?
作者: zxy2266 時(shí)間: 2018-1-27 21:10
想玩,可是程序不懂,看不明白
作者: dpj1185090651 時(shí)間: 2018-4-20 09:54
很給力!
作者: opop1988 時(shí)間: 2018-4-21 23:22
灰常不錯(cuò),贊一個(gè)
作者: LYSHLRZH8888 時(shí)間: 2018-4-29 23:38
不錯(cuò),學(xué)習(xí)一下,自己也做一個(gè)
作者: lycwhy 時(shí)間: 2018-5-1 15:18
為什么附件下載到一半多就下載不動(dòng)了
作者: 996054544 時(shí)間: 2018-5-14 20:57
有電路圖就好了
作者: FQ967 時(shí)間: 2018-7-26 08:03
感謝樓主的分享!下載了看看!
作者: songyuan 時(shí)間: 2018-7-26 09:04
寫(xiě)的非常不錯(cuò),頂一個(gè)
作者: IdeaMing 時(shí)間: 2018-7-26 10:06
簡(jiǎn)直是666啊!
作者: 流年521 時(shí)間: 2018-7-26 11:10
謝謝樓主,自己也嘗試做一個(gè)
作者: liming_nefu 時(shí)間: 2018-11-26 17:52
太帥了,好崇拜樓主!
最近突發(fā)奇想也要做個(gè)類(lèi)似的東東,沒(méi)想到咱們論壇都有現(xiàn)成的啦~~~
作者: 楓舞、 時(shí)間: 2018-11-26 21:11
不錯(cuò)啊,厲害
作者: 484 時(shí)間: 2018-12-19 20:22
課設(shè)就做它了
作者: 張宗昱 時(shí)間: 2019-1-2 15:31
為啥使用32.768M的晶振啊,12M不行嗎
作者: 魔菲音電子 時(shí)間: 2019-1-24 12:00
謝謝樓主,做一個(gè)試一下
作者: fgl2599 時(shí)間: 2019-4-5 00:05
非常好的帖子,頂起來(lái)
作者: stolle 時(shí)間: 2019-4-22 23:12
靈感和學(xué)習(xí)效果的完美頁(yè)面..我對(duì)這項(xiàng)創(chuàng)新感到非常驚訝好主意,和我們?cè)谝黄穑〔恍业氖�,我不懂你的語(yǔ)言,我嚴(yán)重依賴翻譯。謝謝分享。
作者: 杜安安 時(shí)間: 2019-7-23 18:39
好久不見(jiàn) 發(fā)表于 2016-11-20 18:28
你好問(wèn)一下,那個(gè)音頻頭上三根線,為什么到單片機(jī)上就兩根了(p1.0和GND),還有我用32M晶振可以嗎?最 ...
我覺(jué)得這就是音量采集直接出來(lái)應(yīng)該就可以了,接頭和端口連就可以。三根線不是接都接頭上,然后p1.0相連接可以起到控制p1.0電壓的作用。不知對(duì)不沒(méi)試過(guò)
作者: 張明211 時(shí)間: 2020-2-10 15:38
學(xué)習(xí)一下
作者: zxule 時(shí)間: 2020-2-11 11:37
很好,點(diǎn)陣是共陰的還是共陽(yáng)的?
作者: 付浩東 時(shí)間: 2020-2-13 17:43
好東西哎,趕緊自己做一個(gè)
作者: zxule 時(shí)間: 2020-2-18 13:59
親測(cè)可以,就是頻譜閃的特別厲害,什么原因?謝謝
作者: wcs1668 時(shí)間: 2020-3-16 21:49
樓主加油
作者: 中恒電子asus 時(shí)間: 2020-4-5 12:14
好東西,感謝樓主的分享
作者: zzzzz.c 時(shí)間: 2020-4-7 09:55
真是太感謝了,謝謝分享,大佬膜拜,我也正在學(xué)習(xí)呢
作者: 魔菲音電子 時(shí)間: 2020-4-8 09:38
P4.7的那排燈不亮,能說(shuō)一下什么問(wèn)題嗎?
作者: auxccc 時(shí)間: 2022-3-6 09:33
51黑有你更精彩
作者: 許玩童 時(shí)間: 2023-4-10 11:35
不錯(cuò),學(xué)習(xí)一下,可以仿真運(yùn)行嗎
作者: zzz988 時(shí)間: 2023-7-10 09:39
很好的制作,學(xué)習(xí)一下!
作者: wangwenhai8 時(shí)間: 2023-8-6 16:28
還好,試試、試試、事實(shí)
作者: mmla 時(shí)間: 2023-8-11 07:51
不錯(cuò),趕緊自己做一個(gè)
作者: yang23943 時(shí)間: 2023-9-19 10:43
程序是用什么燒錄器燒錄
作者: ccccc5321c 時(shí)間: 2024-10-14 09:21
很好很強(qiáng)大
作者: luly8818 時(shí)間: 2024-10-18 18:12
感謝分享 學(xué)習(xí)了
作者: hclin 時(shí)間: 2024-11-30 17:57
值得DIY,謝謝分享
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |