基于语音合成芯片TC8830AF的语音报时系统的设计_第1页
基于语音合成芯片TC8830AF的语音报时系统的设计_第2页
基于语音合成芯片TC8830AF的语音报时系统的设计_第3页
基于语音合成芯片TC8830AF的语音报时系统的设计_第4页
基于语音合成芯片TC8830AF的语音报时系统的设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学学士学位论文 PAGE32PAGE33目录绪论 1第1章语音合成技术概述 21.1语音信号 21.1.1语音有关的术语概念 21.1.2语音信号的采样频率 21.2语音的数字合成方法 21.2.1波形存储法 21.2.2参数合成法 31.2.3规则合成法 31.3语音记录与语音库的建立 41.3.1语音记录 41.3.2语音库的建立 41.4语音输出与语音库的调取 51.4.1语音输出 51.4.2语音库的调取 5第2章8031单片机功能简介 62.18031单片机的组成及结构 62.1.18031单片机的基本组成 62.1.28031单片机处理器及内部结构 62.28031单片机的引脚功能 72.3CPU时序 92.48031单片机的指令系统 92.58031的中断系统 102.5.1中断的定义 102.5.2中断系统 102.5.3中断响应 11第3章语音芯片TC8830AF的基础知识和外围电路 123.1语音芯片TC8830AF简介 123.2引脚功能 133.3操作原理 143.3.1如何完成命令的写入 143.3.2TC8830AF语音芯片11种命令简要说明 143.3.3TC8830AF语音芯片状态寄存器简介 153.3.4声音再生的有关流程框图 163.3.5标记索引方式下的操作 163.4TC8830AF语音合成芯片的外围电路 18第4章语音报时系统的设计 194.1语音报时系统的总体设计思想及工作原理 194.2语音报时系统的硬件设计 194.2.1硬件的模块化设计 194.2.2语音报时系统的硬件总体设计 214.3语音报时系统的软件设计 244.3.1语音录制系统的软件设计 244.3.2语音报时系统的软件设计 25设计小结 331系统评价 332体会 33致谢 34参考文献 35附录源程序清单 36绪论随着现代社会电子技术的发展和生产生活实际的需求,语音合成电路的应用将日益广泛。尤其用在智能仪器仪表上,能使设备的功能增强,给使用者带来极大方便。在许多不便于直接目测的场合,将检测结果用语音输出,实现以耳听代替目测,会收到很好的效果。目前,市场上已有许多语音合成芯片供选择、开发应用,如ISD4002、TMS3477、YYH16、T6668和TC8830AF等都具有较强的记录功能,可以应用于许多语音专用系统。本次设计选用高级语音处理器TC8830AF语音合成芯片,这种语音芯片是由东芝公司推出的使用自适应增量δ调制(ADM)方式的大规模集成电路,连接EPROM27256固化语音数据,外围配置扬声器和放大器组成的音频电路。单片机8031给出语音存放的地址信号和控制信号可实现语音的录制和放音,达到报时的目的。本课题在具体设计前详细介绍了语音合成的基本原理,叙述了三种语音合成的方法:波形存储法,分析合成方式以及规则合成方式,并对波形存储方式及其分类做了详细叙述。了解基本原理之后,就进入了设计部分。本课题既详细介绍了TC8830AF语音芯片的特点、结构、基本工作原理及其外围电路,同时又对8031微处理器的结构和基本原理做了简要的叙述,并且在此原理及特性基础上进行语音报时系统的硬件及软件设计。

第1章语音合成技术概述1.1语音信号1.1.1语音有关的术语概念(1)语音由人的声道发出的声音,主要由共振峰确定其频率特性。(2)发音所谓发音是指出语音的基本生理过程。语声波形是一种声压波。语音主要是由于声带振动而发出的声能。(3)声道声道是一根从声门延伸到嘴唇的非均匀截面的声管,它的形状变化是时间的函数。(4)共振峰由一些语音引起声道共振,组成一个音响共鸣系统。声道管的谐振频率和声道的形状与大小有关,每种形状都有一种或一套共振峰频率作为特征。(5)滑音是一种中间形式,即发音时,从某个音素A变化到另一个音素B时,便产生一种从A的固有发音形式转向B的固有发音形式的中间发音形式。1.1.2语音信号的采样频率香农采样定理表明,语音信号的采样频率是语音所必需的频带宽度的2倍以上。例如,要保持最高频率为5kHz带宽的频谱,采样频率最低必须为10kHz。人的耳朵可听到频率为20Hz-20kHz的声音。在处理连续语音时,我们可以根据前后的信息进行估计与识别的处理,所以用8kHz就足以胜任了。对语音信号进行采样的频率叫做采样频率,将采样频率f乘以语音信号采样值的编码位数m,即f×m,就得到了表征语音合成芯片的一个重要参数指标——比特率。f×m,就是存储1秒钟的语音信息所必需的位数,其数值与传输语音信号的线路所必需的频带宽度有关系。1.2语音的数字合成方法1.2.1波形存储法波形存储法是一种相对简单的语音合成技术。其基本思想和作法是:首先由人讲一些单词、词组或短语,在内存中建立特别的词汇语音库,然后就可以在今后的处理过程中,将相应的数字量调取出来。在建立词汇语音库的过程中,将特定的单词、词组或短语的声波波形通过转变成数字信号而存入存储单元中。图1.1所示为波形存储法的过程示意图。预处理。将含有所需单词、句的话音由声转电信号预处理。将含有所需单词、句的话音由声转电信号采样获得语音信号的数字表示建立所要求的语音库存储器待合成内容计算机根据词汇表结构,按一定规则获取语音数据组织逻辑语音合成装置功放扬声器图1.1波形存储法过程示意图1.2.2参数合成法参数合成法也称为分析合成法,是一种比较复杂的方法,它是基于分析与模拟人的发音器官,以便寻求并建立描述过程。可以有共振峰、频谱包络和声道滤波三种方式来提取语音信息,因此这种方法不是直接利用人发出的声音,而是从人的语音中提取与语音参数有关的特征参数。最常用的方法是提取PARCOR系数(偏自相关系数)和LPC系数(线性预测系数)。在合成过程中,通过相应数学模型的计算去人工控制这些参数的合成。实现合成的方法,则因线性预测系数、语音共振峰等而各不相同。利用这种方法,信息量可压缩到1200—9600bps。另外,所提取出的PARCOR系数也好,LPC系数也好,都是将数据存放入计算机内存中,当要合成某个语音时,就去调用已存储在相应的内存单元中的系数,通过有关运算还原出数字语音,以便最终获取声音。不过,这种方式也受内存容量的限制,所能合成的词汇数也是有限的。图1.2所示是用参数合成法实现的语音输出系统原理示意图。CPUCPU存储器I/O接口电路通信接口语音合成部分专用存储器控制接口电路语音合成器总线上位机扬声器图1.2用参数合成法的装置框图1.2.3规则合成法规则合成法以音素法为例,它将每个发音的音素(对应具有固定或一定范围的频率)所表示的语音信号存储起来,拼音时随时取用。这种以最小单位进行的方法,实现起来挺麻烦,而且更复杂困难。1.3语音记录与语音库的建立语音合成是语音模拟信号经过采样,在计算机内存中反映为一个数字序列;而当这一数字序列最终输出时,为一特定语音的过程。那么这一数字序列就是表征一定意义的语音词汇,将有关这些数字序列存储起来,就是创建语音库的过程。1.3.1语音记录语音的产生是语声经过话筒,靠振膜接受声波振动,并转变为电信号。话筒分动圈式、驻极体电容式等类型,关于这两种类型的话筒分别叙述如下:动圈式它是依靠振膜的机械振动带动置于磁场中的线圈振动,从而引起磁场的变化,在线圈上产生变化的电信号。话筒内部线圈与振膜直接相连,振膜的振动带动线圈的振动,将声能变成机械能,并由机械能转为电能的形式。驻极体电容式这种话筒时利用永久性带有电荷的塑料薄膜做振膜,不受外部电场和磁场的影响。当受到声波的作用后,振膜产生振动,引起电级之间电场的变化,而后将这种固定电级之间的变化转变为电信号。当话筒将声波转化为电能后,再经模/数转换,便可得到数字表征的语声信号,通过分析或处理再由存储器存储这些数字序列,便将语音以数字表征的形式记录下来。1.3.2语音库的建立在波形语音合成方式里,我们得到的是语音的数字编码形式,记载的数字编码如一一得以复原,则可复述原先所记录的语音。由于语音发出的过程是以时间为基本轴的,这势必会造成停顿时间过长的缺点,以至于浪费内存,为此,需要根据时间轴来进行录音编辑。关于编辑的基本思想是这样的:第一,将所需的字、词或句通过话筒输入,并由语音合成芯片转换成数字量保存在存储器中;第二,由计算机控制存储器内容得以复原后与时间有关,因此需要反复调整时间,以决定某一字、词或句子在一个存储器里所处的以时间为轴的具体位置,或者确定在存储器中的地址。在参数合成法或规则合成法里,我们需要的字、词或语句将表征为一系列参数。建立语音库时应记录语音信号的抽象表示形式,即以各种参数描述的有关字、词或句子的表示方式。因为各个参数针对一定字、词或句子都是具有联系意义的,彼此相辅而成,因此关于这二种方式的语音库建立可以按照如下形式进行:第一,由磁带式录音机录制字、词或句,并尽可能将有关语声之间因发音受阻碍或停顿消除,然后进行分析、计算处理,取得参数编码,再由该类语音合成芯片的专用语音存储器来存储参数,或交由计算机来管理。第二,基于波形编码方式的输出结果,即通过波形编码方式获取有关语音库后,再由计算机控制,以便将这种语音库转变为由另一参数表示的语音库。1.4语音输出与语音库的调取语音输出有很多种转换形式,但都可以归纳为采用波形编码形式的数字编码进行解译的过程,也可以说是用波形合成法或规则合成法各参数控制输出的过程。输出的最终形式是将语音通过扬声器得以传播出去。1.4.1语音输出语音输出是将电形式转换为声形式的过程。扬声器是实现这一最终语音合成结果的工具。电信号变换为声信号,也就是电信号变换为空气压力的变化(即声波),其变换根据是置于磁路中的音圈里通过电流时产生力的现象,力的方向随电流的方向而变化。音圈与振膜相连接,振膜的重量要轻,并且要具有压缩空气的足够的面积。音圈的振动导致了振膜的振动,于是,最终的声波便从电信号方式转变出来。1.4.2语音库的调取计算机在建立语音库是主要是按时间轴和内存地址两种方式来确定字、词或句子在语音库中的位置,在语音库调取数据时,在语音库之外重新开辟一内存暂存区域,将有关语音库中的数据按照输出语音的先后顺序安排进入暂存单元,然后一一从内存中调取。

