多功能复读机毕业论文.doc

上传人:文库蛋蛋多 文档编号:3941162 上传时间:2023-03-28 格式:DOC 页数:46 大小:1.77MB
返回 下载 相关 举报
多功能复读机毕业论文.doc_第1页
第1页 / 共46页
多功能复读机毕业论文.doc_第2页
第2页 / 共46页
多功能复读机毕业论文.doc_第3页
第3页 / 共46页
多功能复读机毕业论文.doc_第4页
第4页 / 共46页
多功能复读机毕业论文.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《多功能复读机毕业论文.doc》由会员分享,可在线阅读,更多相关《多功能复读机毕业论文.doc(46页珍藏版)》请在三一办公上搜索。

1、摘要本次毕业设计的主要目的是设计并制作一个具有录音、放音、计时、语音播报和数码管显示的多功能复读机。设计阶段主要完成了以下功能模块:提示语音模块:接通电源后自动播放一段音乐和录制的提示语音;倒计时模块:按下录音键,LED键盘模组的第6个数码管进行倒计时,依次显示3、2、1,间隔为一秒钟;录音与计时模块:倒计时完成(即1消失后),操作者可利用麦克风进行语音录入,同时,计数器开始计时,此时间为录音的时长;语音播报与显示模块:按下停止键,录音停止,并语音播报录音的时长,并在数码管上显示录音的时长;放音模块:按下回放键可以回放刚才的录音。该复读机在功能上有所更新,除了具备基本的录音、放音功能外,还能播

2、放音乐和提示语音,计时器可记录录音的时长,并利用外接的LED键盘模组进行显示,倒计时功能能够提醒用户适当的录音时刻,解决了一按录音键就开始录音而导致声音无法完全录入的问题。本次毕业设计选用凌阳SPCE061A单片机,SPCE061A的语音处理功能是由凌阳公司自行开发的具有音频编解码及各种语音压缩算法实现的。其CPU 内核采用凌阳推出的nSP(Microcontroller and Signal Processor)16 位微处理器芯片。凌阳单片机可以做控制,也可以完成数据信息的处理,尤其是语音识别上,有自己的特色。各种算法相应的程序模块存放在语音算法库SCAM-LIB中, 使用时只需调用相应的

3、模块就可方便地实现语音合成、语音播放、录音、识别等功能。凌阳单片机还采用了SOC 理念,一颗芯片就是一个系统,把传统单片机学要扩展的AD、DA、存储器等器件都做到了芯片内部,方便了单片机的学习和项目开发。关键字:凌阳16位单片机、复读机、计时、语音播报、数码显示。目录摘要1目录2第一章 引言3第二章 概要设计42.1设计要求42.2需求分析42.3可行性报告42.4凌阳单片机简介52.5语音压缩52.5.1 压缩分类62.5.2 凌阳常用的音频形式和压缩算法62.5.3 压缩工具7第三章 详细设计83.1硬件设计83.1.1 Protel 99SE简介83.1.2 电路原理图设计83.2 PC

4、B布局布线规则133.3 印制电路板设计主要事项143.4 电路板焊接143.5 LED模组介绍163.6软件设计183.6.1 C语言简介183.6.2 凌阳nSP汇编语言183.7 凌阳unSPIDE184集成开发环境简介193.8 程序设计213.8.1 主程序模块213.8.2 语音提示223.8.3 倒计时253.8.4 录音计时和时长播报263.8.5 录音时长显示273.8.6 附加功能283.8.7 程序下载28总结30致谢31参考文献32附录33第一章 引言单片微型计算机又称单片微控制器,是微型计算机发展中的一个重要分支,其发展十分迅速。单片机由于具有高可靠性、集成度高、价格

