完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 Happy.Q 于 2013-5-12 09:28 编辑
***it led0 = P2^0; ***it led1 = P2^1; ***it led2 = P2^2; ***it led3 = P2^3; ***it led4 = P2^4; ***it led5 = P2^5; ***it led6 = P2^6; ***it led7 = P2^7; uint8 COUNT=15,COUNT1=0,ADC_Count=0,LINE=15,G=0,T; uint8 i,j,k,b,p,anum,led=0; int Temp_Real,Temp_Imag,temp; // 中间临时变量 uint16 TEMP1,max=0; int xdata Fft_Real[128]; int xdata Fft_Image[128]; // fft的虚部 uint8 xdata LED_TAB[64]; //记录FFT计算出的各点幅值大小 void FFT()//基2fft { for( i=1; i<=7; i++) /* for(1) */ { b=1; b <<=(i-1); //碟式运算,用于计算隔多少行计算例如 第一极 1和2行计算 for( j=0; j<=b-1; j++) /* for (2) */ { p=1; p <<= (7-i); p = p*j; for( k=j; k<128; k=k+2*b) /* for (3) */ { Temp_Real=Fft_Real[k]; Temp_Imag=Fft_Image[k]; temp=Fft_Real[k+b]; 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/64 Fft_Real[k] >>= 1; Fft_Image[k] >>= 1; Fft_Real[k+b] >>= 1; Fft_Image[k+b] >>= 1; } } } |
|
相关推荐
4个回答
|
|
本帖最后由 Happy.Q 于 2013-5-12 09:29 编辑
for(j=0;j<64;j++)//64分频 { TEMP1=((((Fft_Real[j+1]* Fft_Real[j+1]))+((Fft_Image[j+1]*Fft_Image[j+1])))>>1);//求各频段幅值 if(TEMP1<1)TEMP1=0; LED_TAB[j]=TEMP1; if(LED_TAB[j]>max)max=LED_TAB[j]; } if(max>64)//分级量化 { max/=64; for(j=0;j<64;j++)LED_TAB[j]/=max; } } void delay2us(void) //2us延时 { unsigned char a,b; for(b=1;b>0;b--) for(a=3;a>0;a--); } void Init() { 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); P2M0=1; TMOD=0X12; TH0=0xb0; TL0=0xb0; TH1=0xfe; TL1=0Xd4; ET0=1; //定时器0 打开 TR0=0; //关闭定时器 ET1=1; TR1=1; PT1=0; PT0=1; IPH=PADCH; IP=PADC; //中断优先级 EA=1; //总中断打开 } |
|
|
|
回帖奖励 +20 分积分
{:1:}
|
|
|
|
没办法,还是FFT没学好,对于修改看不懂。
|
|
|
|
难于上青天啊啊啊啊我也卡了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
503 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1756 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1183 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1053 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1287 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12019 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 15:06 , Processed in 0.550863 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号