DSP_DTMF信號(hào)的產(chǎn)生于檢測_第1頁
DSP_DTMF信號(hào)的產(chǎn)生于檢測_第2頁
DSP_DTMF信號(hào)的產(chǎn)生于檢測_第3頁
DSP_DTMF信號(hào)的產(chǎn)生于檢測_第4頁
DSP_DTMF信號(hào)的產(chǎn)生于檢測_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、DSP課程設(shè)計(jì)實(shí) 驗(yàn) 報(bào) 告DTMF信號(hào)的產(chǎn)生及檢測院(系): 電子信息工程學(xué)院 設(shè)計(jì)人員:李俊青 07214068 尹征 07212081 成績:工程設(shè)計(jì)50報(bào)告20答辯30總分評(píng)語:指導(dǎo)教師簽字: 日期:北京交通大學(xué)電工電子教學(xué)基地2009年1月18日目 錄一、設(shè)計(jì)任務(wù)書1二、設(shè)計(jì)內(nèi)容5三、設(shè)計(jì)方案、算法原理說明10四、程序設(shè)計(jì)、調(diào)試與結(jié)果分析15 五、設(shè)計(jì)(安裝)與調(diào)試的體會(huì)25 六、參考文獻(xiàn)26DTMF信號(hào)的產(chǎn)生及檢測一、 設(shè)計(jì)任務(wù):雙音多頻DTMF(Dual Tone Multi Frequency)是在按鍵式電話機(jī)上得到廣泛應(yīng)用的音頻撥號(hào)信令,一個(gè)DTMF信號(hào)由兩個(gè)頻率的音頻信號(hào)疊

2、加構(gòu)成。這兩個(gè)音頻信號(hào)的頻率分別來自兩組預(yù)定義的頻率組:行頻組和列頻組。每組分別包括4個(gè)頻率,分別抽出一個(gè)頻率進(jìn)行組合就可以組成16種DTMF編碼,分別記作09、*、#、A、B、C、D。如下圖1所示。圖1DTMF信令的編碼要用DSP產(chǎn)生DTMF信號(hào),只要產(chǎn)生兩個(gè)正弦波疊加在一起即可;DTMF檢測時(shí)采用改進(jìn)的Goertzel算法,從頻域搜索兩個(gè)正弦波的存在。設(shè)計(jì)要求及目標(biāo)基本部分:(1)使用C語言編寫DTMF信號(hào)的發(fā)生程序,要求循環(huán)產(chǎn)生09、*、#、A、B、C、D對(duì)應(yīng)的DTMF信號(hào),并且符合CCITT對(duì)DTMF信號(hào)規(guī)定的指標(biāo)。(2)使用C語言編寫DTMF信號(hào)的檢測程序,檢測到的DTMF編碼在屏幕

3、上顯示。發(fā)揮部分:利用DTMF信號(hào)完成數(shù)據(jù)通訊的功能,并試改進(jìn)DTMF信號(hào)的規(guī)定指標(biāo),使每秒內(nèi)傳送的DTMF編碼越多越好。二、設(shè)計(jì)內(nèi)容本實(shí)驗(yàn)用C語言編寫程序,用軟件CCS5000編程實(shí)現(xiàn),并用兩塊TMS320C52X的DSP板連接實(shí)現(xiàn)DTMF信號(hào)的發(fā)生和檢測。三、設(shè)計(jì)方案及算法原理說明1、DTMF(雙音多頻)信號(hào)簡介雙音多頻DTMF(Dual Tone MultiFrequency)信令是音頻電話的撥號(hào)信號(hào)。由美國AT&T貝爾實(shí)驗(yàn)室開發(fā)。這種撥號(hào)方法取代了脈沖撥號(hào),DTMF編解碼器在編碼時(shí)將擊鍵或數(shù)字信息轉(zhuǎn)換成雙音信號(hào)(每一個(gè)號(hào)碼由兩個(gè)音頻信號(hào)組成,該雙音頻由按鍵所在的行和列對(duì)應(yīng)的頻率

4、決定)并發(fā)送,解碼時(shí)在收到的DTMF信號(hào)中檢測擊鍵或數(shù)字信息的存在性。電話中的雙音多頻信號(hào)(DTMF)有兩種作用:一是用于雙音多頻信號(hào)的撥號(hào),去控制交換機(jī)接通被叫的用戶電話機(jī);二是利用雙音多頻信號(hào)控制電話機(jī)各種動(dòng)作,如播放留言、語言信箱等這些功能的實(shí)現(xiàn)離不開DTMF信號(hào)的正確產(chǎn)生和檢測,而本實(shí)驗(yàn)所要實(shí)現(xiàn)的就是使用TMS320C52X來制作DTMF發(fā)生器和檢測器。頻率1209Hz1336Hz1477Hz1633Hz697Hz123A770Hz456B852Hz789C941Hz*0#D圖1 擊鍵相應(yīng)的DTMF信息2、發(fā)送部分原理DTMF編碼器基于兩個(gè)二階數(shù)字正弦波振蕩器(如圖2),一個(gè)用于產(chǎn)生行