5、低廉和容易产品化等特点,因此在智能仪器仪表、医疗器械、工业实时控制、智能终端、通信设备汽车和家用电器等领域得到了广泛的应用。集成化性能的发展越来越明显的竞争优势也成为诸多商家眼中不可错失的商机。其中,凌阳科技有限公司推出的凌阳十六位单片机unSP以迅雷不及掩耳的速度占据了广阔的市场。其应用领域也逐渐由传统的控制,扩展为控制处理、数据处理及数字信号处理(DSP,Digital Signal Processing)等领域。该单片机采用现代电子技术片上系统SOC(system on a chip)技术设计而成,内部集成有ADC、DAC、PLL、AGC、DTMF、LCD DRIVER等电路。采用精简指

6、令集(RISC),指令周期均以CPU时钟数为单位。此外内置有16位硬件乘法器和加法器,并配有DSP拥有的特殊指令,大大的加快了各种演算法的运行速度。根据本次毕业设计的要求,我们选择了凌阳公司的SPCE061A单片机,它在语音播放和语音识别方面很有特色。它主要包括输入/输出端口,定时器/计数器,数/模转换,模/数转换,串行设备输入输出,通用形串行接口,低电压监测和复位等部分,并且内置在线仿真电路ICE接口,较高的处理速度其能够快速的处理复杂的数字信号。而且它的体积小,采用电池供电,方便随身携带。本论文主要介绍了如何用C语言、凌阳汇编语言编程实现多功能复读机以及在调试过程中遇到的问题和解决方案。第

7、二章 概要设计2.1设计要求(1)接通电源后自动播放一段音乐和自己录制的提示语音。(2)按下录音键后,键盘模组的第6个数码管进行倒计时,依次显示3、2、1间隔为一秒钟。(3)倒计时完成后(即1消失后),可对准麦克风进行录音,按下停止键录音停止,并语音播报录音的时间。(4)按下回放键可回放刚才的录音。2.2需求分析用凌阳SPCE061A单片机实现具备录音、计时、放音功能的多功能复读机。可通过硬件控制录,放,也就是通过SPCE061A的四个按键来实现。在接通电源开机时自动播放一段语音和提示音,待系统进入后通过按键控制,该单片机将在按键的作用下实现其录音,放音的功能,外接硬件LED模块可显示其录音时

8、长。2.3可行性报告本次设计我们需要完成复读机功能,经过需求分析,我们选择使用SPCE061A。它具有以下特点:(1)体积小、集成度高、可靠性好且易于扩展;(2)具有较强的中断处理能力;(3)高性能价格比;(4)功能强、效率高的指令系统;(5)低功耗、低电压;经验证,SPCE061A具备8通道10位ADC 输入功能,内置的具有自动增益控制的麦克风输入功能,双通道10位DAC音频输出功能及A、B两个I/O口输入输出功能。凌阳SPCE061A单片机功能对本次毕业设计所需是完全满足的,所以在技术上是完全可行的。2.4凌阳单片机简介SPCE061A是凌阳科技公司nSPTM (Microcontroll

9、er And Signal Processor) 系列产品中的16位微控制器芯片,本次毕业设计选用SPCE061A单片机作为控制器,其具有较强的处理能力。在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,同时内嵌32K字的闪存(FLSAH),拥有较高的处理速度.SPCE061A单片机还具有体积小、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点,特别适应于数字语音录放和语音识别等数字应用领域。因此SPCE061A非常适用于本次设计的模拟语音电话当中,是一种高效经济的选择。SPCE061A的性能及特点特性参数SPCE061A工作电压2. 6V3.6V最大工作速率

10、49.152MHzCPU16位nSPSRAM容量2K字ROM容量(字)32K闪存ROM并行I/O端口AIOA150并行I/O端口BIOB150音频输出方式DAC2中断源1)TimerA/B、2)时基信号发生器 3)外部中断 4)触键唤醒唤醒源IOA70 其它中断源定时器/计数器双16位加计数定时器/计数器 ,双通道PWM输出UART 具备ADC通道10位电压模-数转换器(ADC)和单通道声音模-数转换器(ADC)串行SRAM接口具备(凌阳格式)晶振具备低电压复位具备低电压监测具备内置ICE接口具备上电复位具备麦克风放大器和自动增益控制单通道中断控制功能具备触键唤醒功能具备表 2-12.5语音压

