本帖最后由 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; //总中断打开
}
本帖最后由 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; //总中断打开
}
举报