摘 要
在人类的历史长河中,语言的作用尤为重要,人们一直在思考一个问题,那就是如何把语言完全不差的记录下来。当今智能化的仪表仪器的自动控制装置中,如果能够添加语言功能,就可以非常好的提升操作便捷度,在日常生活中,人们在很多场合都需要语言的存储与回放技术,所以将这种技术与生活更好的结合在一起,是现在需要解决的一大难题。传统的语言记录装置体积庞大,使用不方便,在信息处理的过程中受到许多限制,为了解决这些问题,本项目将使用AT89C51单片机和ISD4004语音芯片来设计一款语音的录放系统。ISD4004语音芯片不需要数模转换和压缩就能够直接进行存储,不仅存储时间长,而且没有转换误差,还可以用于多次重复录放。外围核心电路也相对来说十分简单。使用ISD4004语音芯片与单片机相结合,通过软件与硬件的控制,完全可以实现数字化语言的存储和回放。
关键词:AT89C51单片机; 语音存储; 语音回放; ISD4004语音芯片
1 控制系统设计
1.1 系统方案设计
方案1:使用AT89C51单片机通过对语音信号的各种转换,来完成对语音的采集与回放。它的原理如图1-1所示。在录音的时候,单片机先将模拟信号转换为电信号,再通过音频的放大器将信号放大,通过滤波器进行滤波再由转换器转换为数字信号,送回到单片机中,然后将其存储。在需要放音的时候,相当于进行一次反向操作,首先读取出数字信号,然后经过模数转换,将数字信号转换成模拟信号,经过放大器进行放大再变成声音播放出来。这种方法虽然过程简单,但是语言信号非常容易受到外界的干扰,而且信号压缩也比较复杂,硬件电路的调试也非常困难。
图1-1方案1系统原理图
方案2:使用AT89C51单片机来控制整个系统,配合ISD语音芯片完成语言的录放,系统原理图如图1-2所示。通过按键控制单片机,并将指令发送到语音芯片以完成录音和播放。当前的操作状态显示在显示屏上。这种处理方法不但使其抗干扰的能力更强,而且存储也更加方便,调试也更加简单。
图1-2 方案2系统原理图
2 硬件电路设计
该系统可分为三个部分:微控制器控制部分、语音记录和回放部分,功率放大器部分。采用51单片机为控制核心,采用ISD4004进行录音和播放。P0连接按钮用于记录和播放,并连接到LED,显示当前的记录和播放状态。
2.1 时钟电路
时钟电路由晶体振荡器和电容器组成,时钟电路就像平时家里用的时钟一样控制着任何工作的时间。时钟电路的用途很多,时钟电路被广泛使用,它的主要工作是产生与时钟一样精确的振荡器电路。任何工作都按时间顺序排列。产生该时间的电路是时钟电路,如图2-1所示。
图2-1 时钟电路
3 软件设计
该软件的设计基于硬件,并且要由该软件实现的功能基于常规硬件。如果硬件不能正常工作,则意味着没有好的软件可以实现任何功能。如果没有软件,那用再好的硬件也是毫无作用的。将需要实现的功能确定之后,如果调试正确,就会可以开始设计本次项目需要的软件模块了。本次项目使用51单片机作为开发的基础,软件格式采用Keil C51来进行汇编语言的编译。
3.1 编程工具软件Keil C51
Keil C51集成开发环境是基于80C51内核的微处理器软件开发平台。他可以独立完成整个项目的建立,也就是完成整个开发过程。用于单片机应用系统的常用软件编写语言是汇编、C、BASIC、C ++等。对于51单片机而言,使用最广泛的是汇编语言和C语言。
使用Keil C需要以下五个步骤来开发单片机程序:
(1)选择创建一个全新的项目,然后选择本次项目中使用的单片机机型。
(2)μVision3中的文件编辑器功能,可以用来编写源程序文件,并且需要将此文件添加到新建的这个项目中去。
(3)通过μVision3的各种选项,配置Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器以及Debug调试器的功能。
(4)使用μVision3软件,将编写后的源程序将编写后的源程序代码进行编译,然后生成HEX格式的可执行文件,如果在编译过程中出现错误,那么就返回到第2步对源程序代码进行修改。
(5)如果编译没有错误,那么就证明源程序代码没有错误,这时就可以将源程序代码导入仿真软件中进行仿真操作。
本次项目中选用的汇编语言可以直接与计算机的底层软件进行交互,它可以直接访问硬件的存储器或者端口,并且没有局限性,能够对二进制代码进行完美的操控,很好的发挥出硬件的优势,运行速度也会大大提高,所以本次项目我选用了汇编语言对这个项目进行调试。
3.2 程序设计原理
对软件的设计可以和硬件的设计相结合,因为不管哪个功能是由硬件完成的,哪个任务是由软件完成的,基本都可以在硬件设计完成后确定。
软件的总体设计思路可以分为两类:其中一类是执行软件,这一类软件可以完成计算测量、显示、打印、输出等非常实质性操作,另一类是起到执行协调作用的监视软件,这是用来起到协调作用的,在整个软件系统中充当调度员的角色。所以软件的设计有两类,他们各具特色,并且软件的设计很偏重算法,还与硬件之间有很大的联系。
在进行软件的设计时,应该将所有的模块列举出来,然后通过数据结构规划好,所有的模块规划好之后,就可以进行监控了,编程比较容易,但是监控就比较难了,这就像是当一名员工容易,但是当一名领导就比较困难。
3.3 系统主程序设计
主程序的设计思路,是考虑到4个按键的接口,通过单片机循环扫描来检测是否有按键被按下去,当任何一个按键被按下后,都会去执行该按键的这个子程序。例如当单片机扫描识别到按键被按下时,这个时候单片机就会去执行录音的程序,当单片机扫描识别到放音按键被按下时,单片机就会停止录音程序,去运行放音的子程序,每个状态在执行时切换下一个状态时都需要按下停止按键清除状态标志。流程图如图3-1所示。
图3-1 按键检测流程图
4 系统调试
4.1 硬件调试
通过单片机控制语音芯片完成的语音存储与回访系统的电路比较大,而且回涉及到很多的模块电路,比如会涉及到单片机的最小系统、时钟电路、液晶显示模块等等,所以在焊接时要十分注意,涉及到多种模块的这种电路,哪怕只要存在一处的焊接错误,就会导致整个系统的检测无法完成,因为电路中交叉的线路非常多,所以在焊接过程中避免焊接错误和短路现象,如果电路连接错误,将给检测带来极大的不便,并且该电路具有更多的交叉线。请注意处理各种尖锐的针脚,否则会刺破被覆的电线并导致短路。
检查正确性后,我们开始在通用板上焊接。
在系统的硬件调试中遇到了许多问题。回想一下,只要仔细考虑,就可以避免这些问题。以下是主要问题:
一开始,我认为微控制器无法正常驱动ISD4004,因此无法进行记录和播放。
解决方案:搜索相关信息后,必须在微控制器的P0端口上添加一个上拉电阻,以正常驱动外部芯片。
4.2 软件调试
该系统是一个相对复杂的数字系统,因此其程序也相对复杂,因此在编写程序和调试过程中存在许多问题。首先,为了更好地测试效果,在确认没有错误之后,我直接在PROTUES软件下启动了仿真,然后将程序刻录到实际环境中运行。最终,在对模块子例程进行了许多修改之后,它逐渐完成并最终解决了软件中的各种问题。在软件调试过程中遇到的主要问题如下:
1.程序刻录后,LCD屏幕闪烁并且亮度不均匀。
解决方案:首先,逐步修改呼叫延迟,以解决显示闪烁的问题。其次,由于这项工作使用的是在动态扫描模式下显示的数字,因此动态扫描速度非常快,人眼看不到它,但是当调用显示程序时,如果返回时未屏蔽最后一个值,则它将它将看起来非常明亮。现象,因此将屏蔽子命令添加到了显示器的背面,从而最终解决了该问题。
2.当用户按下按钮时,微控制器读取的值与设置值不同。
解决方案:检查一下键盘的连接,并建立新的连接。
4.3 调试结果
测试中如果未显示LCD液晶,需要先使用测试仪测试电路,以观察是否存在漏焊,虚焊或组件损坏。
搜索了一系列问题后,系统最终可以正常工作并完成所有功能。
4.4 调试结果展示
图4-2 实物图 图4-3 开机后画面
图4-6 模式选择 图4-7 放音状态
5 结 论
通过以上分析,此次项目使用单片机作为控制器,实现了设计的所有功能,传统的语言录放设备,要将接收到的语音信号转换为电信号,再将这个信号放大,然后再经过模数转换转换为数字信号,最后再进行处理和存储,放音时还需要数模转换转换成模拟信号,才能够达到放音的目的,这种方法听起来就非常复杂,在实际的制作过程中,还会使声音失真。所以此次项目采用51单片机来控制语音芯片的方法,也熟悉了ISD4004的基本应用,整个系统是采用51单片机对语音芯片的控制,完成了语音的录制和播放,并且描述了整个系统工作流程,各个部件的性能。这个系统不但成本非常低,而且使用起来灵活多变,抗干扰能力十分强,使用起来效果也十分优秀。
本课题的重点、难点总结:
(1)初次接触语音芯片,在使用过程中对各种寄存器的操作不太熟悉;
(2)在播放电路中,语音扩展,抗干扰分析过程应熟悉;
(3)注意调节电路的实现和程序的稳定性。通过本设计,我已经掌握了一些常用的基础理论知识,并对微控制器和PC编程控制的开发和应用有了更深入的了解。