11、缩凌阳的音频格式有许多种,比较常用的有如下几种模块名称语音压缩编码率类型资料采样率SACM_A200016Kbit/s,20 Kbit/s,24 Kbit/s16KHzSACM_S480/S7204.8 Kbit/s,7.2 Kbit/s16KHzSACM_MS01音乐合成(16Kbits/s,20 Kbits/s,24 Kbits/s)16KHzSACM_DVR(A2000)16 Kbit/s的资料率,8 K的采样率,用于ADC信道录音功能16KHzSACM_S2402.4 Kbit/s24KHz表2-2凌阳音频压缩及算法信号类型频率范围(Hz)采样率(kHz)量化精度(位)电话话音2003

12、40088宽带音频(AM质量)5070001616调频广播 (FM质量)2015k37.816高质量音频 (CD质量)2020k44.116表 2-3 编码标准2.5.1 压缩分类压缩分无损压缩和有损压缩。 无损压缩一般指:磁盘文件,压缩比低:2:14:1.而有损压缩则是指:音视频文件,压缩比可高达100:1。 凌阳音频压缩算法根据不同的压缩比分为以下几种: SACM-A2000:压缩比为8:,8:1.25,8:1.5 SACM-S480: 压缩比为80:3,80:4.5 SACM-S240: 压缩比为80:1.5 按音质排序:A2000S480S240 2.5.2 凌阳常用的音频形式和压缩算

13、法 (1)波形编码:sub-band即SACM-A2000 特点:高质量、高码率适于高保真语音音乐。(2)参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码。如:SACM-S240。 特点:压缩比大,计算量大,音质不高,廉价。(3)混合编码:CELP即SACM-S480 特点:综合参数和波形编码之优点。 除此之外,还具有FM音乐合成方式即SACM-MS01,所以为了得到高保真的音质,这里选用A2000的压缩算法。2.5.3 压缩工具因为要使用凌阳的专用音频才能在SPCE061A板上被播放出来,所以需要用凌阳专用的音频压缩软件才能完成此项。图 2-1 凌阳音频压缩软件添加wa

14、v音频第三章 详细设计3.1硬件设计3.1.1 Protel 99SE简介使用电脑设计电路原理图和电路板图是把电子技术从理论应用到实际的第一步,只有会设计电路原理图和电路板图才能进行电子产品的研究与开发。Protel 99SE是ProklTechnology公司开发的基于Windows环境下的电路板设计软件。该软件功能强大,人机界面友好,易学易用,仍然是我们专业必学课程,同时也是业界人士首选的电路板设计工具。3.1.2 电路原理图设计使用计算机辅助设计工具进行电子电路设计绘制电路原理图与印制电路板图是现代电子工程技术人员必备的技能。本设计的电原理图和印制电路板图均使用Protel 99se完成

15、。设计步骤:(1)新建Schematic Library Document,建立所需元件 ,元件规格设置,相关参数设置.(2)新建Sheet1.Sch图,装载元件库,查找并选取所要添加的库;设置电路图大小:按图纸要求选STANDARD项的设置A4纸张;放置元器件,节点和连接线路。(3)查原理图:使用Protel 99 SE的电气规则检查功能检查原理图的连接是否合理与正确,给出检查报告。保存与打印。按照前述过程,完成了61A电路版的原理图设计,下面分模块介绍61板原理图及其功能。(总原理图见附录4)1晶振模块性能特点:石英晶体的主要特征是它具有压电效应,既在晶体的两个电极上加交流电压时,晶体就会

16、产生机械振动,而这种机械振动反过来又会产生交流电压,晶体就会产生交流电场,在电极上出现交流电压。如果外加交流电压的频率与晶片本身的固有振动频率相等,则机械振动的振幅和它产生的交流电压的幅值都会显著增大,这种现象称为压电谐振,称该晶体为石英晶体振荡器,或简称晶振。目前市场晶体都是标准的频率,如:32768Hz、6MHz、3MHz等等,这里采用的是32768 Hz,其中的谐振电容分别是C14(20P)、C15(20P),在这里OSC部分的作用就是作为CPU时钟的振源,具体的过程如图3-3所示。 图3-1 晶体震荡组成 图 3-2 锁相环组成 图 3-3 锁相环电路框图2音频输出部分:下图是音频输出

