MATLAB的双音多频拨号系统的仿真 第5页
图(1)
6 界面的设计与实现
6.1 DTMF 信号的组成
双音多频 DTMF ( Dual Tone Multi-Frequency )信号,是用两个特定的单音频率信号的组合来代表数字或功能。在 DTMF 电话机中有 16 个按键,其中 10 个数字键 0 — 9 , 6 个功能键 * 、 # 、 A 、 B 、 C 、 D 。其中 12 个按键是我们比较熟悉的按键,另外由第 4 列确定的按键作为保留,作为功能键留为今后他用。 根据 CCITT 建议,国际上采用 697Hz 、 770Hz 、 852Hz 、 94lHz 低频群及 1209Hz 、 1336Hz 、 1477H: 、 1633Hz 高频群。从低频群和高频群任意各抽出一种频率进行组合,共有 16 种组合,代表 16 种不同的数字键或功能,每个按键唯一地由一组行频和列频组成,如表 1 所示。
表 1 : DTMF 的组合功能
6.2 DTMF 信号产生合成的程序模块
现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行设置,即对untitled.m 文件进行编辑。其主要的功能是使对应的按键,按照表 1 的对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。
鉴于 CCITT 对 DTMF 信号规定的指标,这里每个数字信号取 1023 个采样点模拟按键信号,并且每两个数字之间用 100 个 0 来表示间隔来模拟静音。以便区别连续的两个按键信号。间隔的静音信号也是在按键时产生的
6.2.1 默认模块
function varargout = untitled(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled_OpeningFcn, ...
'gui_OutputFcn', @untitled_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
6.2.2 按键模块设计
% 按键 1 的响应函数
function pushbutton1_Callback(hObject, eventdata, handles)
n=0:1023;
x=sin(2*pi*n*697/8000)+sin(2*pi*n*1209/8000);
sound(x,8000);
num=get(handles.edit1,'string');
n=length(num);
if n>=8;
errordlg('ÊäÈ볬¹ý8룬ÇëÖØÐÂÊäÈ룡');
set(handles.edit1,'string','');
else
nu=strcat(get(handles.edit1,'string'),get(handles.pushbutton1,'string'));
set(handles.edit1,'string',nu);
end
% 按键 2 的响应函数
function pushbutton2_Callback(hObject, eventdata, handles)
n=0:1023;
x=sin(2*pi*n*697/8000)+sin(2*pi*n*1336/8000);
sound(x,8000);
num=get(handles.edit1,'string');
n=length(num);
if n>=8;
毕业论文
http://www.751com.cn/ 论文网
http://www.751com.cn/nu=strcat(get(handles.edit1,'string'),get(handles.pushbutton2,'string'));
set(handles.edit1,'string',nu);
end
% 按键 3的响应函数
function pushbutton3_Callback(hObject, eventdata, handles)
n=0:1023;
x=sin(2*pi*n*697/8000)+sin(2*pi*n*1477/8000);
sound(x,8000);
num=get(handles.edit1,'string');
n=length(num);
if n>=8;
errordlg('ÊäÈ볬¹ý8룬ÇëÖØÐÂÊäÈ룡');
set(handles.edit1,'string','');
else
nu=strcat(get(handles.edit1,'string'),get(handles.pushbutton3,'string'));
set(handles.edit1,'string',nu);
end
% 按键 4 的响应函数
function pushbutton4_Callback(hObject, eventdata, handles)
n=0:1023;
x=sin(2*pi*n*770/8000)+sin(2*pi*n*1209/8000);
sound(x,8000);
num=get(handles.edit1,'string');
n=length(num);
if n>=8;
errordlg('ÊäÈ볬¹ý8룬ÇëÖØÐÂÊäÈ룡');
set(handles.edit1,'string','');
else
nu=strcat(get(handles.edit1,'string'),get(handles.pushbutton4,'string'));
set(handles.edit1,'string',nu);end
上一页 [1] [2] [3] [4] [5] [6] 下一页
MATLAB的双音多频拨号系统的仿真 第5页下载如图片无法显示或论文不完整,请联系qq752018766