找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14979|回复: 0
收起左侧

基于单片机控制语音芯片的录放音系统的设计

[复制链接]
ID:189602 发表于 2017-7-12 08:39 | 显示全部楼层 |阅读模式

目  录
[摘要]
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, amicrocomputer 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   combinationreturn play
一.AT89C2051概述
(一).单片机概述
l  单片机的概念
电子计算机的发展经理了从电子管、晶体管、集成电路到大规模集成电路共四个阶段,即通常所是说的第一代、第二代、第三代和第四代计算机。现在广泛使用的微型计算机是大规模集成电路技术的产物,因此它属于第四代计算机,而单片机则是卫星计算机的一个分支。从1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个不同的方向发展:一个是向高速度、大容量、高性能的高档微机方向发展;而另一个则是想稳定可靠、体积小和价格廉的单片机方向发展。但两者在原理和技术上是紧密联系的。
l 通用单片机和专用单片机
根据控制应用的需要,可以将单片机分为通用型和专用行。
通用型单片机是一种基本芯片,它的内部资源比较丰富,性能全面且适用性强,能覆盖多种应用需求。用户可以根据需要设计成各种不同应用的控制系统,即通用单片机有一个再设计过程,通过用户的进一步设计,才能组建成一个以单片机为核心再配以其他外围电路的应用控制系统。
专用型的单片机主要是应用在专门针对某个特定产品的,例如电镀表和IC卡读写器上的单片机等。这种应用的最大特点是针对性强而且数量巨大。
本电路所使用的是通用型的单片机AT89C2051
89系列单片机有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位内部RAM
l 15条可编程I/O引线
l 2个16位定时器/计数器
l 6个中断源
l 可编程串行UART通道
l 直接LED驱动输出
l 片内模拟比较
l 低功耗空载和掉电方式。
图1—1
2.引脚功能说明
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:振荡器反相发党旗的输出端。
         
                         表1—1
