DTMFWord下载.docx

上传人:b****6 文档编号:21573232 上传时间:2023-01-31 格式:DOCX 页数:42 大小:350.13KB
下载 相关 举报
DTMFWord下载.docx_第1页
第1页 / 共42页
DTMFWord下载.docx_第2页
第2页 / 共42页
DTMFWord下载.docx_第3页
第3页 / 共42页
DTMFWord下载.docx_第4页
第4页 / 共42页
DTMFWord下载.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

DTMFWord下载.docx

《DTMFWord下载.docx》由会员分享,可在线阅读,更多相关《DTMFWord下载.docx(42页珍藏版)》请在冰豆网上搜索。

DTMFWord下载.docx

基于单片机的DTMF信号合成

作者:

张坚

指导教师:

李方洲

(温州大学(筹)物理与电子信息学院,325027)

摘要:

本课题最主要的特点在于用单片机来产生DTMF信号,而不是通过专用的DTMF产生芯片,具有实际应用的意义。

本文首先介绍了DTMF信号及其应用,然后详细介绍了基于单片机的DTMF信号合成的硬件及其软件系统,重点阐述了用单片机产生DTMF信号的算法,先通过计算得出1/4周期简单正弦函数的数据,然后制作一个表格,CPU按特定的时间间隔即采样周期查表得到对应的数据,经DAC转换后产生正弦波。

最后对单片机产生的DTMF信号的误差进行了分析,并介绍了有MT8870组成的DTMF解码系统的硬件和软件。

关键词:

DTMF;

单片机;

MT8870;

正弦波;

 

Fomationofdtmfsignalbasedonmicrocontroller

Author:

ZhangJian

Tutor:

LiFangZhou

(PhysicsandelectronicimformationcollegeWenZhouuniversity,325027)

Abstract:

Themaincharacteristicofthesubjectisthatuseone-chipcomputertoproduceDTMFsignal,notthroughspecial-purposeDTMFchip.ThistextintroduceDTMFsignalandapplicationatfirst,thenintroduceDTMFhardwareandhissoftwaresystemwhichbasedonone-chipcomputerindetail,explainalgorithmofproduceDTMFespecially.Calculateout1/4cyclesimpledatumofSINfunctionfirst,thenmakeoneform,CPUaccordingtospecifictimeintervalnamelysamplingcyclegetsthecorrespondingdatathrougcheckform,producesinusoidalwaveafterDAC.FinallyanalyseerrorofDTMFsignalthatone-chipcomputerproduceandintroudceDTMFdecodesystematichardwarecomposedofMT8870andsoftware.

Keywords:

Microcontroller;

sinusoidalwave;

引言

DTMF(DualToneMultiFrequency)信号是音频电话的拨号信号。

由美国AT&

T贝尔实验室研制,双音多频信号编码技术易于识别,抗干扰能力强,发号速度快,且比用modem进行远程传输的方法更为经济实用,因此这种拨号方法取代了传统的脉冲拨号。

电话中的双音多频信号有两种用途:

一是用于双音多频信号的拨号,去控制交换机接通被叫的用户电话机;

二是利用双音多频信号遥控电话机各种动作,如播放留言,语音信箱。

这些都离不开DTMF信号的产生。

目前,大多数的DTMF信号的产生都是采用专用芯片MT5087,MT8880等,这种方法信号编码产生速度快但有很大的局限性,如果音频信号频率的改变应用于别的系统时,专用芯片就发挥不了作用了,其次是要实现用户多路双音多频信号发送比较困难。

基于单片机的DTMF信号合成的系统可以克服硬件电路的缺点,容易实现多路DTMF信号,节约系统成本,使双音多频信号的应用领域更广泛。

用单片机来产生DTMF信号主要方法有通过脉宽调制、增量调制生成双音多频信号或先通过编写计算正弦函数的子程序,然后调用函数把计算得到的数据经DAC转换后产生DTMF信号。

