您的当前位置:首页正文

基于AT89C52单片机的语音录放系统实现

来源:个人技术集锦
基于AT89C52单片机的语音录放系统实现

单片机以其高可靠性、高性价比、低电压、低功耗等优点得到迅猛发展和大范围推广,广泛应用于工业控制系统、数据采集系统、智能化仪器仪表及通讯设备、日常消费类产品、玩具等,利用单片机实现语音录放有很大的研究和开发价值。

语音录放系统以AT89C52单片机为控制核心。ISD2560是一种永久记忆型语音录放电路器件,它具有音质自然、使用方便、单片存放、反复录音、低功耗、抗断电等特点,广泛应用于许多领域。ISD2560省去A/D和D/A转换器,集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器和480 KB的EEPROM。为降低成本,在最小硬件设计基础上,系统功能尽可能用软件程序实现,利用C51高级C语言编程开发。 2 系统硬件设计

该系统的硬件电路主要由单片机、语音录放器件、麦克风及扬声器构成。图1为其硬件结构框图。

该系统的核心为AT89C52单片机,AT89C52具有快速8051内核、8 KB Flash E2pROM、256 B IDATA RAM,完全符合该系统硬件要求。为实现语音录放功能,采用ISD2560器件,其录音时间为60 s,并且能够接收单片机发出的命令,接收录音指令时,将从麦克风传出的语音段直接保存在内部存储器中;接收到放音指令时,按照单片机给定的地址,从存储器中取出语音段并驱动扬声器,以声音的形式播出语音段。

单片机的4组I/O端口中,作为普通I/O端口的只有P1口,所以将P1.0位作为输入端.与启动按键连接,用外部中断0(即P3.2位)与录放器件的EOM端(作为录音时的结尾标志输出端口)连接,录,放模式选择端P/R,器件使能输入端CE、节电控制端PD分别与P1口的P1.3~P1.7相连,作为语音器件和单片机的输入控制端口,10位地址端与单片机的低8位和高2位连接组成A0~A9,10位地址线、单片机的外接时钟电路和复位电路等;麦克风和扬声器与相应的ISD2560引脚相连,并接相应的电容电阻进行稳压和稳流,整个系统电路原理如图2和图3所示。

3 ISD2560器件简介及设计 3.1 器件引脚功能

ISD2560语音器件是ISD公司生产的语音录入和播放器件ISD2500系列之一,该器件有28个引脚,采用SOIC封装,录音时间为60s。器件引脚功能如表1所示。

3.2 语音器件外围电路设计

(1)扬声器电路语音器件的SP+(引脚14),SP-(引脚15)分别接扬声器的一端。通电后,系统可以驱动16 Ω以上的扬声器。

(2)话筒电路MIC IN(引脚17)、MIC REF(引脚18)分别通过相应的电容连接到话筒两端。 通过MIC IN将话筒的输入信号送至片内前置放大器,片内自动增益控制电路AGC将此前置放大器的增益控制在-15~+24 dB,具体电路如图3所示。该器件在使用前需用单片机写入初始状态。 4 软件设计

语音录放系统的软件设计包括:单片机写入ISD2560器件的控制字及定时中断控制。单片机语音录放系统的程序采用模块设计,实现语音的录取和播放功能,需2个子程序来实现此功能的。另外还要有与主函数通信的中断服务子程序及延时程序。程序主要变量及功能说明如表2所示。

4.3 程序流程

系统软件设计流程如图4所示。

5 结束语

该设计选择ISD单片机语音录放器件省去A/D转换和D/A转换,采用直接电平存储技术使得语音自然真实;该电路可嵌入到其他电路中,使用非常方便。给出以单片机AT89C52为核心构成的语音录放系统原理图及软件流程。通过实验验证该语音录放系统录音和放音效果良好,单片机控制相当准确。在应用方面,将该系统作为一个模块可与其他功能电路集成,

实现各种功能复杂的语音系统,如电脑语音钟、手机话费查询系统、排队机、监控系统语音报警及公共汽车报站器等,具有一定的实用价值。

引言

目前,在自动取款机、自动售货机、工业报警系统、公路收费系统、汽车防撞系统、智能玩具等领域具有语音输出功能的仪器设备越来越多。我们的工作和生活环境更加人性化、智能化。但在工业生产现场,数码输出的手持式测量仪器得到大量应用,给测量人员读取测量结果带来了极大的方便。但是具体操作时,测量人员需要将仪器置于便于观察测量结果的地方,然后手持测量探头进行测量,由于测量环境的复杂性,特别是在狭窄的工业生产现场,既便于实施测量作业又便于观测测量结果,二者有时不能兼顾。此时,如果仪器具有语音输出结果的功能,将会给测量工作人员带来极大的方便。笔者设计了一个基于单片机STC89C52RC、DS18B20温度传感器、语音芯片ISD1730构成的语音温度测量系统,给出了语音的分段录入、各段语音存放地址的确定、各段语音的修正、多段语音组合输出等环节的详细设计过程。

