c語言程序改頻率,求問。這個fft c語言程序 采樣的聲音頻率為多少?

timernum,timernum2,LEDnum3,Ltime;//用于分離

/*加入數組用于顯示相應led燈數目*/

uchar lednum[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//0-7的顯示數組??P2組控制

int xdata FftReal[SAMPLE_NUM];

int xdata FftImage[SAMPLE_NUM];

sbit p30=P3^0;

sbit p31=P3^1;

sbit p32=P3^2;

sbit p33=P3^3;

sbit p34=P3^4;

sbit p35=P3^5;//9-11的led控制

sbit p36=P3^6;

sbit p37=P3^7;

void timerinit()//定時器 初始化函數

{

TMOD=0x01;

TH0=(65536-6000)/256;

TL0=(65536-6000)%256;

EA=1;

ET0=1;

TR0=1;

}

void disp()

{

timernum++;

if(timernum==6) timernum=1;

P2=0;//顯示前先關閉

P3=P3&0x1f;

switch(timernum)

{

case 1:anum=a[0];p34=0;p33=1;p32=1;p31=1;p30=1;break;

case 2:anum=a[1];p34=1;p33=0;p32=1;p31=1;p30=1;break;

case 3:anum=a[2];p34=1;p33=1;p32=0;p31=1;p30=1;break;

case 4:anum=a[3];p34=1;p33=1;p32=1;p31=0;p30=1;break;

case 5:anum=a[4];p34=1;p33=1;p32=1;p31=1;p30=0;break;

}

//anum=a[10];/*修改可以改變光柱高度 (anum值分開幾個部分用定時器區分顯示)(a[]內逐加) */

if(anum<=8){P2=lednum[anum];P3=P3&0x1f;}//屏蔽高三位

//else {P2=0xff;P3=lednum2[anum-9];}

if(anum==9){P2=0xff;p35=1;p36=0;p37=0;}

if(anum==10){P2=0xff;p35=1;p36=1;p37=0;}

if(anum==11){P2=0xff;p35=1;p36=1;p37=1;}

}

uchar STC_ADC()? ? ? ? ? ? ? ?? ? //!!根據數據手冊寫一個ad讀取函數

{

uchar i;

ADC_RES? ?= 0;

ADC_RESL??= 0;

ADC_CONTR = BIN(10001000);

i=3;

while(i--);

while (1)

{

if (ADC_CONTR & BIN(10000))

{

break;

}

}

ADC_CONTR = BIN(10000000);

return( ADC_RESL<<2) ;

}

short sqrt_16( unsigned long M)

{

unsigned int N, i;

unsigned long tmp, ttp;

if( M == 0 )

return 0;

N = 0;

tmp = ( M >> 30 );

M <<= 2;

if( tmp > 1 )

{

N ++;

tmp -= N;

}

for( i=15; i>0; i-- )

{

N <<= 1;

tmp <<= 2;

tmp += (M >> 30);

ttp = N;

ttp = (ttp<<1)+1;

M <<= 2;

if( tmp >= ttp )

{

tmp -= ttp;

N ++;

}

}

return N;

}

void FFT()

{

register? ? uchar i,bb,j,k,p,max;

register short TR,TI,temp;

unsigned long ulReal;

unsigned long ulImage;

for(i=0; i

{

FftReal[BRTable[i]] = STC_ADC()<

FftImage[i] = 0;

}

keepnum=FftReal[2]/32;//提取等級數

if((7

else if((4

else if((2

else {keep=5;}

for( i=1; i<=NUM_2_LOG; i++)

{

bb=1;

bb <<= (i-1);

for( j=0; j<=bb-1; j++)

{

p=1;

p <<= (NUM_2_LOG-i);

p = p*j;

for( k=j; k

{

TR = FftReal[k]; TI = FftImage[k]; temp = FftReal[k+bb];

FftReal[k] = FftReal[k] + ((FftReal[k+bb]*cos_tabb[p])>>7) + ((FftImage[k+bb]*sin_tabb[p])>>7);

FftImage[k] = FftImage[k] - ((FftReal[k+bb]*sin_tabb[p])>>7) + ((FftImage[k+bb]*cos_tabb[p])>>7);

FftReal[k+bb] = TR - ((FftReal[k+bb]*cos_tabb[p])>>7) - ((FftImage[k+bb]*sin_tabb[p])>>7);

FftImage[k+bb] = TI + ((temp*sin_tabb[p])>>7) - ((FftImage[k+bb]*cos_tabb[p])>>7);

FftReal[k]??>>= 1;

FftImage[k]??>>= 1;

FftReal[k+bb]??>>= 1;

FftImage[k+bb]??>>= 1;

}

}

}

max=0;

for( i=0; i<5; i++)//5

{

ulReal = FftReal[i+1];

ulReal *= ulReal;

ulImage = FftImage[i+1];

ulImage *= ulImage;

a[i] = sqrt_16( ulReal + ulImage );? ?//修改

if( a[i] < FFT_OUT_MIN )

a[i] = 0;//修改

else

a[i] = a[i]-FFT_OUT_MIN;

if( a[i] >max)

max =a[i];

//disp();

}

if(max>11) //11

{

max/=11;

for( i=0; i<5; i++) //輸出a的5個分離數值

{

a[i]/=max;

}

}

}

void main()

{

P2M0=0xff;//??BIN(11111111);//P2組設置為推挽輸出

P2M1=0;

P3M0=0xe0;//??BIN(11111111);

P3M1=0;

P1M0=0x00;

P1M1=0x01;

P1ASF =1;? ? ? ?? ? //設置P1.0為AD口

AUXR1 =BIN(100);

keep=0;

keepnum=0;

timerinit();//定時器初始化

timernum=3;//從3開始

timernum2=0;

while(1)

{

FFT();

}

}

void timer0() interrupt 1

{

TH0=(65536-6000)/256;? ? ? ???//6000

TL0=(65536-6000)%256;

disp();

}

699ba7046c51816a17b33a7caa85f179.png

0

97b4b3417991aabde46fdac613e34292.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385793.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java高級面試題!java編程思想怎么學

專題5&#xff1a;Java序列化 1、什么是java序列化&#xff0c;如何實現java序列化&#xff1f; 2、保存(持久化)對象及其狀態到內存或者磁盤 3、序列化對象以字節數組保持-靜態成員不保存 4、序列化用戶遠程對象傳輸 5、Serializable 實現序列化 6、writeObject 和 readO…

計算星期c語言編碼,[轉載]計算任何一天是星期幾的C語言源代碼.

[轉載]計算任何一天是星期幾的C語言源代碼.#include int main(){int day,mn,yr,i,days0,s,k;int mont[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};char wek[][9]{ {S,u,n,d,a,y},{M,o,n,d,a,y},{T,u,e,s,d,a,y},{W,e,d,n,s,d,a,y},{T,h,u,r,s,d,a,y},{F,r,i,d,a,y},{S,a,t,u,…

Java高級:mysqllimit兩個參數

零基礎如何學習Java&#xff1f; 首先&#xff0c;你要明白一點&#xff0c;Java入門不難&#xff01; 無論你是從事哪個行業&#xff0c;興趣一定是最好的老師&#xff0c;也是你學習的動力。 學習方式1&#xff1a;自學 自學模式其實我個人不建議絕大部分的人選擇&#x…

db2 c語言游標名稱可以是變量,mysql?c語言?游標能取多行嗎

滿意答案xuyingcxm2015.02.03采納率&#xff1a;45% 等級&#xff1a;12已幫助&#xff1a;7182人1、 無返回結果語句&#xff0c;如&#xff1a;INSERT,UPDATE,DROP, DELETE等2、 select語句返回單行變量并可傳給本地變量(select ..into)3、 返回多行結果集的select語句,并…

從入門到精通!javaidea安裝教程

一、秒殺系統架構設計都有哪些關鍵點&#xff1f; 二、設計秒殺系統時應該注意的5個架構原則 架構原則:“4要1不要” 1.1.數據要盡里少 1.2. 請求數要盡里少 1.3.路徑要盡里短 1.4.依賴要盡里少 1.5. 不要有單點2不同場景下的不同架構案例 三、如何才能做好動靜分離&#xff1…

-wl是不是c語言的標識符,C語言基礎知識考試

第一章 C語言基礎知識一、選擇題1&#xff0e;C語言規定&#xff0c;必須用 作為主函數名。(0級) A)Function B)include C)main D)stdio2&#xff0e;一個C程序可以包含任意多個不同名的函數&#xff0c;但有且僅有一個 &#xff0c;一個C程序總是從 開始執行。(0級) A)過程 B)…

從入門到精通!java可視化編程軟件哪個好

1、我往Redis里寫的數據怎么沒了&#xff1f; 使用Redis的同學你要明白一點&#xff0c;你為什么用Redis&#xff1f;用redis的作用是什么&#xff1f;用redis的好處是什么&#xff1f;凡事多思考一下為什么&#xff0c;多想想背后的原因。 就在不久前有朋友跟我說過&#xf…

學生檔案c語言編程,學生檔案管理問題

/* 一個修改版本 */#include struct student{int num;char name[10];char sex;char address[20];};struct student stu[3] {{000, "li lin", m, "103 beijing road"},{001, "zhang fun", m, "130 shanghai road"},{002, "wang …

從思維圖到基礎再到深入,java空間查詢

螞蟻金服一面&#xff1a; 先自我介紹&#xff0c;講講自己基礎掌握情況&#xff0c;以及項目經歷平時會用到哪些數據結構&#xff1f;鏈表和數組的優缺點&#xff1f;解決hash沖突的方法有哪些&#xff1f;講講自己對HashMap的理解&#xff0c;以及和Weakhashmap的區別&#…

c語言中如何取消最后一個空格,新人提問:如何將輸出時每行最后一個空格刪除...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓如何將每行最后一個空格刪除&#xff0c;使矩陣只有數字間有空格&#xff0c;沒有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

從零開始學Java編程!java集合類詳解和使用

目錄 一、冒泡排序 二、選擇排序 三、插入排序 四、快速排序 五、歸并排序 六、希爾排序 七、堆排序 八、基數排序&#xff08;桶排序&#xff09; 九、遞歸 十、鏈表 十一、棧 十二、隊列 十三、二叉樹 最后 由于篇幅有限&#xff0c;這里就不一一羅列了&#xff0c;20道常見…

go語言調用c 的頭文件 so,Golang生成共享庫(shared library)以及Golang生成C可調用的動態庫.so和靜態庫.a...

Golang類似于C的靜態語言&#xff0c;效率也接近于C&#xff0c;如果Golang也可以導出可供C調用的庫&#xff0c;那可以和很多高級語言say goodbye了&#xff0c;goodbye似乎又有點武斷&#xff0c;但至少說&#xff0c;Golang可以做很多事&#xff0c;而且效率優于很多高級語言…

從青銅到王者的路線,java不同系統間數據同步

深耕技術&#xff0c;啃下22個技術點 互聯網行業更新換代非常快&#xff0c;行業常態便是不斷學習&#xff0c;因此這些主流技術你一個都不能落下&#xff01; ①并發編程 Java并發編程是整個Java開發體系中最難以理解&#xff0c;但也是最重要的知識點之一&#xff0c;因此學習…

c語言 大雨 班上多個同學準備,2015年計算機二級考試《C語言》提高練習題(7)

1[單選題] 若有C語言表達式23*47/3&#xff0c;以下選項中敘述正確的執行順序是A.先執行3*4得12&#xff0c;再執行212得14&#xff0c;再執行7/3得2&#xff0c;最后執行142得16B.先執行3*4得12&#xff0c;再執行7/3得2.5&#xff0c;最后執行2122.5得16.5C.先執行7/3得2&…

從青銅到王者的路線,java枚舉類使用場景

一、先來解讀&#xff1a;23種設計模式要點 1.單例模式&#xff08;Singleton Pattern&#xff09; 2.工廠模式 3.抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09; 4.模板方法模式&#xff08;Template Method Pattern&#xff09; 5.建造者模式&#xff08;Bu…

android tag的作用,Android中的Context的作用(2)

ContextImpl關鍵成員和函數/*** Common implementation of Context API, which provides the base* context object for Activity and other application components.*/classContextImplextendsContext {privatefinalstaticString TAG "ContextImpl";privatefinalsta…

企業級項目實戰講解!javamap排序規則

一、服務發布簡介 分布式系統架構下&#xff0c;服務發布是一件很麻煩的事情&#xff0c;特別是在構建自動發布流程和灰度測試的策略兩個核心方面。通常情況下如果不涉及數據層面的灰度流程&#xff0c;服務可以灰度上線&#xff0c;或者滾動上線&#xff0c;這兩種方式很常用…

android頁面設置背景圖片大小,android頁面設置background為圖片后,頁面滑動掉幀問題...

最近接手的一個android項目里面&#xff0c;有個viewpager3個fragment的頁面&#xff0c;就是很常見的可以左右滑動切換頁面的那種布局。接手的時候告訴我&#xff0c;這個頁面有卡頓現象&#xff0c;性能需要優化。一開始覺得是fragment里面做了太多耗時操作的原因&#xff0c…

企業級項目實戰講解!java的war包能直接改名么

Java核心架構筆記大致如下 0~1年&#xff1a; Java基礎&#xff08;基本語法、面向對象、繼承、多態、接口和抽象類、異常、內部類、集合、泛型、反射、I/O等&#xff09;Web編程&#xff08;ServletMySQL數據庫商品管理系統實戰&#xff09;SSM框架入門到精通&#xff08;Sp…

android chrome cast,有了它 任何安卓設備瞬間變身ChromeCast

ChromeCast一經問世就頗受歡迎&#xff0c;雖然35美刀的價格已經很便宜了&#xff0c;但現在你可以不花一分錢就可以擁有ChromeCast類似的功能了。前提是你有一部系統版本在2.2以上的安卓設備&#xff0c;對于很多安卓的玩家這應該不是什么問題。實現與ChromeCast類似的功能只需…