第2章8031单片机功能简介2.18031单片机的组成及结构2.1.18031单片机的基本组成8031单片机是目前国内广泛应用的单片机之一,它是在一块芯片上集成了CPU、ROM、RAM、定时器/计数器和多种功能的I/O端口等一台计算机所需要的基本功能部件。8031内部包含了下列几个部件:(1)一个8位CPU;(2)一个片内振荡器及时钟电路;(3)4K字节程序存储器;(4)128字节数据存储器;(5)两个16位可编程定时器/计数器;(6)一个可编程全双工串行口;(7)四个8位可编程并行I/O端口;(8)64K字节外部数据存储器和64K字节程序存储器扩展控制电路;(9)五个中断源,两个优先级嵌套中断结构。以上各部分通过总线相连接。2.1.28031单片机处理器及内部结构8031单片机处理器及内部结构与一般微处理器相比,除了增加接口部分外,基本结构是相似的,但也有明显不同的地方,例如8031的数据指针DPTR是专门为指示存储器地址而设置的寄存器。(1)运算器运算器的功能是进行算术运算和逻辑运算,可以实现对半字节、字节等数据进行操作。8031单片机的运算器还包括一个布尔处理器,专门用来进行位操作。(2)程序计数器PC8031单片机的程序计数器PC用来存放即将要执行的指令的地址,共16位。可对64K字节的程序存储器直接寻址。若系统的程序存储器在片外,执行指令时,PC的低8位经P0口送出,PC的高8位由P2口送出。PC是决定执行顺序的关键性寄存器,是任何一个微处理器都不可缺少的。(3)指令寄存器指令寄存器用于存放指令代码。CPU执行指令时,从程序存储器中读取指令代码送入指令寄存器,经译码后由定时和控制电路发出相应的控制信号,完成指令的功能。(4)工作寄存器区通用工作寄存器相当于CPU内部的小容量存储器,用来存放参加运算的数据、中间数据或地址。(5)专用寄存器区专用寄存器区也可称为特殊功能寄存器区。8031单片机的CPU根据程序的需要访问有关的专用寄存器,从而正确地发出各种控制命令,完成指令规定的操作。(6)堆栈8031单片机的堆栈安排在内部RAM中,它的位置通过堆栈指针SP来设置,其深度可达128字节。(7)标志寄存器标志寄存器是用来存放ALU运算结果的各种特征。程序在执行过程中经常需要根据这些标志来决定下一步应当如何操作。2.28031单片机的引脚功能8031单片机采用40引脚的双列直插封装方式。图2.1为8031单片机的引脚图。140140239338437536635734833980313210311130122913281427152616251724182319222021P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VpdRXD/P3.0TXD/P3.1/INT0/P3.2/INT1/P3.3T0/P3.4T1/P3.5/WR/P3.6/RD/P3.7XTAL2XTAL1VSSVCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7/EA/VPPALE//PROG/PSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8图2.18031单片机的引脚图40条引脚的功能简要说明如下:1.主电源引脚VCC和VSS(1)VCC(40)。正常操作时接+5V电源。(2)VSS(20)。接地。2.外接晶体引脚XTAL1和XTAL2(1)XTAL1(19)。接外部晶体和微调电容的一个引脚。(2)XTAL2(18)。接外部晶体和微调电容的另一个引脚。3.控制或其他电源复用引脚RST/Vpd、ALE//PROG、/PSEN和/EA/VPP(1)RST/Vpd(9)。当振荡器工作时,在此引脚上出现两个机器周期以上的高电平将使单片机复位。当VCC掉电期间,此引脚可接上备用电源,由Vpd向内部RAM提供备用电源,以保持内部RAM中的数据。(2)ALE//PROG(30)。当访问外部存储器时,地址所存允许ALE信号的输出用于锁存低8位地址信息。即使不访问外部存储器,ALE端仍以不变的频率周期性地发出正脉冲信号。但是要注意的是,每当访问外部数据存储器时,将少发出一个ALE信号。因此假若要将ALE信号直接作为时钟信号,那么程序中必须不出现访问外部数据存储器的指令,否则就不能将ALE作为时钟信号。ALE端可以驱动8个LSTTL电路。对于EPROM型单片机,在EPROM编程期间,此引脚用于输入编程脉冲信号(/PROG)。(3)/PSEN(29)。该端输出外部程序存储器读选通信号。当CPU从外部程序存储器取指令(或数据)期间,在12个振荡周期内将会出现2次/PSEN信号。但是如果CPU执行的是一条访问外部数据存储器指令,那么在执行这条指令所需的24个振荡周期内将会少发出2个/PSEN信号。CPU在访问内部程序存储器时,/PSEN端不会产生有效的/PSEN信号。/PSEN端同样可以驱动8个LSTTL电路。(4)/EA/Vpp(31)。访问外部程序存储器控制端。当/EA端保持高电平时,单片机复位后访问内部程序存储器。当/EA端保持低电平时,则只访问外部程序存储器4.输入/输出引脚(1)P0.0~P0.7(39~32)。P0是一个8位漏极开路型双向I/O口。在访问外部存储器时可作为地址/数据分时复用总线使用。当P0作为地址/数据分时复用总线使用时,在访问存储器期间它能激活内部的上拉电阻。P0能以吸收电流的方式驱动8个LSTTL电路。(2)P1.0~P1.7(1~8)。P1是一个内部带上拉电阻的8位准双向I/O口。在对EPROM型单片机编程和验证程序时,它接收低8位地址。P1能驱动4个LSTTL电路。(3)P2.0~P2.7(21~28)。P2是一个内部带上拉电阻的8位准双向I/O口。在访问外部存储器时,它送出高8位地址。在对EPROM型单片机编程和验证程序期间,它接收高8位地址。P2可以驱动4个LSTTL电路。(4)P3.0~P3.7(10~17)。P3是一个内部带上拉电阻的8位准双向I/O口。P3能驱动4个LSTTL电路。P3每个引脚分别具有第二功能,如表2.1所示。表2.1P3口线的第二功能口线第二功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2/INT0(外部中断0外部输入)P3.3/INT1(外部中断1外部输出)P3.4T0(定时器/计数器0外部输入)P3.5T1(定时器/计数器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)2.3CPU时序CPU实质上就是一个复杂的同步时序电路,所有的工作都是在时钟信号控制下进行的。每执行一条指令,CPU的控制器都要发出一系列特定的控制信号,这些控制信号在时间上的相互关系问题就是CPU的时序。CPU发出的控制信号一般分成两类,一类是用于计算机内部的,这类信号非常多,用户并不直接接触这些信号;另一类信号是通过控制总线送到片外的,在使用计算机时,用户必须接触到这些信号。单片机的指令由字节组成,而在讨论单片机的时序时,则以机器周期作为单位。在一个机器周期中,单片机可以完成某种规定的操作。8031单片机的每个机器周期包含6个状态周期。由于每个状态周期包含2个节拍,因此一个机器周期包含12个振荡周期,若采用12MHz的晶体振荡器,则每个机器周期恰为1us。每条指令都由一个或几个机器周期组成,执行一条指令的时间称为指令周期。在8031单片机系统中,有单周期指令、双周期指令和四周期指令。每一条指令的执行都可以包括取指和执行两个阶段。在取指阶段,CPU从内部和外部ROM中取出指令操作码及操作数,然后再执行这条指令对于绝大部分指令在整个指令的取址和执行过程中,ALE信号是周期性的信号。每出现一次ALE信号,CPU就进行一次取指操作。不同的指令,由于其字节数和周期数不同,所以具体的取指和执行时序也有所不同。对于8031系统来说,有单字节单周期指令,双字节单周期指令、单字节双周期指令、双字节双周期指令、三字节双周期指令以及单字节四周期指令。一般情况下每个机器周期将会出现两次ALE信号。2.48031单片机的指令系统指令是CPU执行某种操作的命令。一台计算机所能执行的全部指令的集合称为这个CPU的指令系统。8031汇编语言指令由操作码字段和操作数字段两部分组成。操作码字段指示了计算机所要执行的操作,由2~5个英文字母表示。操作数字段指出了参与操作的数据来源和操作结果存放的目的单元。操作数字段又分为目的操作数和源操作数两部分。操作数可以是一个常数,或者是一个数据所在的空间地址,即在执行指令时可以从指定的地址空间取出操作数。操作码和操作数都有对应的二进制代码,指令代码由若干字节组成。对于不同的指令,指令的字节数不同。8031单片机的指令系统具有255种操作代码,一共构造出111种指令,指令系统功能很强,可分为下面5类:(1)数据传送类(28条)(2)算术操作类(24条)(3)逻辑操作类(25条)(4)控制转移类(17条)(5)布尔变量操作类(17条)2.58031的中断系统2.5.1中断的定义中断就是指由于外部或内部事件而改变原来CPU正在执行指令顺序的一种工作机制。它是CPU和外设之间交换信息的一种方式,在引入中断技术之后,解决了CPU和外设之间的速度配合问题,提高了CPU的工作效率和计算机处理故障的能力。中断机制涉及到三个内容:中断源、中断控制和中断响应。中断源是指引起中断的事件;中断控制是指中断的允许/禁止、优先和嵌套等处理方式;中断响应是指确定中断入口、保护现场、进行中断服务、恢复现场和中断返回等过程。2.5.2中断系统1.中断系统的组成能够实现中断功能的部件称为中断系统。8031单片机的中断系统由中断源、中断控制电路和中断入口地址电路等部分组成。中断系统涉及到的4个寄存器是:定时器/计数器控制寄存器、串行口控制寄存器、中断允许寄存器和中断优先级寄存器。2.中断源8031单片机中有三类中断源:两个外部中断、两个定时器/计数器中断和一个串行口中断。这些中断源提出中断请求后会在专用寄存器中设置相应的中断标志。各中断源提出中断请求的过程说明如下:(1)外部中断外部中断源是通过两个外部引脚/INT0、/INT1引入的。/INT0为外部中断0请求信号,/INT1为外部中断1请求信号。(2)定时器/计数器中断定时器/计数器的中断源是由其溢出位引入的。当定时器/计数器到达设定的时间或检测到设定的计数脉冲后,其溢出位置位。定时器/计数器的计数脉冲由外部引脚T0和T1引入时,定时器/计数器就变为计数器。(3)串行口中断串行口发送完一帧串行数据或接受到一帧串行数据后,都会发出中断请求。专用寄存器SCON中的TI和RI为串行中断请求标志位。3.中断系统的功能中断系统即中断管理系统,指能够实现中断功能的那部分硬件电路和软件程序。中断系统功能一般有下面几种:(1)对于中断申请的开放和屏蔽管理;(2)进行中断优先级排队;(3)实现中断嵌套;(4)响应中断;(5)中断返回。2.5.3中断响应1.中断请求信号的检测8031的中断请求信号是由中断标志、中断允许标志和中断优先标志经逻辑而得到。CPU工作时,在每个机器周期中都会去查询中断请求信号。2.中断请求的响应条件8031单片机的CPU在检测到有效的中断请求信号同时,还必须同时满足下列三个条件才能在下一个周期响应中断:(1)无同级或更高级的中断在服务;(2)现行的机器周期是指令的最后一个周期;(3)当前正执行的指令不是中断返回指令或访问IP、IE寄存器等与中断有关的指令。如果满足响应条件,CPU就在下一机器周期中响应中断,完成两个工作:一是将中断点的地址即程序计数器PC的内容推入堆栈;二是根据中断的不同来源,将程序的执行转到相应的中断服务程序入口。3.中断响应的过程CPU响应中断的过程可分为设置标志、保护断点、选择中断入口、进行中断服务和中断返回五个部分。(1)设置标志响应中断后,由硬件自动设置与中断有关的标志。(2)保护断点中断的断点保护是由硬件自动实现的,当CPU响应中断后,硬件把当前PC寄存器的内容压入堆栈。(3)选择中断入口根据不同的中断源,选择不同的中断入口地址送入PC,从而转入相应的中断服务程序。(4)进行中断服务由于各中断入口地址间隔较近,通常可安排一条绝对转移指令,跳转到相应的中断服务程序。中断服务程序通常还要考虑现场的保护和恢复。不同的中断请求会有不同的中断服务要求,中断服务程序也各不相同。(5)中断返回中断服务程序最后执行中断返回指令RETI,标志着中断响应的结束。