5、頻,一個(gè)用于產(chǎn)生列頻。向DSP裝入相應(yīng)的系數(shù)和初始條件,就可以只用兩個(gè)振蕩器產(chǎn)生所需的八個(gè)音頻信號(hào)。典型的DTMF信號(hào)頻率范圍是7001700Hz,我們們在實(shí)驗(yàn)中所選取的頻率(如圖(1)所示)最大頻率為1633HZ,為滿足抽樣不失真的條件,選取8000Hz作為采樣頻率。AA-1-1DTMF 輸出 +列頻率行頻率Z(-1)Z(-1)Z(-1)Z(-1)圖2 DTMF發(fā)生算法原理框圖由上圖數(shù)字振蕩器對(duì)的框圖,可以得到該二階系統(tǒng)函數(shù)的差分方程為:y(n)=-a1y(n-1)-a2y(n-2)其中al=-2cos0,a2=1,0=2*f0fS,fS為采樣頻率,0為歸一化數(shù)字頻率.f0為輸出正弦波的頻率

6、,A為輸出正弦波的幅度。該式初值為y(-1)=0,y(-2)=-Asin(0),其中需要根據(jù)不同頻率確定其初始化參數(shù)a1=-2cos0與y(-2)=-Asin0。下面以770Hz為例,詳細(xì)說明方程中系數(shù)的計(jì)算方法:f/fs=770/8000,0 =2*pi*f/fs cos,0 =0.8226,sin0=-0.5686。f/HZa1Y(-1)Y(-2)/A6970.853820-0.520477700.822630-0.568578520.784330-0.620339410.739110-0.6735812090.582060-0.8131413360.498200-0.8670614470

7、.399320-0.9168016330.284240-0.95874圖3 DTMF系數(shù)表為分辨出發(fā)送數(shù)字,數(shù)字之間必須有適當(dāng)長度的靜音,因此編碼器有兩個(gè)任務(wù),其一是音頻信號(hào)任務(wù),產(chǎn)生雙音樣本,其二是靜音任務(wù),產(chǎn)生靜音樣本。每個(gè)任務(wù)結(jié)束后,啟動(dòng)下一個(gè)任務(wù)前(音頻信號(hào)任務(wù)或靜音任務(wù)),都必須復(fù)位決定其持續(xù)時(shí)間的定時(shí)器變量。在靜音任務(wù)結(jié)束后,DSP從數(shù)字緩存中調(diào)出下一個(gè)數(shù)字,判決該數(shù)字信號(hào)所對(duì)應(yīng)的行頻和列頻信號(hào),并根據(jù)不同頻率確定其初始化參數(shù)a1=-2cos0 與y(-2)=-Asin0。另外,需要注意的是,由于本實(shí)驗(yàn)需要用到DSK板上的CODEC模塊,因此在編寫的程序中還需要寫入ADDA轉(zhuǎn)換部分

