双音多频发送接收器MT8870/MT8888及其应用
本文介绍了双音多频(DTMF)发送接收器件MT8888的主要功能、基本组成和工作原理。最多给出了MT8888与单片机80C32接口的硬件电路及软件程序。
1 基本功能
MT8888是一种具有Intel微处理器接口的功能较强的双音多频(DTMF)发送和接收器件。可用于寻呼系统、交换机系统和移动通信、转帐卡系统、互接拨号器、数字通信和计算机等领域。其主要功能有:(1)完整的DTMF发送和接收功能;(2)高速Intel微处理器接口;(3)可工作于自动音频突发模式;(4)可调整保护时间;(5)呼叫音检测到-30dBm。
MT8888引脚排列如图1所示。各引脚功能如下:
图1 MT8888引脚图
IN+、IN-(1,2)—运放的同相和反相输入端;GS(3)—增益选择端。在该引脚与IN-引脚间接反馈电阻可调节运放增益;Vref(4)—基准电压输出端。通常为VDD/2,作为运放的偏置电压;VSS(5)—芯片电源负端,接地;OSC1、OSC2(6、7)—时钟或振荡器的输入、输出端。两引脚间接3.579545MHz晶体与内部电路构成芯片振荡器;若由外部电路提供时钟,则OSC2引脚开路;TONE(8)—DTMF信号输出端,也可通过编程设置为单音输出;(9)—微处理器写输入端,低电平有效,与TTL电平兼容;(10)—片选信号输入端,低电平有效。该引脚可由微处理器的地址锁存信号(ALE)直接提供;RS0(11)—寄存器选择控制输入端;(12)—微处理器读输入端,低电平有效,与TTL电平兼容;/CP(13)—中断请求信号,为开漏输出。在中断模式下,当一个有效DTMF信号突发发送或接收时,输出低电平信号。若控制寄存器设定电路工作于呼叫处理(CALL)模式和中断使能,则该端输出代表运放输入的方波信号音,但该信号频率必须落在呼叫处理滤波器的带宽内;D0~D3(14-17)—数据总线,与TTL电平兼容。输入需发送的DTMF编码或输出译码的DTMF信号数据。当CS=1时呈高阻状态;Est(18)—初始控制输出。若电路检测到一种有效的单音对时,Est为高电平;若信号丢失,则Est返回低电平;St/GT(19)—控制输入/时间监测输出。若St电压大于门限VTSt,电路寄存被检测的DTMF单音对,并更新输出锁存器内容。若St电压低于VTSt,则电路不接收一新单音对,GT输出的作用是设置外部时间监测常数;VDD(20)—芯片电源正端,典型值为+5V。
2 工作原理
MT8888是集DTMF发送和接收功能的器件,内带呼叫处理滤波器。接收部分与DTMF接收器件MT8870类似,发送部分包括行、列计数器和D/A变换器,另外增加了一些控制寄存器和接口、数据总线缓冲器,很容易实现与微处理器的直接接口,其功能框图如图2所示。MT8888通过微处理器接口可以由RS0、、、D0~D3等信号选择与设定内部寄存器,并控制电路的工作状态或工作模式。它共有5个不同作用的寄存器:发送数据寄存器(TDR)、接收数据寄存器(RDR)、状态寄存器(SR)、控制寄存器A(CRA)和控制寄存器B(CRB),其控制关系如表1所示。
表1 内部寄存器控制关系
RS0 | ![]() |
![]() |
功 能 |
0 | 0 | 1 | 数据写入TDR |
0 | 1 | 0 | 数据从RDR读出 |
1 | 0 | 1 | 数据写入SR |
1 | 1 | 0 | 数据从SR读出 |
图2 MT8888内部功能框图
MT8888共有6种工作模式,它们分别为:
(1)DTMF模式:发送与接收DTMF信号。输入数据经TDR控制可编程行、列计数器、D/A变换器,合成需要发送的DTMF信号。或DTMF信号经拨号音抑制、分离带通滤波器、监频与确认,译成相应的4比特码,经RDR输至数据总线。DTMF编译码对应关系如表2所示。
表2 DTMF编译码对应关系
双音频键 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | * | # | A | B | C | D |
十时制数 | 10 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 0 |
(2)呼叫处理(CALL)模式:电路可以检测电话呼叫过程中的各种信号音,只要信号的频率落在320Hz-510Hz范围内,片内呼叫处理滤波器便可滤出。经限幅得到的方波信号,由/CP端输出,以用于微处理器对呼叫性质和类别进行判断。若无信号滤出,则/CP端始终保持低电平。
(3)突发(BURST)模式:在DTMF模式下,工作于突发状态,信号突发和暂停时间各为51±1ms;在CALL模式下,工作于突发状态,信号突发和暂停时间各为102±2ms,此时电路只可发送DTMF信号,但不能接收。
(4)单/双音(S/)产生模式:电路可产生单音或DTMF信号(由CRB控制),用于测试和监测。
(5)测试(TEST)模式:使电路从DTMF接收部分得到延迟监测信号,并从/CP端输出。
(6)中断模式:此模式下若选择DTMF状态,当DTMF信号被接收或出现在监测时间内,或准备发送更多数据(突发模式下)时,则/CP端下接至低电平。
各种模式的选择由控制寄存器(CRA和CRB)的相应位完成,如表3和表4所示。状态寄存器SR各位所表示的关系如表5所示。
表3 控制寄存器A(CRA)的功能
位 | 符号 | 功 能 |
b0 | TOUT | 信号音输出控制。高电平有效,该位控制所有信号的发送。 |
b1 | CP/![]() |
呼叫处理或DTMF模式选择。低电平为DTMF模式;高电平为CALL模式。可检测呼叫信号音,从![]() |
b2 | IRQ | 中断允许位。高电平有效,使电路工作于中断模式。 |
b3 | RSEL | 寄存器选择位。高电平时,下一个写周期选CRB,继而写周期返回选CRA。 |
表4 控制寄存器B(CRB)的功能
位 | 符号 | 功 能 |
b0 | ![]() |
突发模式选择位。低电平选择突发模式。此时数据写入TDR,产生突发/暂停各为51±1ms的DTMF信号,然后更新SR,使TDR准备接收下一指令。若中断允许,则产生中断;若CALL模式允许,则产生102±2ms扩展突发信号。 |
b1 | TEST | 测试方式控制。高电平设定电路工作于测试方式。 |
b2 | S/ ![]() |
单/双音产生选择位。低电平设定电路产生DTMF信号;高电平设定电路列或行(由C/![]() |
b3 | S/![]() |
列或行单音选择。高电平选择列单音输出;低电平选择行单音输出。该位与S/![]() |
表5 状态寄存器(SR)的功能
位 | 名称 | 状态标志设定 | 状态标志清除 |
b0 | 中断请求 | 中断发生,b1或b2置位 | 中断禁止,SR读出后清除 |
b1 | 突发模式下 TDR空 |
暂停时间结束,准备发送新数据 | SR读完数据后清除 |
b2 | RDR满 | RDR已有有效数据 | SR读完数据后清除 |
b3 | 延迟控制 | 设定无DTMF信号有效检测功能 | 清除有效DTMF信号检测功能 |
3 MT8888与80C32的接口
MT8888提供了与微处理器相连的接口,以对其发送、接收和工作模式进行控制。MT8888可与Intel微处理器直接接口,即使使用16MHz的单片机80C51,也无需插入等待周期。与其它微处理器接口时,则必须通过转换构造MT8888所需的时序。图3为MT8888的控制时序图。
图3 MT8888控制时序
图4 MT8888与80C32接口原理图
图4是MT8888与单片机80C32的接口电路原理图,由于可以直接接口,因此,无需构造控制信号。图中两片MT8888(S1和S2)共用一个时钟振荡器。单片机的P0.0~P0.3口接4位数据总线,片选信号由单片机的地址锁存信号ALE提供,读写信号由微处理器的读写信号和译码信号经或门后产生。寄存器选择信号接到地址线P2.0口,这样,对每一片MT8888均有两个地址。两个中断信号经与门后送至单片机的INT1引脚。电路中扩展了一片74365是用于软件判断是哪一路MT8888产生的中断而扩展的。当MT8888向单片机80C32发出中断请求信号后,CPU响应中断,执行中断服务程序。在中断服务程序中,首先读取74365的内容,以判断是哪一路MT8888所发出的中断请求后,再读取该路MT8888的状态寄存器,使中断自动清除以等待下一双音频信号。由于读完状态寄存器后,其内容即自动清除,重新读状态寄存器的内容是无效的,因此,应先将状态寄存器内容暂存于缓冲区内,再对标志位进行判断该中断信号是发送中断还是接收中断,以执行下一步的操作。需要注意的是,单片机80C32的INT1中断方式应设置为电平中断,才能同时检测两片MT8888的中断请求,防止信号丢失。
若将MT8888设置于呼叫处理工作模式,则通过对一定时间内中断次数的判断可以识别不同的呼叫信号音,如振铃、回铃音、忙音、空号音以及拥塞音等。
软件程序包括MT8888初始化子程序、发送数据子程序和中断服务子程序。另外,在设计硬件电路时,由于MT8888发送DTMF信号同时又送到MT8888输入端,这样导致在发送数据时,要引起接收数据中断,为了正确判断,在程序中设置一个发送数据标志tflang,当tflag=1时,MT8888为处于发送数据状态;同时,下面只给出第1片MT8888(S1)的程序。
MT8888(S1)初始化子程序
mov dptr,#a001h
movx a@dptr ;读状态寄存器SR
mov a,#00h
movx a@dptr,a ;写控制寄存器
movx a@dptr,a ;写控制寄存器
mov a,#08h
movx a@dptr,a ;写控制寄存器A
mov a,#00h
movx @dptr,a ;写控制寄存器B
movx a,@dptr ;读状态寄SR
mov a,#0dh ;设置MT8888工作方式
movx @dptr,a ;写控制寄存器A
mov a,#00h
movx @dptr,a ;写控制寄存器B
ret
MT8888(s1)数据发送子程序
入口参数:(r0)—待发送的DTMF数据。
Sendr02:
mov a,r0
mov dptr,#a000h
movx@dptr,a ;待发送数据送至TDR
ret
80C32 INT1中断服务子程序
int1:clr ea ;关中断
mov dptr,#8000h ;读取74365内容
movx a,@dptr
jb acc.0,path1 ;转第1路MT8888
jb acc.2,path2 ;转第2路MT8888
ljmp end
path1:mov a,tflag ;判断工作方式标志字
cjne a,#01h,rece1
mov dptr,#a001h
movx a,@dptr ;读状态寄存器SR,清中断
anl a,#02h
cjne a,#02h,end
setb transend ;发送结束标志置位
ljmp end
recel:mov dptr,#a001h
movx a,@dptr ;读状态寄存器SR,清中断
mov dptr,#a000h
movx a,@dptr ;读DTMF信号的数据编码
mov r0,a ;结果存于r0
setb receiend ;收到结果标志置位
ljmp end
path2:(略)
end: setb ea ;开中断
reti
MT8870每片7元
MT8888每片16元
邮局汇款地址:邮编226200 江苏省启东市江海中路511号水晶苑 A1 谢刚 收
电话/传真:0513-83342087 小灵通:0513-83082087 联系人:谢刚
电子信箱: