久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9381|回復: 4
收起左側

51單片機ADC采樣傅里葉變換頻譜輸出

[復制鏈接]
ID:140343 發表于 2016-9-25 10:56 | 顯示全部樓層 |閱讀模式
  1. //完成顯示數據的轉換工作,包括定點下落速度控制以及定點更新定格
  2. // 對fft數據進行處理,得到各個頻率短的電壓增幅值
  3. //++++++++++++++++++++++++++++++++++++++//
  4. //復數乘法
  5. void ee(struct compx b1,uchar data b2)
  6. {
  7. temp.real=b1.real*iw[2*b2]-b1.imag*iw[2*b2+1];
  8. temp.imag=b1.real*iw[2*b2+1]+b1.imag*iw[2*b2];
  9. }
  10. //++++++++++++++++++++++++++++++++++++++//  
  11. //乘方函數
  12. uint mypow(uchar data nbottom,uchar data ntop)
  13. {
  14.     uint data result=1;
  15.     uchar data t;   
  16.     for(t=0;t<ntop;t++)result*=nbottom;
  17.     return result;
  18. }
  19. //++++++++++++++++++++++++++++++++++++++//
  20. //快速傅里葉變換
  21. void fft(struct compx *xin,uchar data N)
  22. {
  23. uchar data  fftnum,i,j,k,l,m,n,disbuff,dispos,dissec;
  24. data struct compx t;
  25. fftnum=N;                         //傅里葉變換點數
  26. for(m=1;(fftnum=fftnum/2)!=1;m++);//求得M的值
  27. for(k=0;k<=N-1;k++)               //碼位倒置
  28. {
  29. n=k;
  30. j=0;
  31. for(i=m;i>0;i--)             //倒置
  32. {
  33. j=j+((n%2)<<(i-1));
  34. n=n/2;
  35. }
  36. if(k<j){t=xin[1+j];xin[1+j]=xin[1+k];xin[1+k]=t;}//交換數據
  37. }  
  38. for(l=1;l<=m;l++)                //FFT運算
  39. {
  40. disbuff=mypow(2,l);          //求碟間距離
  41. dispos=disbuff/2;            //求碟間兩點之間距離
  42. for(j=1;j<=dispos;j++)
  43. for(i=j;i<N;i=i+disbuff) //遍歷M級所有碟形
  44. {
  45. dissec=i+dispos;     //求第二點位置
  46. ee(xin[dissec],(uint)(j-1)*(uint)N/disbuff);//復數乘法
  47. t=temp;
  48. xin[dissec].real=xin[i].real-t.real;
  49. xin[dissec].imag=xin[i].imag-t.imag;
  50. xin[i].real=xin[i].real+t.real;
  51. xin[i].imag=xin[i].imag+t.imag;
  52. }
  53. }
  54. }














  55. void processfft(void)
  56. {
  57.     uchar data pt=0,tmp;

  58.     for(pt=1;pt<65;pt++)
  59.     {
  60.         dd[pt].imag=0;                //清零需部
  61.     }
  62.     fft(dd,64);                       //對當前數據進行傅里葉變換

  63.     for(pt=1;pt<65;pt++)
  64.     {                                      
  65.         dd[pt].real=sqrt(dd[pt].real*dd[pt].real+dd[pt].imag*dd[pt].imag);//取均方根
  66.     }

  67. if(Menu==1)
  68. {
  69. for(pt=2;pt<34;pt+=2)
  70.    {      
  71. for(tmp=(dd[pt].real/32)+1,LEDBuf[pt]=0xFF;tmp>=1;tmp--)//tmp>1;不保留最低位那一行長亮
  72. {
  73. LEDBuf[pt]<<=1;
  74. }
  75. LEDBuf[pt]=~(LEDBuf[pt]);

  76. }
  77. }
  78. else if(Menu==2)
  79. {

  80. //ÏÂÂä¸D
  81. for(pt=2;pt<34;pt+=2)
  82.    {      
  83. tmp=(dd[pt].real/32)+1;
  84. if(refreshflag[pt]<tmp)            //刷新數據取較大高度值 存儲顯示
  85. {
  86. for(LEDBuf[pt]=0xFF;tmp>1;tmp--)//tmp>1;不保留  最低位那一行長亮;{}一次也不執行
  87. {
  88. LEDBuf[pt]<<=1;
  89. }
  90. refreshflag[pt]=(dd[pt].real/32)+1;
  91. }
  92. else
  93. {
  94. if(refreshflag[pt]>1)refreshflag[pt]--;                //定點下落速度控制  改變值可以改變下落速度
  95. for(LEDBuf[pt]=0xFF,tmp=refreshflag[pt];tmp>1;tmp--)   //tmp>1;不保留  最低位 那一行長亮
  96. {
  97. LEDBuf[pt]<<=1;
  98. }
  99. }
  100. }
  101. }
  102. else if(Menu==0)
  103. {

  104. //ÏÂÂä¸DÆμÆ×
  105. for(pt=2;pt<34;pt+=2)
  106.    {      
  107. tmp=(dd[pt].real/32)+1;
  108. if(refreshflag[pt]<tmp)          //刷新數據取較大高度值 存儲顯示
  109. {
  110. for(LEDBuf[pt]=0xFF;tmp>=1;tmp--)//tmp>1;不保留  最低位那一行長亮;{}一次也不執行
  111. {
  112. LEDBuf[pt]<<=1;
  113. }
  114. refreshflag[pt]=(dd[pt].real/32)+1;
  115. }
  116. else
  117. {
  118. if(refreshflag[pt]>1)refreshflag[pt]--;                        
  119. for(LEDBuf[pt]=0xFF,tmp=refreshflag[pt];tmp>=1;tmp--)
  120. {
  121. LEDBuf[pt]<<=1;
  122. }
  123. }
  124. LEDBuf[pt]=~(LEDBuf[pt]);
  125. }
  126. }
  127. }  
