基于C8051F023单片机的OLED显示实现方案
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]将音频信号耦合到电话线上,从而发送给程控交换机实现软件拨号。
图3 DTMF信号生成与呼叫及状态检测电路
拨号完成后,MCU设置MT8888工作在呼叫监听模式,进行呼叫状态监听。MT8888通过2引脚检测电话线上传输信号,MCU通过读取MT8888的IRQ/CP引脚输出的脉冲频率和脉冲个数即可分析出呼叫状态。若线路上传输的是450 Hz的音频信号,而且是持续1 s后4 s无的循环信号,则为回铃音信号,即处于振铃状态;如果线路上传输的是450 Hz的音频信号,而且0.35 s通0.35 s断的循环信号,则为忙音信号,即处于线路忙或挂机状态。
评论