17、部分的原理图,输出的声音经SPY0030音频放大后通过喇叭输出。SPY0030的输入电压的范围是2.4V6.0V,在这个电路中采用的电压是3.3V。 图 3-4 音频输出电路图3电源:61板采用3节5号电池进行供电,由J10接入,如原理图所示。其中的前后两组电容用来去耦滤波,使其供给芯片的电源更加干净平滑。为了获得标准的3.3V电压,在板子上加入SPY0029三端稳压器。两个二极管,是为防止误将电源接反造成不必要损失而设置的,在操作过程中千万不要将电源接反,因为反向电压超过一定的值,二极管将会被损坏,达不到保护的目的。后面的零电阻及其电源、地分成不同的几路是为减少电磁干扰设置的。 图3-5 电

18、源部分电路图4音频输入部分:如下图所示电路, MICP和MICN将随着MIC产生的波形变化,并在两个端口处形成两路反相的波形,再经过两级运放放大,把放大的语音信号交给ADC转换为数字量,这个时候我们就可以通过单片机编程对这些数据进行处理,比如说语音数据压缩、语音识别样本处理。 图 3-6 音频输出部分电路图5程序下载区: ICE 基本运作方式是通过控制 clock 及通过 ICE 喂入指令方式,来控制CPU 的运行及缓存器资料和内存资料的存取,因此必须透过控制缓存器值的设定来控制目前 CPU 的动作。 每个相连接的不同ICE模块都拥有自己独特的3-bit ID,当PC在传送control信号时

19、都会先传送该 3-bit ID,只有ICE本身的ID和control信号的ID 相同时才会执行该命令或回传资料。61板上的74HC244主要在我们选用下载线的时候起作用,主要起缓存的作用和完成SDA是作为数据回送还是数据下传的选择。 图 3-7 下载区电路图6按键模块部分:按键是通过断控制来实现它的功能,61板上的按键在没按下时,它的1、3脚是断开的,当按下时这两个脚是接通的。如此时我们在1脚接一个高电平,把第三脚连到一个I/O口上,这就形成了一个人机操作界面,通过编程对I/O扫描,单片机就能识别到我们的按键命令。 图 3-8 按键电路图7D/A部分:D/A的作用就是把数字量转换为模拟量的部分

20、,第五章中的5.2.2小节的音频输出就是这个过程,把人讲话的声音波形通过SPCE061A芯片中的A/D采集后,处理后又通过D/A转换还原后,通过功率放大电路播出声音。SPCE061A提供了两路的D/A转换通道,分别是DAC1、DAC2。在实际的应用中我们也可以采集其他的模拟信号,如电压信号。 图 3-9 D/A部分电路图8复位功能模块:按下复位键,使整个61板复位。 图 3-10 图 3-119端口部分如图3-12所示:数据的输入与输出 图 3-12 端口部分电路图3.2 PCB布局布线规则根据电路的功能模块,对电路的全部元器件进行布局时,要符合以下原则:(1)按照电路的流程安排各个功能电路单

