¿ìËÙ¸µÀïÒ¶ÒôÀÖƵÆ×LEDµÆ
ÒôÀÖƵÆ×LEDµÆÏ£Íû´ïµ½µÄЧ¹ûÊÇÓò»Í¬µÄLEDµÆÖù±íʾÒôÀÖÖв»Í¬µÄƵÂÊ·ÖÁ¿£¬µÆÖùµÄ¸ß¶È±íʾ¶ÔӦƵÂÊ·ÖÁ¿µÄ·ù¶ÈÖµµÄ´óС£¬Ëæ×ÅÒôÀֵIJ¥·Å£¬²»Í¬µÄµÆÖùÆðÆðÂäÂ䣬ÀàËÆÎÒÃǵçÄÔÉϵÄÒôÀÖ²¥·ÅÆ÷µÄЧ¹û¡£
´ÓÕâ¸ö³ö·¢µã¿ÉÒÔ¿´³ö£¬ÐèÒª±íʾµÄÒôÀÖƵÂÊÊÇÀëÉ¢µÄ¡£¶øÎÒÃÇͨ³£Äܹ»²ÉÑùµ½µÄÐźÅÊÇÒôÀÖ²¥·ÅʱÊä³öµÄÄ£ÄâµçѹÐźţ¬Í¨³£ÊÇÓÃADCÄ£¿é²É¼¯²¢ÇÒת»»ÎªÊý×ÖÐźÅÀ´ÈÃMCU´¦Àí¡£Ò²¾ÍÊÇ˵ÎÒÃDzɼ¯µ½µÄÐźÅÔÚʱÓòÉÏÊÇÀëÉ¢µÄ£¬×ª»»µ½ÆµÓòºóÒ²ÒªÊÇÀëÉ¢µÄ¡£ÏÂÃæÎÒÃÇÏÈ¿´Ò»Ï¼¸ÖÖ¸µÀïÒ¶±ä»»
l ¸µÀïÒ¶±ä»»µÄ·ÖÀà
ËÄÖÖ¸µÀïÒ¶±ä»»ÖÐʱÓòºÍƵÓòÖ®¼äµÄÌØÐÔ¹Øϵ
±í¸ñ 1
ÓëÏÂͼ¶ÔÓ¦
ͼ 1
´Ó±íÖÐÎÒÃÇ¿ÉÒÔ¿´³öÀëÉ¢¸µÁ¢Ò¶±ä»»£¨DFT£©¿ÉÒÔ½«ÀëɢʱÓòÐźÅת»»µ½ÀëɢƵÓò£¬ÕâÕýÊÇÎÒÃÇÐèÒªµÄ¡£
ÔÚʵ¼ÊÓ¦ÓÃÖÐÎÒÃÇʹÓõÄÊÇ¿ìËÙ¸µÀïÒ¶±ä»»£¨FFT£©£¬¿ìËÙ¸µÀïÒ¶±ä»»£¨FFT£©µÄ±¾ÖÊ»¹ÊÇÀëÉ¢¸µÀïÒ¶±ä»»£¨DFT£©£¬Ö»²»¹ýÊÇÀûÓÃÁ˶༶µûÐÎË㷨ʹµÃ¼ÆËã¹ý³ÌÖеĸ´Êý³Ë·¨ºÍ¸´Êý¼Ó·¨´ó´ó¼õÉÙ¡£ÖÁÓÚµûÐÎËã·¨²»ÊDZ¾ÎÄÌÖÂÛµÄÄÚÈÝ¡£
ÆäÖÐ
²ÉÑùһϵÁеÄÀëÉ¢ÎïÀíÐźţ¨Í¨³£ÊÇADת»»ºóµÄµçѹÐźţ©x(n)£¨Ò»¹²N¸ö£©£¬Í¨¹ýDFT¹«Ê½¿ÉÒԵõ½ÀëÉ¢µÄƵÓòÐźŵķùÖµ|X(k)|,ÆäÖÐ|X(k)|´ú±íµÄÊÇƵÂÊΪfs*k/N£¨fsÊDzÉÑùÂÊ£©µÄµãµÄ·ùÖµ¡£Ò²¾ÍÊÇ˵DFT¿ÉÒÔ·ÖÎöµÄƵÆ×·¶Î§ÊÇ0~fs*(N-1)/N£¬¸ù¾ÝÐèҪѡÔñ²»Í¬µÄƵÂÊ´ú±í²»Í¬µÄLEDµÆÖù¡£
l CÓïÑÔʵÏÖ
ÏȽ²×ÜÌåÁ÷³Ì£¬Ã¿´Î¶ÔÒôÀÖÊä³öÐźŽøÐÐAD²É¼¯£¬Ò»×é64¸ö£¬²É¼¯Íê³Éºó¶ÔÕâ×éÐźŽøÐпìËÙ¸µÀïÒ¶±ä»»£¨FFT£©µÃµ½Ò»×飨64¸ö£©ÀëÉ¢µÄƵÂÊÐźţ¨¸´ÊýÖµ£©£¬¼ÆËã¶ÔÓ¦µÄƵÂʸ´ÊýÖµµÄÄ£¾ÍµÃµ½Á˸ÃƵÂʵķù¶ÈÖµ¡£È»ºó½«²»Í¬µÄ·ù¶ÈÖµ»®·ÖΪ½×£¬²»Í¬µÄ½×´ú±í×Ų»Í¬µÄLEDµÆÖù¸ß¶È¡£
fft(dd,64); //¶Ôµ±Ç°Êý¾Ý½øÐиµÁ¢Ò¶±ä»» for(pt=1;pt<33;pt++) //ÕâÀïÖ»Óõ½Ç°Ò»°ëµÄƵÂʵãµÄ·ùÖµ£¬ÒòΪºóÒ»°ëºÍÇ°Ò»°ëµÄ·ùÖµÊǶԳƵÄËùÒÔ²»ÓÃÈ¥¼ÆËã¡£·ù¶ÈÖµÊǶԸ´ÊýÈ¡Ä££¬¼´|X(k)|£¬ÕâÀï±£´æµ½Êµ²¿ÖУ¬ÓõÄʱºòÒ²ÊÇÓÃʵ²¿¶øÒÑ¡£ { dd[pt].real=sqrt(dd[pt].real*dd[pt].real+dd[pt].imag*dd[pt].imag);//È¡¾ù·½¸ù } for(pt=0;pt<12;pt++) //ÒÀ´ÎµÃ³öÐèÒªÏÔʾµÄÿÁÐÊý¾Ý { tmp = dd[HZ[pt]].real; //ÕâÀïÈ¡³öƵÆ׵㣨ƵÆ×µãÓÉÓû§×Ô¼ºÑ¡ÕâÀïÑ¡ÁË12¸ö£©¶ÔÓ¦µÄ·ù¶ÈÖµ tmp = (tmp/16);
if(tmp<1) xyz=0; else if(tmp<2) xyz=1; else if(tmp<4) xyz=2; else if(tmp<8) xyz=3; else if(tmp<16) xyz=4; else if(tmp<32) xyz=5; else if(tmp<64) xyz=6; else if(tmp<100) xyz=7; else if(tmp<150) xyz=8; else xyz=9;
if(xyz>LED[pt]) LED[pt]=xyz;
|
|
¿ìËÙ¸µÀïÒ¶±ä»»º¯Êý
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; //¸µÁ¢Ò¶±ä»»µãÊý 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; } } for(l=1;l<=m;l++) //FFTÔËËã { disbuff=mypow(2,l); //ÇóµÃµú¼ä¾àÀë dispos=disbuff/2; //ÇóµÃµúÐÎÁ½µãÖ®¼äµÄ¾àÀë for(j=1;j<=dispos;j++) for(i=j;i<N;i=i+disbuff) //±éÀúM¼¶ËùÓеĵúÐÎ { dissec=i+dispos; //ÇóµÃµÚ¶þµãµÄλÖà ee(xin[dissec],(uint)(j-1)*(uint)N/disbuff);//¸´Êý³Ë·¨ 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; } } } |