本课题采用的方法是先通过计算得出1/4周期简单正弦函数的数据,然后制作一个表格,CPU按特定的时间间隔即采样周期查表得到对应的数据,经DAC转换后产生正弦波。

由于前者需要编写复杂的计算正弦波函数的程序,占用相当的程序存储空间,计算时间长,降低了CPU的效率,很难保证正弦波频率的精度。

查表程序非常简单,占用硬件资源也非常少,频率精度和谐波系数取决于采样周期和表格的大小。

只要采样周期足够小和表格足够大,就可保证正弦波的精度。

1.DTMF信号介绍

1.1DTMF信号的特性

DTMF是由组(fb)和高频组(fa)两组频率信号构成,每个数字信号由低频组和高频组的任意一个叠加而成。

根据CCITT的建议,DTMF的编译码定义如表1所示,

表1电话拨号数字对应的高低频率组

可用下式表示

f(t)=A_{a}sin(2f_{a}t)+A_{b}sin(2f_{b}t))

式中两项分别表示低、高音群的值,Ab和Aa分别表示低音群和高音群的样值量化基线,而且两者幅值比为K=Ab/Aa(0.7<

K<

0.9)。

同时规定,对应于表1中的标称频率在发送时,DTMF信号的频率偏差不应当超过1.5%,每位数字的信号极限时长应该大于40ms,而接收设备对2%的偏差应能可靠地接收,对30ms~40ms时长的信号可以正常地接收。

与单音编码不同,DTMF信号是采用8中取2的方式,从高低两个音组中各取一个音频复合而成来代表0-9十个号码和其他功能码,再加上这8个音频信号的各频率间不存在谐波关系,大大减少了虚假信号的干扰,因而DTMF信号工作可靠性特别是抗干扰能力很强。

1.2DTMF信号的应用

DTMF信号即双音多频信号,最先用于程控电话交换系统来代替号盘脉冲信号。

如图1:

主叫用户摘机按键拨号后,电话号码所对应的DTMF信号通过电话线传到程控交换机中的DTMF接受电路,交换机中的微机识别被叫电话号码后,接通主被叫用户实现双方通话。

DTMF信号还用于自动控制系统,如果把DTMF的发送电路用于主控系统,接受电路用于被控系统,就可以方便地组成有线或无线通信系统,如图2所示,其通道数视需要而定,16通道以内每通道只需编一位号码即可,若需要更多通道,则可象电话号码编号一样编为两位或两位以上的号码。

2.系统硬件设计

2.1系统硬件的总体实现

为使产生的DTMF信号频率误差尽可能小,我们对该系统的硬件电路作了精心设计。

图3是基于单片机的DTMF信号的合成的硬件图:

图3系统的硬件图

该系统的硬件设计按实现的功能来分,可分为以下3个部分。

单片机与键盘的接口电路,实现按键信号的产生的功能,AT89C51根据读进来的键码来实现相应的键功能向P0口发按键对应的DTMF信号,数摸转换器与单片机的接口电路主要来实现把P0口发出的数字信号转换为模拟信号,最后通过RC低通滤波器把信号中的高频成分滤去。

其中,AT89C51单片机是整个电路的核心,它控制其他模块来完成各种复杂的操作。

在本章下面几个小节中将根据图3的硬件设计电路,对各个模块电路进行详细的设计与分析。

2.2中央控制器——AT89C51

AT89C51是由美国Atmel公司生产的至今为止世界上最新型的高性能八位单片机之一。

2.2.1AT89C51的特点

AT89C51具有以下几个特点:

·

AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容;

片内有4k字节在线可重复编程快擦写程序存储器;

全静态工作,工作范围:

0Hz~24MHz;

三级程序存储器加密;

128×

8位内部RAM;

32位双向输入输出线;

两个十六位定时器/计数器

五个中断源,两级中断优先级;

一个全双工的异步串行口;

间歇和掉电两种工作方式。

2.2.2AT89C51的功能描述

AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。

它与MCA-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。

AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。

只要程序长度小于4K,四个I/O口全部提供给用户。

可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。

工作电压范围宽(2.7V~6V),全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。

AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。

P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

2.2.3AT89C51引脚功能

AT89C51单片机为40引脚芯片见附录1。

1.口线:

P0、P1、P2、P3共四个八位口。

▪P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

P0口也用以输出外部存储器的低8位地址。

由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。

▪P1口是专门供用户使用的I/O口,是准双向口。

▪P2口是从系统扩展时作高8位地址线用。

不扩展外部存储器时,P2口也可以作为用户I/O口线使用,P2口也是准双向口。

▪P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能。

作为第一功能使用时操作同P1口。

P3口的第二功能如表2所示。

2.控制口线:

PSEN(片外选取控制)、ALE(地址锁存控制)、EA(片外存储器选择)、RESET(复位控制);

3.电源及时钟:

VCC、VSS、XTAL1、XTAL2 操作方法。

表2P3口的第二功能

2.2.4操作方法

1.程序存储器加密。

AT89C51芯片程序存储器有三级硬件加密,能够有效地保证系统不被仿制和软件不被复制,加密等级设置见附录2。

2.工作模式。

AT89C51有间歇和掉电两种工作模式。

间歇模式是由软件来设置的,当外围器件仍然处于工作状态时,CPU可根据工作情况适时地进入睡眠状态,内部RAM和所有特殊的寄存器值将保持不变。

这种状态可被任何一个中断所终止或通过硬件复位。

掉电模式是VCC电压低于电源下限,振荡器停止振动,CPU停止执行指令。

该芯片内RAM和特殊功能寄存器值保持不变,直到掉电模式被终止。

只有VCC电压恢复到正常工作范围而且在振荡器稳定振荡后,通过硬件复位掉电模式可被终止。

2.3数摸转换器——DAC0832

在电子技术的很多应用场合往往需要把数字量转换成模拟量,称为数/模转换器(D/A转换器,简称DAC)。

完成这种转换的线路有多种,特别是单片大规模集成D/A转换器问世,为实现上述的转换提供了极大的方便。

使用者可借助于手册提供的器件性能指标及典型应用电路,即可正确使用这些器件。

本系统将采用大规模集成电路DAC0832实现D/A转换。

DAC0832是采用CMOS工艺制成的单片电流输出型8位数/模转换器。

图4是DAC0832的逻辑框图及引脚排列。

图4DAC0832单片D/A转换器逻辑框图和引脚排列

器件的核心部分采用倒T型电阻网络的8位D/A转换器,它是由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四部分组成。

DAC0832各引脚含义如下:

CS为片选信号,CS与ILE(输入寄存器允许信号)合起来可对写信号WR1是否起作用进行控制。

WR1写信号用以将8位数字量D7D6D5…输入并锁存于DAC0832内部的输入寄存器中,WR写信号与传送控制信号XFER同时有效,则将输入寄存器的数字量再传送到8位D/A寄存器锁存起来。

这时8位D/A转换器就开始工作。

IOUT1和IOUT2为输出电流,其中IOUT1是D/A寄存器内容为全1时输出电流为最大;

当D/A寄存器内容为零时输出电流为0。

IOUT2为一常数与IOUT1之差,即IOUT1+IOUT2=常数。

AGND和DGND分别为模拟量地和数字量地,它们应共地。

VREF精度尽可能高一些。

V是电源电压,其值可在+5V到+15V。

R为反馈电阻,由于片内已具备反馈电阻,故可以与外接运算放大器的输出端短接。

DAC0832输出的是电流,要转换为电压,还必须经过一个外接的运算放大器,电路如图5所示。

图5电流转换为电压电路

图5中

接地为低电平,ILE为高电平,DAC0832处于直通的工作状态。

输入数字量(D0~D7)通过输入锁存器,数据寄存器直接传送到DAC,输出相应模拟量。

