视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
单片机实现语音录放
2025-09-29 09:07:02 责编:小OO
文档
单片机实现语音录放

一、简述

   所谓语音芯片,就是在人工或者控制器的控制下可以录音和放音的芯片。语音信号是模拟量,语音芯片存储播放声音的基本工作方式为:声音-模拟量-A/D-存储-D/A-模拟量-播放。采用此种方式语音芯片外围电路比较复杂,声音质量也有一定的失真。而另一类语音芯片采用EEPROM存储方式,将模拟语音数据直接写入半导体存储单元中,不需另加A/D和D/A转换电路,而且语音音质自然。

◆使用方便的单片32至120秒语音录放

◆多段信息处理,可分1至320/600段

◆高质量、自然的语音还原技术

◆不耗电信息存100年(典型值)

◆边沿/电平触发放音

◆100000次录音周期(典型值)

◆手动操作/微控制器控制兼容

◆片内免调整时钟,可选外部时钟

◆多片直接级联,延长录放时间

◆无需开发系统

◆5V单电源工作,维持电流1uA

◆DIP,SOLC,TSOP封装及工业级

表1~1型号与性能对照

型号时间输入采样典型带宽最大段数最小段数外部钟频
253232秒

8.0KHz3.4KHz320!00ms1024.0KHz
254848秒

5.3KHz2.3KHz320150ms682.7KHz
256060秒

8.0KHz3.4KHz600100ms1024.0KHz
259090秒

5.3KHz2.3KHz600150ms682.7KHz
25120120秒

4.0KHz1.7KHz600200ms512.0KHz
ISD2500系列单片录放时间32秒至120秒,音质好,芯片采用CMOS技术。ISD2560采用多电平直接模拟量存储,每个采样值可直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果音,从而避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属音”。ISD 2560省去了A/D和D/A转换器,集成度较高,内含话筒前置放大、振荡器、内部时钟、定时器、采样时钟、防混淆滤波器、平滑滤波器、自动增益控制、逻辑控制、模拟收发器、解码器、480KB的EEPROM、扬声器驱动及EEPROM阵列。

图1~1、ISD2560/90/120内部框图

ISD2500系列具备微控制器所需控制接口。通过操纵地址和控制线可完成不同的任务,实现复杂的信息处理,如信息的组合,连接,设定固定的信息段,信息管理等。ISD2500可不分段,也可按最小段长为单位任意组合分段,参见表1~1“最大段数”。

芯片采用多电平直接模拟量存储专利技术,每个采样值接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。采样频率从4.0,5.3,6.4到8.0KHz,同一第列的产品休样频率越低,录放时间越长, 但通频带和音质有所降低。片内信息可保存100年(无需后备电源),EEPROM单元可反复录音十万次

图1~2、ISD2560/90/120硬封装引脚图

二、引脚描述

电源(VCCA,VCCD)模拟和数字电源。芯片内部的模拟和数字电路使用不同的电源总线,并且分别引到外封装上,这样可使口若悬河最小。模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应尽量靠近芯片。

地线(VSSA,VSSD)芯片内部的模拟和数字也可使用不同的地线,这两脚最好在引脚焊盘上相连,因此这两脚最好通过低阻抗通路连接到地。

节电控制(PD)本端拉高使芯片停止工作, 进入不耗电的节电状态,芯片发生溢出,即/OVF端输出低电平后,要将本端短暂变高复位到录/放空间的开始位置,才能使之再次工作,另外,此引脚在模式6下还有特殊用途。

片选(/CE)本端变低后(而且PD为低),允许进行录放操作。芯片在本端的下降沿锁存地址线和P/-R端的状态,另外,此引脚在模式6下还有特殊用途。

录放模式(P/-R)本端状态在/CE的下降沿锁存。高电平选择放音,低电平选择录音。录音时,由地址端提供起始地址,录音持续到/CE或PD变高,或内存溢出;如果是前一种情况,芯片自动在录音结束处写入EOM标志。放音时由地址端提供起始地址,放音持续到EOM标志。如果/CE一直为低,或芯片工作在某些操作模式,放音则会忽略EOM,继续进行下去,直到发生溢出为止。

信息结尾标志(/EOM) EOM标志在录音时由芯片自动插入到该信息的结尾。放音遇到EOM时,

本端输出低电平脉冲。芯片内部会检测电源电压以维护信息的完整性,当电压低于3.5V时,本端变低,芯片只能放音。在模式状态下,可用来驱动LED,以指示芯片当前的工作状态。

溢出标志(/OVF)芯片处于存储空间末尾时本端输出低电平脉冲表示溢出,之后本端状态跟随/CE端的状态,直到PD端变高复位。本端可用于级联多个ISD2560系列器件以增加录音存储的时间。