第3章语音芯片TC8830AF的基础知识和外围电路3.1语音芯片TC8830AF简介 1.芯片特点TC8830AF语音合成芯片是一种采取CMOS工艺,内建ADM调制方式的单芯片语音录制与再生的专用集成器件。它采用静态RAM作为存储器件,只要外围配置一个由话筒、扬声器、放大器等组成的音频电路,那么一个具有录音与声音再生的语音处理系统便建立起来了。下面是TC8830AF的一些主要特点:(1)声音数据的存取选用静态RAM,可外接4片64K位或者4片256K位的SRAM芯片;(2)通过外部电路可以将外接存储器容量扩大至8M位;(3)连接话筒极其方便,并有11种命令供使用;(4)在手动操作工作模式下,声音的录制与再生最多为16段;(5)提供四种比特率:32kbps、16kbps、11kbps、8kbps供选择一种使用;(6)使用四片256k位SRAM存储器,以及选择16kbps比特率,录音/放音时间达64秒左右;(7)录制时片内有话筒放大器,放音时片内有频带滤波器;(8)自适应增量δ调制方式ADM;(9)CMOS工艺;(10)片载陶瓷振荡电路;(11)单一正电源供电,电压为+5V;(12)可方便地将语音数据固化在EPROM中;(13)内载10位D/A转换器、电压跟随器输出;(14)具有CPU、手动两种操作使用方式供选用。另外,还具有DMA及最小功耗维持工作方式;(15)67脚扁平封装。2.结构与组成TC8830AF语音合成芯片的内部结构由以下部分组成:地址计数器20位的地址计数器用以指定外部静态RAM的地址,并且在声音录制和再生时,其累加增以8为一个单位。在CPU控制下,该地址计数器的值能够通过命令予以设置或读出。停止地址寄存器20位的停止地址寄存器用以指示声音录音/再生过程停止时的地址。在CPU控制下,该值能够通过命令进行设定,但其值不能读出。地址比较器当地址计数器的内容与停止地址寄存器中的内容相一致时,地址计数器停止计数。而地址比较器是完成这一功能的检测核心。变址寄存器在标记索引模式下,变址寄存器用于指示在SRAM中的索引区的地址。用户不能随意读取,但CPU管理下可以既读又变更。状态寄存器TC8830AF的状态寄存器为四位,它用于指示TC8830AF的状态。在CPU控制下,当/RD端给定低电平时,TC8830AF就在P0~P3这四根数据总线上反映状态寄存器的四位内容。CPU接口CPU接口电路用于连接外部的微处理器。SRAM接口该接口电路用于外接SRAM。话筒放大器TC8830AF的MICCOUT端的输出被加压偏置到Vref附近,并且能够被直接引向ADI端。带通滤波器TC8830AF芯片上具有第一级高通滤波器和第二级低通滤波器。ADM分析/合成电路A/D转换器与电压跟随器时序发生控制电路3.2引脚功能6766656463626160595857565515425335245155064974884794610TC8830AF45114412431342144115401639173818371936203521342223242526272829303133FLOUTNCTESTD7NCD6NCD5NCD4NCNCD3D2D1D0A14A13A12VSS1A11A10A9A8A7A6ADDA5A4A3A2A1P0P1P2P3PH0PH1PH2PH3/RD/WRALER//W256KXOUTXINSTBY/CE4/CE3/CE2/CE1/CEA0FILINDAOADIMICOUTC2VSS2VDDC1MICINVREFCPUM/ACLEOS图3.1TC8830AF引脚图TC8830AF语音合成芯片采用67脚薄形扁平封装,其引脚图如图3.1所示。按引脚图所示序号排列顺序对TC8830AF各引脚说明如下:(1)TC8830AF使用SRAM,与存储器的连线一般来说一一对应即可;(2)STBY端决定是否进入低功耗维持状态;(3)与CPU接口的数据线为4位;(4)TC8830AF命令有11条,格式是半个字节,4位的;(5)TC8830AF有DMA方式;(6)TC8830AF有录放达63段的二种操作模式,即在手动操作工作模式下的自动段模式,以及在CPU操作工作模式下的标记索引模式;(7)可读写语音数据存储器。3.3操作原理3.3.1如何完成命令的写入TC8830AF命令的写入可由以下几个步骤来完成。步骤一,利用/RD脉冲,读取TC8830AF的状态,并且检验BUSY标志位;步骤二,如果BUSY位不是处于“忙”状态,则在P0—P3端设置好命令,并且利用/WR脉冲写入一个命令;步骤三,对于3个半字节的命令,这时可写入第2个半字节,再写第3个半字节。3.3.2TC8830AF语音芯片11种命令简要说明(1)NOP(半个字节命令)在声音录制等待状态下,该命令设置进入声音再生等待状态。另外,该命令还用于复位状态寄存器中的OVR标志位等等。(2)START(半个字节命令)该命令用于启动录制或再生过程,在直接模式,通过地址计数器显示出地址值。该命令还用于设置状态寄存器中的EOS标志位。(3)STOP(半个字节命令)在声音录制过程中,执行该命令时,录制过程停止,地址计数器的值被写入SRAM存储器的索引区,作为停止地址。另外,该命令还用于复位状态寄存器中的EOS标志。对于再生过程,该命令需执行两次,再生才停止,同时状态寄存器中的EOS标志复位。(4)ADLD1(6个半个字节命令)在地址计数器中设置5个连续的半字节数据构成20位的地址值,并复位地址比较触发器。另外,该命令可设置进入声音再生等待状态。(5)ADLD2(6个半个字节命令)在停止地址寄存器中设置5个连续的半字节数据构成20位的地址值,并复位地址比较触发器。ADLD2设置的20位地址值必须大于ADLD1的20位地址值,即停止地址要大于起始地址。另外,该命令可设置进入声音再生等待状态。(6)CNDT(2个半个字节命令)该命令用于定义比特率,连续的那半个字节还用于允许/禁止地址溢出探测器。另外,该命令还可用来设置进入声音再生等待状态。(7)LABEL(3个半个字节命令)该命令通过连续的2个半字节的数据定义段号启动声音的录制/再生。在声音录制守候状态下加上该命令,地址计数器的内容将被写入到SRAM存储器的索引区域,同时启动声音的录制。在声音再生等待状态下,加上该命令,并读取了启动地址和停止地址后,便启动声音的再生。(8)ADRD(半个字节命令)读取地址计数器的内容,一次读取其中的四位码元,经5次连续访问后,按内地址值的低位到高位,顺序获取到20位的地址计数器内容。在此读入过程期间,状态寄存器的内容不能被读取;并且在没有5次连续的访问,即未读出20位地址值之前,也不接受下一个命令。另外,该命令还可用于设置进入声音再生守候状态。(9)REC(半个字节命令)该命令用于将声音再生等待状态切换进入声音录制等待状态。(10)DTRD(3个半个字节命令)该命令通过2个连续的读访问过程,从SRAM存储器中读出8位数据。该地址值由地址计数器指示。在这个读周期期间,不会访问状态存储器的内容,地址计数器也不会加1。另外,该命令还用来设置进入声音再生等待状态。(11)DTWR(3个半个字节命令)该命令通过2个连续的半字节数据而写入SRAM存储器中一个8位的数据,该SRAM地址值由地址计数器决定,此时地址计数器不会加1。另外,该命令还用于设置进入声音再生等待状态。在声音录制/再生过程中,上述的11条指令,只有STOP命令有效。3.3.3TC8830AF语音芯片状态寄存器简介状态寄存器由四位组成,在CPU操作工作模式下,当/RD端被设为低电平时,状态寄存器的四位数据在P0—P3端口输出,它反映了TC8830AF的工作状态。状态寄存器的每一位标志位说明见表3.1。表3.1状态寄存器位情况端口名称P3P2P1P0状态寄存器—OVRBUSYEOS可见,四位状态寄存器中仅有三位状态标志位,下面对这三位分别介绍。(1)OVR溢出标志该位指示录制过程的结束。在录制过程,一旦地址计数器超过SRAM存储器的最大地址,OVR溢出标志置“1”。该OVR溢出标志由NOP指令来复位。(2)BUSY忙标志该位指示TC8830AF处于何种状态,即该位为“1”时,表明TC8830AF正处于复位状态或进行内部命令的处理过程,在BUSY标志位置“1”后,此时不要从微处理器发出任何命令给TC8830AF,如果发出命令,那么内部状态将是不确定的,然而当发出ADLD1、ADLD2或LABEL命令时,未输入要求的数据,那么BUSY标志位将不能得到复位,BUSY标志位在该命令执行完毕仍然为“1”,难以进行以后的处理或完成要求的操作。(3)EOS标志位在声音录制或再生的等待过程中,该位置“1”,也就是说,该位指示着录制/再生的工作情况。当声音录制或再生启动后,该位清位“0”,以表示等待状态的结束。该标志位对应TC8830AF的EOS端口的电平情况,即该位为“1”,EOS端口呈现高电平;为“03.3.4声音再生的有关流程框图图3.2是利用标记索引方式下的再生过程流程示意图。由于标记索引方式实质上是依据时间轴,由TC8830AF自动定义指定段的起始地址和终止地址,只要我们利用SRAM写入的形式,可以作出对该指定段再生内容的转移。入口入口NOP命令输出CNDT命令输出LABEL命令输出EOS=0?EOS=1?继续下一段?N出口放音等待状态选择比特率YNNYY在比特率情况下选择段。当命令处理终止后,TC8830AF便启动声音的放声检查/EOS标志位或EOS端,看放声启动否检查/EOS标志位或EOS端,看放声结束否决定是否继续进行下一段的放声图3.2标记索引方式下的再生流程框图3.3.5标记索引方式下的操作CPU操作工作模式下,标记索引方式是其两种具体模式下的一种。在标记索引方式下,每一指定段的起始地址和终止地址被自动写入SRAM存储器的索引区中。图3.3是有关存储器在标记索引方式下的映象图。RAM1RAM1变址区数据区0000H00FFH1FFFH3FFFH5FFFHRAM1RAM2RAM3RAM47FFFH64kSRAM变址区数据区00000H000FFH07FFFH0FFFFH17FFFH1FFFFHRAM1RAM1RAM2RAM3RAM4256kSRAM图3.3标记索引方式下的存储器映象图在标记索引方式下,TC8830AF与SRAM存储器的有关操作如下:1.录音(1)随着启动信号的输入,变址寄存器寻址SRAM存储器中的专用索引区域;(2)地址计数器的值是根据变址寄存器提供的地址写入到SRAM存储器的索引区域的。上述索引区域为00000H—000FFH;(3)地址计数器寻址SRAM存储器的数据区域,即00100H以后的声音数据存储区;(4)通过ADM分析电路,声音信号经分析,即得到录制;声音的数字序列被写入SRAM存储器的数据存储区予以保存;(5)地址计数器自动计数,然后重复步骤(3)和(4),以获得所需的连续声音数据,一个周期为1个比特率;(6)如果输入一个停止信号,变址寄存器寻址SRAM存储器中的索引区域;(7)地址计数器的值,根据变址寄存器提供的地址被写入SRAM存储器的索引区域中;(8)地址计数器的计数值加1后,录制便告完成。2.声音的再生TC8830AF的声音再生步骤如下:(1)输入启动信号后,TC8830AF内的变址寄存器寻址SRAM存储器的索引区域;(2)TC8830AF的地址计数器、停止地址寄存器和有关其它单元从索引区里取出再生段的启动地址、停止地址和比特率等要素;(3)地址计数器寻址SRAM存储器的声音数据区;(4)声音数据送入ADM分析和合成电路,使声音得以合成;(5)地址计数器计数值递增,以获取所需再生的声音的数据;(6)地址计数器的值与停止地址寄存器中已装入的结束地址值相比较,如果两者相一致,声音再生便停止,同时地址计数器指示到结束地址加1的新地址上;如果不一致,则重复步骤(3)、(4)、(5)、(6),以获得一个有效的声音再生。3.4TC8830AF语音合成芯片的外围电路TC8830AF可以使用EPROM、SRAM、ROM、E2PROM,一般直接与TC8830AF相连,可以连接四片64k位或256k位的存储器。当决定了外围存储器容量后,TC8830AF端的256k端应根据实际使用情况决定接电平的高低。在CPU控制下的标记索引模式下,SRAM存储器的访问时间最大为200ns。TC8830AF接可达4片存储器,对于选择使用的外接存储器芯片数目是依靠其提供的地址线来自动完成的。在连接二片或两片以上存储器芯片时,TC8830AF的/CE1端必须与第一片存储器的选通端/CE端相连,TC8830AF的/CE2端则与第二片存储器的/CE端相连,其余类推。TC8830AF与存储器的连接是一一对应的并行关系。

