您现在的位置是:首页 > 单片机

基于ISD4004语音芯片和AT89S52单片机的语音播报记

2020-05-30 05:03:11

  引 言

  本文介绍一种以语音存储与自动播放系统为基础的语音播报记事器设计。该设计以ISD4004:语音芯片和AT89S52单片机为中心,很好地实现了语音存储与自动播放。

  1 硬件设计原理

  语音播报记事器的主要功能是实现语音存储与定时播放。要实现语音存储与定时播放的方法很多,可供选择的器件也很多。由于单片机等微控制器的出现和数字电路技术的发展,使得现在的语音存储与自动播放变得易于实现。本设计采用单片机作为微控制器。单片机的字长由4位、8位、16位发展到32位。目前这几种字长的单片机同时存在于市场,用户可以根据不同的需要进行选择。本系统选用字长为8位的AT89S52单片机作为控制器。

  目前可以与单片机配合使用的语音芯片有很多,其中不乏性能十分优越的语音芯片,美国ISD公司生产的ISD4004语音芯片就是它们中的一员。ISD4004芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮阵列。引脚包括电源、时钟、语音信号模拟输入/输出端、与MCU接口(SPI接口)几部分。芯片采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音。

  ISD4004系列单片录放时间为8~16 min,采样频率可为4.0/5.3/6.4/8.0 kHz,频率越低,录放时间越长,而音质则有所下降。芯片设计基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Mi-crowire)送入。由于ISD4004的众多优点,本设计就采用它作为录放音器件。

  系统外接时钟芯片PCF8563、矩阵键盘LED显示和E2PROM AT24C01。录音时为了改善语音质量,要提高输入端的信噪比,因此在系统的输入端采用三极管(9014)放大电路单端输入,系统的输出端经音频功率放大器LM386放大输出后驱动扬声器。整个系统的系统框图如图1所示。

  


  2 硬件设计

  2.1 语音输入与输出电路设计

  语音信号经过驻极体话筒转化为的电信号很微弱,在送入语音芯片之前需要经过放大。这样做的目的是为了提高信号的信噪比,以达到更好的抑制噪声的目的。由于声电转换器件使用的是驻极体话筒,所以后级放大电路使用三极管作为放大器件即可满足要求。本设计中从语音芯片输出的语音信号很微弱,不能直接驱动扬声器,所以要在语音芯片和扬声器之间加上一个功率放大电路。功率放大电路使用美国国家半导体公司生产的音频功率放大器LM386并配合少许电容电阻构成。该功放电路的放大效果良好,噪音小,可以满足本设计的要求。

  2.2 显示电路设计

  本设计的显示部分使用LED数码管。为了提高LED显示的亮度,在本设计中,将a,b,c,d,e,f,g引脚分别串联300 Ω的电阻后接5 V电压即可。本设计采用软件查表方式输出。当系统没有录放音时,需要显示年、月、日、时、分、秒、星期等信息;当系统有录放音时,需要显示与录放音有关的信息。这样,整个系统一共需要15个数码管。为了节省单片机的I/O口,显示部分使用了74LS154,单片机与LED的接口采用动态接口。74LS154是4线16线译码器,用于将单片机的输出译码后作为LED的片选信号使用。

  2.3 PCF8563接口电路设计

  PCF8563是飞利浦公司生产的低功耗的CMOS实时时钟/日历芯片,是I2C总线接口器件。设计中,PCF8563用来提供时间和日历信息。当没有进行录音和放音操作时,本设计相当于一个万年历;当进行录音或放音时,PCF8563用来对每段录音或放音进行计时,所有的时间信息均通过LED数码管显示出来。由于PCF8563是漏极开路,所以必须要加5.1 kΩ的上拉电阻。PCF8563与AT89S52的接口电路设计如图2所示。

  

  2.4 ISD4004接口电路设计

  本设计使用ISD4004-16M型号的语音芯片。这款语音芯片可以录音16 min,它有一个端口为RAC端,RAC为行地址时钟端,每个RAC周期表示ISD存储器的操作进行了1行(ISD4004系列中的存贮器共2 400行),所以RAC端的行地址数目与语音芯片中存储器的行数对应,即语音芯片存放的每段录音的初始与结束地址与惟一的RAC行地址数对应。所以只需将RAC端与单片机的计数端相连,仅记录RAC行地址数目即可实现整个录放操作,且单片机的计数器无需中断。根据以上的思想,设计ISD4004与单片机的接口电路如图3所示。

  

  3 软件设计

  本设计中的程序设计包括以下几个部分,即键盘处理程序、ISD4004放音驱动程序、ISD4004录音驱动程序、时间校正程序、录音子程序、放音子程序、播放时间设置子程序、播放选择程序、子程序设计。图4为主程序流程图。

  

  4 系统测试

  系统上电后15个数码管全亮大概3 s,以此检测数码管的好坏。之后数码管会出现年、月、日、星期、时、分、秒等信息。当按下录音键后,系统开始录音。录音时,数码管会显示“SAVE”字样,并会显示该段录音的时间信息;当确定键按下后,该语音段的录音结束,数码管重新显示时间信息。当按下放音键时,系统开始放音,这时数码管会显示“PLAY”字样,并会显示该段录音的时间信息。放音结束后数码管会回到时间显示界面。当按下时间校正键后,便可以对时间进行校正;当按下确定键后,时间校正结束。本系统可以录音15 min,可以录4段录音。当按下播放设置键后,就可以对每段录音的播放时间进行设置;当按下播放选择键后,就可以播放4段录音中的任意一段。

  本系统在播放录音时会有少量的噪音,可能由以下原因造成:

  (1)整个系统完全是手工焊制,线路之间存在干扰;

  (2)ISD4004的数字地与模拟地没有分别走线,全部接到了一起,存在干扰;

  (3)语音输入放大电路的放大倍数不够,噪声没有得到足够的抑制。

  整个系统的设计合理,外围电路结构简单,方便调试;单片机余留有I/O口,方便系统的升级和扩展;单片机的所有程序均使用C-51进行编写,方便调试和阅读。整个系统工作稳定,操作方便。本设计的设计原理完全可以用在公共汽车上,作为语音报站器使用,也可以用在银行和医院等一些需要自动播报语音信息的公共场所。在本设计的基础上稍加扩充,就可以满足实际应用的需要。