双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx

上传人:b****1 文档编号:1224631 上传时间:2023-04-30 格式:DOCX 页数:16 大小:89.95KB
下载 相关 举报
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第1页
第1页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第2页
第2页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第3页
第3页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第4页
第4页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第5页
第5页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第6页
第6页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第7页
第7页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第8页
第8页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第9页
第9页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第10页
第10页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第11页
第11页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第12页
第12页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第13页
第13页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第14页
第14页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第15页
第15页 / 共16页
双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx

《双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。

双音多频拨号系统DTMF的实验报告Word文档下载推荐.docx

(PushButton)添加。

静态文本框可用 

(StaticText)添加,如图再加个解码键(PushButton)

二,再点

运行,得出与上图对应的m文件,再用鼠标右击上图的每个键,点callback导入每个键的编译程序如下:

1,按键1的程序:

%---Executesonbuttonpressinpushbutton4.

functionpushbutton4_Callback(hObject,eventdata,handles)

x=get(handles.text1,'

string'

);

%把数字显示在屏幕上

if(length(x)>

15)

errordlg('

Sorry.Thenumberyouhaveinputistoolong!

'

'

InputError'

modal'

else

n=[1:

1000];

%每个数字1000个采样点

y=sin(0.5345*n)+sin(0.9272*n);

%对应行频列频时域叠加,数字1的低频697Hz和高频1209Hz叠加

wavplay(y,8192)%产生拨号音

space=zeros(1,100);

%100个0模拟静音信号

globalNUM

phone=[NUM,y];

%循环储存

NUM=[phone,space];

%储存连续的拨号音信号

NoCtrl=x;

NoCtrl=[NoCtrl,'

1'

];

set(handles.text1,'

[NoCtrl]);

end

2,按键2的程序:

functionpushbutton5_Callback(hObject,eventdata,handles)

%把数字显示在屏幕上

%每个数字1000个采样点

y=sin(0.5345*n)+sin(1.0247*n);

%对应行频列频时域叠加,数字2的低频697Hz和高频1336Hz叠加

%100个0模拟静音信号

%循环储存

%储存连续的拨号音信号

2'

3.按键3的程序:

%---Executesonbuttonpressinpushbutton6.

functionpushbutton6_Callback(hObject,eventdata,handles)

y=sin(0.5345*n)+sin(1.1328*n);

%对应行频列频时域叠加,数字3的低频697Hz和高频1477Hz叠加

3'

4,按键4的程序:

%---Executesonbuttonpressinpushbutton10.

functionpushbutton10_Callback(hObject,eventdata,handles)

y=sin(0.5905*n)+sin(0.9272*n);

%对应行频列频时域叠加,数字4的低频770Hz和高频1209Hz叠加

4'

5,按键5的程序:

%---Executesonbuttonpressinpushbutton9.

functionpushbutton9_Callback(hObject,eventdata,handles)

%每个数字1000个采样点v

y=sin(0.5905*n)+sin(1.0247*n);

%对应行频列频时域叠加,数字5的低频770Hz和高频1336Hz叠加

%100个0模拟静音信号

%循环储存

5'

6,按键6的程序:

%---Executesonbuttonpressinpushbutton8.

functionpushbutton8_Callback(hObject,eventdata,handles)

y=sin(0.5905*n)+sin(1.1328*n);

%对应行频列频时域叠加,数字6的低频770Hz和高频1477Hz叠加

6'

7,按键7的程序:

%---Executesonbuttonpressinpushbutton13.

functionpushbutton13_Callback(hObject,eventdata,handles)

%把数字显示在屏幕上

y=sin(0.6534*n)+sin(0.9272*n);

%对应行频列频时域叠加,数字7的低频852Hz和高频1209Hz叠加

7'

8,按键8的程序:

%---Executesonbuttonpressinpushbutton12.

functionpushbutton12_Callback(hObject,eventdata,handles)

y=sin(0.6534*n)+sin(1.0247*n);

%对应行频列频时域叠加,数字8的低频852Hz和高频1336Hz叠加

8'

9,按键9的程序:

%---Executesonbuttonpressinpushbutton14.

functionpushbutton14_Callback(hObject,eventdata,handles)

y=sin(0.6534*n)+sin(1.1328*n);

%对应行频列频时域叠加,数字9的低频852Hz和高频1477Hz叠加

9'

10,按键0的程序:

%---Executesonbuttonpressinpushbutton17.

functionpushbutton17_Callback(hObject,eventdata,handles)

每个数字1000个采样点

y=sin(0.7217*n)+sin(1.0247*n);

%对应行频列频时域叠加,数字0的低频941Hz和高频1336Hz叠加

0'

11,按键#号程序:

%---Executesonbuttonpressinpushbutton16.

functionpushbutton16_Callback(hObject,eventdata,handles)

['

]);