第4章语音报时系统的设计根据任务书的要求,基于语音合成芯片TC8830AF的语音报时系统应具有的功能有:能够24小时在LED显示器上显示当前时间,并且可通过键盘设置时间,24小时实时报时,在整点半点时自动报时,时间精度为秒。4.1语音报时系统的总体设计思想及工作原理本语音报时系统的建立分为两个步骤:首先是录制本语音报时系统所需要的语音数据即语音库的建立,其次是运行系统的建立。本语音报时系统的总体设计思想为:使用8031作为整个系统的CPU,利用外扩程序存储器的8031单片机自身的定时器/计数器来实现时间的计数;通过外接8155来扩展8031的I/O口,通过8155的I/O口来外接4*3的键盘和6位8段LED显示器,利用这些设备来实现时间数据的采集与显示;利用8031对TC8830AF的控制来实现语音库的建立和语音报时,在语音库建立时,须将TC8830AF连接一个256K位的SRAM65256作为语音存储器,录音完毕后把SRAM65256中的语音数据固化到EPROM27256中,系统运行时用EPROM27256替代SRAM65256连接到TC8830AF上作为语音库以供放音时使用,这样系统运行时就不怕掉电造成语音库的丢失。本语音报时系统的工作原理为:系统加电运行后,自动显示初始时间为00点00分00秒,这时需要设置时间,通过按键盘上的*号键进入设置时间模式,然后通过按键盘上的数字键来输入时间,按时、分、秒的十位、个位的顺序键入。设置完后,系统显示设置后的时间,并开始正常运行。显示器每秒钟更新一次显示,即显示当前时间。系统运行的任何时刻都可以响应按键,若扫描到有#号键按下,则播报当前时间;若扫描到有*号键按下,则进入时间设置状态,且按时、分、秒的顺序来接受键盘输入的数据;若没有*号键按下,而扫描到有数字键按下,则不予响应。系统运行期间,当到达半点或整点时,系统自动报时。4.2语音报时系统的硬件设计4.2.1硬件的模块化设计1.单片机8031程序存储器的外扩模块由于8031单片机具有集成度高、功能强、编程灵活、指令丰富、运算速度快、体积小等优点,并且它的外围接口芯片也非常完善,所以本系统采用它作为控制系统的核心是合理的。由于8031无内部程序存储器,故选用容量为2K的EPROM2716作为其外扩程序存储器。8031的P0口作为地址/数据分时复用总线,故需74LS373地址锁存器来锁存低8位地址。由于使用的是外部程序存储器,故需将/EA端置为低电平,使CPU只访问外部程序存储器。CPU的取指过程如下:首先从P0口(低8位)、P2口(高8位,这里只需连3根)送出地址信息,与此同时从ALE引脚送出地址锁存允许信号,该信号送至74LS373的使能端,在ALE信号消失时,将P0口送出的低8位地址信息锁存到74LS373的输出端。由于74LS373的输出允许/OE接地,因此低8位地址一直被允许输出,这样,由74LS373输出的低8位地址和P2口送出的高8位地址,确定了对外部程序存储器的寻址单元。当ALE信号消失后,P0口就由输出方式变为输入方式即浮空状态,等待从程序存储器中读出指令。紧接着CPU送出外部程序存储器读选通信号/PSEN,该信号送到了2716的/OE和/CE端,即输出允许和片选端。这样CPU就从2716被选中的单元中读取了相应的指令,从而完成了取指。2.8031与TC8830AF的连接及TC8830AF与语音数据库的连接模块此模块中,在语音录制时和语音报时系统运行这两个阶段,8031与TC8830AF的连接是相同的,而TC8830AF与语音数据库的连接是不一样的。语音录制时,因为要对存储器进行写操作,故必须使用SRAM。另考虑到用8kbps的速率录制本系统所需的语音,256K位的容量足以存储此语音报时系统的数据,所以选用SRAM65256芯片作为语音数据库。在系统运行期间,TC8830AF连接的是EPROM27256,考虑到系统运行时万一掉电,SRAM中的数据可能会丢失,所以语音录制完后,需将SRAM中的语音数据固化到EPROM中,以保证掉电后数据不会丢失。下面介绍8031与TC8830AF的连接。TC8830AF的P0-P3与8031的P0.0-P0.3相连,作为8031与TC8830AF之间的命令和状态的双向数据直接总线。另外,8031的P1.0与TC8830AF的复位段/ACL相连,在录音时,需要复位;在放音时,禁止复位。8031的P1.1、P1.2分别与TC8830AF的/RD、/WR相连,用于8031控制TC8830AF的读写选通。8031的P1.3与TC8830AF的STBY相连,用于设置进入守候状态,录音和放音时应设为低电平。8031的P1.5与TC8830AF的/CE的端相连,用于选通TC8830AF。TC8830AF的CPUM固定为高电平,即令其工作在CPU操作模式下,端口256K也接高电平,因为该系统选用的是256K位的语音存储器。语音的录制是通过8031来控制TC8830AF,对SRAM65256进行写操作,从而建立语音库。TC8830AF的A0-A14地址线与65256的A0-A14对应相连,TC8830AF的数据线D0-D7对应相连;TC8830AF的/CE1端与65256的/CS端相连,片选65256;TC8830AF的R/W端与65256的/WE直接相连,同时通过反相器连接到65256的/OE端。语音报时系统的报时,是通过8031对TC8830AF的控制对EPROM27256进行读操作,让TC8830AF在半点整点报时,或是响应键盘的#号键,播报当前时间。TC8830AF的地址线、数据线引脚分别于EPROM27256的地址、数据线引脚相连,TC8830AF的/CE连接EPROM的/CE片选端。TC8830AF的R/W端通过反相器74LS04连接到EPROM的/OE端,来控制EPROM的读选通。3.8031外扩8155连接4*3键盘和LED显示器模块为实现本语音报时系统的时间设置功能和时间显示功能,必须加上外设键盘和显示器。8031自身的I/O有限,而连接键盘和显示器需要的I/O接口比较多,故本系统通过外接8155作为8031的扩展I/O口。8155的地址数据总线AD0-AD7与8031的P0口相连;8155的RESET端与8031的P1.7相连,用来控制8155的复位;8155的IO/M端和/CE端分别连接8031的P2.6和P2.7,通过P2.6来决定8155是作为I/O口还是存储器;8155的/WR和/RD端分别与8031的/WR和/RD端相连,从而控制8155的读写选通;8155的ALE端和8031的ALE/PROG端相连,用以锁存8155的地址信息、片选信号和I/O信号。由于本系统需要设置时间,还要具有实时报时功能,从而需要有十个数字键和两个功能键,故使用4*3的键盘。同时由于键盘操作的频率比较小,所以通过外部中断来扫描键盘。在键盘的列线上连接电阻及正电源使无键闭合时列线列线总保持在高电平,三列线上的电平通过连个与门及一个同或门然后接到8031的外部中断/INT0。这三个门电路的作用是控制一行中同时有多个键按下的情况。当无键或一行有多个按下时,/INT0为高电平。任意一键按下时,/INT0变为低电平,这时CPU响应中断并执行中断服务程序。键盘的行线通过二极管连接到8155的A口,作为输出线;键盘的列线连接到8155的C口,作为输入线。二极管的作用是控制一列由多个键按下时只能扫描一行。8155与LED显示器的连接,由于LED需要的接口比较多,故需要加上74LS138译码器来实现对LED显示器的片选,7447译码/驱动器来驱动LED的段选择。PB口用来连接LED显示器,PB0-PB3与7447的A-D相连,PB4-PB6与74LS138的A-C相连。LED显示器用的是共阳极的,而74LS138输出的是低电平,故加三极管对其片选进行反相驱动。74LS138的Y0-Y5分别连接在6个LED的片选端相连的三极管的基极,用来片选LED显示器。三极管的发射极接高电平,集电极与LED的片选端相连。7447译码/驱动器的a-g与每个LED的前7段分别相连,只有第二个和第四个LED的“.”断设为低电平,以让其一直导通显示。4.2.2语音报时系统的硬件总体设计1.语音录制系统的硬件总体设计语音报时系统首先需要建立报时所需的语音库,所以先要设计语音录制系统。将模块1(8031程序存储器的外扩模块)和模块2(TC8830AF与语音数据库的连接模块)这两个模块组合起来,就构成了语音录制系统。图4.1为语音录制系统的硬件设计图。如图4.1所示,在8031的P1.6上连接一个单刀双掷开关,用来控制每段录音的开始与结束。本系统采用的是标记索引方式下的录音,若要开始录音,则将开关打到低电平,一段录完后将开关掷向高电平,若要进行下一段的录音则再将开关打到低电平。2.语音报时系统的硬件总体设计语音报时系统的硬件设计,就是将模块1(8031程序存储器的外扩模块)、模块2(TC8830AF与语音数据库的连接模块)以及模块3(8031外扩8155连接4*3键盘和LED显示器模块)这三个模块组合起来构成的。图4.2为基于TC8830AF的语音报时系统的总体硬件图。在语音录制好后,再将SRAM65256中的内容固化到EPROM27256中,同时将程序存储器EPROM2716的内容换成系统运行时的程序。如图4.2所示,此语音报时系统的硬件设计中,模块1中的8031外扩程序存储器用来实现本系统的核心控制功能,首先是完成时间的计数,其次是响应键盘的输入,送出显示器所需的数据,最后是控制语音报时。模块2实现的功能是语音报时。模块3的功能是时间的显示与设置,以及实时报时。综合考察本设计所用的器件较合理,本系统能够实现所要求的功能,而且本系统也是可实现的,即本系统是可行的。