8、。程序流程圖開始 DSK板初始化流水燈亮兩次初始化CODEC發(fā)送靜音信號(hào)循環(huán)取出0#,并查表得到行頻和列頻計(jì)算256點(diǎn)樣點(diǎn)值將樣點(diǎn)數(shù)轉(zhuǎn)換為Q15的數(shù)據(jù)格式如果D/A轉(zhuǎn)換器準(zhǔn)備好發(fā)送數(shù)據(jù),則將雙音頻樣點(diǎn)值寫到D/A轉(zhuǎn)換器DTMF樣點(diǎn)發(fā)送完否送完否Y用C語言編寫實(shí)現(xiàn)該流程。由該圖可知,編程時(shí)需要完成兩個(gè)任務(wù),即雙音任務(wù)和靜音任務(wù)。雙音任務(wù)的作用是產(chǎn)生雙音頻采樣值,靜音任務(wù)的作用是產(chǎn)生靜態(tài)采樣值。經(jīng)過一段時(shí)間后,兩個(gè)任務(wù)需要進(jìn)行互換。整個(gè)程序與接收中斷服務(wù)同步。當(dāng)程序結(jié)束或暫停時(shí),接收端同時(shí)停止工作。3、接收部分原理DTMF信號(hào)包含兩組音頻信號(hào),解碼器的任務(wù)是通過數(shù)學(xué)變換把它從時(shí)域轉(zhuǎn)換到頻域,然后得

9、出對(duì)應(yīng)的數(shù)字信息由于DSP芯片處理的是數(shù)字信號(hào),所以必須把輸入信號(hào)數(shù)字化,再用DSP芯片進(jìn)行處理頻率檢測時(shí),檢測出DTMF信號(hào)的基波及二次諧波,DTMF信號(hào)只在基波上有較高能量,而話音信號(hào)則在基波上疊加有較強(qiáng)的二次諧波,檢測二次諧波的作用是用來區(qū)分DTMF信號(hào)與語言和音樂信號(hào),其中信號(hào)基波與二次諧波在N=205時(shí)系數(shù)如圖5。1st Harmonics(N=205) fs=8ksps2nd Harmonics(N=205) fs =8kspskfrequency(k/N)fs/Hzcoefficientcos(2pi k/N)kfrequency(k/N)fs/Hzcoefficientcos(

10、2pi k/N)187020.851623513930.45886207800.817933915520.34445228580.781154317110.22470249360.741424718710.101413112100.58157612428-0.329743413260.50442672667-0.500003814830.39505742945-0.676064216390.27972823264-0.83740 圖5 N=205時(shí),基波與二次諧波對(duì)應(yīng)系數(shù)整個(gè)檢測過程分兩步:首先采用Goertzel算法在輸入信號(hào)中提取頻譜信息;接著作檢測結(jié)果的有效性檢查。(1)Goertzel

11、算法計(jì)算數(shù)字信號(hào)的頻譜可以采用DFT及其快速算法FFT,而在實(shí)現(xiàn)DTMF解碼時(shí),采用Goertzel算法要比FFT更快。通過FFT可以計(jì)算得到信號(hào)所有譜線,了解信號(hào)整個(gè)頻域信息,而對(duì)于DTMF信號(hào)只用關(guān)心其8個(gè)行頻列頻及其二次諧波信息即可(二次諧波的信息用于將DTMF信號(hào)與聲音信號(hào)區(qū)別開)。Goertzel算法實(shí)質(zhì)是一個(gè)兩極點(diǎn)的IIR濾波器,離散傅立葉變換值,快速有效的提取輸入信號(hào)的頻譜信息,如圖6。yk(n)vk(-1)= vk(-2)=0x(n)x(N)=0-12cos(2k/N)-e(-j*2k/N)ZZ+vk(n)圖6 Goertzel算法原理框圖如圖可知,DFT計(jì)算可以等價(jià)為:Vk(

12、n)=x(n)+2cos(2k/N)Vk(n-1)-Vk(n-2), 0nN x(k)=yk(N)=Vk(N)-e-j2k/NVk(N-1) 由于在DTMF檢測中,輸入的信號(hào)是實(shí)數(shù)序列,并不需要檢測出8個(gè)行頻列頻的相位,只需要計(jì)算出其幅度平方即可。對(duì)于實(shí)序列x(n),Goertzel算法所需的內(nèi)部變量Vk(n)也為實(shí)數(shù)。因此計(jì)算/X(k)/2如下:|x(k)|2=|yk(N)|2=Vk2(n)+Vk2(n-1)-2cos(2k/N)Vk(N)Vk(N-1) 用上式的計(jì)算取代式(3)即可完全避免復(fù)數(shù)運(yùn)算。(2)DTMF信號(hào)的有效性檢測得到了DTMF信號(hào)的基波及二次諧波的頻譜平方幅度信息后,需要通