1 系统结构及软硬件设计 1.1 系统结构及工作原理

具有语音输出功能的单片机测量、显示系统结构框图如图1所示。系统主要由传感器输入、STC89C52RC及其外围电路、显示电路、语音电路和电源电路构成。设计时将需要播报的语音段(或字)录入语音芯片(系统失电后语音信息并不会丢失),系统工作时STC89C52RC会对传感器的信号进行采集,通过处理后一方面将结果输出显示,另一方面分析需要播报哪些语音段,指令语音模块将需要播报的语音段按要求组合进行播报。

1.2 系统硬件电路

1.2.1 数据采集与显示部分

单片机及其外围电路由STC89C52RC、复位电路、振荡电路等构成单片机最小系统;数字温度传感器DS18B20以一线形式与STC89C52RC的P3.7端口连接;采用4位数码管显示,显示数据通过STC89C52RC的P0口,经过74LS573锁存驱动后对数码管段控制,P2.0~P2.2通过74LS 138译码后对数码管的字控制,实现动态扫描显示。 1.2.2 语音电路设计

语音芯片采用美国Winbond公司的ISD1730,工作电压范围为2.4~5.5V,适合与单片机共用电源。该芯片适用于需要多段语音存储与回放的各种高端电子系统,根据其外接振荡电阻的大小不同,可以存储20~60s的信息。语音电路如图2所示。在电路中,振荡电阻为80kΩ,最小存储分辨率为125 ms,可以存放30 s的语音。信号以自然语音的形式按行存

储在其内部的多级固态存储器内,可以通过指令中的11位地址对每一行的信息精确寻址,存储的语音信息断电后不会丢失,理论上可以保持一百年,存储10万次。

对该芯片的操作有独立按键和微控制器SPI接口2种方式。当按键方式操作时,通过将图中的S1~S4分别接地,就可以实现对ISD1730芯片复位、语音删除、语音录入、语音回放等操作,这些操作也可以通过STC89C52RC实现。ISD1730提供了4线(SCLK、MOSI、MISO等)SPI接口与STC89C52RC连接,系统采用了STC89C52RC的P1.0、P1.1、P1.2、P1.3口模拟SPI时序对ISD1730进行操作。语音输出方式有2种,系统以PWM的形式驱动一个8Ω的D级扬声器(SPEAKER),也可以配置成AUD(电流)或AUX(电压)单端输出的方式驱动外部的音频放大器。

1.3 对语音信息的操作 1.3.1 语音信号录入

可以采用商业的语音拷贝机或手动录入方式,将语音信号录入语音芯片;手动录入时,首先借助于声音魔法师、文语转换小精灵或其他的文字转声音软件,在电脑上将需要录入的文字转换成多段语音信息,然后将电脑的耳机输出口与如图2所示的Analn引脚连接,也可以将发音设备对准MIC;闭合S33键,打开音源,进行录制,录制时指示灯LED闪亮;松开S33键则该段语音录制结束,LED熄灭,一段语音录制完成。同理可录制下一段;全部语音录制完成后,闭合S44键并保持,器件将会依次将录制的语音全部播放出来,如果录制不理想,可以删除重来;闭合S33键并保持,LED闪烁7次,录制的信息将全部删除。 1.3.2 各段语音在芯片内地址的确定

语音录制完成后,要实现对多段语音组合输出,还必须知道每段语音的存储地址。STC89C52RC与ISD1730之间采用SPI通信协议,TC89 C52RC通过MOSI引脚发送指令给ISD1730,ISD1730语音芯片通过MISO引脚返回给STC89C52RC指令执行的情况和自己内部的状态,每一个SPI指令执行时都会从ISD1730返回2个字节的数据反映出芯片的状态,这2个字节的D5~D15位反映了存储器中当前语音段的开始存放地址,因此通过软件查询就可以将存储器中各段语音的存储地址找出来。下面是其主要程序片段:

当系统初始化完成后,执行以上程序,利用串口调试程序可以观察到返回的是每段语音存放的开始行的地址。其结束行的地址为下一段语音开始行的前一行地址,这样就可以得到每段语音存放的开始和结束地址。

1.3.3 指定地址段语音的检查和播报地址的确定

知道每段语音的存放地址后,还必须对每段语音进行检查,屏蔽多余的部分。将每段语音的开始地址和结束地址放在一个数组里面,执行下面的程序可以将指定段语音播放出来:

采用手动录制的语音,由于抖动和操作者的快慢影响,录制的语音段的前后部分可能存在盲音或者不需要的信息。通过执行上面的程序可以检测出来,然后修改该段语音在数组里的开始和结束地址,继续执行上面的程序,反复几次使效果达到满意,确定最终的播报地址,播报时就屏蔽了不需要的部分。

1.3.4 多段语音回放

确定了每段语音的播放地址后,需要将多段语音组合,流利、自然的播放出来。该系列的语音芯片内部有一个先进先出的缓冲存储器,可以存放2段语音的存放地址。当第1段语音播放完后,忽略其结束标志(EOM)继续播第2段语音,同时将第3段语音的地址装入缓冲存储器。这样,可以减小播放2段信息之间的时间,使语音更流畅,就像播放一段语音一样。图3是连续播放3段语音的流程图。当需要播放更多段语音时,简单修改即可。

结语

介绍了基于单片机STC89C52RC控制的多段语音组合输出设计过程中的几个关键步骤。 ①特别是录音时,并不需要知道各段语音的确切地址和精确时间,便于单位和个人制作,并研制了语音测温仪经测试,该测温仪语音播报流畅、连贯、准确。 值得注意的是:

在硬件设计中,数字地和模拟地要单独走线,最后一点接地。

②注意测量数据的显示与语音播报之间的协调,由于显示的速度比播报的速度快得多,在播报语音时,显示数据可能不连续,解决方法是将显示数据锁存或者在播报指定段信息的等待期间插入显示程序。

③在选择单片机STC89C52RC与语音芯片ISD1730的连接端口时,由于各端口的内部结构不一样,带负载的能力不同,选择P1口可靠性较好。

摘要:介绍一种基于单片机STC89C52RC、语音芯片ISD1730组成的多段语音录放系统设计方案。描述了语音电路设计、语音分段录入、语音段定位、语音段剪辑、多段语音组合输出等的实现方法;并制作了一个具有语音输出功能的温度测量仪。实验表明,具有语音输出功能的温度测量仪器更便于操作和使用。 关键词:STC89C52RC;多段语音;录放系统 引言

目前,在自动取款机、自动售货机、工业报警系统、公路收费系统、汽车防撞系统、智能玩具等领域具有语音输出功能的仪器设备越来越多。我们的工作和生活环境更加人性化、智能化。但在工业生产现场,数码输出的手持式测量仪器得到大量应用,给测量人员读取测量结果带来了极大的方便。但是具体操作时,测量人员需要将仪器置于便于观察测量结果的地方,然后手持测量探头进行测量,由于测量环境的复杂性,特别是在狭窄的工业生产现场,既便于实施测量作业又便于观测测量结果,二者有时不能兼顾。此时,如果仪器具有语音输出结果的功能,将会给测量工作人员带来极大的方便。笔者设计了一个基于单片机STC89C52RC、DS18B20温度传感器、语音芯片ISD1730构成的语音温度测量系统,给出了语音的分段录入、各段语音存放地址的确定、各段语音的修正、多段语音组合输出等环节的详细设计过程。

1 系统结构及软硬件设计 1.1 系统结构及工作原理

具有语音输出功能的单片机测量、显示系统结构框图如图1所示。系统主要由传感器输入、STC89C52RC及其外围电路、显示电路、语音电路和电源电路构成。设计时将需要播报的语音段(或字)录入语音芯片(系统失电后语音信息并不会丢失),系统工作时STC89C52RC会对传感器的信号进行采集,通过处理后一方面将结果输出显示,另一方面分析需要播报哪些语音段,指令语音模块将需要播报的语音段按要求组合进行播报。

1.2 系统硬件电路

1.2.1 数据采集与显示部分

单片机及其外围电路由STC89C52RC、复位电路、振荡电路等构成单片机最小系统;数字温度传感器DS18B20以一线形式与STC89C52RC的P3.7端口连接;采用4位数码管显示,显示数据通过STC89C52RC的P0口,经过74LS573锁存驱动后对数码管段控制,P2.0~P2.2通过74LS 138译码后对数码管的字控制,实现动态扫描显示。 1.2.2 语音电路设计

语音芯片采用美国Winbond公司的ISD1730,工作电压范围为2.4~5.5V,适合与单片机共用电源。该芯片适用于需要多段语音存储与回放的各种高端电子系统,根据其外接振荡电阻的大小不同,可以存储20~60s的信息。语音电路如图2所示。在电路中,振荡电阻为80kΩ,最小存储分辨率为125 ms,可以存放30 s的语音。信号以自然语音的形式按行存储在其内部的多级固态存储器内,可以通过指令中的11位地址对每一行的信息精确寻址,存储的语音信息断电后不会丢失,理论上可以保持一百年,存储10万次。