图4.1语音录制系统的硬件设计图

图4.2语音报时系统的总体硬件图

4.3语音报时系统的软件设计软件设计和硬件设计一样也分为两个步骤。首先是语音录制系统的软件设计,其次是语音报时系统的软件设计。4.3.1语音录制系统的软件设计1.语音录制系统的设计思想本语音报时系统的语音库包括:“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“点”、“分”、“秒”、“现在是北京时间”。本录音系统的软件设计思想为:通过8031对TC8830AF进行控制,使其工作在CPU工作模式的标志索引方式下,一段一段地将语音录制到SRAM65256中。根据TC8830AF的标记索引方式下的工作原理,语音录制后,数据在SRAM中的格式为:00H-0FFH为索引数据的存储区域,从100H开始为语音数据的存储区域。本录音系统在标记索引方式下录音后,每一段在SRAM索引区域的地址及段的内容如下:00H-03H:段0起始地址存储语音:“零”04H-07H:段1起始地址存储语音:“一”08H-0BH:段2起始地址存储语音:“二”0CH-0FH:段3起始地址存储语音:“三”10H-13H:段4起始地址存储语音:“四”14H-17H:段5起始地址存储语音:“五”18H-1BH:段6起始地址存储语音:“六”1CH-1FH:段7起始地址存储语音:“七”20H-23H:段8起始地址存储语音:“八”24H-27H:段9起始地址存储语音:“九”28H-2BH:段10起始地址存储语音:“十2CH-2FH:段11起始地址存储语音:“点”30H-33H:段12起始地址存储语音:“分”34H-37H:段13起始地址存储语音:“秒”38H-3BH:段14起始地址存储语音:“现在是北京时间”3CH-3FH:段14结束地址2.录音系统的程序设计说明如图4.3所示为录音程序的流程图。由图看出其流程为:首先定义中断入口,在TC8830AF的命令写入延时用到了定时器0;其次选中TC8830AF,复位STBY禁止TC8830AF进入守候状态,再复位TC8830AF;然后定义语音录制的比特率,用REC命令使TC8830AF进入录制等待状态;这样就可以人为的控制每一段录音的开始与结束。如图4.1所示,将开关打在低电平端,开始录音;打在高电平端,停止录音。开始开始设置中断入口选中TC8830AF,复位STBY及/ACLCNDT命令定义比特率REC命令进入录音等待状态是否准备好录音EOS=0?EOS=1?停止录制?所有段录完?结束YLABEL命令写入段序号并开始录音NNYYSTOP命令停止该段的录制YNNYNNNN图4.3录音程序流程图4.3.2语音报时系统的软件设计1.语音报时系统的软件设计思想首先介绍软件设计的思想:首先初始化8031的内存,设定中断入口,设定启动8031定时器/计数器,并以时间显示程序作为主程序;利用定时器/计数器0的中断来实现时间的计数,并在中断服务时判断是否为半点或整点;通过外部中断0来响应键盘的输入,有键按下时,进行键盘扫描。系统的软件设计分为主要的五大模块:初始化程序模块、主程序模块、定时器0的中断服务程序模块、外部中断0的中断服务程序模块、语音报时模块。本系统中8031的内部RAM的分配如下:30H:时的十位LED显示存储地址31H:时的个位LED显示存储地址32H:分的十位LED显示存储地址33H:分的个位LED显示存储地址34H:秒的十位LED显示存储地址35H:秒的个位LED显示存储地址36H:秒计数器CL_S的存储地址37H:分计数器CL_M的存储地址38H:时计数器CL_H的存储地址40H:键盘扫描程序中,存储键值计数器的地址41H:重置时间时,存储当前应重置的LED地址的寄存器地址位寻址区中:22H:*号键的标志位23H:#号键的标志位2.各模块程序设计说明(1)初始化程序模块系统的初始化主要包括:设置中断入口;定义定时器T0的定时初值和时分秒计数器的地址;设置堆栈的首址;将显示器缓冲器的各单元清0;清除中断允许IE;8031外部中断0的初始化:设置/INT0为低电平有效,开外部中断0,并设为低优先级;8031定时器T0的中断初始化:主要包括定义工作组寄存器为组1,设置T0的工作方式为方式1,设置定时初值为3CB0H,时分秒计数器全部清0,设置1s所需定时累加的次数为20次,开定时器T0的中断,设置为高优先级,并启动定时器;最后打开中断总允许位EA,跳转到主程序。初始化程序的流程图如图4.4所示。开始开始设置中断入口定义定时器T0的定时初值定义时分秒的计数器的地址设置堆栈的首地址将显示缓冲器清0,即30-35H清0将显示缓冲器的首地址放入41H中IE清0,禁止所有中断调用外部中断0的初始化程序调用定时器0中断的初始化程序打开总允许位EA跳转到主程序图4.4初始化程序流程图(2)显示主程序模块主程序以显示程序为主线,在系统初始化以后(包括中断初始化和8155的初始化),进入显示程序,并循环显示。此系统有两个中断,定时器的中断每隔50ms产生一次,外部中断0是随机产生的。当中断产生时,暂停执行主程序,转而执行相应的中断服务程序,服务程序执行完毕后返回主程序。主程序流程图如图4.5所示。显示程序的功能就是将显示缓冲器中的内容输出到LED数码管上显示出来。显示程序的具体实现见附录中的程序清单。开始选中8155并复位8155开始选中8155并复位8155令8155工作在I/O口方式定义8155的A、B口输出,C口输入设置工作组寄存器为组0调用显示程序(3)定时器0的中断服务程序模块系统初始化时设置T0为每50ms中断一次,中断20次计时1s,然后改变时分秒计数器的值,每1s钟设置一次#号键的标志位,即将其置1,从而控制1s内只响应一次#号键的报时;每秒更新一次显示器;若分计数器的值到达30,即到达半点,或是时计数器的值改变了,即到达整点时,调用报时程序。定时中断服务程序模块的流程图如图4.6所示。图中的时分秒转换程序,就是将时分秒计数器的值更新到显示器的缓冲器中。(4)外部中断0的中断服务程序模块键盘安排为(PA3,PC0)01H,(PA3,PC1)02H,(PA3,PC2)03H;(PA2,PC0)04H,(PA2,PC1)05H,(PA2,PC2)06H;(PA1,PC0)07H,(PA1,PC1)08H,(PA1,PC2)09H;(PA0,PC0)#号键,(PA0,PC1)00H,(PA0,PC2)*号键。其中有两个功能键即#号键和#号键。#号键的功能是报时,*号键的功能是设置时间。当系统响应外部中断后,首先是关外部中断,随后进行键盘扫描,扫描完毕打开中断。键盘扫描程序的流程是:首先逐行进行扫描,检测是否有键按下,若有键按下,则扫描键所在的列,并进行键值的计算。最后进入键值功能判断程序,判断该键是数字键还是功能键,然后执行相应的程序。外部中断0的中断服务程序的流程图如图4.7所示。键值功能判断程序的流程是:若检测到*号键,将显示缓冲器清0,进入时间的设置,并将*号键标志位置1,以响应输入的数字键;若检测到#号键,先判断*号键标志位是否为1,是则清除*号键标志,并调用时分秒转换程序,以恢复显示时间,否则直接判断#号键标志位是否为1,则清除#号键标志位并且系统调用报时程序;若#号键标志为0,即一秒钟内已响应过该键,则忽略此键,已保证不会过于频繁地报时;若判断为数字键,则先判断*号键标志是否为1,不是则忽略此键,是将输入的数字存入显示缓冲器,且按时、分、秒的十位、个位顺序逐一存储,存储前要检查该数字是否超过时间的范围。如小时的十位只能小于等于2;分、秒的十位都要小于6,若是超出范围系统应不予显示,需要重新输入该位的数字。当6位数据都已经存入显示缓冲器,则改变时分秒计数器的值,即成功设置时间。键值功能判断程序流程图如图4.8所示。入口入口保护现场设置工作组寄存器为组1IS中断次数R7减1R7=0?IS中断次数R7重置为14H秒计数器加1,#键标志置1秒计数=60?秒计数器清0,分计数器加1分计数=30?分计数=60?分计数器清0,时计数器加1时计数=24?时计数器清0调用报时程序调用时分秒转换程序恢复现场中断返回NNNYNNYYY图4.6定时中断服务程序模块流程图入口入口保护现场并关外部中断0设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论