l 振荡器特征:
XTAL1、XTAL2为片内振荡器的反相放大器的输入和输出端,如下图所示。可采用石英警惕或陶瓷振荡器组成时钟振荡器,如需从外部输入时钟驱动AT89C2051,时钟信号从XTAL1输入,XTAL2应悬空。由于输入靠内部电路是经过一个2分频触发器,所以输入的外部时钟信号无需特殊要求,但它必须符合电平的最大和最小值及时序规范。
图1—2
l 特殊功能寄存器:
片内特殊功能寄存器(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、JMP@A+DPTR等指令,只要记住这些分支指令的目的地址在程序存储器大小的物理范围内(AT89C2051程序空间为:000H-7FFH单元),这些无条件分支指令就会正确执行,超出物理空间的限制会出现不可预知的程序错误。CJNE[….]、DJNZ[….]、JB、JNB、JC、JNC、JBC、JZ、JNZ等这些条件转移指令的使用与上述原则一样,同样,超出物理空间的限制引起不可预知的程序错误。至于中断的使用,80C51系列硬件结构中已保留标准中断服务子程序的地址。
2.   与MOVX相关的指令,数据存储器
   AT89C2051包含128字节内部数据存储器,这样,AT89C2051的堆栈深度局限与内部RAM128字节范围内,它既不支持外部数据存储器的访问,也不支持外部程序存储器的执行,因此程序中不应有MOVX[….]指令。
l 程序存储器的加密:
AT89C2051使用对芯片上的两个加密进行编程或不编程来得到如下表所示的功能:
表1—2
l 空闲模式:
在空闲模式下,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。
P1.0和P1.1在不使用外部上拉电阻的情况下应设置为“0”,或者在使用上拉电阻的情况下设置为“1”。
应注意的是:在 用硬件复位终止空闲模式时,AT89C2051通常从程序停止一直到内部复位获得控制之前的两个机器周期处恢复程序执行。在这种情况下片内硬件禁止对内部RAM的读写,但允许对端口的访问,要消除硬件复位终止空闲模式对端口意外写入的可能,原则上进入空闲模式指令的下一条指令不 应对端口引脚或外部存储器进行访问。
l 掉电模式
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常的工作电平前,复位应无效,且必须保持一定时间以使振荡器重启并稳定工作。
P1.0和P1.1在不使用外部上拉电阻的情况下应设置为“0”,或者在使用外部上拉电阻时应设为“1”。
表1—3
l 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进行编程操作。
表1—4
编程和校验方法如下:
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闪速阵列中的每一代码字节进行写入且整个存储器可在控制信号的正确组合下进行擦除,写操作周期是自身定时的,初始化后它将自动定时到操作完成。
表1—5
AT89C2051的极限参数:
图1—3
外部时钟驱动波形:
图1—4
注: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 地址线:A0—A9。共有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               
   
按钮控制               
   
简化器件接口
  
十进制                                      
      
二进制   
   
信息时间(秒)
   
A9
   
A8
   
A7
   
A6
   
A5
   
A4
   
A3
   
A2
   
A1
   
A0   
   
2560
   
2575
   
2590
   
0   
   
0
   
0  
   
0   
   
0
   
0   
   
0  
   
0
   
0   
   
0
   
0      
   
0  
   
    0     
   
   0
   
50
   
0
   
0
   
0   
   
0
   
1  
   
1  
   
0  
   
0   
   
1   
   
0   
   
5.0
   
6.25
   
7.50
   
100
   
0  
   
0
   
0
   
1  
   
1
   
0  
   
0   
   
1
   
0  
   
0
   
10.0
   
12.50
   
15.00
   
250
   
0
   
0
   
1  
   
1  
   
1   
   
1   
   
1
   
0   
   
1  
   
0  
   
25.0      
   
31.25
   
37.50
   
300
   
0
   
1
   
0
   
0   
   
1   
   
0     
   
1   
   
1   
   
0     
   
0   
   
30.0
   
37.50  
   
45.00
   
400
   
0
   
1
   
1
   
0
   
0
   
1   
   
0   
   
0   
   
0  
   
0     
   
40.0
   
50.00
   
60.00
   
500
   
0
   
1
   
1      
   
1   
   
1   
   
  1   
   
0   
   
1  
   
0
   
0
   
50.0
   
62.50  
   
75.00
   
599
   
1
   
0
   
0     
   
1     
   
0   
   
1  
   
0
   
1   
   
1  
   
1     
   
59.9   
   
74.87
   
89.85
   

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
ISD2560/90/120P地址功能表
   
地址状态
   
功能状态
DIP开关
   
1
   
2
   
3
   
4
   
5
   
6
   
7
   
8
   
9
   
10
   
11
   
12
   
(ON=0,OFF=1)
地址位
   
A0
   
A1
   
A2
   
A3
   
A4
   
A5
   
A6
   
A7
   
A8
   
A9
   
P/R
   
CE
   
(1为高电平,0为低电平,*为高或低电平)
      
0
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
        
      
一段式最长60秒录放音,从首地址开始。
      
1
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
        
      
以十位二进制表示地址,每个地址代表100毫秒。
地址模式
      
0
        
0
        
0
        
0
        
0
        
0
        
0
        
0
        
1
        
0
        
        
      
一段从A6地址开始的12秒录放音。
      
*
        
*
        
*
        
*
        
*
        
*
        
*
        
*
        
*
        
0
        
        
      
只要A8、A9有一位是0,就处于地址模式。
      
*
        
*
        
*
        
*
        
*
        
*
        
*
        
*
        
0
        
*
        
        
      
   
0
   
0
   
0
   
1
   
0
   
0
   
0
   
0
   
1
   
1
   
   
   
循环放音操作,按住CE键不放循环放音第一段。
操作模式
   
0
   
0
   
0
   
0
   
1
   
0
   
0
   
0
   
1
   
1
   
   
   
按顺序连续分段录放音,录音时压住CE键不放,放音时每触发一次CE键即放音一段,按PD键复位。每段语音长度不限。
按钮模式
      
0
        
0
        
0
        
0
        
0
        
0
        
1
        
0
        
1
        
1
        
        
      
   
   
   
   
   
   
   
   
   
   
   
   
   
   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字节可编程的FlashMemory、128字节RAM、15根I/O线、2个16位定时/计数器、1个全双向的串口、1个精密比较器。其与工业标准MCS-51的指令集和引脚结构完全兼容。
该单片机的P1口是一个双向I/O口,其中P1.2~P1.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 D0—D9:单片机和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.0~P3.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   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   ;送字段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
放音源程序:      
BEGIN: SETB    20H.0 ; 置放音标志
       SETB   P3.0   ;置放音状态
     MOVP1,#00H   ;ISD2560地址初始化
       CLR    P3.4
       CLR    P3.5
     MOVR0,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放第一段
      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
PNEX4: 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
致  谢
在两个多月的课题研究及论文撰写过程中,我非常感谢我的导师—张冀祥老师。无论是在课题立项还是在课题的研究阶段,张老师都给了我很大的帮助。在毕业设计的这段时间中,李老师不仅使我在学业上有了很大的提高,而且言传身教,使我学到了作为一名大学生所应具备的那种踏实勤恳、一丝不苟、认真求实的优良品质和学习作风。在我进行课题内容的研究中,从技术上给予了我极大的帮助和支持,而且在论文的最后评阅过程中,也给我提出了非常有价值的意见,使我获益极深。衷心地谢谢您,张老师!
同时,我还要感谢电子实验室的杨旭杨老师,无论是从资料上,还是从经验和技
术上都提供了极大的帮助。并一直坚持向我提供最新技术资料,使毕业设计得以
最后完成。最后,对所有在这三年年里的学习和生活中,给予我各种关心我
帮助的人们,我仅表达我最衷心的谢意!谢谢你们!
参 考 文 献
1 余永权. ATMEL89系列单片机应用技术[M].北京:北京航空航天大学出版社.
2    2002 数码语音芯片、产品及应用电路资料汇编[M].
3   刘欣,等. IDS语音器件分段地址的获取[J]. 电子技术应用,1999(10)
4   求是科技.单片机模块设计实例导航.人民邮电出版社
5  《MCS-51单片机接口技术与运用》李华北京航天航空大学出版社
6  《单片机接口技术与运用》胡汉才 清华大学出版社
7   周航慈. 单片机应用程序设计技术(修订版)[M]. 北京:北京:北京航空航天大学出版社,2002.47
8  《单片微型机原理`应用与实验,第三版》张友德等编 复旦大学出版社
AT89C52资料:
Features
· Compatible with MCS-51TM Products
· 8 Kbytes of In-System Reprogrammable Flash Memory
Endurance: 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
· LowPower Idle and Power Down Modes
Description
The AT89C52 is a low-power, high-performance CMOS 8-bit microcomputer with8 Kbytes of Flash programmable and erasable read only memory (PEROM). Thedevice is manufactured using Atmel’s high density nonvolatile memory technologyand is compatible with the industry standard 80C51 and 80C52 instruction setand pinout. The on-chip Flash allows the program memory to be reprogrammedin-system or by a conventional nonvolatile memory programmer. By combining aversatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C52 is apowerful microcomputer which provides a highly flexible and cost effective solutionto many embedded control applications. The AT89C52 provides the followingstandard features: 8 Kbytes of Flash, 256 bytes of RAM, 32 I/O lines, three16-bit timer/counters, a six-vector two-level interrupt architecture, a fullduplex serial port, on-chip oscillator, and clock circuitry. In addition, theAT89C52 is
Description (Continued)
designed with static logic for operation down to zero frequency andsupports two software selectable power saving modes. The Idle Mode stops theCPU while allowing the RAM, timer/counters, serial port, and interrupt systemto continue functioning. The Power Down Mode saves the RAM contents but freezesthe oscillator, disabling all other chip functions until the next hardware reset.
Pin Description
VCC
Supply voltage.
GND
Ground.
Port 0
Port 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, thepins can be used as high-impedance inputs.
Port 0 can also be configured to be the multiplexed low-order address/databus during accesses to external program and data memory. In this mode, P0 hasinternal pullups. Port 0 also receives the code bytes during Flash programming andoutputs the code bytes during program verification. External pullups arerequired during program verification.
Port 1
Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1pins, 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 beconfigured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter2 trigger input (P1.1/T2EX), respectively, as shown in the following table.
Port 1 also receives the low-order address bytes during Flashprogrammingand program verification.
port 2 is an 8-bitbidirectional I/O port with internal pullups. The Port 2 output buffers cansink/source four TTL inputs. When 1s are written to Port 2 pins, they arepulled high by the internal pullups and can be used as inputs. As inputs, Port2 pins that are externally being pulled low will source current (IIL) becauseof the internal pullups. Port 2 emits the high-order address byte duringfetches from external program memory and during accesses to external data memorythat use 16-bit addresses (MOVX @ DPTR). In this application, Port 2 usesstrong internal pullups when emitting 1s. During accesses to external datamemory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of theP2 Special Function Register. Port 2 also receives the high-order address bitsand some control
signals during Flash programming and verification.
Port 3
Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3pins, they are pulled high by the internal pullups and can be used as inputs.As inputs, Port 3 pins that are externally being pulled low will source current(IIL) because of the pullups. Port 3 also serves the functions of variousspecial features of the AT89C51, as shown in the following table.
Port 3 also receives some control signals for Flash programming andprogramming verification.
RST
Reset input. A high on this pin for two machine cycles while the oscillatoris running resets the device.
ALE/PROG
Address Latch Enable is an output pulse for latching the low byte of theaddress during accesses to external memory. This pin is also the program pulseinput (PROG) during Flash programming.
In normal operation, ALE is emitted at a constant rate of 1/6
the oscillator frequency and may be used for external timing or clockingpurposes. Note, however, that one ALE pulse is skipped during each access toexternal data memory. If desired, ALE operation can be disabled by setting bit 0of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVCinstruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disablebit has no effect if the microcrontroller is in external execution mode.
PSEN
Program Store Enable is the read strobe to external program memory. Whenthe AT89C52 is executing code from external program memory, PSEN is activatedtwice each machine cycle, except that two PSEN activations are skipped duringeach access to external data memory.
Pin Description (Continued)
EA/VPP
External Access Enable. EA must be strapped to GND in order to enable thedevice to fetch code from external program memory locations starting at 0000Hup to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internallylatched on reset. EA should be strapped to VCC for internal program executions.This pin also receives the 12-volt programming enable voltage (VPP) duringFlash programming when 12-volt programming is selected.
XTAL1
Input to the inverting oscillator amplifier and input to the internal clockoperating circuit.
XTAL2
Output from the inverting oscillator amplifier.
Special FunctionRegisters
A map of the on-chip memory area called the Special Function Register(SFR) space is shown in Table 1. Note that not all of the addresses areoccupied, and unoccupied addresses may not be implemented on the chip. Readaccesses to these addresses will in general return random data, and write accesseswill have an indeterminate effect. User software should not write 1s to theseunlisted locations, since they may be used in future products to invoke newfeatures. In that case, the reset or inactive values of the new bits will alwaysbe 0.
Timer 2 Registers Control and status bits arecontained in registers T2CON (shown in Table 2) and T2MOD (shown in Table 4)for Timer 2. The register pair (RCAP2H, RCAP2L) are
the Capture/Reload registers for Timer 2 in 16-bit capture mode or 16-bitauto-reload mode.
Special FunctionRegisters (Continued)
Interrupt Registers The individual interrupt enablebits are in the IE register. Two priorities can be set for each of the sixinterrupt sources in the IP register.
Data Memory
The AT89C52 implements 256 bytes of on-chip RAM. The upper 128 bytesoccupy a parallel address space to the Special Function Registers. That meansthe upper 128 bytes have the same addresses as the SFR space but are physicallyseparate from SFR space. When an instruction accesses an internal locationabove address 7FH, the address mode used in the instruction specifies whether theCPU accesses the upper 128 bytes of RAM or the SFR space. Instructions that usedirect addressing access SFR space.
AT89C52
主要性能参数:
l  与MCS-51产品指令和引脚完全兼容
l  8K字节可重复檫写FLASH闪速存储器
l  1000次檫写周期
l  全静态操作:0HZ-24HZ
l  三级加密程序存储器
l  256X8字节内容RAM
l  32个可编程I/O口线
l  3个16位定时/计数器
l  8个中断源
l  可编程串行UART通道
l  低功耗空闲和掉电模式
功能特性概述:
AT89C52提供以下标准功能:8K字节闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,可降至0HZ的静态逻辑操作,并支持良种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电模式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
引脚功能说明
l  VCC:电源电压
l  GND:地
l  P0口:P0口是一组8位漏极开路双向I/O口,也即地址/数据总线服用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对断口P0写“1‘时,可作为高阻抗输入端用。
在访问外部数据存储器或 程序存储器时,这组口线分时转换地址和数据总线复用,在访问激活内部上拉电阻。
在FLASH编程时间,P0口接受指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。
l  P1口:是一个带内部上拉电阻的8位双响I/O口,P1输出缓冲级可驱动4个TTL逻辑门电路。对断口写“1“,通过内部的上拉电阻把断口拉倒高电平,此时可作输入口。做输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
l  P2口:是一个带有内部上拉电阻的8位双响I/O口,P2的输出缓冲可驱动4个TTL逻辑门电路。对断口P2写1,通过内部的上拉电阻把断口拉倒高电平,此时可作输入口,做输入口使用时,因为内部存在上拉电阻,某个引酵被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口输出P2锁存器内容。
l  P3口:P3口是一组带有内部上拉电阻的8位双响I/O口。P3口输出缓冲可驱动4个TTL逻辑门电路。对P3口写入“1“时间,它们被内部上拉电阻拉高并可作为输入断口。此时,被外部拉低的P3口将用上拉电阻输出电I流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。
此外,P3口还接收一些用语FLASH闪速存储编程和程序校验的控制信号。
l  RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
l  ALE/PROG;当访问外部程序存储器或数据存储器时ALE输出脉冲用语锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时间、将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入变成脉冲。
l  PSEN:程序存储允许输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令时,每个机器周期量词有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次信号。
l  EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平接。需注意的是;如果加密LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平,CPU则执行内部程序存储器中的指令。
FLASH存储器编程时间,该引脚加上+12的变成允许电源,当然这必须是该器件是使用12编程电压。
l  XTAL1:振荡器反相放大器的及内部时钟发生器的输入端
l  XTAL2;振荡器反相放大器的输出端
l  特殊功能寄存器:
在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器,SFR的地址空间影象
并非所有的地址都被定义,从80H-FFH共128个字节只有一部分被定义,还 有相当一部分没有定义。对没有定义的单元读写是无效的,读出的数值将不确定,而写入的数据也将丢失。
不应将数据“1”写如未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
l   中断寄存器:
AT89C52有6个中断源,2个中断优先级,IE寄存器控制各中断位,IP寄存器中6个中断源的每一个可定为2个优先级。
l   数据存储器:
AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器地址是重叠的也是高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节RAM还是访问特殊寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表