13、過一系列檢測才能確定信號(hào)的有效性:a、DTMF信號(hào)的強(qiáng)度是否足夠大,行列頻率分量平方幅度和是否高于規(guī)定的門限值。b、如果DTMF信號(hào)存在,比較行列頻率的最大頻率分量差值,因?yàn)殡娫捑€具有低通特性,列頻比行頻衰減得要厲害,因此要設(shè)置一門限值。c、分別在行列頻率組比較頻譜分量,最強(qiáng)的譜線至少要比其他音頻信號(hào)高一個(gè)門限值。d、二次諧波分量是否小于某個(gè)值。e、判斷DTMF信號(hào)是否包含穩(wěn)定的數(shù)字信息,只有數(shù)字信息被連續(xù)檢測到兩次,才認(rèn)為數(shù)字信息是穩(wěn)定的。f、最后要檢測數(shù)字信息之后是否有停頓狀態(tài),只有這樣才將當(dāng)前的數(shù)字作為有效數(shù)字。在每一個(gè)接收中斷到來時(shí),表明采到一個(gè)新樣點(diǎn)。樣點(diǎn)值代入式,迭代計(jì)算8個(gè)行頻列

14、頻的中間變量v (n)(k為8個(gè)行頻列頻分別對(duì)應(yīng)的數(shù)字頻率),直到采到N=125個(gè)樣點(diǎn)(在8kHz采樣頻率下,約為15ms)。此時(shí)再按式計(jì)算8個(gè)行頻列頻的幅度平方|X(k)|2 。接下來將|X(k)|2與門限作比較,并作二次諧波檢測,判決出有效的音頻信號(hào)。將音頻信號(hào)映射為數(shù)字信號(hào)后,再與上一個(gè)檢測到的數(shù)字信號(hào)比較,最終判決出有效的數(shù)字信號(hào),如圖7。 與發(fā)生部分原理相似,我們們也需要在檢測程序中加入AD/DA轉(zhuǎn)換部分。NNYYYNNY采樣開始采到新樣點(diǎn)?對(duì)8個(gè)行/列頻分別計(jì)算Vk (n)= x(n)+2cos(2k/N)Vk(n-1)-Vk(n-2)采到N個(gè)樣點(diǎn)?對(duì)8個(gè)行/列頻分別計(jì)算|x(k)

15、|2=|yk(N)|2=Vk2(n)+ Vk2(n-1)-2cos(2k/N)Vk(N)Vk(N-1)中間變量清零N樣點(diǎn)標(biāo)志=0幅度峰值大于門限?無二次諧波?成功檢測到數(shù)據(jù)返回并檢測靜音有靜音則進(jìn)入下一次檢測圖7 DTMF檢測流程圖四、程序設(shè)計(jì)、調(diào)試與結(jié)果分析一程序設(shè)計(jì)1.發(fā)送程序#include <stdio.h>#include <math.h>#include <type.h> /數(shù)據(jù)類型頭文件 #include <board.h> /DSK板頭文件#include <codec.h> /AD50C頭文件 #include &l

16、t;mcbsp54.h> /多通道緩沖串口頭文件/子函數(shù)聲明void delay(int period);void send(int num);/全局變量定義HANDLE hHandset;/McBSP句柄s16 out_buffer256;float buffer256;/定義一個(gè)個(gè)的變量和緩沖數(shù)組 s16 n=0;int c=0,t=0,m=0,p=-1;char s;s16 tele_number16='0','1','2','3','4','5','6','7&

