1、基于 AT89C2051和 ISD2560的录放音系统设计 摘 要: 介绍了由 Flash单片机 AT89C2051及数码语音芯片 ISD2560组成的电脑语音系统。设计出了系统的硬件电路,给出了录、放音实用的源程序。 关键词: AT89C2051单片机 ISD2560语音芯片 分段录音 组合回放 Abstract: n the paper, a microcomputer sound system based on AT89C2051 and ISD2560 is introduced. Hardware circuit of system is designed, and practica
2、l programmes are given. Key words: AT89C2051 ISD2560 subsection record combination return play 1 引言 目前基于单片微机的语音系统的应用越来越广泛,如电脑语音钟、语音型数字万用表、手机话费查询系统、排队机、监控系统语音报警以及公共汽车报站器等等。本文作者用 Flash单片机 AT89C2051和录放时间达 60s的数码语音芯片 ISD2560设计了一套智能语音录放系统,实现了语音的分段录取、组合回放,通过软件的修改还可以实现整段录取,循环播放,而且不必使用专门的 ISD语音开发设备。 2 系统硬件电
3、路设计 系统采用的微控制器是 ATMEL公司生产的低电压、高性能 8位 CMOS单片机 AT89C2051,由于它将 8位 CPU和闪速存储器组合在单个芯片中,为很多嵌入式控制应用系统提供了一个高度灵活且价格低廉的解决方案。 AT89C2051带有 2K字节可编程的 Flash Memory、 128字节 RAM、 15根 I/O线、 2个 16位定时 /计数器、 1个全双向的串口、 1个精密比较器。其与工业标准 MCS-51的指令集和引脚结构完全兼容。 该单片机的 P1口是一个双向 I/O口,其中 P1.2P1.7口内部提供了上拉电阻, P1.0、 P1.1需外部上拉。 P1.0、 P1.1
4、同时也是片内精密比较器的正输入端( AIN0)和负输入端( AIN1)。 P3口是 7个带有内部上拉电阻的双向口( P3.6除外,其为片内比较器的输出脚,而不能作为普通的I/O口使用)。有关 AT89C2051较详细地资料请参阅文献 1。 数码语音芯片选用的是 ISD2500系列单片语音录放集成电路 ISD2560,它具有抗断电、音质好,使用方便,无须专用的开发系统等优点。录音时间为 60 s,能重复录放达 10万次。芯片采用多电平直接模拟量存储专利技术,省去了 A/D、 D/A转换器。每个采样值直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语 音、音乐、音调和效果声,避免
5、了一般固体录音电路因量化和压缩造成的量化噪声和 “金属声 ”。 ISD2560集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器和 480 K字节的 E2PROM等,内部原理框图及引脚排列如图 1所示。 ISD2560控制电平与 TTL电平兼容,接口简单,使用方便。各引脚功能如表一所示: 图 1 ISD2560内部原理框图 ISD2560与单片机 AT89C2051的接口电路以及外围电路如图 2 所示。单片机的 P1口、 P3.4和 P3.5分别与 ISD2560的地址线相连,用以设置语音段的起始地址。 P3.0P3.3用以控制录放音
6、状态。 P3.7连接一按键,供录音时使用。由 TL7705构成可靠复位及电源监视电路。 图 2 ISD2560 与单片机 AT89C2051的接口电路 +5v+5V810 A7A9 地址线 引脚序号 引 脚 名 称 功 能 17 A0/M0A6/M6 地址线 11 AUX IN 当 /CE和 P/-R为高 ,放音不进行 ,或处入放音溢出状态时 ,本端的输入信号通过内部功放驱动喇叭输出端。 12,13 VSSD、 VSSA 数字地和模拟地,这两脚最好在引脚焊盘上相连。 14,15 SP+、 SP- 扬声器输出。 16,28 VCCA、 VCCD 模拟电源、数字电源,尽 可能在靠近供电端处相连。
7、17 MIC 本端连至片内前置放大器,外接话筒应通过串联电容耦合到本端,耦合电容值和本端的 10K输入电阻(如图 2)决定了芯片频带的低频截止点。 18 MIC REF 本端是前置放大器的反向输入。当以差分形式连接话筒时,可减小噪声,提高共模抑制比。 19 AGC AGC动态调整前置增益以补偿话筒输入电平的宽幅变化,使得录制变化很大的音量时失真都能保持最小。响应时间取决于本端的 5K输入阻抗外接的对地电容(即图 2中 C2)的时间常数。释放时间取决于本端外接的并联 对地电容和电阻(即图 2中 R5和 C2)的时间常数。 470K和 4.7uF的标称值在绝大多数场合下可获得满意的效果 . 20
8、ANA IN 本端为芯片录音信号输出。对话筒输入来说 ANA OUT端应通过外接电容连至本端。 21 ANA OUT 前置放大器的输出 .前置电压增益取决于 AGC端电平 22 /OVF 芯片处于存储空间末尾时本端输出低电平脉冲表示溢出,之后本端状态跟随 /CE端的状态,直到 PD端变高。本端可用于级联。 23 /CE 本端变低后(而且 PD为低),允许进行录放操作 。芯片在本端的下降沿锁存地址线和 P/R端的状态。 24 PD 本端拉高使芯片停止工作, 进入不耗电的节电状态,芯片发生溢出,即 /OVF端输出低电平后,要将本端短暂变高复位芯片,才能使之再次工作。 25 /EOM EOM标志在录
9、音时由芯片自动插入到该信息的结尾。放音遇到 EOM时,本端输出低电平脉冲。芯片内部会检测电源电压以维护信息的完整性,当电压低于 3.5V时,本端变低,芯片只能放音。 26 XCLK 外部时钟。本端内部有下拉元件,不用时应接地。 27 P/R 本端状态在 /CE的下降沿锁存。高电平选择放音,低电平选择录音。录音时,由地址端提供起始地址,录音持续到 /CE或 PD变高,或内存溢出;如果是前一种情况,芯片自动在录音结束处写入EOM标志。放音时由地址端提供起始地址,放音持续到 EOM标志。如果 /CE一直为低,或芯片工作在某些操作模式,放音会忽略 EOM,继续进行下去。 表一 引脚功能描述 3 系统工
10、作原理及程序设计 3.1 ISD2560内部地址单元寻址 ISD2560虽然提供了地址输入线,但它的内部信息段的地址却无法读出。本系统采用单片机来控制,不需读出信息 地址,而直接设置信息段起始地址。其实现方式有两种:一是由于 ISD2560的地址分辨率为 100 ms,所以可用单片机内部定时器定时 100 ms,然后再利用一计数器对单片机定时次数进行计数,则计数器的计数值为语音段所占用的地址单元。该方式能充分利用ISD2560内部的 E2PROM,在字段较多时可利用该方法。该方法的具体使用请见参考文献 3。二是语音字段如果较少,则可根据每一字段的内容多少,直接分配地址单元。一般按每 1 s说
11、3个字计算, 60 s可说 180个字,再根据 ISD2560的地址分辨率为 100 ms,即可 计算出语音段所需的地址单元数。本文采用第二种方式。 3.2 录放音时 AT89C2051单片机对 ISD2560的控制 录音时,按下录音键,单片机通过口线设置语音段的起始地址,再使 PD端、 P/R端和 /CE端为低电平启动录音;结束时,松开按键,单片机又让 /CE端回到高电平,即完成一段语音的录制。同样的方法可录取第二段、第三段、 。特别值得注意的是,录音时间不能超过预先设定的每段语音的时间。 放音时,根据需播放的语音内容,找到相应的语音段起始地址,并通过口线送出。再将 P/R端设为高电平, P
12、D端设为低电平, 并让 /CE端产生一负脉冲启动放音,这时单片机只需等待ISD2560的信息结束信号,即 /EOM的产生。信号为一负脉冲,在负脉冲的上升沿,该段语音才播放结束,所以单片机必须要检测到 /EOM的上升沿才能播放第二段,否则播放的语音就不连续,而且会产生啪啪声,这一点在编制软件时一定要注意。下面给出了录取 5段语音信息的录音程序和对这 5段语音进行组合播放的源程序(均可直接拷贝使用)。播放时,可根据实际情况组合回放。实际需要时,可对该程序进行扩充。 录音源程序: START: MOV R7,#00H MOV P1,#00H CLR P3.4 ;ISD2560地址初始化 CLR P3
13、.5 CLR P3.2 CLR P3.0 ;设置为录音状态 LOOP: JB P3.7,LOOP ;录音键按下否? INC R7 CALL PRESS LJMP LOOP PRESS: CJNE R7,#1,NEXT1 MOV P1,#00H ;送字段 1起 始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACK NEXT1: CJNE R7,#2,NEXT2 MOV P1,#20H ;送字段 2起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACK NEXT2: CJNE R7,#3,NEXT3 MOV P1,#40H ;送字
14、段 3起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACK NEXT3: CJNE R7,#4,NEXT4 MOV P1,#60H ;送字段 4起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACK NEXT4: CJNE R7,#5,BACK MOV R7,#00H MOV P1,#80H ;送字段 5起始地址 CLR P3.4 CLR P3.5 LCALL RECORD BACK: RET RECORD: CLR P3.3 ;/CE端为低,开始录音 JNB P3.7,$ SETB P3.3 RET 放音源程序: BEGI
15、N: SETB 20H.0 ; 置放音标志 SETB P3.0 ;置放音状态 MOV P1,#00H ;ISD2560地址初始化 CLR P3.4 CLR P3.5 MOV R0,2FH ;放音起始地址送 R0 LOOP1: JB 20H.0,LOOP1 LCALL PLAY ;20H.0=0 调放音程序 JMP LOOP1 PLAY: INC R0 LCALL FIND ;调查找播放地址子程 CJNE R0,#5,OUT MOV R0,#2FH OUT: RET FIND: MOV A,R0 ;查找播放语音地址 CJNE A,#1,PNEX1 MOV P1,#00H ;若 A=#1放第一段
16、CLR P3.4 CLR P3.5 CALL SOUND JMP PBACK PNEX1: CJNE A,#2,PNEX2 MOV P1,#20H ;若 A=#2放第二段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACK PNEX2: CJNE A,#3,PNEX3 MOV P1,#40H ;若 A=#3放第三段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACK PNEX3: CJNE A,#4,PNEX4 MOV P1,#60H ;若 A=#4放第四段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACK PNE
17、X4: CJNE A,#5,PBACK MOV P1,#80H ;若 A=#5放第五段 CLR P3.4 CLR P3.5 CALL SOUND PBACK: RET SOUND: CLR P3.3 ; /CE端形成一负脉冲启 NOP ;动播放 NOP SETB P3.3 TURN1: JB P3.1,TURN1 ;等待语音段结束信号 TURN2: JNB P3.1,TURN2 ; 等待 EOM信号的上升沿 RET 4 结束语 该语音系统硬件电路简单,调试方便。即可作为电脑语音系统的语音板,又可作为语音服务系统的子系统。实际应用表明具有较好的实用价值,对初步涉足单片机语音系统的读者来说具有一定的参考价值。 参考文献 1 余永权 . ATMEL89系列单片机应用技术 M. 北京:北京航空航天大学出版社, 2002.4 2 2002 数码语音芯片、产品及应用电路资料汇编 M. 3 刘欣,等 . IDS语音器件分段地址的获取 J. 电子技术应用, 1999( 10)