此控制器采用了AT89S52+MT8888+公共电话网(PSTN)的解决方案,它具有以先下几个特点:(1)制作容易以普及率极高的手机或者固定电话作为控制器,以公共电话网为传输信息的介质,手机或者固定电话无需经过任何改装,只要将本装置并联在家里的电话线上就可以实现遥控,非常适合DIY。(2)扩展简单很容易通过增加接口电路来增加控制家用电器的数目。(3)不影响电话的正常使用本装置只有在电话铃声超过4声以后才工作,4声以内摘机将屏蔽本装置。真正做到互不干扰。


一、硬件组成及总体设计框图

本控制器设计主要由DTMF编解码电路、单片机最小系统、显示模块、输入模块以及输出控制模块五部分组成。总体设计框图如下图所示。

电路以AT89S52组成的单片机最小系统为核心,以MT8888为解码器。实现DTMF信号的译码和对外的输出控制。下面介绍DTMF编解码电路。


二、工作原理
1.MT8888简介
MT8888芯片是采用CMOS工艺生产的DTMF信号收发一体的集成电路。它的发送部分采用信号失真小、频率稳定性高的开关电容式D/A变换器,可发出16种双音多频DTMF信号,同时可以完成DTMF信号的接收、分离和译码,结果以4位并行二进制码的方式输出。MT8888芯片引脚图如下图(略)所示。
2.编解码电路及原理
电路主要由振铃检测电路、模拟摘机电路以及MT8888芯片组成。
振铃检测电路实现振铃信号的识别。当振铃信号到来时光耦产生与振铃同步的脉冲。经C2滤波后,输出1s低4s高的脉冲。模拟摘机电路将变压器初级线圈和负载电阻串联后加载到电话线两端。
实现模拟摘机。编解码电路如下图所示。


本系统控制核心采用ATMEL公司的AT89S52单片机。单片机与MT8888的引脚对应关系如下表所示。
MT8888引脚 D3  D2  D1  DO  RD  RS0 /CS  /WR
单片机引脚 P27  P26  P25  P24  P23  P22  P21  P20
以下简要介绍一下DTMF信号的产生原理:
DTMF信号(双音频信号)是2个正弦波信号的叠加。选定2个频率f1和f2后可得到这种信号的数学表达式:
f(t)=Asin(2πf1t)+Asin(2πf2t)如果用合适的采样频率对这个信号进行A/D转换,则很容易计算出每一个采样点的A/D值.而如果将这些采样值形成一张表,用同样的采样频率将这张表中的数值用D/A转换器输出。就是双音频信号。编码与对应按键的对应关系如下表所示。
MT8888内部有两个数据寄存器,一个是只执行读操作的接收数据寄存器RDR。另一个是只执行写操作的发送数据寄存器TDRo另外,MT8888中还有两个4位的收、发控制寄存器CRA和CRB,对CRB的操作就是通过CRA中的一个特定位来操作的,因此编程中应对其进行初始化:而MT8888中的4位状态寄存器SR则用来反映收、发信号的工作状态。寄存器的选择与操作由RS0及WR和RD来控制。
MT8888在发送信号时可提供3种工作模式。
即DTMF模式、突发模式、CP模式。这三种工作模式均可通过对寄存器进行设置实现。

FLow Fheigh DIGIT D3 D2 D1 DO
697 1209 1 0 0 0 1
697 1336 2 0 0 1 0
697 1477 3 0 0 1 1
770 1209 4 0 1 0 0
770 1336 5 0 1 0 1
770 1477 6 0 1 1 0
852 1209 7 0 1 1 1
852 1336 8 1 0 0 0
852 1477 9 1 0 0 1
941 1336 0 1 0 1 0
 941  1209   1 0 1 1
941 1477 # 1 1 0 0
697 1633 A 1 1 0 1
770 1633 B 1 1 1 0
852 1633 C 1 1 1 1
941 1633 D 0 0 0 0
3.振铃检测电路
我国规定的标准为.平时挂机时的馈电电压一般为一48V,向用户振铃的铃流电压为75+/-15V,25Hz的交流电压。当用户被呼叫时,电话交换机发来铃流信号。振铃为25±3Hz的正弦波,谐波失真不大于10%,电压有效值90±15V,,振铃以5秒为周期,即1s送,4s断,振铃经光耦隔离和电容滤波后成为1s低电平,4s高电平的脉冲。一但检测到下降沿后延时O.5s,如果为低电平时(否则不是振铃)再延时2s,2s后再检测,为低电平时不是振铃,是高电平则振铃已经过去,开始新的检测。当检测的次数达到4次后,接通模拟摘机电路。
4.模拟摘机电路
用户话机的摘挂机状态是通过对直流环路上电流的通断来实现的,用户挂机空闲时,直流环路断开,馈电电流为0;反之,用户摘机后,直流环路接通,馈电电流在20nIA左右。
当振铃检测的次数达到4次后,将9012的基极置为低电平,J1、J2吸合,将150Q的电阻和变压器线圈并接在电话两端,使回路电流增加,达到了模拟摘机的效果。

三、软件设计
从前文的硬件设计可以看出,本控制器的设计关键在于编解码电路的设计与软件驱动。由于本系统仅需要接收DTMF信号,因此需要将MT8888初始化为DTMF方式+IRQ方式,代码参照如下:


四、制作与调试
在实际制作过程中发现。尽管按照技术文档的说明将MT8888初始化为中断方式。但其IRQ引脚并未出现预期的低电平,经实验发现当DTMF信号被正确解码后,在EST引脚会出现一个正脉冲。通过将此脉冲引至AT89S52的中断端口,并将单片机初始化为负脉冲中断有效得工作方式,解决了这个问题。
当电话接通时,主控方发来按键音(实为DTMF信号),信号经电阻电容耦合后进入IN一端,经过解码后将码值传送至D0~D3端,同时引发中断。等待单片机读取。读取后按照表2所示对应关系解得按键值,并进行相应的处理。
本电路比较简单,只要焊接和元器件的数值误差不太大,一般都可正确解码。但是出现问题是应按照以下步骤排除:
①先用示波器观察振铃输出是否是1s低4s高的脉冲。
②编写正确的初始化程序,当按下按键时。用示波器观察EST和ST/GT是否有正脉冲出现,有的话表示已经正确解码了,否则调节有关的电阻值。
③驱动电路的检测比较简单,只要给一个低电平,继电器吸合就表示成功了。
④在程序中要加入计时器,比如在10s内没有输入按键,就将模拟摘机电路关闭,实现模拟挂机。
否则,下次拨打此号码,会出现无法接通的提示。另外,本电路还可通过增加语音芯片、增加驱动的数目、加装密码验证等电路或模块进一步增强功能。