对该芯片的操作有独立按键和微控制器SPI接口2种方式。当按键方式操作时,通过将图中的S1~S4分别接地,就可以实现对ISD1730芯片复位、语音删除、语音录入、语音回放等操作,这些操作也可以通过STC89C52RC实现。ISD1730提供了4线(SCLK、MOSI、MISO、)SPI接口与STC89C52RC连接,系统采用了STC89C52RC的P1.0、P1.1、P1.2、P1.3口模拟SPI时序对ISD1730进行操作。语音输出方式有2种,系统以PWM的形式驱动一个8Ω的D级扬声器(SPEAKER),也可以配置成AUD(电流)或AUX(电压)单端输出的方式驱动外部的音频放大器。

1.3 对语音信息的操作 1.3.1 语音信号录入

可以采用商业的语音拷贝机或手动录入方式,将语音信号录入语音芯片;手动录入时,首先借助于声音魔法师、文语转换小精灵或其他的文字转声音软件,在电脑上将需要录入的文字转换成多段语音信息,然后将电脑的耳机输出口与如图2所示的Analn引脚连接,也可以将发音设备对准MIC;闭合S33键,打开音源,进行录制,录制时指示灯LED闪亮;松开S33键则该段语音录制结束,LED熄灭,一段语音录制完成。同理可录制下一段;全部语音录制完成后,闭合S44键并保持,器件将会依次将录制的语音全部播放出来,如果录制不理想,可以删除重来;闭合S33键并保持,LED闪烁7次,录制的信息将全部删除。 1.3.2 各段语音在芯片内地址的确定

语音录制完成后,要实现对多段语音组合输出,还必须知道每段语音的存储地址。STC89C52RC与ISD1730之间采用SPI通信协议,TC89 C52RC通过MOSI引脚发送指令给ISD1730,ISD1730语音芯片通过MISO引脚返回给STC89C52RC指令执行的情况和自己内部的状态,每一个SPI指令执行时都会从ISD1730返回2个字节的数据反映出芯片的状态,这2个字节的D5~D15位反映了存储器中当前语音段的开始存放地址,因此通过软件查询就可以将存储器中各段语音的存储地址找出来。下面是其主要程序片段:

当系统初始化完成后,执行以上程序,利用串口调试程序可以观察到返回的是每段语音存放的开始行的地址。其结束行的地址为下一段语音开始行的前一行地址,这样就可以得到每段语音存放的开始和结束地址。

1.3.3 指定地址段语音的检查和播报地址的确定

知道每段语音的存放地址后,还必须对每段语音进行检查,屏蔽多余的部分。将每段语音的开始地址和结束地址放在一个数组里面,执行下面的程序可以将指定段语音播放出来:

采用手动录制的语音,由于抖动和操作者的快慢影响,录制的语音段的前后部分可能存在盲音或者不需要的信息。通过执行上面的程序可以检测出来,然后修改该段语音在数组里的开

始和结束地址,继续执行上面的程序,反复几次使效果达到满意,确定最终的播报地址,播报时就屏蔽了不需要的部分。 1.3.4 多段语音回放

确定了每段语音的播放地址后,需要将多段语音组合,流利、自然的播放出来。该系列的语音芯片内部有一个先进先出的缓冲存储器,可以存放2段语音的存放地址。当第1段语音播放完后,忽略其结束标志(EOM)继续播第2段语音,同时将第3段语音的地址装入缓冲存储器。这样,可以减小播放2段信息之间的时间,使语音更流畅,就像播放一段语音一样。图3是连续播放3段语音的流程图。当需要播放更多段语音时,简单修改即可。

结语

介绍了基于单片机STC89C52RC控制的多段语音组合输出设计过程中的几个关键步骤。 ①特别是录音时,并不需要知道各段语音的确切地址和精确时间,便于单位和个人制作,并研制了语音测温仪经测试,该测温仪语音播报流畅、连贯、准确。 值得注意的是:

在硬件设计中,数字地和模拟地要单独走线,最后一点接地。 ②注意测量数据的显示与语音播报之间的协调,由于显示的速度比播报的速度快得多,在播报语音时,显示数据可能不连续,解决方法是将显示数据锁存或者在播报指定段信息的等待期间插入显示程序。

③在选择单片机STC89C52RC与语音芯片ISD1730的连接端口时,由于各端口的内部结构不一样,带负载的能力不同,选择P1口可靠性较好。

因篇幅问题不能全部显示,请点此查看更多更全内容