17、#39;,'8','9','A','B','C','D','*','#'/dtmf按鍵緩沖區(qū)float pi=3.1415926;void main() int cnt=2; if(brd_init(100) return;/DSK初始化失敗則返回 SWWSR=0X7249; /流水燈 while (cnt-)brd_led_toggle(BRD_LED0);/brd_delay_msec(500)delay(500);brd_led_toggle(BRD_LED1)

18、;/brd_delay_msec(500)delay(500);brd_led_toggle(BRD_LED2);/brd_delay_msec(500)delay(500);/初始化codec /* Open Handset Codec */ hHandset = codec_open(HANDSET_CODEC); /Acquire handle to codec /* Set codec parameters */ codec_dac_mode(hHandset,CODEC_DAC_15BIT); /DAC in 15-bit mode codec_adc_mode(hHandset,C

19、ODEC_ADC_15BIT); /ADC in 15-bit mode codec_ain_gain(hHandset,CODEC_AIN_6dB); /6dB gain on analog input to ADC codec_aout_gain(hHandset,CODEC_AOUT_MINUS_12dB); /-12dB gain on analog output from DAC codec_sample_rate(hHandset,SR_8000); /8KHz sampling rate send(n); fflush(stdin);/清空輸入緩沖區(qū),確保不影響后面的數(shù)據(jù)讀取vo

