用matlabGUI功能模拟DTMF拨号系统.docx

上传人:b****5 文档编号:28971721 上传时间:2023-07-20 格式:DOCX 页数:11 大小:149.57KB
下载 相关 举报
用matlabGUI功能模拟DTMF拨号系统.docx_第1页
第1页 / 共11页
用matlabGUI功能模拟DTMF拨号系统.docx_第2页
第2页 / 共11页
用matlabGUI功能模拟DTMF拨号系统.docx_第3页
第3页 / 共11页
用matlabGUI功能模拟DTMF拨号系统.docx_第4页
第4页 / 共11页
用matlabGUI功能模拟DTMF拨号系统.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

用matlabGUI功能模拟DTMF拨号系统.docx

《用matlabGUI功能模拟DTMF拨号系统.docx》由会员分享,可在线阅读,更多相关《用matlabGUI功能模拟DTMF拨号系统.docx(11页珍藏版)》请在冰豆网上搜索。

用matlabGUI功能模拟DTMF拨号系统.docx

用matlabGUI功能模拟DTMF拨号系统

用matlab-GUI功能模拟DTMF拨号系统

用matlabGUI功能模DTMF拨号系统

双音多频DTMF(DualToneMulti-Frequency)信号,是用两个特定的单音频率信号的组合来代表数字或功能。

在DTMF电话机中有16个按键,其中10个数字键0—9,6个功能键*、#、A、B、C、D。

其中12个按键是我们比较熟悉的按键,另外由第4列确定的按键作为保留,作为功能键留为今后他用。

根据CCITT建议,国际上采用697Hz、770Hz、852Hz、94lHz低频群及1209Hz、1336Hz、1477Hz、1633Hz高频群。

从低频群和高频群任意各抽出一种频率进行组合,共有16种组合,代表16种不同的数字键或功能,每个按键唯一地由一组行频和列频组成如表1所示。

(1).GUI图形电话拨号面板的制作:

利用GUI图形用户界面设计工具制作电话拨号面板,把DTMF信号和电话机的键盘矩阵对应起来。

其中选用我们熟悉的10个数字键0—9,2个功能键“*”、“#”,另四个键省略。

电话机键盘矩阵的排列方式制作四行三列的按键控件。

然后,为了更直观的反映对应的按键号码,可以设置一个编辑框,用于动态的显示拨号号码,模拟实际电话

的拨号显示窗口。

编辑框可用(EditText)添加。

另外,为了图形电话拨号面板的简洁美观,可以添加空白区域作为背景,并用静态文本框制作文字信息。

背景可用(Frame)添加,静态文本框可用(StaticText)添加。

最终利用GUI图形用户界面设计工具生成的图形电话拨号面板用于拨号音的合成产生部分,这里将其保存为tu1.fig文件。

(2).DTMF信号的产生合成:

其主要的功能是使对应的按键,按照表1的对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。

此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。

鉴于CCITT对DTMF信号规定的指标,这里每个数字信号取1000个采样点模拟按键信号,并且每两个数字之间用100个0来表示间隔来模拟静音。

以便区别连续的两个按键信号。

间隔的静音信号也是在按键时产生的。

(3)程序段:

按键1:

n=[1:

1000];%每个数字1000个采样点

d1=sin(0.5346*n)+sin(0.9273*n);%对应行列频叠加

n1=strcat(get(handles.edit1,'string'),'1');%获取数字号码

set(handles.edit1,'string',n1);%显示号码

space=zeros(1,100);%100个1模拟静音信号

globalNUM

phone=[NUM,d1];

NUM=[phone,space];%储存连续拨号音信号

wavplay(d1,8192);%拨号音

按键2

n=[1:

1000];%同上

d2=sin(0.5346*n)+sin(1.0247*n);%由(2*pi/8192)*行列频率得到其他按键一样

n2=strcat(get(handles.edit1,'string'),'2');%8192为采样频率

set(handles.edit1,'string',n2);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d2];

NUM=[phone,space];%

wavplay(d2,8192);%

按键3

n=[1:

1000];%

d3=sin(0.5346*n)+sin(1.1328*n);%

n3=strcat(get(handles.edit1,'string'),'3');%

set(handles.edit1,'string',n3);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d3];

NUM=[phone,space];%