21、元位置使布局便于信号流通,并使信号尽可能保持一致方向。(2)以每个功能电路的核心器件为中心,围绕它来进行布局,元件应均匀、整齐、紧凑地排列在PCB板上,尽量减少和缩短各元器件之间的引线和连接。(3)在高频下工作的电路,要考虑元器件之间的分布参数,一般电路应尽可能使元器件平行排列,这样不但美观,而且装焊容易。(4)双面印制板中在同一层中不允许有交叉电路,对于可能交叉的线条,可以用“钻”、“绕”两种办法解决,对于实在无法通过的引线采用过孔在另一层布线(过孔应越少越好),同一级的电路接点应尽量靠近,并且本级电路的电源滤波电容也应接在该级接地点上。(印制板布局和布线应在讲究功能的同时与美观程度相互达到

22、和谐)3.3 印制电路板设计主要事项 (1)元件封装-元件的封装图最好根据实际的元件自制,以免出错。(2)焊盘大小-特别注意的是元件焊盘大小的设计,应根据元件大小设计合适的焊盘大小,勿过大或者过小。(3)工作层-KeepOut Layer禁止布线层,元件布局和走线都应该与印制板边沿保持大约1mm的间隙,所以应该选取一个机械层绘制印制板轮廓,而适当“缩小”,用禁止布线层绘制真实的布线限制范围。另外,在布线时,注意层的正确选择。(4)走线-电源线和接地的走线应比元件之间的走线要宽一些,应做到走线宽窄有度。设计电路原理图和PCB时,所有的元件标示要清晰准确,器件的型号也要清楚,然后要求美观。 (PC

23、B电路图见附录5)3.4 电路板焊接(1)安全-尽量避免烙铁与电源线相接触,更要避免烫伤自己。切记在进行焊接时不要甩动烙铁以免融化的焊锡伤到其他同学!(2)电路板摆放-焊接时电路板要处理的一面向上放平,另一面与桌面相隔一定的距离,利于底面的散热,可以先把四个支脚接上,这样就可以方便焊接。(3)元件焊接-可以先在要焊接元件的焊盘上预热几秒种,这样有助于焊锡的融化和焊接的牢固.在焊接完一个元件时烙铁头与焊接水平面成45快速从焊点上抽掉。焊点表面要光亮圆滑,焊锡不要过多过少,一般保证焊锡表面不上凸略下凹即可。在发现焊接元件困难时,可用适量的松香来助焊以让元件更好的与板结合,在焊接前可以在元件的引脚上

24、和电路板的焊盘上涂抹适量的松香,这样会使焊接更加成功(4)拆除焊接不理想的元件-准备好吸锡器或焊锡枪,在焊锡被融化的时候用吸锡器 吸走焊锡,取下元件重新焊接.(5)清洁烙铁头-如果烙铁头氧化不易上锡,要用专用的湿泡沫塑料或湿的餐巾纸擦净,不要用刀刮或用锉刀锉,也不要将烙铁头直接放进焊油盒接触焊油。(6)焊接流程图如图3-13所示:SPY0029A电阻二极管晶振独石电容电解电容瓷片电容电源整体初检焊接所有电容焊接按键,电位器发光二极管电源座第二次电源测试单排插针五针座麦克风芯片座焊接管脚修整 图 3-13 61板焊接流程I/O部分程序下载成功?按键部分电源部分测试晶振部音频输入部分音频输出部分7

25、2HC244部分D/A部分PWM部分NA/D部分2.硬件调试:1) 测试61板是否有短路:将J5的2,3脚短接,用万用表测试J10的电阻是否为0.若为0则可能短路了,非0则正常测试61板电源部分是否正常接上电池,打开电源,查看发光二极管是否点亮,点亮说明正常,否则可能部分器件有问题。2)语音输入部分测试:接上喇叭,用排线将IOA的低八位和IOB的低八位相连,IOA的高八位和IOB的高八位相连,按下RESET复位键,key4。把J2的左边两脚短接,听到“I/O测试成功”后,按键key3(听见喇叭有很大噪音是正常现象)现象一:无波形 结论:音频输入部分有问题;现象二:有不规则波形出现; 结论:正常

26、3)语音输出部分测试:按照音频输入部分的条件进行测试,用示波器查看波形现象一:无波形 结论:音频输出部分不正常现象二:有波形 结论:正常 图 3-14 61板测试流程图4)下载61板自检程序测试,听语音测试报告。当其不能测试时,先检查SPY0029是否焊接好,大多数没有通过的都是在这里出现问题,如果仍然没有通过,检查是否有元件焊错位置,尤其是独石电容,另外检查二极管是否焊接倒置,再检查电解电容有没有焊错位置。3.5 LED模组介绍1.模组资源:(1)8个按键,可以组成18 按键,也可以组成24 按键;(2)8个发光二极管;(3)6 位8 段LED 数码管;(4)一个电位器,提供05V 的模拟电

