- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab綜合实验DTMF拨号器设计
葛芃 电子信息工程 学号:20102121099
Matlab综合实验DTMF拨号器设计
所谓双音多频DTMF就是用两个频率——行频和列频来表示电话机键盘上的一个数字。DTMF 电话的指令正在迅速的取代脉冲指令。除了在电话呼叫信号中使用外DTMF 还广泛的使用在交互式控制应用例如电话银行、电子邮件甚至家电远程控制等用户可以从电话机发送DTMF 信号来做菜单选择。本文基于MATLAB的双音多频拨号系统的仿真实现。主要涉及到电话拨号音合成的基本原理及识别的主要方法利用 MATLAB 软件以及 DFT 算法实现对电话通信系统中拨号音的合成与识别。并进一步利用 MATLAB 中的图形用户界面 GUI 制作简单直观的模拟界面。还能够利用矩阵不同的基频合成 0 9 不同按键的拨号音并能够对不同的拨号音加以正确的识别实现由拨号音解析出电话号码的过程进一步利用 GUI 做出了简单的图形操作界面。本文具有界面清楚画面简洁易于理解操作简单的优点从而实现对电话拨号音系统的简单的信号仿真。 关键词 双音多频DTMF MATLAB GUI 信号仿真 在电话中数字0~9的中每一个都用两个不同的单音频传输所用的8个频率分成高频带和低频带两组低频带有四个频率679Hz770Hz852Hz和941Hz高频带也有四个频率1209Hz1336Hz1477Hz和1633Hz.。每一个数字均由高、低频带中各一个频率构成例如1用697Hz和1209Hz两个频率信号用 表示其中 。这样8个频率形成16种不同的双频信号。
实验步骤:
一,打开Matlab,输入guide操作指令,新建gui的用户作图界面,设立简单的电话界面图:如右图所示
用(push button)按钮添加按拨号键以及其他按键,用静态文本框(static text)添加输出窗口,用图轴(axes)添加一个图形窗口用来链接图片,另外用图示的’波形查看‘按钮链接另一个gui用户界面(boxing.fig)来实现波形的查看与分析。如下图所示:
同理用(push button)添加按钮,用(static text)添加静态文本低频与高频,用(edit text)来添加动态输出的显示窗口,用(check box)复选框来添加是否出现sound的按键,我用静态文本添加’sound‘,最后用两个图轴(axes)添加用来显示波形图和频率谱。以上来说基本的GUI界面制作完毕。两个文件分别保存为dtmfzuixinzhizuo.fig和boxing.fig。
二, 打开第一个制作的GUI界面,点击运行按钮,得出相应的m文件,下面就可以对对应的按键,右击选择view callbacks回调到对应的m文件的程序段中进行对应的程序段的编写。同理第二个GUI界面一样的操作方法。
具体程序如下所示:
Dtmfzuixinzhizuo.fig中的程序如下:
数字键1的程序:
x=get(handles.text1,string); % 把数字显示在屏幕上
if(length(x)15)
errordlg(Sorry . The number you have input is too long !,Input Error,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模拟静音信号
global NUM
phone=[NUM,y];% 循环储存
NUM=[phone,space]; % 储存连续的拨号音信号
NoCtrl=x;
NoCtrl=[NoCtrl,1];
set(handles.text1,string,[NoCtrl]);
End
其他数字键的程序仿照1键来写。
拨号键:
x=get(handles.text1,string); % 把数字显示在屏幕上
xx=str2num(x);
global NUM
if(isempty(NUM))
errordlg(Please input the phone No.,Input error,modal)
else
wavplay(NUM,8192);
msgbox(拨号成功!请按复位键重新拨号,Done,help)
set(handles.
文档评论(0)