资源描述
单片机控制语音芯片的录放音系统的设计目 录摘要Abstract(2)引言(2)一. AT89C2051概述(2)().单片机概述(2)(二)AT89C51单片机(3)1、 主要性能(3)2、 引脚功能说明(4)二.语音芯片(12)1、 语音芯片的概述(12)2、 ISD2560简介(13)三.语音芯片在单片机中系统的使用(17)四.总体电路设计(17)致谢词(22)参考文献(23)单片机控制语音芯片的录放音系统的设计 摘 要:介绍了由Flash单片机AT89C2051及数码语音芯片ISD2560组成的电脑语音系统设计出了系统的硬件电路,给出了录、放音实用的源程序。目前基于单片微机的语音系统的应用越来越广泛,如电脑语音钟、语音型数字万用表、手机话费查询系统、排队机、监控系统语音报警以及公共汽车报站器等等。本文作者用Flash单片机AT89C2051和录放时间达60s的数码语音芯片ISD2560设计了一套智能语音录放系统,实现了语音的分段录取、组合回放,通过软件的修改还可以实现整段录取,循环播放,而且不必使用专门的ISD语音开发设备。关键词:AT89C2051单片机 ISD2560语音芯片 分段录音 组合回放Abstract In the paper, a microcomputer sound system based on AT89C2051 and ISD2560 is introduced. Hardware circuit of system is designed, and practical programmers are given.Key words: AT89C2051 ISD2560 subsection record combination return play一.AT89C2051概述(一).单片机概述l 单片机的概念电子计算机的发展经理了从电子管、晶体管、集成电路到大规模集成电路共四个阶段,即通常所是说的第一代、第二代、第三代和第四代计算机。现在广泛使用的微型计算机是大规模集成电路技术的产物,因此它属于第四代计算机,而单片机则是卫星计算机的一个分支。从1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个不同的方向发展:一个是向高速度、大容量、高性能的高档微机方向发展;而另一个则是想稳定可靠、体积小和价格廉的单片机方向发展。但两者在原理和技术上是紧密联系的。l 通用单片机和专用单片机根据控制应用的需要,可以将单片机分为通用型和专用行。通用型单片机是一种基本芯片,它的内部资源比较丰富,性能全面且适用性强,能覆盖多种应用需求。用户可以根据需要设计成各种不同应用的控制系统,即通用单片机有一个再设计过程,通过用户的进一步设计,才能组建成一个以单片机为核心再配以其他外围电路的应用控制系统。专用型的单片机主要是应用在专门针对某个特定产品的,例如电镀表和IC卡读写器上的单片机等。这种应用的最大特点是针对性强而且数量巨大。本电路所使用的是通用型的单片机AT89C205189系列单片机有AT89C系列的标准型及抵挡型,还有AT89S系列的高档型。AT89C单片机的结构图如下。它主要由下面几部分组成:1个8位中央处理器、片内RAM、4个8位的双向可寻址I/O口、1个全双工UART(通用异步接收发送器)的串行接口、2个16位的定时器/计数器、多个优先级的嵌套中断结构,以及一个片内振荡器和时钟电路。 在AT89C单片机结构中,最显著的特点是内部含有FLASH存储器,而在其他方面的结构,则和INTEL公司的8051的结构没有太大的区别。(二).AT89C2051单片机 AT89C2051是一带有2KBFLASH可编程、可檫除只读存储器的低压、高性能8位CMOS微型计算机,它采用ATMEL的高密非易失存储器技术制造,不并和工业标准MCS-51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和FLASH存储器,使AT89C2051成为一强劲的微型计算机。AT89C2051提供以下标准功能:2KBFLASH存储器;128字节RAM;15条I/O口引线;2个16位定时器/计数器;1个5向量2级中断结构;1个全双工串行口;1个精密模拟比较器以及片内振荡器和时钟电路。此外,AT89C2051是用可降到0频率的静态逻辑操作设计的,并自持两种可选的软件节电工作方式。掉电方式保存RAM内容,但振荡器停止工作,并禁止所有其他部件的工作直到下一个硬件复位。1 主要性能l 和MCS-51产品兼容l 2KB可重编程FLASH存储器l 耐久性:1000次写/檫除。l 2.7-6.0v的操作范围l 全静态操作:0HZ-24MHZ l 2级加密程序存储器l 128*8位内部RAMl 15条可编程I/O引线l 2个16位定时器/计数器l 6个中断源l 可编程串行UART通道l 直接LED驱动输出l 片内模拟比较l 低功耗空载和掉电方式。 图112引脚功能说明l Vcc: 电源电压l GND:地l P1口:P1口是一组8位双向I/O口,P1.2-P1.7提供内部上拉电阻,P1.0和p1.1内部无上拉电阻,主要是考虑它们分别是内部精密比较器的同相输入端(AIN0)和反相输入端(AIN1),如果需要应在外部接上拉电阻。P1口输出缓冲器可吸入20mA电流可直接驱动LED。当p1口引脚写入“1”时可作输入端,当引脚p1.2-p1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而输出电流。P1口还在Flash闪速变成及程序校验时接收代码数据。l P3口:p3口的p3.0-p3.5、p3.7是带有内部上拉电阻的7个双向I/O口。P3.6没有引出,他作为一个通用I/O口但不可访问,但可作为固定输入片内比较器的输出信号,P3口缓冲器可吸入20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。做输入时,被外部拉低的P3口将用上拉电阻输出电流。P3口还用于实现AT89C2051特殊功能,如下表所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。l RST:复位输入。RST引脚一旦变成两个机器周期以上高电平,所有的I/O口都将复位到“1”状态,当振荡器政治工作时,持续两个机器周期以上的高电平便可完成复位,每个机器周期为12个振荡时钟周期。l XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。l XTAL2:振荡器反相发党旗的输出端。 表11l 振荡器特征:XTAL1、XTAL2为片内振荡器的反相放大器的输入和输出端,如下图所示。可采用石英警惕或陶瓷振荡器组成时钟振荡器,如需从外部输入时钟驱动AT89C2051,时钟信号从XTAL1输入,XTAL2应悬空。由于输入靠内部电路是经过一个2分频触发器,所以输入的外部时钟信号无需特殊要求,但它必须符合电平的最大和最小值及时序规范。图12l 特殊功能寄存器:片内特殊功能寄存器(SFR)空间存储区的影象图如下表所示。并非存储区中所有的地址单元都被占用,未占用的地址单元亦不能使用,如果对其进行读访问一般返回为随机数,写访问也不确定。这些单元是为了以后利用这些未使用的地址单元扩展新功能而设置。所以用户软件不要对它们写“1”,在这种情况下,新位的复位或不激活值总为“0”。l 某些指令的约束条件:AT89C2051是经济型低价位的微控制器,它含有2K字节的Flash闪速程序存储器,指令系统与MCS-51完全兼容,可使用MCS-51指令系统对其进行编程。但是在使用某些有关指令进行编程时,需要注意一些事项。和跳转或分支有关的指令有一定的空间约束,使目的地址能安全在AT89C2051的2K字节的物理程序存储器空间内,必须注意这一点。对于2K字节存储器的AT89C2051来说,LJMP 7E0H是一条有效指令,而LJMP 900H则为无效指令。1. 分支指令对于LCALL、LJMP、ACALL、AJMP、SJMP、JMPA+DPTR等指令,只要记住这些分支指令的目的地址在程序存储器大小的物理范围内(AT89C2051程序空间为:000H-7FFH单元),这些无条件分支指令就会正确执行,超出物理空间的限制会出现不可预知的程序错误。CJNE.、DJNZ.、JB、JNB、JC、JNC、JBC、JZ、JNZ等这些条件转移指令的使用与上述原则一样,同样,超出物理空间的限制引起不可预知的程序错误。至于中断的使用,80C51系列硬件结构中已保留标准中断服务子程序的地址。2. 与MOVX相关的指令,数据存储器 AT89C2051包含128字节内部数据存储器,这样,AT89C2051的堆栈深度局限与内部RAM128字节范围内,它既不支持外部数据存储器的访问,也不支持外部程序存储器的执行,因此程序中不应有MOVX.指令。l 程序存储器的加密:AT89C2051使用对芯片上的两个加密进行编程或不编程来得到如下表所示的功能:表12l 空闲模式:在空闲模式下,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。P1.0和P1.1在不使用外部上拉电阻的情况下应设置为“0”,或者在使用上拉电阻的情况下设置为“1”。应注意的是:在 用硬件复位终止空闲模式时,AT89C2051通常从程序停止一直到内部复位获得控制之前的两个机器周期处恢复程序执行。在这种情况下片内硬件禁止对内部RAM的读写,但允许对端口的访问,要消除硬件复位终止空闲模式对端口意外写入的可能,原则上进入空闲模式指令的下一条指令不 应对端口引脚或外部存储器进行访问。l 掉电模式在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常的工作电平前,复位应无效,且必须保持一定时间以使振荡器重启并稳定工作。P1.0和P1.1在不使用外部上拉电阻的情况下应设置为“0”,或者在使用外部上拉电阻时应设为“1”。表13l Flash闪速存储器的编程:AT89C2051是在擦除状态下(也即所有单元内容均为FFH时)用2K字节内PEROM代码存储阵列进行封装微控制器,其程序存储器是可反复编程的。代码存储阵列依次编程一个字节,一旦阵列被编程,如需要新变成一非空(空为:FFH)字节,必须对整个存储器阵列进行点擦除。AT89C2051内FLASH闪存储器的编程和校验如图。l 内部地址计数器:AT89C2051内部包含一个PEROM编程地址计数器,它总在RST上升沿来时复位到00H,并在XTAL1引脚上出现正跳变脉冲时进行加1计数。l 编程方法:要对AT89C2051进行编程,使用以下方法。1. 上电次序:在VCC和GND引脚之间加上电源。设置RST和XTAL1为GND电平。其它引脚置空,等待至少10Ms以上。2. 置RST引脚为高电平,置P3.2引脚为高电平。3. 对引脚P3.3 、P3.4、P3.5、P3.7按下表正确组合上逻辑高“H” 或低“L”电平可对PEROM进行编程操作。表14编程和校验方法如下:4在000H地址单元对P1.0-P1.7输入数据代码字节。5置RST端为+12V,激活编程。 6使P3.2跳变依次来编程PEROM阵列中的一字节或者加密位,写字节周期是自身定时的,一般需时1.2ms。 7当校验已编程的数据,使RST从+12V降到逻辑电平“H”,置P3.3-P3.7引脚到正确的电平即可从P1口读取数据。 8对下一地址单元编程字节,使XTAL1引脚正脉冲跳变依次使地址计数器加1,在P1口输入新的书字节。 9重复5至8,可对整个2K字节阵列全部编程,直到目标文件结束。 10下电次序: 置XTAL1为低“L”电平 置RST为“L”电平 置空所有其它I/O引脚 关闭VCC电源l 数据查询:AT89C2051具有写周期结束的数据查询功能,在写周期期间,对最后写入的字节尝试读降令P1.7上写入数据的操作结束。当写周期完成,全部输出端的真实数据有效,同时下一个周期开始,数据查询可在写周期被初始化的任一时刻开始。l Ready/busy:字节编程的进度通过“RDY/BSY输出信号监测,编程期间,P3.1引脚在P3.2变高“H”后被拉低来指“BSY”,P3.1在编程结束后被再次拉高“H”来指示“RDY”。l 程序校验:如果加密位LB1、LB2没有进行编程,则代码数据可通过校验数据线读取:1. 使RST从“L”变为“H”,复位内部的地址计数器为000H。2. 对代码数据加上正确的控制信号即可在P1口引脚上读取数据。3. XTAL1引脚跳变一次使内部地址计数器加1。4. 从P1口读取下一个代码字节。5. 重复3到4步骤,即可将全部单元的数据读取。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。l 芯片擦除:利用控制信号的正确组合并保持P3.2引脚10ms的低电平即可将PEROM阵列(2K字节)和两个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1”可被再次编程之前进行。l 读片内签名字节:除P3.5、P3.7必须被拉成逻辑低电平外,读签名字节的过程和单元000H、001H及002H的正常校验相同,返回值意义如下:(000H)=1EH声明产品有ATMEL公司制造。(001H)=21H声明为89C2051单片机。l 编程接口:Flash闪速阵列中的每一代码字节进行写入且整个存储器可在控制信号的正确组合下进行擦除,写操作周期是自身定时的,初始化后它将自动定时到操作完成。表15AT89C2051的极限参数:图13外部时钟驱动波形: 图14注:AC输入测试期间是当电平VCC-0.5(逻辑1)和0.45V(逻辑0),实时测量VIH的最小值VH的最大值三语音芯片在单片机中系统的使用1、所谓语音芯片就是在人工或者是控制器的控制下可以录音和放音的芯片,在单片机中使用语音芯片时,需要考虑三个方面的内容,一个方面是如何使用isd系列的语音芯片,二是如何根据选择的isd芯片设计外围和单片机的接口电路,三是如何编写定时控制语音芯的单片机程序。功能模块分为三个方面:1 单片机系统:输出控制信号,控制语音芯片定时播放特定的语音。2 外围电路:实现外围电路的isd系列语音芯片,本电路所使用的是isd2560的芯片和单片机之间的接口电路。3 C51程序:编写定时一秒的程序,并在定时中断来时间来时播放语音芯片中的内容。器件和原理(1).什么是语音芯片?语言芯片就是人工或者是控制器的控制下可以录音和放音的芯片。比较典型的有美国的isd公司生产的isd系列语音芯片。Isd系列语音芯片采用模拟数据在半导体存储器直接存储的技术,即将模拟语音数据直接写入单个存储单元,不需要经过A/D或D/A转换,因此能够较好地真实再现语音的自然效果,避免了一般固体语音电路因为量化和压缩所造成的量化噪音和失真现象。另外芯片功能强大:既录即放,语音可掉电保护,10万次的檫写寿命,手动操作和cpu控制兼容,可多片级联,无须开发系统等,确实给欲实现语音功能的单片机应用设计人员提供了单片的解决方案。(2).如何选择合适的语音芯片?下面介绍比较流行的语音芯片,以及选择语音芯片的标准。目前,市场上的语音芯片和语音板很多,从价格性能比上看,美国isd公司的ISD系列录放芯片是比较好的,有以下特点:a. 使用直接电平存储技术,省去了A/D和D/A转换。b. 内部集成了大容量的EEPRPOM,不再需要扩展存储器。c. 控制简单,控制管脚与TTL电平兼容。d. 具有集成度高,音质好,使用方便等优点。(3).ISD2560的基本功能是什么?本电路将选择美国ISD公司的2560语音芯片。该芯片的引脚图如图所示,其基本特点和引脚的功能说明如下。(a).ISD2560系列具有抗断电,音质好,使用方便,无需专用的语音开发系统的特点。(b).片内EERPOM容量480KB,所以录放时间长,录放时间为90秒。(c).有10个地址输入端,寻址能力可达1024位。(d).语音最多能分600段,设有OVF溢出端,便于多个器件级联。l 地址线:A0A9。共有1024种组合状态。 最前面的600个状态作内部存储器的寻址用,最后256个状态作为操模式。l 电源:VCCA、VCCD。芯片内部的模拟和数字电路使用不同的电源总线。模拟和数字电源端最好分别走线。l 地线:VSSD、VSSA。芯片内部的模拟和数字也可使用不同的地线。l 节能控制:PD。本端拉高是芯片停止工作,进入不耗电的节能状态,芯片发生溢出,即OVF端输出低电平后,要将本端短暂变为高复位芯片,才能使之再次工作。、 l 片选:CE。本端变低后,而且PD为低,允许进行录放操作。芯片在本端的下降沿锁存地址线和P/-R端的状态。l 录放模式:P/-R。本端状态在/CE的下降沿锁存。高电平选择放音,低电平选择录音。l 信息结尾标志:EOM。EOM标志在录音时由芯片自动插入到该信息的结尾。放音遇到EOM时,本端输出低电平脉冲。芯片内部会检查电源电压以维护信息的完整性,当电压低于3.5V时,本端变低,芯片只能放音。 l 溢出标志:OVF。芯片处于存储空间末尾时本端输出低电平脉冲表示溢出,之后本端状态跟随CE端的状态,知道PD端变高。l 麦克输入:MIC。本端连至片内前置放大器的反向输入。片内自动增益控制(AGC)将置增益控制在-15DB至24DB。、l 自动增益控制:AGC。AGC动态调整前置增益以补偿话筒输入电平的宽度变化,使得录制变化很大的音量(从耳语到喧嚣声)时失真都能保持很小。l 模拟输出:ANA OUT。前置放大器的输出,前置电压增益取决于AGC端电平。l 模拟输入:ANA IN。本端为芯片录音信号的输出。对话筒输入来说ANA OUT端应通过外接电容连至本端。l 喇叭输出:SP+、SP-。过对输出端级驱动16欧以上的喇叭。单端使用时必须在输出端和喇叭间接耦合电容,而双端输出既不用电容又不能将功率提高至4倍。录音和节电模式下,它们保持为低电平。l 辅助输入:AUX IN。当/CE和P/-R为高,放音不进行,或处于放音溢出状态时,本端的输入信号过内部功放驱动喇叭输出端。当多个2560级联时,后级的喇叭输出通过本端连接到本级的输出放大器。l 外部时钟:XCLK。本端捏部有下拉元件,不用时应接地。芯片内部的采样始终在出厂前已调节器校,误差为+1%内。l 地址/模式输入:AX/MX。地址端有个作用,取决于最高两位(MSB,即2532/2548的A7和A8,或2560/2590/25120的A8和A9)的状态。当最高两位中有个为零时,所有输入均解释为地址位,做为当前录入操作的起始地址。地址端只做输入,不输出操作过程中的内部地址信息。ISD2560封装引脚图如下: ISD2560是ISD系列单片语音录放集成电路的一种,是一种永久记忆型录放语音电路,录音时间为60秒,能重复录放达10万次。它采用直接电平存储技术,省去了A/D、D/A转换器。ISD2560集成度高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器、和480KB 的EERPOM等。内部EERPOM存储单元,均匀分为600行,具有600个地址单元,每个地址单元指向其中一行,每一个地址单元的地址分辨率为100MS。ISD2560控制电平与TTL电平兼容,接口简单,使用方便。 ISD2560内置了若干操作模式,可用最少的外围器件实现最多的功能。操作模式也有地址端控制;当最高位都为1时,其他地址端最高就选择某个模式。因此操作模式和直接寻址相互排斥。操作模式可由微控制器也可有硬件实现。基本电路原理图如下:录音按下录音键接地,是PD端、P/R端为低电平,此时启动录音;结束时松开按键,单片机有让P/R端回到高电平,既完成一段语音的录制。同样的方法可录取第二段、第三段等。值得注意的是,录音时间不能超过预先设定的每段语音的时间。放音的操作更为简单,按下录音键接高电平,使P/D端P/R端为低电平启动方音功能;结束时,松开按键,即完成一段语音的播放。 在控制上,除去手动外,ISD器件也可以通过地址来精确定位,但它的地址不是字节地址单元,而是信息段的基本组成单位。以ISD2560为例,他内部的480KB的EERPOM均匀地规划为600行,每个地址单元指向其中一行,有600个地址单元.模式控制 功能 典型应用A0/M0 信息检索 快速检索信息A1/M1 删除EOM标志 在全部语音录放结束时,给出EOM标志A2/M2 未用 当工作模式 操作时,此端应接低电平A3/M3 循环放音 从0地址开始连续重复放音A4/M4 连续寻址 可录放连续的多段信息A5/M5 CE电平触发 允许信号中止A6/M6 按钮控制 简化器件接口十进制 二进制 信息时间(秒)A9A8A7A6A5A4A3A2A1A0 2560257525900 00 0 00 0 00 0 0 0 0 050 0 0 0 0 1 1 0 0 1 0 5.0 6.25 7.50100 0 00 1 1 0 0 10 0 10.0 12.50 15.00250 0 01 1 1 1 1 0 1 0 25.0 31.25 37.50300010 0 1 0 1 1 0 0 30.0 37.50 45.00400 0 1 10 0 1 0 0 0 0 40.0 50.00 60.00500 0 1 1 1 1 1 0 1 0 0 50.0 62.50 75.00599 10 0 1 0 1 0 1 1 1 59.9 74.8789.85ISD2560/90/120P地址功能表地址状态功能状态DIP开关123456789101112(ON=0,OFF=1)地址位A0A1A2A3A4A5A6A7A8A9P/RCE(1为高电平,0为低电平,*为高或低电平)0000000000一段式最长60秒录放音,从首地址开始。1000000000以十位二进制表示地址,每个地址代表100毫秒。地址模式0000000010一段从A6地址开始的12秒录放音。*0只要A8、A9有一位是0,就处于地址模式。*0*0001000011循环放音操作,按住CE键不放循环放音第一段。操作模式0000100011按顺序连续分段录放音,录音时压住CE键不放,放音时每触发一次CE键即放音一段,按PD键复位。每段语音长度不限。按钮模式0000001011 ISD2560的录放时间是605,因此地址分辨率是100MS。ISD器件可进行多段地址操作,每一段称为一个信息段,它可以占用一行和多行存储空间。一个地址单元最多只能作为一个独立的段。因此ISD2560最多可分为600个信息段。这就为在单片机系统中使用ISD2560语音芯片提供了基本条件。2.采样单片机控制语音芯片的好处ISD芯片完全可以手动,为什么还要使用单片机?我们可以从以下的两个方面考虑实际使用中的要求。l 单片机系统的需要。在一些应用场合,如手机花费查询系统、排队机以及公共汽车报站器等,这些应用中需要实现自动播音,而ISD2560实现自动播音的方法,最为简单的就是和单片机系统想连接。l 简化人工操作。通常情况下,只能使用ISD器件提供的无须知道地址的操作模式,即手动模式,这只适合于开发一些简单的语音功能,而无法满足复杂操作或者实时中应用的要求。为实现以上应用,最好使用对地址直接操作的办法。但在实际中,一些电路开发设计只是在基于语音信号已经写入芯片,并且段地址已经知道的基础上才能进行。然而,不可避免地要遇到必须将语音写入的时候。如果手动处理,采用按录音按键录音,按停止按键停止,假如录音段数特别多,就要频繁地按上述按键,实在让人疲惫不堪。此外,手动按下录音及停止按键的时间也是很难掌握,这就容易产生段间空白,造成芯片空间浪费,对语音段特别多,而语句有特别短的提示,如一些单字、单词更是浪费严重。不仅这样,由于断句中空白时间过长,合成方音时出现语音不连贯。正是由于上述原因,需要将单片机系统和语音芯片联系起来,形成一个智能化的语音播放系统。单片机需要完成以下两个功能:l 通过ISD2560芯片,录制一段语音信息l 利用单片机定时10秒,循环播放一段录制的语音3.电路设计本电路采用的主要器件是ISD2560语音芯片和单片机,具体接口电路如下:e. 电路原理和器件的选择下面是相关的、关键部分的器件名称及起在电路中的功能AT89C2051:主要通过对ISD2560的设置,完成对语音播放过程的控制。系统采用的微控制器是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同时也是片内精密比较器的正输入端(AIN0)和负输入端(AIN1)。P3口是7个带有内部上拉电阻的双向口(P3.6除外,其为片内比较器的输出脚,而不能作为普通的I/O口使用)。l ISD2560:语音芯片,在单片机的控制下实现语音的定时播放,并且可以通过按键实现录音功能。l SPEAKER:ISD2560语音芯片外接的扬声器。l MIC:ISD2560语音芯片外接麦克风。l D0D9:单片机和ISD2560语音芯片的地址连接,通过对D8、D9的设置,单片机可以控制芯片的工作方式。、l PD:节电控制,和单片机的P3.2口相连,单片机可以控制芯片的开关。l CE:片选,和单片机的p3.3口项链,单片机可以选中芯片。l P/R:录放模式,和单片机的p3.0口相连,单片机可以控制芯片处于录音或放音的工作状态。l EOM:信息结尾标志,和单片机的p3.1口相连,EOM标志在录音时有芯片自动插入到该信息的结尾。C功能简介 录音时,按下录音键,单片机通过D端口线设置语音段的起始地址,再使PD端、P/R端为低电平启动录音;结束时,松开按键,单片机有让P/R端回到高电平,即完成一段语音的录制。同样的方法可以录取第二段、第三段等。值得注意的是,录音时间不能超过预先设定的每段语音的时间。 放音时,根据需播放的语音内容,找到相应的语音段起始地址,并通过口线送出。P/R端设为低电平,并让/CE端产生一负脉冲启动放音,这时单片机只需要等待ISD2560信息结束信号。信号为一负脉冲,在负脉冲的上升沿,该段语音才播放结束,所以单片机必须要检测到的上升沿才能播放第二段,否则播放的语音就不连续。ISD2560与单片AT89C2051的接口电路以及外围电路如图 所示。单片机的P1口、P3.4和 P3.5分别与ISD2560的地址线相连,用以设置语音段的起始地址。P3.0P3.3用以控制录放音状态。P3.7连接一按键,供录音时使用。由TL7705构成可靠复位及电源监视电路。ISD2560虽然提供了地址输入线,但它的内部信息段的地址却无法读出。本系统采用单片机来控制,不需读出信息地址,而直接设置信息段起始地址。其实现方式有两种:一是由于ISD2560的地址分辨率为100 ms,所以可用单片机内部定时器定时100 ms,然后再利用一计数器对单片机定时次数进行计数,则计数器的计数值为语音段所占用的地址单元。该方式能充分利用ISD2560内部的E2PROM,在字段较多时可利用该方法。二是语音字段如果较少,则可根据每一字段的内容多少,直接分配地址单元。一般按每1 s说3个字计算,60 s可说180个字,再根据ISD2560的地址分辨率为100 ms,即可计算出语音段所需的地址单元数。本电路采用第二种方式。2.程序设计录音源程序: START: MOV R7,#00H MOV P1,#00H CLR P3.4 ;ISD2560地址初始化 CLR P3.5 CLR P3.2 CLR P3.0 ;设置为录音状态LOOP: JB P3.7,LOOP ;录音键按下否? INC R7 CALL PRESS LJMP LOOPPRESS: CJNE R7,#1,NEXT1 MOV P1,#00H ;送字段1起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACKNEXT1: CJNE R7,#2,NEXT2 MOV P1,#20H ;送字段2起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACKNEXT2: CJNE R7,#3,NEXT3MOV P1,#40H ;送字段3起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACKNEXT3: CJNE R7,#4,NEXT4 MOV P1,#60H ;送字段4起始地址 CLR P3.4 CLR P3.5 LCALL RECORD JMP BACKNEXT4: CJNE R7,#5,BACK MOV R7,#00H MOV P1,#80H ;送字段5起始地址 CLR P3.4 CLR P3.5 LCALL RECORDBACK: RETRECORD: CLR P3.3 ;/CE端为低,开始录音 JNB P3.7,$ SETB P3.3 RET放音源程序: BEGIN: SETB 20H.0 ; 置放音标志 SETB P3.0 ;置放音状态 MOV P1,#00H ;ISD2560地址初始化 CLR P3.4 CLR P3.5 MOV R0,2FH ;放音起始地址送R0LOOP1: JB 20H.0,LOOP1 LCALL PLAY ;20H.0=0 调放音程序 JMP LOOP1PLAY: INC R0 LCALL FIND ;调查找播放地址子程 CJNE R0,#5,OUT MOV R0,#2FHOUT: RETFIND: MOV A,R0 ;查找播放语音地址 CJNE A,#1,PNEX1 MOV P1,#00H ;若A=#1放第一段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACKPNEX1: CJNE A,#2,PNEX2 MOV P1,#20H ;若A=#2放第二段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACKPNEX2: CJNE A,#3,PNEX3 MOV P1,#40H ;若A=#3放第三段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACKPNEX3: CJNE A,#4,PNEX4 MOV P1,#60H ;若A=#4放第四段 CLR P3.4 CLR P3.5 CALL SOUND JMP PBACKPNEX4: CJNE A,#5,PBACK MOV P1,#80H ;若A=#5放第五段 CLR P3.4 CLR P3.5 CALL SOUNDPBACK: RETSOUND: CLR P3.3 ;/CE端形成一负脉冲启 NOP ;动播放 NOP SETB P3.3TURN1: JB P3.1,TURN1 ;等待语音段结束信号TURN2: JNB P3.1,TURN2 ;等待EOM信号的上升沿 RET致 谢在两个多月的课题研究及论文撰写过程中,我非常感谢我的导师老师。无论是在课题立项还是在课题的研究阶段,张老师都给了我很大的帮助。在毕业设计的这段时间中,李老师不仅使我在学业上有了很大的提高,而且言传身教,使我学到了作为一名大学生所应具备的那种踏实勤恳、一丝不苟、认真求实的优良品质和学习作风。在我进行课题内容的研究中,从技术上给予了我极大的帮助和支持,而且在论文的最后评阅过程中,也给我提出了非常有价值的意见,使我获益极深。衷心地谢谢您,张老师!同时,我还要感谢电子实验室的杨旭杨老师,无论是从资料上,还是从经验和技术上都提供了极大的帮助。并一直坚持向我提供最新技术资料,使毕业设计得以最后完成。最后,对所有在这三年年里的学习和生活中,给予我各种关心我帮助的人们,我仅表达我最衷心的谢意!谢谢你们!参 考 文 献1 余永权. ATMEL89系列单片机应用技术M. 北京:北京航空航天大学出版社.2 2002 数码语音芯片、产品及应用电路资料汇编M. 3 刘欣,等. IDS语音器件分段地址的获取J. 电子技术应用,1999(10)4 求是科技.单片机模块设计实例导航.人民邮电出版社5 MCS-51单片机接口技术与运用李华 北京航天航空大学出版社6 单片机接口技术与运用胡汉才 清华大学出版社7 周航慈. 单片机应用程序设计技术(修订版)M. 北京:北京:北京航空航天大学出版社,2002.478 单片微型机原理应用与实验,第三版张友德 等编 复旦大学出版社AT89C52资料:Features Compatible with MCS-51TM Products 8 Kbytes of In-System Reprogrammable Flash MemoryEndurance: 1,000 Write/Erase Cycles Fully Static Operation: 0 Hz to 24 MHz Three-Level Program Memory Lock 256 x 8-Bit Internal RAM 32 Programmable I/O Lines Three 16-Bit Timer/Counters Eight Interrupt Sources Programmable Serial Channel Low Power Idle and Power Down ModesDescriptionThe AT89C52 is a low-power, high-performance CMOS 8-bit microcomputer with 8 Kbytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmels high density nonvolatile memory technology and is compatible with the industry standard 80C51 and 80C52 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C52 is a powerful microcomputer which provides a highly flexible and cost effective solution to many embedded control applications. The AT89C52 provides the following standard features: 8 Kbytes of Flash, 256 bytes of RAM, 32 I/O lines, three 16-bit timer/counters, a six-vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator, and clock circuitry. In addition, the AT89C52 isDescription (Continued)designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Power Down Mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next hardware reset.Pin DescriptionVCCSupply voltage.GNDGround.Port 0Port 0 is an 8-bit open drain bidirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs.Port 0 can also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode, P0 has internal pullups. Port 0 also receives the code bytes during Flash programming and outputs the code bytes during program verification. External pullups are required during program verification.Port 1Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups. In addition, P1.0 and P1.1 can be configured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX), respectively, as shown in the following table.Port 1 also receives the low-order address bytes during Flashprogramming and program verification.port 2 is an 8-bit bidirectional I/O port with internal pullups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins,
展开阅读全文