27、压信号。2.LED 键盘模组接口说明图如下图3-15所示: 图3-15 LED 模组接口说明图3.接口说明:LED 模组使用十分简单,直接用排线与61板I/O 接口相连即可。(1)KEYTEPE 选择接口此接口是选择2*4KEY 还是1*8KEY,具体选择方式如下:从左至右看,将第1 至4 短接块连接,选择了2*4KEY;只将第5个短接块短接,选择1*8KEY。选择2*4KEY 接口连接示意图如图3-16所示: 图3-16 选择2*4KEY 时KEYTEPE 接口连接示意图选择1*8KEY 接口连接示意图如图3-17所示: 图 3-17 选择1*8KEY 接口连接示意图 (2)2*4KEY 接

28、口2*4KEY 的第1 组行定义为ROW1,第2 组行定义为ROW2,4 列定义为COL1COL4。使用时COL1 是K1 和K5 的输入,COL2 是K2 和K6 的输入,COL3 是K3 和K7的输入,COL4是K4 和K8 的输入。用户可自行选择ROW1 与ROW2 接至VDD 还是GND,但同一时间只能使用一组。AV 是模拟电压输出端,通过调整R20 可以改变AV 的值,AV 的最大输出值与VDD 相同。D_DP 是第4 位数码管后时钟冒号的位信号控制端。图3-18 2*4KEY 接口图及使用示意图(3)1*8KEY 接口1*8KEY 的8 列分别定义为COL1COL8,1 行定义为R

29、OW1。 图 3-19 1*8KEY 接口图及使用示意图(4)DIG 接口6 位数码管的段发光管阳极和8 个LED 指示灯的阳极并联,并且8 个LED 指示灯采用共阴极方式。6 位数码管的阴极和8 个LED 的共阴极分别用DIG 接口的DIG1DIG7 控制,第4 位数码管后时钟冒号的位信号用DIG8 控制,位信号均为高有效。 图 3-20 DIG接口示意图(5)SEG 接口AG、DP 是6 位数码管的段信号和8 个LED 指示灯的阳极控制信号输入端。控制信号为高有效与61 板配套使用时,2、3、4 接口可用排线直接连至61 板的IOA 或IOB 接口。 图 3-21 SEG接口示意图3.6软

30、件设计3.6.1 C语言简介C语言具有语言简洁、紧凑,使用方便、灵活,运算符丰富,数据结构丰富,具有现代化语言的各种数据结构;具有结构化的控制语句(如if.else语句、whi1e语句、dowhi1e语句、for语句)。语法限制不大严格,程序设计自由度大;语言允许直接访问物理地址;生成目标代码质量高,程序执行效率高等优点,而且用语言编写的程序可移植性好。3.6.2 凌阳nSP汇编语言nSP的汇编指令只有单字和双字两种,其结构紧凑,且最大限度地考虑了对高级语言中C语言的支持。另外,在需要寻址的各类指令中的每一个指令都可通过与6种寻址方式的组合而形成一个指令子集,目的是为增强指令应用的灵活性和实用

31、性。而算术逻辑运算类指令中的16位16位的乘法运算指令(Mul)和内积运算指令(Muls),又提供了对数字信号处理应用的支持。此外,复合式的移位算术逻辑操作指令允许操作数在经过ALU的算逻操作前可先由移位器进行各种移位处理,然后再经ALU的算逻运算操作。灵活、高效是nSP指令系统的显著特点。 代码流动结构示意图如图3-22所示: 图 3-22 代码流动结构示意图3.7 凌阳unSPIDE184集成开发环境简介 nSP IDE 是由凌阳科技提供的一个集成开发环境,它集程序的编辑、编译、链接、调试和仿真等功能为一体。具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使程序设计工作更加方便、