运放的输出电压为

由上式可见,输出电压VO与输入的数字量成正比,这就实现了从数字量到模拟量的转换。

2.4单片机与键盘的接口电路

图6是单片机与键盘的接口电路。

单片机的串行口在方式0下工作,作为同步移位寄存器使用,这时以RXD端作为数据移位的出口,而TXD端提供移位时钟脉冲。

在无键按下的情况下p1.0,p1.1读进来的是高电平,当有键按下时,p1.0或p1.1端将会变为低电平。

图6单片机与键盘的接口电路

2.5AT89C51与DACO832的接口电路

图7是AT89C51与DACO832的接口电路。

在这里P0口是做为输入口使用的,由于通路中已有输出锁存器,因此数据输出可以与外设直接相连,无需再加数据锁存器电路。

但是由于输出电路是漏极开路电路,必须外接上拉电阻才能有高电平输出。

DAC0832是处于直通状态,P3.6把第一写信号,第二写信号,数据传送信号拉为低电平。

图7AT89C51与DACO832的接口电路

2.6RC低通滤波器

由于从DAC0832出来的DTMF信号含有丰富的高频成分,信号波形是阶梯型的需要经过一个低通滤波器,使信号变得光滑与准确。

图8是简单的RC低通滤波器。

图8RC低通滤波器

由图8我们可以知道:

ωc=1/(RC)称为截止角频率,相应地fc=ωc/(2π)=1/(2πRC)称为截止频率。

构成DTMF信号的8个音频的最高频率1633(由表1可知),因此,我选择了6.8k的电阻和0.01uf的电容,使截止频率为2341hz。

3.系统软件设计

系统的软件设计主要分为单片机与键盘接口程序,DTMF信号产生程序设计,单片机与D/A接口程序设计。

下面,就整体设计以及每个单元功能模块分别进行详细说明。

3.1系统程序设计

图9是系统的程序流程图。

图9系统的程序流程图

3.2单片机与键盘接口程序设计

图10单片机与键盘程序流程图

图10是键程序流程图,主要分为键扫描,去抖动,键码计算,等待键释放等。

3.2.1键扫描

如图11所示,键盘的行线一端经电阻接+5V电源,另一端接单片机的输入口线。

各列线的一端接单片机的输出口线,另一端悬空。

为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线的状态。

若行线状态皆为高电平,则表明无键按下;

若行线状态中有低电平,则表明有键被按下。

接下来就要确定被按键的位置。

先使输出端口输出0FEH,然后输入行线状态,测试行线状态中是否有低电平的。

如果没有低电平,再输出0FDH,当出现行线有低电平时,则闭合键找到,此次扫描结束。

3.2.2去抖动

当扫描表明有键被按下之后,紧接着应进行去抖动处理。

因为常用键盘的键实际上就是一个机械开关结构,当被按下的时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。

一般为5到10ms。

为保证键扫描的正确,需进行抖动处理。

在这里我采用了软件延时的方法,延时时间为10ms。

3.2.3键码计算

被按下来的键确定下来后,接下来的工作是计算闭合键的键码,因为有了键码,才好通过转移指令把程序执行转移到闭合键所对应的功能子程序中。

下面是计算键码的公式:

键码=行首号+列号

3.2.4等待键释放

等待键释放是为了保证键的一次闭合仅进行一次处理,这里我是通过等待来实现的。

3.3产生DTMF信号的程序设计

3.3.1函数y=C*sin(ωt)+C的数据表分析

正弦函数y=C*sin(ωt)的波形如图12。

CPU对不同时间所对应的相位进行计算得出相应的数据,经DAC转换后产生正弦波;

也可先通过计算得出一个周期的数据,制作一个表格,CPU按特定的时间间隔即采样周期查表得到对应的数据,经DAC转换后产生正弦波。

但前者需要编写复杂的计算正弦波函数的程序,占用相当的程序存储空间,计算时间长,降低了CPU的效率,很难保证正弦波频率的精度。