set(handles.tbutton,'

visible'

off'

value'

[0]);

clearall

12,按键*的程序:

%---Executesonbuttonpressinpushbutton18.

functionpushbutton18_Callback(hObject,eventdata,handles)

13,回删键的程序:

%---Executesonbuttonpressinpushbutton20.

functionpushbutton20_Callback(hObject,eventdata,handles)

%把数字显示在屏幕上

if(isempty(x))

PleaseinputthephoneNo.'

Inputerror'

else

xll=length(x);

x(xll)=[];

%去掉末尾号在面板上的显示

[x]);

globalNUM

ll=length(NUM);

%删除末尾在拨号音信号中的储存

fori=ll-1100+1:

ll

NUM(ll)=[];

ll=length(NUM);

14,拨号键的程序:

%---Executesonbuttonpressinpushbutton21.

functionpushbutton21_Callback(hObject,eventdata,handles)

xx=str2num(x);

if(isempty(NUM))

wavplay(NUM,8192);

msgbox('

拨号成功!

若需再次拨号请按#号复位!

Done'

help'

set(handles.tbutton,'

on'

set(handles.text1,'

DielingDone.'

14,关闭键的程序:

%---Executesonbuttonpressinpushbutton22.

functionpushbutton22_Callback(hObject,eventdata,handles)

clearall

closeall

15,解码的程序:

%---Executesonbuttonpressintbotton.

functiontbotton_Callback(hObject,eventdata,handles)

L=length(NUM);

n=L/1100;

number='

;

fori=1:

n

j=(i-1)*1100+1;

d=NUM(j:

j+999);

%截取出每个数字

f=fft(d,2048);

%以N=2048作FFT变换

a=abs(f);

p=a.*a/10000;

%计算功率谱

num

(1)=find(p(1:

250)==max(p(1:

250)));

%找行频通过计算得出数值围

num

(2)=300+find(p(300:

380)==max(p(300:

380)));

%找列频通过计算得出数值围

if(num

(1)<

180)row=1;

%确定行数

elseif(num

(1)<

200)row=2;

220)row=3;

elserow=4;

end

if(num

(2)<

320)column=1;

%确定列数

elseif(num

(2)<

340)column=2;

elsecolumn=3;

z=[row,column];

%确定数字

ifz==[4,2]tel=0;

%0在4行2列

elseifz==[1,1]tel=1;

%1在1行1列

elseifz==[1,2]tel=2;

%2在1行2列

elseifz==[1,3]tel=3;

%3在1行3列

elseifz==[2,1]tel=4;

%4在2行1列

elseifz==[2,2]tel=5;

%5在2行2列

elseifz==[2,3]tel=6;

%6在2行3列

elseifz==[3,1]tel=7;

%7在3行1列

elseifz==[3,2]tel=8;

%8在3行2列

elseifz==[3,3]tel=9;

%9在3行3列

t(i)=tel;

c=strcat(number,int2str(tel));

number=c;

i=i+1;

解码中...'

h=waitbar(0,'

Decoding...Pleasewait...'

steps=1500;

forstep=1:

steps

%computationstakeplacehere

waitbar(step/steps)

close(h);

number);

%hObjecthandletotbotton(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

三,运行以上程序调出如下图界面:

即可以进行仿真拨号。

四,程序具体说明:

1.按下任意0~9键就可以实现仿真拨号:

这里每个数字信号取1000个采样点模拟按键信号,并且每两个数字之间用100个0来表示间隔模拟静音,间隔也是在按键时产生的。

如:

按键1y=sin(0.5345*n)+sin(0.9272*n)算法,sin([低频*2pi/采样频率8192]*采样点n)+sin([高频*2pi/采样频率8192]*采样点n);

2.*号和#号功能一样,清空文本框确定保留,实现从新拨号;

即将前面拨过的进行确认保留,意味着此时连续拨号音信息的储存单元NUM中的信号即为最后用于识别的连续拨号音DTMF信号,并在显示窗口中显示“#”号作为标记

3.回删键的作用:

是将前面拨错的删除退回,表现为将显示窗口已经显示错误的退回一位数字,并将连续拨号音的储存单元NUM中退回一位拨号音信号和静音信号,删除可以进行连续的操作

4.解码

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2