32、高效。此外它的软件仿真功能可以不连接仿真板模,拟硬件的部分功能来调试程序。(1)编程工具:凌阳unSPIDE184如图3-23所示。 图3-23 IDE184界面(2)程序建立:建立项目:安装unSPIDE184,启动unSPIDE184编程工具,进入界面后用鼠标左键单击File下拉菜单New 弹出New 对话框,如下图所示;在该窗口中选中Project 标签并在File 的文本框中键入项目的名称;用鼠标左键单击New 对话框里的OK 按钮,则项目建立完成。图 3-24 新建项目、文件对话框(3)在SPJ文件下建立MAIN.C 主程序、ISR.ASM中断程序,KEY.ASM中断程序,FLASH

33、.ASM(4)添加设计所需要的库文件,资源文件,语音文件。这里连接sacmv26e库文件。(5)添加程序所需头文件:选择PROJECT-AND TO PROJECT-FILES添加所头频文件。(6)添加程序音频文件: 选择PROJECT-AND TO PROJECT-RESOURRCE选取所需音频文件。 图3-25 Link属性图3.8 程序设计3.8.1 主程序模块实现功能: (1)通过调用凌阳SPCE061A单片机的语音函数SACM_A2000和_ SACM_S480_分别实现开机播放音乐和人工提示音。(2)调用凌阳SACM_DVR录音函数实现录音、放音功能.(3)通过调用键盘扫描函数F_

34、Key_Scan 和键值获取函数Key = SP_GetCh()接收键值, 经CASE语句选择分支语句。(4)调用凌阳Time Count 、TimeReport、LedDispDig(1,i)、LedLights(x);函数实现计时,报时功能以及时长显示功能和点亮外接Led模组中的二极管。 开机播放提示音判断按键?Key2?Key1??开始录音,同时开始计时判断按键?Key3?Key3?Key1?Key2?停止录音,计时,报告录音时长,显示录音时长,点亮二极管。Key3?播放录音结束退出 主程序流程图(代码见附录1)3.8.2 语音提示 此次设计充分利用了凌阳SEPC061SA单片机的语音播

35、报功能,在设计中使用S480在录音前自动播报提示语音,这样设计出来的作品更具有新意性。(1)语音压缩:此过程主要是将Wave文件转成凌阳音频格式文件。第一步:利用PC机自带的录音机录制一段音乐,要注意语音文件的属性,最好选择为8Khz, 16位,单声道的语音文件,并将其保存。第二步:利用压缩工具将录制的语音文件进行压缩,压缩时注意压缩算法及编码率的选择,压缩完成后将其保存以便语音资源文件的添加。(2)压缩过程: 第一步: 图 3-26 用户可以选择压缩多个文件和单个文件,默认是单个文件;第二步: 图 3-27通过浏览按钮选择选择录制wave文件,点击下一步;第三步: 图 3-28选择结束后(此

36、次设计选用S480),点击“压缩”,压缩结束后,点击“下一步”。 图 3-27双击压缩前后的文件名称会有该文件的声音播放,用户对比压缩前后语音音质的变化。值得注意的是,记得要将压缩好的文件添加到语音资源库,同时也要在RESOURCE里面手工添加语音文件。调试出错情况及解决方法:1.现象:下载后运行,没有声音修改部分:仔细检查程序后,修改(含有下划线部分为修改处);int main() System_Initial(); PlayRespond(13);(添加在语音列表中要播放的语音)Play_S480(0); SACM_DVR_Initial(Manual); Status = Stop;2.

37、出现乱音。修改部分:经检查,写地址与程序地址重复,经修改起始写地址后排除。#define C_flashSize 0xfb00/FLASH可使用最大地址为:FBFFH。#define sector 0xed00/定义FLASH写的起始地址3.8.3 倒计时利用外接的LED键盘模组进行显示,倒计时功能能够提醒用户适当的录音时刻,解决了一按Key1键就开始录音而导致声音无法完全录入的问题。(LedDispDig函数流程见3.8.5部分录音时长显示)开始调用LedDispDig(Pos,i)函数显示倒计时设置A口与B口,并将数据送到A口调用Delay()函数结束倒计时流程图调试出错情况及解决方法:1