话筒输入(MIC IN)本端连至片内前置放大器。片内自动增溢控制电路(AGC)将置增益控制在-15至24dB。外接话筒应通过串联电容耦合到本端。耦合电容值和本端的10KΩ输入阻抗决定了芯片频带的低频截止点。

话筒参考(MIC REF)本端是前置放大器的反向输入。当以差分形式连接话筒时,可减小噪声,提高共模抑制比。

自动增益控制(AGC) AGC动态调整前置增益以补偿话筒输入电平的宽幅变化,使得录制变化很大的音量(从耳语到喧嚣声)时失真都能保持最小。响应时间取决于本端的5KΩ输入阻抗外接的对地电容(即线路图中C2)的时间常数。释放是境取决于本端外接的并联对地电容和电阻(即线路图中R2和C2)的时间常数。470KΩ和4.7uF的标称值在绝大多数场合下可获得满意的效果.

模拟输出(ANA OUT)前置放大器的输出.前置电压增益取决于AGC端电平.

模拟输入(ANA IN )本端为芯片录音信号输入.对话筒输入来说ANA OUT端应通过外接电容连至本端.该电容和本端的3KΩ输入阻抗给出了芯片频带的附加低端截止频率.其它音源可通过交流耦合直接连至本端(绕过了TER的前置)。

喇叭输出(SP+、SP-)可对输出端级驱动16Ω以上的喇叭(内存放音时功率为12.2mW,AUX IN 放音时功率为50mW).单端使用时必须在输出端和喇叭间接耦合电容,而双端输出既不用电容又能将功率提高至4倍.ISD2569系列器件都有一个在芯片上的差分扬声器驱动器。录音和节电模式下,它们保持为VSSA电平.注意:多个芯片的喇叭输出端绝对不能并联,否则可能损坏芯片!不用的喇叭输出端绝对不能接地!

辅助输入(AUX IN)当/CE和P/-R为高,放音不进行或处入放音溢出状态时,本端的输入信号过内部功放驱动喇叭输出端.当多个2500芯片级联时,后级的喇叭输出通过本端连接到本级的输出放大器,为防止噪声,建议在放内存信息时,本端不要有驱动信号。

外部时钟(XCLK)本端内部有下拉元件,不用时应接地。芯片内部的采样时钟在出厂前已调节器校,误差在+1%内.商业级芯片在整个温度和电压范围内,频率变化在+2.25%内.工业级芯片在整个温度和电压范围内,频率变化在+5%内,建议使用稳压电源。若要求更高精度或系统同步,可从本端输入外部时钟,频率如表2~3“外部钟频”所示。由于内部的防混淆及增滑滤波器已设定,故上述推荐的时钟频率不应改变。输入时钟的占空比无关紧要,因内部首先了进行分频。

地址/模式输入(AX/MX)地址端有个作用,取决于最高两位(MSB,即2532/2548的A7和A8,或2560/2590/25120的A8和A9)的状态。当最高两位中有一个为0时,所有输入均解释为地址位,作为当前录入操作的起始地址。地址端只作输入,不输出操作过程中的内部地址信息。地址在/CE的下降沿锁存。

三、操作模式

ISD2560/90/120系列内置了若干操作模式,可用最少的外围器件实现最多的功能。操作模式也由地址端控制;当最高两位都为1时,其它地址端置高就选择某个(或某几个)模式。因此操作模式和直接寻址相互排斥。操作模式可由微控制器也可由硬件实现。使用操作模式有两点要注意:(1)所有操作最初都是从0地址,即存储空间的起始端开始。后续操作根据选用的模式可从其它地址开始。但是,电路由录转为放,或由放转为录时(M6模式除外),或执行了掉电周期后,地址计数器复位为0。(2)当/CE变低,最高两地址位同高时,执行操作模式。这种操作模式一直有效,除非/CE再次由高变低,芯片重新锁存当前的地址/模式端电平,然后执行相应操作。

表1~2 操作模式简表

模式功能典型应用可组合使用的模式
M0信息检索快进入信息M4、M5、M6

M1删除WOM

在最后一条信息结束处放EOM

M3、M4、M5、M6

M3循环从0地址连续放音

M1、M5、M6

M4连续寻址录放连续的多段信息M0、M1、M5

M5/CE电平有效

允许暂停M0、M1、M3、M4

M6按键模式简化外围电路M0、M1、M3

M0(信息检索)——快速跳过信息而不必知道其确切地址。/CE每输入一个低脉冲,内部地址计 器就跳到下一条信息,此模式仅用于放音,通常与M4同时使用。

M1(删除EOM标志)——使分段信息变为一条信息,仅在信息后保留一个EOM标志.这个模式完成后, 录入的所有信息就变成一条连续的信息。

M2(未用)——保留。

M3(信息循环)——循环重入位于存储空间起始处的那条信息。一条信息可以完全占满存储空间,那么循环就从头至尾进行,这进/OVF不变低。