20、id send(int n)int k=0;int i;int pp;float f1,f2,ff; ff=2*pi/8000; i=k; while(1) while (!MCBSP_XRDY(HANDSET_CODEC) ;/等待接收handset處的采樣數(shù)據(jù) *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=bufferi;/從handset處發(fā)送采樣數(shù)據(jù) i+; if(i=256) i=0; c+; if(c=15) pp=400; while(pp-) while (!MCBSP_XRDY(HANDSET_CODEC) ;/等待接收handset處的采

21、樣數(shù)據(jù) *(volatile u16*)DXR1_ADDR( HANDSET_CODEC)=0;/從handset處發(fā)送采樣數(shù)據(jù) fflush(stdin);/清空輸入緩沖區(qū),確保不影響后面的數(shù)據(jù)讀取 c=0; p+; s=tele_numberm; m+; if(m=16) m=0; switch (s) case '0' : f1=ff*941; f2=ff*1336; break; case '1' : f1=ff*697; f2=ff*1209; break; case '2' : f1=ff*697; f2=ff*1336; break

22、; case '3' : f1=ff*697; f2=ff*1477; break; case '4' : f1=ff*770; f2=ff*1209; break; case '5' : f1=ff*770; f2=ff*1336; break; case '6' : f1=ff*770; f2=ff*1477; break; case '7' : f1=ff*852; f2=ff*1209; break; case '8' : f1=ff*852; f2=ff*1336; break; case

23、 '9' : f1=ff*852; f2=ff*1477; break; case 'A' : f1=ff*697; f2=ff*1633; break; case 'B' : f1=ff*770; f2=ff*1633; break; case 'C' : f1=ff*852; f2=ff*1633; break; case 'D' : f1=ff*941; f2=ff*1633; break; case '*' : f1=ff*941; f2=ff*1209; break; case '

24、#' : f1=ff*941; f2=ff*1477; break; for(k=0;k<256;k+) bufferk=(0.65*sin(f1*k)+0.8*sin(f2*k)*16384;/定點(diǎn)處理,將數(shù)擴(kuò)大16384=214且規(guī)定為Q15格式 out_bufferk=bufferk; /強(qiáng)制類型轉(zhuǎn)換 void delay(int period) int i, j; for(i=0; i<period; i+) for(j=0; j<period>>1; j+); 2.檢測程序#include <stdio.h>#include <

25、math.h>#include <type.h>#include <board.h>#include <codec.h>#include <mcbsp54.h>HANDLE hHandset; float buffer205;/定義一個(gè)個(gè)的變量和緩沖數(shù)組 float pi=3.1415926; s16 test205; s16 dacdata; int k=0,l=0; int dtmf_flag=0; int result32=0;void delay(s16 period);/延時(shí)聲明void detect();u16 m=0,n=0,

26、c1=0;void main() s16 cnt=2; if(brd_init(100) return; SWWSR=0X7249; while ( cnt- )brd_led_toggle(BRD_LED0);/首先讓流水燈亮兩遍以示程序運(yùn)行/* brd_delay_msec(500); */delay(500);brd_led_toggle(BRD_LED1);/* brd_delay_msec(500); */delay(500);brd_led_toggle(BRD_LED2);/* brd_delay_msec(500); */delay(500); /* 公式vk(n) = 2*c

27、oef*vk(n-1) - vk(n-2) + x(n) 基波系數(shù) 為 w8 x(n) 為 in buffer256 vk(n-2) 為 ai0 vk(n-1) 為 ai1 . vk(n) 為 ai2 */ hHandset = codec_open(HANDSET_CODEC); /* Acquire handle to codec */ codec_dac_mode(hHandset, CODEC_DAC_15BIT); /* DAC in 15-bit mode */ codec_adc_mode(hHandset, CODEC_ADC_15BIT); /* ADC in 15-bit

28、mode */ codec_ain_gain(hHandset, CODEC_AIN_6dB); /* 6dB gain on analog input to ADC */ codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); /* -6dB gain on analog output from DAC */ codec_sample_rate(hHandset,SR_8000); /* 8KHz sampling rate */ while(1) while (!MCBSP_RRDY(HANDSET_CODEC) ; /等待數(shù)據(jù)接受,判斷是不是有數(shù)

29、據(jù)來了 dacdata = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC);/接數(shù)據(jù) bufferk=dacdata/16384.0;/把接收到的數(shù)據(jù)賦值給緩沖數(shù)組 k+; if(k=205)/取205點(diǎn) k=0; detect();/檢測收到的是什么數(shù)據(jù),進(jìn)入檢測子程序 void detect() /檢測子程序 int i,j,x,y,c;char s;/定義變量 float w8,a83,amp8;/定義數(shù)組 w0=2*cos(2*pi*18/205);/分別把求方值的系數(shù)賦值給數(shù)組w1=2*cos(2*pi*20/205);w2=2*cos(2*pi*2

30、2/205);w3=2*cos(2*pi*24/205);w4=2*cos(2*pi*31/205);w5=2*cos(2*pi*34/205);w6=2*cos(2*pi*38/205);w7=2*cos(2*pi*42/205); for(i=0;i<8;i+)/利用格策爾算法的八重循環(huán),因?yàn)橐还灿邪藗€(gè)基波系數(shù)ai0=0;ai1=0;for(j=1;j<=205;j+)/格策爾算法的一次諧波的樣點(diǎn)數(shù)ai2=wi*ai1-ai0+bufferj-1;/公式vk(n) = 2*coef*vk(n-1) - vk(n-2) + x(n)ai0=ai1;ai1=ai2;ampi=ai1

31、*ai1+ai0*ai0-wi*ai1*ai0;/計(jì)算收到的其平方值給數(shù)組 j=0; m=x; n=y; c1=10*m+n;for(i=0;i<8;i+) /此處循環(huán)只是為了記錄下面的檢測到的第一個(gè)頻率是第幾個(gè)頻率(一共八個(gè)) if(ampi>1500)/門限定義為1500,看信號(hào)的能量強(qiáng)弱,大于門限才算是能接收j+;if(j=1)/判斷門限后的基波(相當(dāng)于第一個(gè)頻率)否?有信號(hào)就一定會(huì)有第一個(gè)頻率x=i;else if(j=2)/判斷二次諧波的存在與否(相當(dāng)于第二個(gè)頻率)的到來y=i; c=x*10+y;s='/' if(dtmf_flag=0)if(j=2)/

32、如果是二次諧波存在就通過判斷接收的是什么信號(hào),若不存在就返回。 if(c!=c1) m=x;n=y; c1=10*m+n; switch(c1)/;判斷收到的賦值c,通過x,y便能知道行頻多少和列頻多少,確定按鍵值 case 4:s='1'break; /八個(gè)頻率都是從小到大為0到7,0到3為x,4到7為y case 5:s='2'break; case 6:s='3'break; case 14:s='4'break; case 15:s='5'break; case 16:s='6'break;

33、 case 24:s='7'break; case 25:s='8'break; case 26:s='9'break; case 35:s='0'break; case 7:s='A'break; case 17:s='B'break; case 27:s='C'break; case 37:s='D'break; case 34:s='*'break; case 36:s='#'break; if(s!='/') r

34、esultl=s;l+; /printf("收到的數(shù)字為 %c.rn ",s);if(l=32) for(l=0;l<32;l+) printf("The number received is %c.rn ",resultl); l=0; dtmf_flag+; / dtmf_flag=0;else if (j=0)dtmf_flag=0; void delay(s16 period)/延時(shí)子程序 int i, j; for(i=0; i<period; i+) for(j=0; j<period>>1; j+); 二程序調(diào)

35、試,結(jié)果分析 1、編寫、編譯程序。(1)編寫程序在實(shí)驗(yàn)中主要需要編寫的程序就是用C語言實(shí)現(xiàn)所需的公式,其他的如ADDA部分,CMD部分可以參考老師在課件中給的程序。(2)建立工程建立工程步驟如下:a、 創(chuàng)建一個(gè)新的工程:ProjectNew;b、 建立.c、.asm、.cmd程序:FileNewSource File;c、 添加庫文件:ProjectBuild Options;C程序運(yùn)行支持庫: rts.lib,在C:tic5400cgtoolslib目錄下,將.h文件的路徑填入所示方框第一行。如圖8:圖8 DSK板庫文件: drv5402.lib和dsk5402.lib,在C:tic5400

36、dsk5402lib 目錄下。選擇Preprocessor這一項(xiàng),在出現(xiàn)的界面中將頭文件的路徑添加在圖9所示界面的第一行。如圖9:圖9d、 建立鏈接命令文件.pjt:FileNewSource File;e、 添加有關(guān)文件到工程:ProjectAdd Files to Project;f、 編譯鏈接產(chǎn)生.out文件:ProjectRebuild All或點(diǎn)擊;g、 加載.out文件:FileLoad Program;h、 運(yùn)行程序:DebugRun或點(diǎn)擊。2、程序運(yùn)行結(jié)果顯示 (1)編譯成功后,選擇File菜單中的Load Program選項(xiàng),將程序加載到DSK板中,為軟件仿真結(jié)果的觀測做準(zhǔn)備

37、。(2)圖形顯示參數(shù)設(shè)置:選擇View中的Graph的第一項(xiàng),在如圖所示的對(duì)話框中修改相關(guān)參數(shù)以觀察輸出信號(hào)的時(shí)域(Single Time)和頻域(FFT Magnitude)波形圖。 圖10 圖形顯示參數(shù)設(shè)置(3)運(yùn)行結(jié)果顯示:發(fā)送部分:時(shí)域(Single Time)波形圖:頻域(FFT Magnitude)波形圖:接收部分:頻域(FFT Magnitude)波形圖(收到1時(shí)):說明:可以看見在發(fā)送端的頻譜是很清晰的兩個(gè)尖峰,而接收端有很多雜質(zhì)信號(hào),但是兩個(gè)峰值信號(hào)還是基本可以檢測到的。五、設(shè)計(jì)(安裝)與調(diào)試的體會(huì)在開始做DTMF的試驗(yàn)時(shí),我們?nèi)D書館借了幾本關(guān)于DSP的書,有很多關(guān)于DTMF信號(hào)產(chǎn)生與檢測的研究,通過閱讀這些書以及查閱了幾篇論文后,我們對(duì)DTMF信號(hào)有了大概的了解,所謂DTMF信號(hào)產(chǎn)生與檢測的過程,實(shí)際是由模擬信號(hào)的產(chǎn)生,抽樣產(chǎn)生數(shù)字信號(hào)并D/A變換成模擬信號(hào)傳輸,在接收端將模擬信號(hào)抽樣成數(shù)字信號(hào),并檢測出所對(duì)應(yīng)的模擬頻率的過程,在開始,我們對(duì)整個(gè)信號(hào)處理的過程很迷茫,通過閱

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論