控制/MCU
众所周知,各个部门经常有重要事情需要进行通知。开会固然好,但比较耗时;如果发信息,有时候表达得不够清楚。最好的方法就是打电话通知,既节省被通知人的时间,又能够把信息表达清楚,可是要工作人员一个个打电话来通知所有人也是一件麻烦事情。在这种情况下,就有必要研制一种无需人控制即能实现自动通知的电话通知系统。
目前,多数类似的通知系统都是基于CTI卡实现的。这种系统需要由计算机进行实时控制才能够实现拨打电话和播放通知语音,因此在实现通知任务时计算机需要开机,这样就不利于在下班时间或假期无人职守时进行通知。本文设计了一个主要由离线电话自动通知装置构成的电话自动通知系统,其通知过程不需要PC机实时管理。
本系统由上位机自动通知控制软件和下位机离线电话自动通知装置构成。其中,上位机自动通知控制软件主要完成电话号码和通知信息的管理,它只是一个信息管理系统,而具体电话通知的工作是由离线电话自动通知装置独立自动完成的。
如图1所示,离线电话自动通知装置主要由通知信息存储模块、语音数据存储与播放电路、电话呼叫及状态检测模块、DTMF信号检测模块、串口通信及系统控制模块等组成。其中,通知信息存储模块用来完成通知信息(包括被通知的电话号码、通知语音和提示音的存储以及本次通知状态信息)的存储,硬件上主要使用串口闪存芯片实现;语音数据存储与播放电路用来完成语音信息的D/A转换,再通过语音信号耦合电路将音频信号与电话线路进行信号耦合输出;电话呼叫及状态检测模块用来完成电话号码的拨叫和呼叫状态的检测,用于判断接听状态,其中包括DTMF信号生成与呼叫及状态检测电路(使用DTMF编解码芯片完成)、模拟摘挂机电路及摘挂机检测电路;DTMF信号检测模块用来检测电话拨通之后,播放通知语音过程中接听方是否按下确认键(使用另外一片DTMF编解码芯片完成);串口通信及系统控制模块,由串口电平转换电路和由MCS51系列MCU(AT89S52)构成的控制单元组成,用来完成通知过程的控制和数据通信。
图1 离线电话自动通知装置结构框图
电话通知信息主要由电话号码数据和语音信息编码数据构成。其中,电话号码数据为ASCII码,信息量不多;语音信息编码数据则使用PCM编码格式,也可以使用其他的压缩编码形式。如果使用压缩编码,单片机程序还要设计相应的解码程序,会加重单片机的执行负担,因此建议使用PCM编码格式。
图2 语音数据存储与播放电路
语音数据存储与播放电路如图2所示。针对电话系统的语音质量要求不高的特点,本文使用了8位的量化位数和8 kHz的采样频率,因此其数据量不大,2分钟的语音数据量为1×8000×120=960000 B,再加上电话号码信息所用的1 MB闪存,系统使用16 Mb(2 MB)的闪存就能够很好地满足电话通知的要求。这里采用SPI接口的闪存芯片W25X16,由于AT89S52没有SPI接口,所以使用P1口,通过软件方式来模拟SPI口实现与W25X16的通信。
MCU将闪存W25X16中的语音数据通过P1口线读出后,以8000 Hz的频率通过P0口发送给D/A转换器DAC0832,进行语音还原输出;模拟语音经过放大器LM393AH进行电流电压转换后,送至语音信号耦合电路输入线TONE,将语音信号耦合到电话线路上,从而实现电话通知的语音播放。
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构成的语音信号耦合电路将音频信号耦合到电话线上,从而发送给程控交换机实现软件拨号。
图3 DTMF信号生成与呼叫及状态检测电路
拨号完成后,MCU设置MT8888工作在呼叫监听模式,进行呼叫状态监听。MT8888通过2引脚检测电话线上传输信号,MCU通过读取MT8888的IRQ/CP引脚输出的脉冲频率和脉冲个数即可分析出呼叫状态。若线路上传输的是450 Hz的音频信号,而且是持续1 s后4 s无的循环信号,则为回铃音信号,即处于振铃状态;如果线路上传输的是450 Hz的音频信号,而且0.35 s通0.35 s断的循环信号,则为忙音信号,即处于线路忙或挂机状态。
在语音播报过程中,系统同样使用另一块MT8888芯片构成的DTMF检测电路,检测当前电话接听者的按键动作,以判断其是否按下确认按键。系统根据按键状态保存本次通话或通知的状态。
上位机控制软件中主要包括:电子名片管理模块,可以完成联系人基本信息和电话号码的管理(包括增删改查等功能);名片分组管理模块;电话通知信息管理模块,具有通知语音的录制、被通知对象(即电话号码)的选取以及将数据下载到离线通知装置等功能;通知信息查询模块,可以完成通知状态的查询和补通知控制,也可以对当前或历史通知内容和状态进行查询。
电话通知信息和通知指令来自上位机控制软件。上位机在将预通知的电话号码和语音数据打成通知命令数据包后,通过串口发送给下位机,使下位机启动脱离计算机管理的离线自动通知过程。另外,上位机还可以发送获取通知状态命令包,由串口通信中断服务程序完成当前通知状态的上传任务。
图4为离线电话自动通知装置的处理流程。离线自动通知装置上电运行,进行必要的初始化后,通过通知状态标志来判断是否启动自动通知过程。通知标志由中断服务程序根据接收到的命令包设置,如果为“真”则装置转入通知过程执行,否则继续查询状态标志。在进入通知过程后,首先读取预通知的第一个电话号码,再进行模拟摘机准备拨号。为了可靠地实现模拟摘机,要求在摘机前后都要先判断摘机状态,只有在挂机状态下才能摘机,摘机有效后才能拨号。MCU控制拨号完毕后,从闪存中读取语音数据以8000 Hz的频率发送给D/A转换器,进行播放通知语音。在播放通知语音的过程中,通过DTMF信号检测模块监测线路上的DTMF信号,以判断接听通知者是否按下确认键进行接听确认。如确认,系统将保存通知状态,否则通知一个循环后进行重复通知。当一个电话通知完毕后,系统继续读取下一个预通知电话号码,进行下一个电话的通知,直到所有通知被确认或超出重复通知次数为止。
图4 离线电话自动通知处理流程
本文根据电话通知系统的特点,设计了无需PC机实时控制的电话自动通知系统。系统中的PC机只是起到一个信息管理作用,具体的电话通知由离线电话自动通知装置自动完成,其工作 77不需要PC机的实时管理或控制,是一个离线通知装置, 可以实现在下班且PC机关机的状态下进行电话通知,能够提高电话的使用效率和节省能源消耗。
全部0条评论
快来发表一下你的评论吧 !