M4(连续寻址)——正常操作中,重放遇到EOM标志时, 地址计数器会复位。M4禁止地址计数器复位,使得信息可连续录放或重放。

M5(/CE电平有效)——通常,录音时/CE为电平触发,放音时/CE为边沿触发。本模式将放音时/CE设置为电平触发,特别适用于需用/CE终止放音的场合。操作为:/CE变低时,芯片从内存起始放音,/CE变高放音即刻停止。/CE再变低后。仍从内存起处开始放音,除非M4也是高。

M6(按键模式)——本模式的外围电路最简,成本大为降低;在录放结束,/CE变高后,芯片自动进入节电模式。而且,/CE、PD、/EOM的作用重新定义如下:

/CE(开始/暂停,低脉冲有效)——/CE端的下降沿控制操作的开始和暂停。当芯片不录不放时,/CE端的下降沿就启动录/放操作。之后,如果在芯片没遇到EOM标志(放音时)或没发生溢出疥,再来一个/CE下降沿将暂停当操作。暂停后,地址并不复位,再来一个/CE下降沿后从暂停处继续操作。

PD(停止/复位,高脉冲有效)——PD端的上升沿停止妆前录/放操作,并复位地址。

/EOM(运行指示)——/EOM变高表示录/放操作正在进行,可驱动LED等。

四、典形应用电路

图1~3、ISD2560/90/120常规应用

图1~4、ISD2560/90/120微控制器控制

图1~5、ISD2560/90/120按键模式

程序要实现下面的过程。

    “开始”键按下后,单片机控制PD、P/R引脚为高电平,并指定录音地址,启动录音过程。在预先  设定的时间内(60s内)结束录音,松开“开始”键,单片机控制P/R引脚回到高电平,即完成一段语音的录制。之后打开外部中断0,指定存放地址,启动放音程序,每次放音结束时,EOM输出会触发单片机的外部中断0,经过适当的延时后,重新启动第二次放音,这样重复3次关闭外部中断0,流程结束,等待下一次录音。EOM标志在录音时由芯片自动插入到录音信息的结尾处,放音遇到EOM时,会产生低电平脉冲(约12.5ms),触发单片机中断,单片机必须在检测到此输出的上升沿后才播放的录音,否则播放的语音就不连续,而且会产生“啪啪声”。

五、程序说明:

Uchar conut;                    //重复播放次数计数器

UcharStartFlag;                 //开始键按下标志

Uchar IdleFlag;                 //系统是否处于空闲状态标志

/*定义语音芯片的控制引脚*/

Sbit START = P1^0;

Sbit EOM = P1^4;

Sbit PR = P1^5;

Sbit PD = P1^6;

Sbit CE = P1^7;

Void delay(uint t)

{

Uint i;

While (t--)

{

For (i=0;i<120;i++)

{}

 }

}

/*外部中断0服务子程序*/

Void out_0() interrupt 0 using 1

{

EX0 = 0;           //关外部中断0

PD =1;             //进入节电状态

If(count<2)         //再重播2次,共3次重播

{

Count ++;       

Delay(500);     //延时500ms

P2 = P2&0xFC;  //A8=A9=0;

P0 = P0&0x00;  //起始地址为0;

Playback();     //从地址0处播放;

EX0 = 1;       //开外部中断0;

}

Else

{

IdleFlag = 1;        //变为空闲状态

Count = 0;          

}

}

/*主程序*/

Void main()

{

EA = 1;                 //开CPU中断

Count = 0;

StasrtFlag =0;

IdleFlag = 1;

While(IdleFlag ==1)

{

If(START)

{

Delay(10);       //延时去抖动

If(START)

StartFlag = 1;    //开始键按下标志

}

If(StrartFlag == 1)

{

Do

{

P2 = P2&0xFC;  //A8=A9=0;

P0 = P0&0x00;  //起始地址为0;

Record();          //录音开始,存放在地址0处;

}

While(START);     //开始键松开;

StartFlag = 0;

PR = 1;            //结束录音;

PD =1;             //进入节电状态;

Delay(500);         //延时500ms再播放录音;

EX0 = 1;           //开外部中断0;

P2 = P2&0xFC;     //A8=A9=0;

P0 = P0&0x00;     //起始地址为0;

Playback();        //从地址0处第一次播放;

IdleFlag = 0;       //当前不空闲,按开始键无效;

}

}

}

}

/*录音函数*/

Void record(void)

{

CE = 0;                 //片选有效;

PD = 0;                 //非节电模式;

PR = 0;                 //录音;

}

/*播放函数*/

Void playback(void)

{

CE = 0;                       //片选有效;

PD = 0;                 //非节电模式;

PR = 1;                 //录音;

}下载本文

显示全文
专题