資源描述:
《用matlabGUI功能模擬DTMF撥號系統(tǒng)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、用matlabGUI功能模DTMF撥號系統(tǒng)雙音多頻DTMF(DualToneMulti-Frequency)信號,是用兩個待定的單音頻率信號的組合來代表數(shù)字或功能。在DTMF電話機中有16個按鍵,其中10個數(shù)字鍵0—9,6個功能鍵*、#、A、B、C、D。其中12個按鍵是我們比較熟悉的按鍵,另外由第4列確定的按鍵作為保留,作為功能鍵留為今后他用。根據(jù)CCITT建議,國際上采用697Hz、770Hz、852Hz、941Hz低頻群及1209Hz、1336IIz、1477IIz、1633IIz高頻群。從低頻群和高頻
2、群任意各抽出一種頻率進行組合,共有16種組合,代表16種不同的數(shù)字鍵或功能,每個按鍵唯一地由一組行頻和列頻組成如表1所示。(1).GUI圖形電話撥號面板的制作:利用GUI圖形用戶界面設(shè)計工具制作電話撥號面板,把DTMF信號和電話機的鍵盤矩陣對應(yīng)起來。其屮選用我們熟悉的10個數(shù)字鍵0—9,2個功能鍵“*”、“#”,另四個鍵省略。電話機鍵盤矩陣的排列方式制作四行三列的按鍵控件。然后,為了更直觀的反映對應(yīng)的按鍵號碼,可以設(shè)置一個編輯框,用于動態(tài)的顯示撥號號碼,模擬實際電話的撥號顯示窗口。編輯框可用(EditTex
3、t)添加。另外,為了圖形電話撥號面板的簡潔美觀,可以添加空白區(qū)域作為背景,并用靜態(tài)文本框制作文字信息。背景可用(Frame)添加,靜態(tài)文本框可用(StaticText)添加。最終利用GUI圖形用戶界面設(shè)計工具生成的圖形電話撥號面板用于撥號音的合成產(chǎn)生部分,這里將其保存為tul.fig文件。(2).DTMF信號的產(chǎn)生合成:其主要的功能是使對應(yīng)的按鍵,按照表1的對應(yīng)關(guān)系產(chǎn)生相應(yīng)的撥號咅,完成對應(yīng)行頻及列頻的疊加輸出。此外,對于圖形界面的需要,還要使按鍵的號碼數(shù)字顯示在撥號顯示窗口中。鑒于CCITT對DTMF信號
4、規(guī)定的指標,這里每個數(shù)字信號収1000個采樣點模擬按鍵信號,并且每兩個數(shù)字之間用100個0來表示間隔來模擬靜音。以便區(qū)別連續(xù)的兩個按鍵信號。間隔的靜音信號也是在按鍵時產(chǎn)生的。(3)程序段:按鍵1:n=[l:1000];%每個數(shù)字1000個采樣點dl=sin(0.5346*n)+sin(0.9273*n);%對應(yīng)行列頻疊加nl=strcat(get(handles?editlstring;%獲取數(shù)字號召馬set(handles.editl,'string'Anl);%顯示號碼space=zeros(1,100
5、);%100個1模擬靜音信號globalNUMphone=[NUM,dl];NUM=[phone,space];%儲存連續(xù)撥號音信號wavplay(dlA8192);%撥號音按鍵2n=[l:1000];%同上d2=sin(0.5346*n)+sin(1.0247*n);%由(2*pi/8192)*行列頻率得到其他按鍵一樣n2=streat(get(handles.editl,'string')A'2');%8192為采樣頻率set(handles?editl,'string',n2);%space=zero
6、s(1,100);%globalNUMphone=[NUM,d2];NUM=[phone,space];%wavplay(d2z8192);%按鍵3n=[l:1000];%d3=sin(0.5346*n)+sin(1.1328*n);%n3=strcat(get(handles?editl,1string9)f93');%set(handles.editl,1string1zn3);%space=zeros(1,100);%globalNUMphone=[NUM,d3];NUM=[phone,space];
7、%wavplay(d3z8192);%按鍵4n=[l:1000];%d4=sin(0.5906*n)+sin(0.9273*n);%n4=strcat(get(handles?editl,'string')A'4');%set(handles?editl,'string',n4);%space=zeros(1,100);%globalNUMphone=[NUM,d4];NUM=[phone,space];%wavplay(d4z8192);%按鍵5n=[l:1000];%d5=sin(0.5906*n)+s
8、in(1.0247*n);%n5=strcat(get(handles?editl,1string1)z151);%set(handles.editl,1string1zn5);%space=zeros(1,100);%globalNUMphone=[NUM,d5];NUM=[phone,space];%wavplay(d5z8192);%按鍵6n=[l:1000];%d6=sin(0.5906*n)+sin(1