音乐频谱显示_第1页
音乐频谱显示_第2页
音乐频谱显示_第3页
音乐频谱显示_第4页
音乐频谱显示_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

#include<stc12c5a.h>#include<intrins.h>#include"basic.h"typedefunsignedcharuint8;typedefunsignedintuint16;#defineADC_FLAG(1<<4) /*ADC_中断标志*//*放大128倍后的sin整数表(128)*/codecharSIN_TAB[128]={0,6,12,18,24,30,36,42,48,54,59,65,70,75,80,85,89,94,98,102,105,108,112,114,117,119,121,123,124,125,126,126,126,126,126,125,124,123,121,119,117,114,112,108,105,102,98,94,89,85,80,75,70,65,59,54,48,42,36,30,24,18,12,6,0,-6,-12,-18,-24,-30,-36,-42,-48,-54,-59,-65,-70,-75,-80,-85,-89,-94,-98,-102,-105,-108,-112,-114,-117,-119,-121,-123,-124,-125,-126,-126,-126,-126,-126,-125,-124,-123,-121,-119,-117,-114,-112,-108,-105,-102,-98,-94,-89,-85,-80,-75,-70,-65,-59,-54,-48,-42,-36,-30,-24,-18,-12,-6};/*放大128倍后的cos整数表(128)*/codecharCOS_TAB[128]={127,126,126,125,124,123,121,119,117,114,112,108,105,102,98,94,89,85,80,75,70,65,59,54,48,42,36,30,24,18,12,6,0,-6,-12,-18,-24,-30,-36,-42,-48,-54,-59,-65,-70,-75,-80,-85,-89,-94,-98,-102,-105,-108,-112,-114,-117,-119,-121,-123,-124,-125,-126,-126,-126,-126,-126,-125,-124,-123,-121,-119,-117,-114,-112,-108,-105,-102,-98,-94,-89,-85,-80,-75,-70,-65,-59,-54,-48,-42,-36,-30,-24,-18,-12,-6,0,6,12,18,24,30,36,42,48,54,59,65,70,75,80,85,89,94,98,102,105,108,112,114,117,119,121,123,124,125,126,126};/*采样存储序列表*/code char LIST_TAB[128] ={0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,12,76,44,108,28,92,60,124,2,66,34,98,18,82,50,114,10,74,42,106,26,90,58,122,6,70,38,102,22,86,54,118,14,78,46,110,30,94,62,126,1,65,33,97,17,81,49,113,9,73,41,105,25,89,57,121,5,69,37,101,21,85,53,117,13,77,45,109,29,93,61,125,3,67,35,99,19,83,51,115,11,75,43,107,27,91,59,123,7,71,39,103,23,87,55,119,15,79,47,111,31,95,63,127};/*分级量化表*/uint8QTY_TAB[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

uint8ADC_Count=0;uint8i,j,k,b,p,anum;//fft//fft的虚部//记录红色柱状uint8xdataLED_TAB[16];/**名称:FFT*功能:碟型运算转换*输入:无*输出:读出的值voidFFT()〃基2fftuint16Temp_Real,Temp_Imag,temp;uint16TEMP1=0,max=0;for(i=1;i<=7;i++){uint16Temp_Real,Temp_Imag,temp;uint16TEMP1=0,max=0;for(i=1;i<=7;i++){b=1;b<<=(i-1);算例如第一极1和2行计算for(j=0;j<=b-1;j++){p=1;p<<=(7-i);p=p*j;for(k=j;k<128;k=k+2*b){Temp_Real=Fft_Real[k];Temp_Imag=Fft_Image[k];temp=Fft_Real[k+b];//中间临时变量/*for(1)*///碟式运算,用于计算隔多少行计/*for(2)*//*for(3)*/Fft_Real[k]=Fft_Real[k]+((Fft_Real[k+b]*COS_TAB[p])>>7)+((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k]=Fft_Image[k]-((Fft_Real[k+b]*SIN_TAB[p])>>7)+((Fft_Image[k+b]*COS_TAB[p])>>7);Fft_Real[k+b]=Temp_Real-((Fft_Real[k+b]*COS_TAB[p])>>7)-((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k+b]=Temp_Imag+((temp*SIN_TAB[p])>>7)-((Fft_Image[k+b]*COS_TAB[p])>>7);//移位.防止溢出.结果已经是本值的1/64Fft_Real[k]>>=1;Fft_Image[k]>>=1;Fft_Real[k+b]>>=1;Fft_Image[k+b]>>=1;}}}for(j=0;j<16;j++)//16分频{TEMP1=((((Fft_Real[j+1]*Fft_Real[j+1]))+((Fft_lmage[j+1]*Fft_lmage[j+1])))>>1);//求各频段幅值if(TEMP1<1)TEMP1=0;LED_TAB[j]=TEMP1;if(LED_TAB[j]>max)max=LED_TAB[j];}if(max>16)//分级量化{max/=16;for(j=0;j<16;j++)LED_TAB[j]/=max;}}/*名称:GPlO_init功能:GPlO初始化输入:无*输出:读出的值voidGPlO_init(){P0M0=1;P0M1=0;P0=0XFF; /*列*/P2M0=1;P2M1=0;P2=0XFF;P3M0=1;P3M1=0;P3=0XFF; /*行*/}/*名称:timer_lnit功能:内部寄存器初始化*输入:无*输出:无voidtimer_lnit(){TMOD=0X12;