查表方法产生正弦波先计算出正弦波一个周期的数据,作为产生波形的数据表。

采样周期足够小和表格足够大,就可保证正弦波的精度。

为了数据表足够大,尽量占用较小的程序存储空间,实际只需制作0°

到90°

的数据表格,经过简单的运算即可得到一个周期的数据,又可减少3/4数据表存储空间。

Y=C*sin(ωt)对应的电信号为交流信号,须经电平提升为直流电才能满足CPU的输出特性,函数Y=C*sin(ωt)+C符合要求。

对该函数经数学分析或图形观察,会得出以下结论:

(1)相位为0°

~90°

时,计算出的数据分布为由0到C。

用0°

的数据表,经DA转换后可产生函数Y=C*sin(ωt)在0°

范围内的波形。

每次读出的数据加C,经DA转换后可产生函数Y=C*sin(ωt)+C在0°

图12y=63*sin(t)的波形

(2)相位为90°

~180°

时,于0°

的图形左右对称,通过相反的方向,即由后向前读0°

的数据表,每次读出的数据加C,经DA转换后可产生该函数在90°

到180°

(3)相位为180°

~270°

的图形上下对称,对应数据绝对值相等,符号相反。

读数据表的方向与0°

相同,每次读出的数据符号取反再加C,经DA转换后可产生该函数在180°

到270°

(4)相位为270°

~360°

时,于180°

的数据表,每次读出的数据符号取反再加C,经DA转换后可产生该函数在270°

到360°

3.3.2函数Y=C*sin(ωt)+C的频率计算

Y=C*sin(ωt)+C的相位由0°

起,每增加一个单位(即角度增量)计算出一个数据,如δ=1°

,共可得到360个数据,由此制作一个大小为包含360个数据的数据表。

角度增量δ决定了数据表的大小,一个周期数据表的大小为360/δ。

实际只需制作0°

的数据表,大小为S=90/δ,由于起点也是一个数据,表格实际大小比S多1个单元。

CPU每隔恒定的时间间隔(即采样周期Tc),由数据表的第一个数据起,按特定的步长N,读下一个数据,送DA转换器。

N=1时每读一个数据,表格指针前进一步,即读出相邻的下一个数据,表格大小/步长=S/N=90步后,即可产生函数1/4周期的波形,4S/N=360步后,即可产生一个周期的波形。

如采样周期Tc=10μs,得:

周期=360Tc,频率=1/360Tc=278Hz。

CPU由第一个数据起,N=2时每读一个数据,表格指针前进两步,即间隔一个数据读一个数据,4S/N=360/2=180步后即可产生一个周期的波形周期=180Tc,频率=1/180Tc=556Hz。

同理,由第一个数据起,按不同的步长N读下一个数据,4S/N步后即可产生函数一个周期的波形,周期=4TcS/N,频率=N/4TcS。

表格大小S=90/δ、步长N和采样周期Tc决定了频率,即频率f=N/4TcS=Nδ/360Tc。

由指定的频率反过来推得步长N=360fTc/δ。

根据香侬定理,正弦波一个周期内的采样次数必须大于2,才可反应原函数的频率特性,一般要求采样次数要大于5。

对一个特定频率的正弦函数,合理选择步长N和采样周期Tc,很易满足这一条件。

3.3.3DTMF波形振幅的计算

函数Y=C*sin(ωt),振幅为C,对应交流电信号的峰峰值为2C。

为满足CPU的输出特性,电平提升为直流电后的函数为Y=C*sin(ωt)+C,最大值为2C,最小值为0。

DTMF信号是由两个频率不同、幅度相同的正弦波叠加而成,YDTMF=C*sin(ω1t)+C*sin(ω2t)+2C,它的最大值是4C,最小值为0。

而8位DA转换电路所能表达的最大值为28-1=255,n位转换电

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

当前位置:首页 > 解决方案 > 学习计划

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

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