【精选】基于C8051F360语音存储回放系统源码.doc

【精选】基于C8051F360语音存储回放系统源码.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精选】基于C8051F360语音存储回放系统源码

语音存储回放——系统软件设计 班级:电科0801 姓名: 学号: 语音存储回放系统软件的基本功能是通过按键控制系统实现录音与放音。录音(语音的存储)时,采集语音信号并将采集的数据存入M25P16中;放音(语音的回放)时,从M25P16中读取数据送DAC。 一、设计题目 设计并制作一个数字化语音存储与回放系统,设计要求: 前置放大器增益可调,功率放大器输出功率≥0.5W。 带通滤波器:通带为300Hz~3.4kHz。 ADC:采样频率fs=8kHz,字长8位。 语音录放时间≥60s。 DAC:变换频率fc=8kHz,字长8位。 回放语音质量良好。 采用语音压缩算法,增加录放时间。 在建立系统软件的框架时,应考虑以下几个问题。 ⑴人机接口的功能设计 语音存储与回放系统的人机接口功能比较简单,按照功能要求要求只需要3个功能键:“擦除”键、“录音”键、“放音”键。“擦除”键有效时,单片机调用擦除子程序将M25P16中数据整片擦除,以便进行录音操作。“录音”键有效时,单片机以8kHz的频率采集语音信号,并将数据写入M25P16中。当“放音”键有效时,单片机通过读数据子程序从M25P16中取出数据送入DAC输出语音信号。 语音存储与回放系统在工作时需要提示一些简单的信息,入显示三种工作状态:录音状态、放音状态、擦出状态,另外,需要显示录音和放音的时间。 根据设计方案,语音存储与回放系统的单片机子系统采用并行总线单片机最小系统,人机接口采用LCD模块和矩阵式键盘。根据键盘的工作原理,当键有效时,单片机通过执行INT0中断服务程序读取键值。单片机根据读取的键值,执行相应的键处理程序。这里需要考虑的是,键处理程序放在INT0中断服务程序中还是放在主程序中。如果将键处理程序放在INT0中断服务程序中,则单片机在执行键处理程序时,无法响应同级别的中断,影响程序的效率和实时性。因此,将键处理程序放在主程序中,INT0中断服务程序只需要读取键值并设置一个键有效标志。主程序则不断循环检测键有效标志,如键有效标志置1,则根据键执行响应的键处理程序。每次检测到键有效标志置1后,应立即将键有效标志清零,以免键处理程序重复执行。 ⑵M25P16的读写方案设计 由于对M25P16写一字节数据和写一页(256字节)数据所需编程时间是相同的,约需0.64ms。语音存储与回放系统的数据采样频率为8kHz,采样周期为u0.125ms。如果每采集一字节数据就立即写入M25P16,显然M25P16在写操作时间上是不能满足要求的。因此,在程序设计中,采集的语音数据先存放在C8051F360内部的XRAM中,待采满256字节数据,调用M25P16页编程子程序将数据写入M25P16。由于采集256字节数据需要32ms的时间,可以满足M25P16对写操作时间的需求。 (3)A/D和D/A转化器的控制 为了精确控制采样频率,DAc由定时器2控制,在定时器2中断服务程序中向DAC送一字节数据,将数字化的语音信号转化成模拟信号。ADC由定时器3溢出启动A/D转化(注意需要禁止定时器3溢出中断),A/D转化结束后产生中断,通过ADC中断服务程序读取采样值。为了提高定时精确,定时器2和定时器3均采用16为自动重装工作方式。 (4)C8051F360单片机内部资源的使用 在语音存储回放系统中,需要使用C8051F360单片机的ADC、DAC、SPI0、XRAM、 定时器等资源。由于C8051F360单片机具有丰富的片上外设,除了人机接口和大容量的存储器外,不需要扩展其他外部设备,大大简化了系统硬件电路的设计。 根据上述分析,语音存储与回放系统的软件框架由主程序、键盘中断服务程序、定时器2服务程序、ADC中断服务程序组成。 1 . 主程序流程图 主程序的流程图如图。在主程序中首先执行C8051F360单片机和M25P16的初始化程序。C8051F360单片机的初始化包括I/O口初始化、内部振荡器初始化、ADC初始化、DAC初始化、SPI0初始化、定时器初始化、中断系统初始化、M25P16的初始化主要目的是通过写状态字消除M25P16的写保护。 主程序实际上是一个循环程序,不断的检测有无按键输入。有键输入时,根据键值做相应的处理。主程序中设置了两个工作状态:录音状态和放音状态,分别用两个标志位来表示。在录音状态下,数据每采集满256个字节,就调用页编程子程序,将XRAM中的数据写入M25P16中。在放音状态下,每转化完成256个字节的数据,就再从M25P16中读取下一页数据。 在录音和放音的过程中,还需要显示录音和放音的时间。由于采样频率是固定的,M25P16的存储地址的变化是与录音与放音时间是相关的,因此,可以用M25P16的存储地址换算后可得录音和放音的时间。 2 .

文档评论(0)

vshoulrengb3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档