TH0=0xb0;TL0=0xb0;//定时器0//定时器0打开//关闭定时器TR0=0;TH1=0xfd;TL1=0Xa8;ET1=1;TR1=1;EA=1;}/**名称:adc_Init*功能:内部寄存器初始化*输入:无*输出:无voidadc_Init(){ADC_CONTR{ADC_CONTR=0x80;_nop_();_nop_();_nop_();_nopP1ASF=0x01;AUXR1&=0xFB;ADC_RES=0x00;ADC_RESL=0x00;EADC=1;EA=1;}//ADC电源打开//0000,0001,将P1.0置成模拟口//1111,1011,令ADRJ=0//清零寄存器//AD中断打开//总中断打开/**名称:main*功能:主程序*输入:无*输出:无voidmain()uint8i=0;GPIO_init();timer_Init();adc_Init();while(1){ADC_Count=0;EADC=1;TR0=1;while(ADC_Count<128); //满足128点for(i=0;i<128;i++) //清除虚部{Fft_Image[i]=0;}FFT();//FFT运算并转换为各频段幅值}}*名称:ADC_Finish*功能:ADC转换完成中断服务*输入:无*输出:无voidADC_Finish()interrupt5{Fft_Real[LIST_TAB[ADC_Count]]=(int)(((ADC_RES)<<1)+(ADC_RESL>>1)*2)>>3; /*按LIST_TAB表顺序,进行存储采样值*/if(ADC_Count<=127){ADC_Count++; /*自动增量控制*/ADC_CONTR&=!ADC_FLAG;}else{EADC=0;TR0=0;}}*名称:interrupt_timer1*功能:显示屏幕刷新中断服务*输入:无*输出:无voidinterrupt_timer1()interrupt3{staticuint8rec=0;TH1=0xfd;TL1=0Xa8;switch(rec)//往点阵屏填充一列的数据case0:P0=QTY_TAB[LED_TAB[0]];P2=0;break;case1:P0=QTY_TAB[LED_TAB[1]];P2=1;break;switch(rec)case2:P0=QTY_TAB[LED_TAB[2]];P2=2;break;case3:P0=QTY_TAB[LED_TAB[3]];P2=3;break;case4:P0=QTY_TAB[LED_TAB[4]];P2=4;break;case5:P0=QTY_TAB[LED_TAB[5]];P2=5;break;case6:P0=QTY_TAB[LED_TAB[6]];P2=6;break;case7:P0=QTY_TAB[LED_TAB[7]];P2=7;break;case8:P0=QTY_TAB[LED_TAB[8]];P2=8;break;case9:P0=QTY_TAB[LED_TAB[9]];P2=9;break;case10:P0=QTY_TAB[LED_TAB[10]];P2=10;break;case11:P0=QTY_TAB[LED_TAB[11]];P2=11;break;case12:P0=QTY_TAB[LED_TAB[12]];P2=12;break;case13:P0=QTY_TAB[LED_TAB[13]];P2=13;break;case14:P0=QTY_TAB[LED_TAB[14]];P2=14;break;case15:P0=QTY_TAB[LED_TAB[15]];P2=15;break;default:break;}rec++;if(rec>15){rec=0;}/**名称:Ad_Control*功能:控制采样率*输入:无*输出:无voidAd_Control()interrupt1{ADC_CONTR=0xe8; //开始AD采集_nop_();_nop_();_nop_();_nop_();-M^^LEd^^led^^led^^led^^led^^le旧d^^leA-B-c-D-E-F-G-HBLEEXREDD107LEDJJEDD106LEMEDD108ELECXREDD109LELKREDD110閤上的灯前位置坐标与砸件是相对战AABDDEEFF6,Q_HHHHHLED-REDLED^EDLED-REDLED-REDLED-REDLED-REDD68LEEREDD80LED-REDD79LED-REDD54LECtREDD61LED-REDD72LED-REDD77LECtREDD82LED-REDD85LED-RCDD55LED-REDD70LED-REDD74LED^fDD60LED-REDD67LED-REDD78LECtREDD86LECXREDD62LED-REDD75LED-REDD87LED-REDD51LED-REDD56LCD-REDD71LED-REDD83LED-REDD50LED-REDD69LED-REDD88LED-REDD66LED-REDD58LED-RtDD52LEEXREDD59LED-REDD53ALED-REDD18LED-REDLED-REDD26LEEKREDD19LEO-REDD20D27LED-REDD28EELED-

温馨提示

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

评论

0/150

提交评论