復制代碼
回復

使用道具 舉報

ID:238767 發表于 2017-10-12 09:18 | 顯示全部樓層
請問這里 “Menu” = 0,1,2 是什么意思?
回復

使用道具 舉報

ID:254064 發表于 2018-3-12 15:50 | 顯示全部樓層
yxf0915 發表于 2017-10-12 09:18
**** 作者被禁止或刪除 內容自動屏蔽 ****

我也搞不懂這個,同問
回復

使用道具 舉報

ID:336427 發表于 2018-7-29 12:13 | 顯示全部樓層
可用嗎
回復

使用道具 舉報

ID:188748 發表于 2019-9-2 15:14 | 顯示全部樓層
這代碼亂寫的,沒啥用
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区国产精品 | 亚洲 日本 欧美 中文幕 | 日韩中文在线 | 色99视频 | 久久福利电影 | 欧美激情区 | 亚洲欧美日韩一区二区 | 色视频网站免费 | 久久午夜视频 | 中文字幕国产一区 | 欧美一区 | 国产一级片免费在线观看 | 日日夜夜精品视频 | 久久久久久国产精品免费免费 | 瑟瑟免费视频 | 亚洲一区视频在线 | 国产精品久久久久久久久久久久久 | www.日韩| 欧美一区二区在线观看视频 | 先锋资源在线 | 国产在线精品一区 | 在线看片网站 | 91亚洲国产成人久久精品网站 | 欧美日韩在线国产 | 国产一级片在线观看视频 | 男女污污动态图 | 日韩精品中文字幕一区二区三区 | 国产日韩av一区二区 | 91高清在线观看 | 精品在线视频播放 | 精品一二三区视频 | 国产一区免费视频 | 国产人免费人成免费视频 | 日韩精品| 成人网在线| 一级毛毛片 | 精品国产一区二区三区性色av | 高清视频一区二区三区 | 久久久久久亚洲精品 | 久久久久久免费毛片精品 | 中国一级特黄视频 |