38、.程序编译没错误,下载到61A板上数码管无显示且录音功能破坏。出错原因:调用LedDispDig(Pos,i)程序位置出错。解决方法:改变LedDispDig(Pos,i)调用位置。2.倒计时显示数字时中间间隔时间大于预期(1秒)时间。出错原因:延时for语句位置放置出错。解决方法:改变延时for语句的位置。3.倒计时显示数字时中间间隔时间小于预期(1秒)时间,不能很好的显示321数字。 出错原因:延时for语句中的延时值(j)过小。 解决方法:改变j的值,使它在1秒左右。4.LED显示倒计时后的1不能消失影响后面的录音计时。 出错原因:LedDispDig(Pos,i)程序内的Dig值没有清

39、零。 解决方法:编写一条清零语句或调用Delay()函数。3.8.4 录音计时和时长播报该功能模块采用2HZ系统中断来计算录音时长,当按下录音键3秒倒记时结束后记时开始,按下停止键计时结束,并通过A2000播报出录音时长。计时程序见附录1中的system.asm。开始调用函数TimeReport();先调用函数ReadRealSecond();再调用函数PlaySpeakSecond();调用函数PlayRespond ();(PlayRespond();结束开始调用函Timer_Initial();先调用函数Timer_Clear();调用函数Calendar_Counter();(Play

40、Respond();结束 中断调用流程,在main()函数中 播报录音时长调用流程调试出错情况及解决方法:1.中断程序有可能没有调用。现象:计数值不会改变。解决方法:改变函数的调用位置,使之被调用到。2.中断程序有可能没有被执行。现象:计数值不会改变。解决方法:详细观看程序的流程。3.程序中的变量未被定义。现象: error A0007: Per500msSet undefined解决方法:使用 .VAR。4.没用宏定义变量。现象:Error L0080: The external symbol Per500msSet has not a public definition.解决方法:使用 .

41、PUBLIC。5.现象:不能计时。没有添加计时单元,2HZ中断计时程序没有被调用。修改部分:(1)定义计时单元 unsigned int TimeCount=0;(2)主程序中添加,Timer_Initial()计时中断调用,(3)定义语音资源在SpeechTable表中的位置:#defineC_T00 00 /00#defineC_T10 10 /10#defineC_MINUTE 11 /分#defineC_SECOND 12 /秒3.8.5 录音时长显示为实现该功能,本次设计使用外接LED键盘模组。LED键盘模组中有6个数码管,数码管的显示数据都由 LED 键盘模组的SEG 排针控制,

42、“DIG1DIG6”则对应6个数码管。将单片机的I/O 端口与上述接口连接,即可分别控制各个数码管。LedDispDig(Pos,i)程序可以控制数码管,只需要把录音时长赋值给i,即可在数码管上显示出i的值。开始初始化IOB为同相输出将要点亮的数码管位置Pos转换为IOB高8位输出值将要显示的数字Dig转换为LED编码,作为IOB低8位输出值IOB输出返回程序如下: #define LED_SEG 0x00ff/IOB0IOB7#define LED_DIG 0x3f00/IOB8IOB13void LedDispDig(int Pos,int i) /显示程序 *P_Watchdog_Cle

43、ar=1; /初始化IOB为同相输出 *P_IOB_Dir|=LED_SEG+LED_DIG; *P_IOB_Attrib|=LED_SEG+LED_DIG; *P_IOB_Data=(unsigned)0x01005;/将数字的位置转换为IOB高8位值,选中相应的数码管 *P_IOB_Data|=DigCodei;/将数字转换为编码,作为IOB低8位输出LedDispDig流程图调试出错情况及解决方法:1.程序编译没错误,下载到61A板上数码管无现像且录音功能破坏,那么调用LedDispDig(i)程序位置出错。解决方法:改变LedDispDig(i)调用位置。2.将编译好的程序下载到61A板上能录音但数码管不能正确显示录音时间数码管显示乱码现像,那么m值过大,值传递出错。解决方法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号