wavplay(d3,8192);%

按键4

n=[1:

1000];%

d4=sin(0.5906*n)+sin(0.9273*n);%

n4=strcat(get(handles.edit1,'string'),'4');%

set(handles.edit1,'string',n4);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d4];

NUM=[phone,space];%

wavplay(d4,8192);%

按键5

n=[1:

1000];%

d5=sin(0.5906*n)+sin(1.0247*n);%

n5=strcat(get(handles.edit1,'string'),'5');%

set(handles.edit1,'string',n5);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d5];

NUM=[phone,space];%

wavplay(d5,8192);%

按键6

n=[1:

1000];%

d6=sin(0.5906*n)+sin(1.1328*n);%

n6=strcat(get(handles.edit1,'string'),'6');%

set(handles.edit1,'string',n6);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d6];

NUM=[phone,space];%

wavplay(d6,8192);%

按键7

n=[1:

1000];%

d7=sin(0.6535*n)+sin(0.9273*n);%

n7=strcat(get(handles.edit1,'string'),'7');%

set(handles.edit1,'string',n7);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d7];

NUM=[phone,space];%

wavplay(d7,8192);%

按键8

n=[1:

1000];%

d8=sin(0.6535*n)+sin(1.0247*n);%

n8=strcat(get(handles.edit1,'string'),'8');%

set(handles.edit1,'string',n8);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d8];

NUM=[phone,space];%

wavplay(d8,8192);%

按键9

n=[1:

1000];%

d9=sin(0.6535*n)+sin(1.1328*n);%

n9=strcat(get(handles.edit1,'string'),'9');%

set(handles.edit1,'string',n9);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d9];

NUM=[phone,space];%

wavplay(d9,8192);%

按键C(删除一个数字)

n=[1:

1000];

num=get(handles.edit1,'string');

L=length(num);

nx=strrep(num,num,num(1:

L-1));%

d11=sin(0.7217*n)+sin(0.9273*n);

set(handles.edit1,'string',nx);

set(handles.edit2,'string',nx);

globalNUM

L=length(NUM);

NUM=NUM(1:

L-1100);%

wavplay(d11,8192);

按键0

n=[1:

1000];%

d0=sin(0.7217*n)+sin(1.0247*n);%

n0=strcat(get(handles.edit1,'string'),'0');%

set(handles.edit1,'string',n0);%

space=zeros(1,100);%

globalNUM

phone=[NUM,d0];

NUM=[phone,space];%

wavplay(d0,8192);%

按键D(清除显示屏)

n=[1:

1000];

num=get(handles.edit1,'string');

L=length(num);

nj=strrep(num,num,num(1:

L-1000));%

d11=sin(0.7217*n)+sin(1.1328*n);

set(handles.edit1,'string',nj);

set(handles.edit2,'string',nj);

globalNUM;

L=length(NUM);

NUM=NUM(1:

L-10000);%

wavplay(d11,8192);

接听(相当于解码):

globalNUM%解码程序

wavplay(NUM,2000);

L=length(NUM);%num为全局变量

n=L/1100;

number='';

fori=1:

n

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

d=NUM(j:

j+999);%取出每个数字

f=fft(d,2048);%以n=2048做ffi变换

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;

elseif(num

(1)<220)row=3;

elserow=4;

end

if(num

(2)<320)column=1;%确定列数

elseif(num

(2)<340)column=2;

elsecolumn=3;

end

z=[row,column];%

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

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

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

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

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

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

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

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

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

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

end

t(i)=tel;

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

number=c;

i=i+1;

end

set(handles.edit2,'string',number);

拨号:

globalNUM

wavplay(NUM,8192);

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做ffi变化

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;

elseif(num

(1)<220)row=3;

elserow=4;

end

if(num

(2)<320)column=1;%

elseif(num

(2)<340)column=2;

elsecolumn=3;

end

z=[row,column];%

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

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

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

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

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

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

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

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

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

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

end

t(i)=tel;

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

number=c;%

i=i+1;

end

set(handles.edit1,'string',number);

下面将效果图附上:

其中显示框第一个为拨号显示框

第二个为解码后显示框

时间有点紧,这篇文档做的有点粗糙,望见解,程序参考了网上的一片文档

但效果是出来了。

 

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1