双音多频 DTMF 拨号信号的产生——IIR 数字滤波器的设计和实现

本文介绍了DTMF信号的编码原理,通过使用IIR滤波器在Matlab中生成特定频率的正弦波,以实现DTMF拨号信号的产生。实验内容包括电话号码的DTMF编码并生成.wav文件,同时探讨了信号的频率误差和信噪比要求。
摘要由CSDN通过智能技术生成

背景

DTMF 信号是将拨号盘上的 0~F 共16 个数字,用音频范围的 8 个频率来表示的一种编码方式。8 个频率分为高频群和低频群两组,分别作为列频和行频。每个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。频率组合方式如下表格所示。

频率 1209Hz 1336Hz 1477Hz 1633Hz
697Hz 1 2 3 A
770Hz 4 5 6 B
852Hz 7 8 9 C
941Hz */E 0 F D

据 ITU Q.23 建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码 100ms 。每个号码传送过程中,信号存在时间至少 45

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
function varargout = key1(varargin) % KEY1 M-file for key1.fig % KEY1, by itself, creates a new KEY1 or raises the existing % singleton*. % % H = KEY1 returns the handle to a new KEY1 or the handle to % the existing singleton*. % % KEY1('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in KEY1.M with the given input arguments. % % KEY1('Property','Value',...) creates a new KEY1 or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before key1_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to key1_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help key1 % Last Modified by GUIDE v2.5 13-Dec-2009 23:16:54 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @key1_OpeningFcn, ... 'gui_OutputFcn', @key1_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 % End initialization code - DO NOT EDIT % --- Executes just before key1 is made visible. function key1_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to key1 (see VARARGIN) % Choose default command line output for key1 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes key1 wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = key1_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) d='1'; val=telephone(d); ppu(val) str = get(handles.pushbutton1,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) d='2'; val=telephone(d); ppu(val) str = get(handles.pushbutton2,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) d='3'; val=telephone(d); ppu(val) str = get(handles.pushbutton3,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) d='A'; val=telephone(d); ppu(val) str = get(handles.pushbutton4,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, handles) d='4'; val=telephone(d); ppu(val) str = get(handles.pushbutton5,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles) d='5'; val=telephone(d); ppu(val) str = get(handles.pushbutton6,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton7. function pushbutton7_Callback(hObject, eventdata, handles) d='6'; val=telephone(d); ppu(val) str = get(handles.pushbutton7,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles) d='B'; val=telephone(d); ppu(val) str = get(handles.pushbutton8,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton9. function pushbutton9_Callback(hObject, eventdata, handles) d='7'; val=telephone(d); ppu(val) str = get(handles.pushbutton9,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton11. function pushbutton11_Callback(hObject, eventdata, handles) d='9'; val=telephone(d); ppu(val) str = get(handles.pushbutton11,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton11 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton12. function pushbutton12_Callback(hObject, eventdata, handles) d='C'; val=telephone(d); ppu(val) str = get(handles.pushbutton12,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton13. function pushbutton13_Callback(hObject, eventdata, handles) d='*'; val=telephone(d); ppu(val) str = get(handles.pushbutton13,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton13 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton14. function pushbutton14_Callback(hObject, eventdata, handles) d='0'; val=telephone(d); ppu(val) str = get(handles.pushbutton14,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton14 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton15. function pushbutton15_Callback(hObject, eventdata, handles) d='#'; val=telephone(d); ppu(val) str = get(handles.pushbutton15,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton15 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton16. function pushbutton16_Callback(hObject, eventdata, handles) d='D'; val=telephone(d); ppu(val) str = get(handles.pushbutton16,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton16 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end % --- Executes on button press in pushbutton10. function pushbutton10_Callback(hObject, eventdata, handles) d='8'; val=telephone(d); ppu(val) str = get(handles.pushbutton10,'string'); set(handles.edit1,'string',str) % hObject handle to pushbutton10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
DTMF(Dual Tone Multi Frequency)中 文译为双音多频信号,最初由美国AT&T 贝尔公司实验室研制, 用于音频电话网络 中的拨号信号。一方面这种信号有非在常 高的拨号速度, 另一方面它便于自动检测 识别及电话业务的扩展, 所以很快代替了 原有的脉冲计数方式的拨号形式。 在这里不得不提一下电话交换机的发 展历史。自1876 年美国贝尔发明电话以 来, 电话交换技术发展主要经历了三个阶 段: 人工交换、机电交换、电子交换。 早 在1878 年就出现了人工供电制交换机,它 借助话务员进行话务接续。15 年后步进制 的交换机问世, 这种交换机属于“直接控 制”方式, 用户通过话机拨号脉冲直接控 制步进接续器做升降和旋转动作。从而自 动完成用户间的接续。这种交换机虽然实 现了自动接续,但存在着速度慢、效率低、 杂音大与机械磨损严重等特点。 直到1938 年发明了纵横制交换机由直接控制过渡到 间接控制方式, 随后又出现了电子交换机 及程控交换机等。用户的拨号脉冲不再直 接控制接线器动作, 而先由记发器接收、 存储,然后通过标志器驱动接线器,以完成 用户间接续。由于标志器记取的是标识信 号, 所以可以不采用不稳定的脉冲计数方 式,逐步发展到数字号码标识,所以快速, 稳定灵活的DTMF 音频拨号方式取代了脉 冲拨号方式。电子交换机程控交换机。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值