无需PC机控制的离线电话自动通知系统设计
1 系统总体设计
本系统由上位机自动通知控制软件和下位机离线电话自动通知装置构成。其中,上位机自动通知控制软件主要完成电话号码和通知信息的管理,它只是一个信息管理系统,而具体电话通知的工作是由离线电话自动通知装置独立自动完成的。
如图1所示,离线电话自动通知装置主要由通知信息存储模块、语音数据存储与播放电路、电话呼叫及状态检测模块、DTMF信号检测模块、串口通信及系统控制模块等组成。其中,通知信息存储模块用来完成通知信息(包括被通知的电话号码、通知语音和提示音的存储以及本次通知状态信息)的存储,硬件上主要使用串口闪存芯片实现;语音数据存储与播放电路用来完成语音信息的D/A转换,再通过语音信号耦合电路将音频信号与电话线路进行信号耦合输出;电话呼叫及状态检测模块用来完成电话号码的拨叫和呼叫状态的检测,用于判断接听状态,其中包括DTMF信号生成与呼叫及状态检测电路(使用DTMF编解码芯片完成)、模拟摘挂机电路及摘挂机检测电路;DTMF信号检测模块用来检测电话拨通之后,播放通知语音过程中接听方是否按下确认键(使用另外一片DTMF编解码芯片完成);串口通信及系统控制模块,由串口电平转换电路和由MCS51系列MCU(AT89S52)构成的控制单元组成,用来完成通知过程的控制和数据通信。
图1 离线电话自动通知装置结构框图
2 语音数据存储与播放电路
电话通知信息主要由电话号码数据和语音信息编码数据构成。其中,电话号码数据为ASCII码,信息量不多;语音信息编码数据则使用PCM编码格式,也可以使用其他的压缩编码形式。如果使用压缩编码,单片机程序还要设计相应的解码程序,会加重单片机的执行负担,因此建议使用PCM编码格式。
图2 语音数据存储与播放电路
语音数据存储与播放电路如图2所示。针对电话系统的语音质量要求不高的特点[2],本文使用了8位的量化位数和8 kHz的采样频率,因此其数据量不大,2分钟的语音数据量为1×8000×120=960000 B,再加上电话号码信息所用的1 MB闪存,系统使用16 Mb(2 MB)的闪存就能够很好地满足电话通知的要求。这里采用SPI接口的闪存芯片W25X16 [3],由于AT89S52没有SPI接口,所以使用P1口,通过软件方式来模拟SPI口实现与W25X16的通信。
MCU将闪存W25X16中的语音数据通过P1口线读出后,以8000 Hz的频率通过P0口发送给D/A转换器DAC0832,进行语音还原输出;模拟语音经过放大器LM393AH进行电流电压转换后,送至语音信号耦合电路输入线TONE,将语音信号耦合到电话线路上,从而实现电话通知的语音播放。
3 DTMF信号生成与呼叫及状态检测电路
DTMF信号生成与呼叫及状态检测电路如图3所示。上位机将要拨打的电话号码和需要播报的电话语音通过串口发送给MCU,并存储到Flash芯片W25X16中后,MCU将启动电话自动通知过程。从W25X16中读取要拨打的电话号码,系统置P3.4为高电平,进行模拟摘机。当系统通过P3.7 检测到摘机状态有效后,将每位电话号码数据的BCD码送至MT8888的D0~D3数据线,同时使WR和CS信号有效,即可写入MT8888的DTMF编码电路。MT8888根据MCU连续写入的BCD码,通过TONE引脚连续发出相应的DTMF信号,再经由Q1、Q2构成的语音信号耦合电路[4]将音频信号耦合到电话线上,从而发送
评论