文档库 最新最全的文档下载
当前位置:文档库 › 1420程序

1420程序

1420程序
1420程序

ISD1420 CWB

录音录音需要用到语音模块中的ISD1420芯片。ISD1420可直接模拟存储,能提供真实的音乐、语音或音频,内有160个可寻址段,总共能录放20秒的声音。根据报时的需要,应录入十五段声音,分别是:现在时刻、十、分、点、整和0、1、2、3、4、5、6、7、8、9。其中现在时刻需要用1秒的时间来播放,而其它则用0.5秒的时间播放。地址从00H开始,到08H存放1秒的录音,往后到0CH,存放0.5秒的录音,依次类推。语音模块的REC 是输入低电平有效的录音信号,用作录音控制,PLAYE是电平放音控制,PLAYL是下降沿触发放音。8255的A0和A1均为0,用方式0,选择了PA端口。PA端口控制G6区的按键,程序中控制1~4键为录音键,相应的录音用5~8键播放,由此可知需要用到四个录音程序来完成十五段声音的录入,程序内容基本一致,只是在定义录放音起始地址时有所区别。

语音播放电路

语音芯片的基本的应用方法有两种,一种是固定地址法,另一种是随机地址法。下面简要介绍这两种方法的应用。

固定地址录放音电路的工作原理

固定地址录放音电路较长使用的是从存储器的首地址开始的固定地址,即把A0~A7引脚统统接地,录放音通过有关按键进行控制。固定地址的录放音电路如图3-3所示。

录音时按下S3键,REC电平由高变低,声音由话筒输入。同时由于RECLED端的电平降低,发光二极管发光,指示录音正在进行中。松开S3键,录音中止,发光二极管熄灭。

放音可通过两种方式控制:第一种是电平触发控制,即按下S1键,此时PLAYL端电平由高变低,放音开始。在放音过程中如果松开S1键,PLAYL端电平变高,放音立即中止,否则放音将持续下去,直至全部信息播完为止。第二种是脉冲触发方式,即按下S2键,此时在PLAYE端产生一个由高到低的电平跳变,器件就进入放音状态,并一直进行直至全部信息播完,而不管中间是否松开S2键。

随机地址录放音电路的工作原理

随机地址录放音电路的录放音起始地址可以通过单片机对ISD1200/1400系列语音芯片的A0~A7进行控制而实现。随机地址可以选择芯片中的任意地址。随机地址录放音电路如图3-4所示。

单片机的P1端口和ISD1420A0~A7对应连接,P3.1和REC的外接开关S的一端相连,P3.0与PLAYL或者PLAYE相连。模拟语音信号从MIC和MICREF两个端口输入,经放大器当打又从ANAOUT端输出,然后通过外接耦合电容输入到ANAIN端,该信号再经适当放大后就可以被时钟信号采样储存到EEPROM中。AGC端一般只接一个RC积分电路即可,它可使存储的语音具有良好的重放效果。A7~A0端口具有地址编码和逻辑控制双重功能。

当A7、A6都取值为高电平时,A4、A3、A1、A0各位用作芯片操作方式控制。

A0用作信息检索控制。例如在放音时,如果不清楚每段语音的实际地址,可用A0控制检索过程,A0每输入一个负脉冲,地址计数器就可以跳过一段,指向下一段的起址。

A1用作删除信息段结束标志的控制位,列入在录音期间可用A1删除每段信息中间的结束标志的插入,使全部录制内容只保留最后一个结束标志符,以便将来可以连续播放。

A3可用来进行片内信息循环重放的控制,既可以循环重放一段,又可以循环重放全部。

A4用于连续寻址控制,一般情况下芯片放完一段遇上结束标志就要停止,计数器会自动复位。用A4=0可制止这种复位过程,实现片内信息的连续播放。A1若与A0联用,控制效果更好。

当A7、A6中有一个为低电平,A7~A0用作EEPROM的地址编码。编址范围为00H~9FH,共160个地址码,对应着160段语音存储单元。若芯片的录放时间为tm,则每段录放时间ts=tm/160,称为分辨率。根据它可以估算出从录放开始算起的每段语音起始时间。

录放地址信息都是在有效录放控制命令下降沿时写入片内地址锁存器的,因此可以有选择地进行语音的存储录放。因此,在录音时,在不同地址内录入不同的语音;放音时,在单片机控制下同步放出对应的语音。

在整个系统功能的模块化实现过程中,语音部分可以算是一个难点,原因在于对ISD1420芯片一无所知,因而语音部分的调试与测试花费大量时间。

一开始主要测试ISD1420的能存储录音的时间,理论上ISD1420能录放20秒的声音,但实际情况并非如此,经过多次测试,最长的录放时间是12秒。ISD1420内部有160个可寻址段,也就是说,录音是按地址存放在ISD1420中的,但是实验箱上的ISD1420并不是160段都能够用上,50H以后的地址都不可用。经过反复测试,最合理的录音方案是从00H到08H开始录第一段音,录放时间为1秒,之后的则是每四个可寻址段存放一段声音,即录放音时间为0.5秒,总共将录音分为15段。分配好存储空间之后,用编写的录音程序将声音录入,每个程序能录4个声音片段,每个程序段都是用G6去的1~4键控制录音,5~8键播放录音,0.5秒的时间比较短促,不能很好的掌握录音时间,按键播放声音,对放音效果不好的声音片段要重新录入。

录音子程序

录音时,单片机通过P1 口线设置语音信息的起始地址,再使REC 端(P3. 0) 置低电平启动录音,经过一段延时,单片机使REC端置高电平,即完成一段语音的录制。同样的方法可录取第二段、第三段?.。需要注意的是,录音时间不能超过预先设定的每一段语音时间(录音时间是根据所录入字的数量不同而不同的,一般单字需0. 5s ,两字需1. 0s ??。根据ISD1420 的地址分辨率0. 125S ,即可计算出语音段所需的地址单元数,如:录入单字需占用4 个单元,录入两字需占用8 个单元?.) 。

录音程序:放音程序:

Void record(unchar temp) Void play(unchar temp){ {

P1=0; // P1=0;

P3^0=1; // REC 录音控制端 P3^0=1; // REC

P3^1=1; PLAY 放音控制 P3^1=1; // 放音控制 P1=temp; // 送录音地址到P1口 P1=temp; // 放音地址 P3^0=0; // REC置低电平开始录音 P3^1=0; //开始放音 Delay();// 延时,等待录音过程结束 delay();// 放音过程 P1=0; P1=0;

P3^0=1 // 停止录音 P3^1=1 //停止放音

} }

放音程序中放音地址temp 对应录音程序中录音地址temp。如录入时地址为04H,则放音地址也为04H

相关文档