1、FFT流程图void delay(int i)/ 延时 bb速度控制 char b; while (i-) b=bb; while(b-); AutoFlowChart:Auwebsite: wemail: suppo NY张辉email: supp website: Yvoid FFT() int xdata i,bb,j,k,p; int max,a8; int xdata TR,TI,temp; for(i=0; i64;i+) RealBRTablei= STC_ADC(); Imagei=0; for(i=1;i=6;i+) bb=1; bb=(i-1); for(j=0;j=bb-
2、1;j+) p=1; p=(6-i); p=p*j; for(k=j;k64;k=k+2*bb) for(k=j;k7)+(Imagek+bb*sin_tabbp)7); Imagek=Imagek-(Realk+bb*sin_tabbp)7)+(Imagek+bb*cos_tabbp)7); Realk+bb=TR-(Realk+bb*cos_tabbp)7)-(Imagek+bb*sin_tabbp)7); Imagek+bb=TI+(temp*sin_tabbp)7)-(Imagek+bb*cos_tabbp)7); Realk=1; Imagek=1; Realk+bb=1; Imag
3、ek+bb=1; /for(k=j;k64;k=k+2*bb) /for(j=0;j=bb-1;j+) /for(i=1;i=6;i+) max=0; for(i=0;i1); if(ai1 ) ai=0; else ai-=1; if(max8) max/=8; for(i=0;i8;i+) ai/=max; for(i=0;i=(amenu-1) num=0; else num+; if(bnumcnum) /确定频谱高度显示 bnum-; if(bnum8) /确定频谱高度显示 bnum=8; switch(yp) / 频谱显示方式显示切换 case 1: send_data2(tuku
4、2bnum); if(amenu=2) else delay(50); break; case 2: send_data2(tuku1bnum); if(amenu=2) else delay(50); break; case 3: send_data2(tuku3bnum); if(amenu=2) else delay(50); default:break; TR1=1;/启动定时器1 void ADC_Finish() interrupt 5 /AD中断函数 yinpin+; if(yinpin=20000) /变量yinpin加到20000切换频段显示 yinpin=0; yp+; if(yp=4) yp=1; amenu+; /amenu变量切换频段显示方式 if(amenu=9)amenu=1; if(ADC_CONTR&0x10) /判断ADC-FLGA位是否为1,为1表明A/D已转换完成。 delay(1);