




免费预览已结束,剩余98页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的 sd卡录音笔设计与实现 摘 要 本文介绍的是基于单片机的 sd卡录音笔的设计与实现。 首先介绍了 sd卡和 spce061a的技术应用,发展趋势和研究 意义;然后深入分析了单片机录音笔的基本原理,同时全面 介绍了实现基于单片机的 sd卡录音笔所需要的硬件和软件; 接下来是详细介绍了实现基于单片机的 sd卡录音笔的硬件电 路设计以及软件结构设计;最后对整个系统的性能进行测试 和分析。 整个系统分为硬件设计和软件设计两大模块。硬件部分 由凌阳公司的 spce061a单片机,扬声器,电池组等构成;软 件环境选择的是与硬件配套的 unsp ide 2.0.0。本系统能 够实现对声音的多段录音、放音、删除等功能。 关键词:nsp ide,spce061a,sd 卡,录音笔 microcontroller-based sd card recorder design abstract this article is based on the sd card recorder mcu design and implementation. first introduced the sd card and spce061a of technology, trends and research significance; then analyzed in depth the basic principles of single chip voice recorder, while achieving a comprehensive introduction to microcontroller-based sd card recorder necessary hardware and software; followed by implementation details of the microcontroller-based sd card recorder hardware circuit design and software architecture design; finally, overall system performance testing and analysis. the whole system is divided into two major hardware and software design module. hardware used by the microcontroller control chip sunpluss spce061a development board, speaker, battery pack; software environment and hardware choices are supporting unsp ide 2.0.0. the system can realize the multi sound recording, playback, delete and so on. keyword: nsp ide,spce061a,sd card,recorde i 目 录 1 绪论 .1 1.1 sd卡录音笔概论 .1 1.2 录音器的发展历史 .3 1.2.1 留声机 .3 1.2.2 钢丝录音和磁带 .3 1.2.3 数码录音笔 .4 1.3 sd卡录音笔的发展趋势 .5 1.3.1 提高录音质量 .5 1.3.2 多功能于一身 .5 1.3.3 降低成本减小体积 .5 1.4 基于单片机的 sd卡录音笔研究意义 6 2 录音笔功能分析及开发环境 .7 2.1 功能概述 .7 2.1.1 spce061a对 sd卡的读写功能 .7 2.1.2 录/放音及删除功能 .7 ii 2.2 设计环境介绍 .8 2.2.1 系统硬件环境介绍 .8 2.2.2 软件工作环境 nsp ide 介绍 .9 2.2.3 工程的操作 13 2.2.3.1 创建工程过程 13 2.2.3.2 开发操作过程 13 3 录音笔总体设计方案及硬件设计 15 3.1 总体设计方案 15 3.1.1 硬件设计总体框图 15 3.1.2 系统软件设计架构 16 3.2 系统硬件设计 17 3.2.1 系统硬件连接实物图 17 3.2.2 spce061a最小系统 .17 3.2.3 按键电路 19 3.2.4 音频输出电路 19 3.2.5 sd卡模组电路 .20 iii 4 系统软件设计 21 4.1 主程序设计 21 4.2 按键处理程序流程 23 4.3 按键扫描程序 29 4.4 语音录/放在 sd卡上的实现 31 4.5 语音文件操作管理程序 36 4.6 录/放音程序 .37 5 系统测试及性能分析 39 5.1 喇叭测试 39 5.2 程序下载及运行 40 5.3 系统功能测试 41 结论 .42 致谢 .43 参考文献 .44 附录 .45 iv 附录 1 主程序代码(main.c) .45 外文资料翻译(附原文) .56 1 1 绪论 1.1 sd卡录音笔概论 sd卡录音笔,数字录音器的一种,特点是机身小巧精致, 携带方便,录音笔是通过 sd卡的方式来存储音频的。比较于 以前的录音机和磁带录音方式来讲,录音笔通过对模拟信号 的采样、编码将模拟信号通过数模转换器转换为数字信号, 并进行一定的压缩后进行存储,音质效果也要比传统的录音 机好一些,而数字信号即使经过多次复制,声音信息也不会 受到损失,保持原样不变,由于是数字的录制方式,因此数 码录音笔的播放、定位、查找都非常的方便,并且可以实现 循环播放。 sd卡是一种基于半导体快闪记忆器的新一代记忆设备, 它被广泛地于便携式装置上使用,例如数码相机和多媒体播 放器等。大小犹如一张邮票的 sd记忆卡,重量只有 2克,但 2 却拥有高记忆容量、快速数据传输率、极大的移动灵活性以 及很好的安全性。 除了体积极小之外,sd 卡的存储特点是可以经受上百万 次的反复擦写,因此反复使用的成本是零。而且 sd卡容量越 大,录音时间也就越长。从现在的情况来看,1gb 闪存可以存 储大约 272小时录音信息。对于传统的磁带式录音方式来说, 简直是天方夜谭。 本课题是在 sd卡和凌阳 spce061a单片机的基础上设计 一款录音笔。凌阳 spce061a单片机具有的数字信号处理功能 及其所提供的音频压缩函数库来实现语音信号的实时采样与 压缩;通过 rs232接口,将采集到的语音信号实时上传到 sd 卡中存储。 sd卡数码录音笔主要由下列二部分组成: spce061a开 发板,sd 卡模组。 sd 卡数码录音笔的技术要求主要是:录制语音,播放语 音,删除语音。 3 spce061a开发板:spce061a 是一款 16 位微控制器,内 嵌 32k 的闪存(flash)。spce061a 为语音产品而集成了 adc、dac、agc 等,还具有 n 项内积运算指令,较高的处理 速度使 unsp 能够非常容易快速地处理复杂的数字信号,是 数字语音识别应用领域的一种最经济选择。 spce061a精简开发板配有调试功能;结合集成开发环境 不需外界任何仿真、调试器即可以完成编程、仿真、调试功 能。 本课题利用 spce061a的语音处理功能,以及其强大的处 理能力,再配合 sd卡模组,很容易实现了大容量超长录音功 能。 sd卡模组:sd 卡座模组为单片机提供了 sd卡的插接装 置,以 spi总线方式与单片机通讯,同时,提供卡检测、写 保护检测等检测端口,以便用户可以方便灵活的为单片机外 扩 sd卡存储设备。 还包括:外置扬声器,外置电源。 4 sd 卡数码录音笔广泛应用于社会各个部分,是当今最为 常见的录音设施之一。录音笔也由笔形逐渐发展成为各种形 状,趋于小巧实用。 1.2 录音器的发展历史 1.2.1 留声机 1877年 8月 15日,爱迪生发明了留声机。这台留声机由 金属大圆桶、曲轴、受话机和膜板构成,如上图。金属圆桶 上面刻有螺旋的槽纹,并安装在一个长的曲轴上,曲轴一端 是手柄,摇动手柄圆通就随之转动。受话器其实是一根金属 小管,管的一头有一张振膜,振膜上贴着一个有金属钝头的 细针,另一头是受话端。录音的时候,先在圆桶上贴一张锡 箔,然后将受话器细针端对准圆桶,匀速转动圆桶,对受话 器的另一端说话,声音则被振动的细针记录在锡箔上。回放 的时候,将细针端再拿回到圆桶的最开始处,转筒圆桶,声 音就被原样播放出来。 5 1.2.2 钢丝录音和磁带 爱迪生的留声机是纯机械录音技术,在这之后,录音技 术发展为光学录音、磁性录音和电子录音。其中,光学录音 顾名思义就是将声音信号转变为光学信号,记录在感光底片 上的一种技术,最初应用在有声电影的研究上,并在最早的 电影领域取得了广泛的应用。在电影胶片的一侧有一条窄条, 叫做声带,播放时由播放机转变为同步的声音信号予以伴音。 需要说明的是,光学录音由于对制作技术环节要求较高,且 不可擦写,所以当时除了电影伴音这部分应用广泛发展外, 其他应用面较为狭窄。 磁性录音是应非常广泛的录音技术,最具代表性的革新 就是 1900年钢丝录音机的发明。钢丝录音机利用磁性录音原 理,将受话器与电磁铁连接,将声音信号首先转换为不断变 化的磁信号,然后将钢丝与电磁铁紧密贴在一起并匀速转动, 这样钢丝上就形成了强度随声音信号变化而变化的磁场,回 放的时候只需要把钢丝重新在电磁铁上经过一次,声音就被 6 还原出来,磁带录音机就是钢丝录音机的改进版本,只是现 代人把钢丝改为了软质的塑料磁带而已。 1.2.3 数码录音笔 21世纪初,数码录音技术(也称电子录音)诞生,这是 通过对模拟信号的采样、编码将模拟信号通过数模转换器转 换为数字信号,并进行一定的压缩后进行存储的技术。而数 字信号即使经过多次复制,声音信息也不会受到损失,保持 原样不变。 通常数码录音笔的音质效果要比传统的录音机要好一些。 录音笔通常标明有 sp,lp 等录音模式,sp 表示 shotplay即 短时间模式,这种方式压缩率不高,音质比较好,但录音时 间短。而数码录音笔品牌分布图 lp表示 longplay,即长时间 模式,压缩率高,音质会有一定的降低。 因此,数码录音笔迅速取代之前所有录音产品,成为当 今录音领域的“专家”。 7 1.3 sd卡录音笔的发展趋势 从首款 sd卡录音笔上市到现在,短短 4年内成为销量最 大的随身录音设备,证明其有着极高的性能和质量,价格而 比较合理。随着电子录音技术的发展和消费者使用需求的提 高,数码录音笔的革新也是势在必行。 1.3.1 提高录音质量 一方面,随着科技的发展,录音笔的录音质量将会提升, 高清录音笔,超长时间录音笔将会面世。 1.3.2 多功能于一身 近几年,数码产品都朝着多功能化发展,随着技术的不 断发展,数码产品的整合绝对是将来的一个大方向,现在很 多录音笔都已经支持 mp3播放功能,已经从单纯的录音发展 到具备听 mp3音乐,u 盘,复读以及电话录音等多项功能。 8 此外,录音笔将发展到一个全新的阶段,录音/复读, mp3播放,影像记录,图片浏览(数码伴侣),txt 文档阅读, 移动存储等多功能于一身的录音笔将会出现。 1.3.3 降低成本减小体积 降低成本是任何技术商业化的重要前提,一般的途径是 通过规模生产来摊薄成本。录音笔的成本在于技术和原材料 两个方面,而技术的发展势必在成本上很难降低,所以,相 信通过生产原材料价格的走低,录音笔也会渐渐便宜。 既多功能,又小巧实用,外观精致创新,也是录音笔外 形的发展趋势。 1.4 基于单片机的 sd卡录音笔研究意义 本课题主要是研究基于单片机的 sd卡录音笔设计,本课 题是以单片机 spce061a来实现一个录音笔系统。spce061a 该 款单片机资源丰富,有强大的数字语音处理功能可应用与语 音播放和语音识别领域,内置有 2路 da转换,8 路 ad转换及 9 在线仿真等丰富的功能,这些都为实现数码录音和播放提供 了良好的方便条件。 长期以来,以 flash memory为存储体的 sd 卡因具备体 积小、功耗低、可擦写以及非易失性等特点而被广泛应用于 消费类电子产品中特别是近年来,随着价格不断下降且存储 容量不断提高,它的应用范围日益增广。 当数据采集系统需要长时间地采集、记录海量数据时, 选择 sd 卡作为存储媒质是开发者们一个很好的选择在电能监 测以及无功补偿系统中,要连续记录大量的电压、电流、有 功功率、无功功率以及时间等参数,当单片机采集到这些数 据时可以利用 sd 作为存储媒质。 因此,基于单片机的 sd卡录音笔将会是今后最常见的录 音工具。 10 2 录音笔功能分析及开发环境 2.1 功能概述 随着数字存储技术的发展,大容量存储设备充斥着电子 应用的方方面面。对于嵌入式系统来说,功能的增强,也需 要大容量存储设备做支撑。sd 卡是一种轻便的大容量的存储 设备。它使用方便,工作稳定,可以为嵌入式系统提供大容 量的数据存储扩展,使得系统有强大的录音功能。利用 spce061a为主控芯片,sd 卡做为存储介质,实现单片机的超 长时间录放音功能。 2.1.1 spce061a对 sd卡的读写功能 (1)spce061a 对 sd卡的操作方式为 spi模式; (2)提供 sd卡插入检测功能,并进行语音提示; (3)提供 sd卡写保护检测功能,并进行语音提示; (4)可以对 sd卡进行初始化、扇区写、扇区读、扇区擦除、 得到 sd卡的容量信息等操作。 11 2.1.2 录/放音及删除功能 (1)录音数据存储在 sd卡中; (2)支持多段录音; (3)放音支持“上一曲”、“下一曲”; (4)可以删除所有的录音片断,重新开始录音。 2.2 设计环境介绍 2.2.1 系统硬件环境介绍 本系统的硬件部分采用的是 spce061a单片机。spce061a 单片机是一个 16位结构的微控制器。以下是它的性能简介: (1)16 位的高性能 unsp内核单片机 (2)cpu 时钟范围:0.32mhz49mhz (3)片内 32k字的 flash程序存储器、2k 字的 sram数据存 储器 (4)4 个 16位 i/o端口 (5)14 个中断源 12 (6)1 通道专用音频 ad转换通道,7 通道 ad转换通道 (7)内置 mic放大电路和自动增益(agc)放大电路 (8)2 路电流输出型的 da转换通道 (9)2 个 16位通用定时器/计数器 (10)实时实钟(rtc) (11)低电压复位、低电压监测 (12)内置在线仿真接口(ice) (13)具有保密功能 (14)具有 watchdog功能 spce061a片内结构,主要包括 spce061a时钟电路,ppl 锁相环及外围电路,spce061a 系统时钟和 watchdog。图 2.1 为 spce061a片内结构图。 13 双 16位 定 时 器/计 数 器7通 道 10位 adc 单 通 道 +gcpu时 钟实 时 时 钟 flashram 时 基中 断 控 制 ioa15 -0 iob15 -0 锁 相 环振 荡 器 iob0 (sck)iob1(sda)低 电 压 监 测 /低 电 压 复 位 双 通 道10位 dac串 行 输 入 输 出 接 口 aud1a2 mic_in 32管 脚 通 用 输 入 输 出 端 口 16位 微控 制 器unsp+icexi/r oice_ski_da ie_n cpv iob7( rxd) iob10( txd)串 行 异 步 通 讯 接 口watchdog 图 2.1 spce061a片内结构 2.2.2 软件工作环境 nsp ide 介绍 本系统的软件设计使用的是 nsp ide 集成开发环境。 unsp ide集成开发环境支持汇编语言和 c语言混合编程进 行程序开发,集程序的编辑、编译、链接、调试以及仿真等 功能为一体并且支持软件仿真和调试的功能。 14 unsp ide的主要特点是:提供了友好的交互界面、易 于操作,使调试工作方便且高效。工具界面主要分为主菜单, 工具栏,工作区窗口,编辑区窗口,输出区窗口。图 2.2为 工具界面参照图。 图 2.2 工具界面参照图 workspace窗口,如图 2.3。 workspace窗口由 fileview和 resourceview两个视窗组 成。单击 fileview标签,用户可以方便浏览到工程内的各文 件。fileview 视窗用层次图排列出当前工程的所有文件的逻 15 辑关系。files 文件夹包含了源程序、程序接口和说明硬件配 置情况的文件。resource 文件夹包括了各种资源文件(rc)。 source files文件夹用于保存源文件。head files文件夹用 于保存头文件。external dependencies文件夹用于保存对工 程的一些标注信息。resourceview 视窗列出当前工程用到的 所有资源。可以单击视窗内分支顶部旁边的和号展开和 收缩层次图。 workspace窗口所体现的逻辑位置不是指文件在硬盘上的 物理位置,而是指一种逻辑从属关系。用户可用拖曳的办法 改变文件的逻辑位置。在 workspace窗口内,不同类型的文 件有不同的图标表现。 16 图 2.3 workspace窗口 output窗口,如图 2.4。 output窗口用于显示编译、调试和查找的结果。在窗口 底部有几个视窗标签:build、debug 和 find in files等。 用鼠标单击这些标签,可以激活相应的视窗。 build:显示编译和链接过程里产生的信息,包括文件编 辑过程里的错误和警告信息等。 debug:显示程序调试过程里出现的信息。 find in files:显示在文件中查找字符的结果。 edit 窗口:在 edit窗口里,文件的打开格式有两种: 用户可用文本格式打开文件,也可以用二进制代码格式打开 文件。 17 图 2.4 output窗口 文件编辑器,如图 2.5。 文本编辑器可以用来打开汇编语言程序和 c语言程序。 图 2.5 文件编辑器 二进制代码编辑器,如图 2.6。 二进制代码编辑器让用户在 edit窗口里以十六进制数 /ascii字符的形式来编辑二进制代码的资源文件。 图 2.6 二进制代码编辑器 18 2.2.3 工程的操作 2.2.3.1 创建工程过程 (1)选择filenew,打开 new对话框如图 2.7,选择 project标签; (2)在 file文本框内输入工程名称; (3)在 location文本框内输入工程文件的路径; (4)在 select body here区域内选择 probe; (5)单击ok,创建工程。 图 2.7 创建工程对话窗口 19 2.2.3.2 开发操作过程 从开始菜单内启动工具; 选择fileopen project,在打开对话框内选 择所要打开的工程; 窗口(工作区窗口)显示在工具的左半边,在这个窗口 内,用户可以看到当前工程所包含的所有文件; 选择buildrebuild all,进行源文件的编译和链 接。 编译过程里的语法错误显示在 output窗口内; 选择buildstart debugdownload,把程序加 载到 ram,然后,用户可以用 debug菜单内所提供的调试命令 来优化和运行程序。选择 6、buildstart debuggo, 在调试器内运行程序。 20 3 录音笔总体设计方案及硬件设计 3.1 总体设计方案 3.1.1 硬件设计总体框图 系统采用 spce061a做为主控制器,使用其通用 i/o口控 制 sd卡设备,实现存储器扩展;利用电路板上的三个按键对 录放音进行控制;利用 spce061a带有 agc的专用 a/d转换通 21 道做为音频输入,完成语音录制功能;利用 spce061a的 d/a 进行音频输出,实现语音播放功能。图 3.1 为硬件总体框图。 输入指令麦克风 扬声器 电源线 录音 放音 电源 sd卡 spce061a 储存或删除数字信号 提取数字信号 按键键盘 图 3.1 硬件总体框图 3.1.2 系统软件设计架构 软件系统包括以下部分: 22 主程序:完成系统的初始化,处理按键信息,并根据按 键,在语音文件操作管理程序的配合下,创建语音文件进行 录音,或控制读取语音文件进行回放。 按键扫描程序:完成对 ioa口低八位的 18按键进行扫 描,并完成去抖、判断长/短按键等功能。 sd卡驱动程序:该部分完成对 sd卡的初始化、得到卡的 容量信息、读写操作、擦除操作等。 语音文件操作管理程序:该部分完成对多段录音的管理。 每增加一段录音,程序会将起始地址、终止地址等相关信息 保存,以便可以回放。 录/放音程序:实现对 a/d采样数据的编码和存储,以及 从 sd卡读取录音数据并解码然后送至 d/a播放等操作。 23 3.2 系统硬件设计 3.2.1 系统硬件连接实物图 系统主要由 spce061a单片机,麦克风,扬声器,电源及 储存器构成。spce061a 单片机控制板作为整个系统的主控板, 对麦克风采集来的声音信号进行数字处理并储存号功能。图 3.3 为硬件连接实物图。 3.3 系统硬件连接实物图 24 3.2.2 spce061a最小系统 本设计选用的单片机模块为 spce061a单片机模块,该模 块包括 spce061a芯片(mcu)、片内 flash和其外围的基本 模块。外围模块有:电机驱动电路板、锁相环外围电路 (pll)、复位电路(reset)等。 spce061a的主控芯片,负责构建语音录放的数据结构, 并在单片机内部 flash中保存有语音内容和相关语音信息。 spce061a控制端口输出控制信息,并控制喇叭输出声音 信息。实现对整个系统的控制。通过本系统中的音频输入电 路和 mic,可以采集语音信号并处理。图 3.4为 spce061a最 小系统图。 25 图 3.4 spce061a最小系统图 26 3.2.3 按键电路 本系统使用三个按键完成录放音控制。图 3.5为按键电 路图。 key1为“下一曲”键,key2 为“上一曲”键,key3 为“录音 键”。 图 3.5 按键电路图 3.2.4 音频输出电路 spce061a内置 2路 10位精度的 dac,只需要外接功放电 路即可完成语音的播放。电路中 spy0030是凌阳公司一款音 频放大芯片。它和 lm386相比,lm386 工作电压需在 4v以上, spy0030仅需 2.4v即可工作(两颗电池即可工作);lm386 输 27 出功率 100mw以下, spy0030 约 700mw。图 3.6为音频输出电 路图。 图 3.6 音频输出电路图 3.2.5 sd卡模组电路 在本系统中,spce061a 通过 spi总线实现对 sd卡设备的 访问。sd 卡模组同时提供卡插入检测和写保护检测接口。图 3.7为 sd卡模组电路图。 28 图 3.7 sd卡模组电路图 29 4 系统软件设计 4.1 主程序设计 主程序采用的是汇编语言和 c语言混合编程。主程序流程图 如图 4.1。 30 系统初始化 检测 sd卡是否插入? 否 检查 sd卡是否写保护? 置写保护标志 播放“sd 卡写保护” 是 否 初始化 sd卡 按键处理 系统状态处理 是 播放“注意 sd卡没有插入” 检测 sd卡是否插入? 否 是 播放“就绪” 语音提示程序 开始 图 4.1 主程序流程图 主程序完成系统初始化后检测 sd卡是否插入以及是否有 写保护,并有相应的语音提示,告知用户当前的系统状态。 如果 sd卡正确插入,则系统根据用户的不同按键进行录/放 31 音控制。同时,在循环中对系统当前的状态进行检测,控制 系统在录制语音时不至于超出存储器容量限制,或控制系统 在放音时播放至文件尾部自动停止播放。 部分程序如下: sacm_dvr1600_initial(); / 语音初始化 if(0 = sd_chkcard() / 检测卡是否插入 playsnd(voice_attention, dac1 + dac2); playsnd(voice_sdcardnotinsert, dac1 + dac2); while(0 = sd_chkcard(); / 等待卡插入 if(1 = sd_chkcardwp() / 检测卡是否有写保护 writeprotect = 1; else fs_init(); / 没有写保护,执行初始化操作 playsnd(voice_ready, dac1 + dac2); / 播放“就绪“ /- while(1) keyprocess(); / 按键处理 statusprocess(); / 系统状态处理 sacm_dvr1600_serviceloop(); / 录/放音服务 32 4.2 按键处理程序流程 按键处理程序中,当检测到有 sd卡写保护时,会播放 “卡有写保护”的提示音,对按键不做处理。按键处理流程 图如图 4.2。 初始化 判断是否有写保护标志? 否 判断按键 key3录音键 是 key2上一曲键 key1下一曲键 返回 开始 图 4.2 按键处理流程图 部分程序如下: 33 key = keyscan_getkey( if(1 = writeprotect) / 卡有写保护,拒绝按键操作 if(c_sreleasekeystate = keytype) | (c_lreleasekeystate = keytype) return; switch(key) 当按下录音键时,若为短按键且 sd卡未满,提示录音开 始并置录音标志,开始录音。“录音”按键处理程序的流程 图如图 4.3所示。 34 图 正在播放? 短按键? 是 是 停止播放,关闭读取 sd卡 系统状态置空闲 sd卡已满? 否 是 否 系统空闲? 否 启动写入 sd卡,开始录音 系统状态置录音 否 是 正在录音? 结束录音,录音收尾 是 否 开始 返回 4.3 录音键流程图 部分程序如下: case c_record: / record if(c_sreleasekeystate = keytype) / 短按键,录/ 放音控制 if(play = status) 35 sacm_dvr1600_stop(); / 如果正在放音,则先停止播放 fs_closeopenfile(); status = idle; if(idle = status) if(g_filenum = fs_max_filenum) | (fs_getunusedsecnum() 0) if(play = status) /如果正在放音,则先停止播放 sacm_dvr1600_stop(); fs_closeopenfile(); else if(record = status) / 如果正在录音则不处理 if(c_lreleasekeystate = keytype)/长按键,停止当前播放 status = idle; else if(c_sreleasekeystate = keytype)/ 短按键,播放下一曲 系统状态处理程序主要完成在录音时判断是否超出 sd卡 容量限制,或者在放音时当前语音是否播放完毕。系统状态 流程图如图 4.6。 检查 sd卡是否已满? 是否正在录音? 播放是否结束? 停止录音 系统状态置空闲 是否正在播放? 停止读取 系统状态置空闲 是 否 否 否 是 是 是 否 返回 开始 40 图 4.7 系统状态处理流程图 部分程序如下: switch(status) case record: if(fs_getunusedsecnum() = (sd_blocksize - curoffset) sd_writingblockdata(unsigned long int)(sd_blocksize - curoffset), (unsigned char *)buf); sd_writefinished(); 54 curfilesec+; curfileendsec = curfilesec; i = sd_blocksize - curoffset; curoffset = len - i; i = 1; sd_writenewblock(curfilesec); sd_writingblockdata(unsigned long int)curoffset , (unsigned char *) else sd_writingblockdata(unsigned long int)len, (unsigned char *)buf); curoffset += len; void fs_readingfile(unsigned int *buf, unsigned int len) unsigned int i; len = (sd_blocksize - curoffset) sd_readingblockdata(unsigned long int)(sd_blocksize - curoffset), (unsigned char *)buf); sd_readfinished(); if(curfilesec = 1; sd_readnewblock(curfilesec); sd_readingblockdata(unsigned long int)curoffset, (unsigned char *) else sd_readingblockdata(unsigned long int)len, (unsigned char *)buf); curoffset += len; 55 5 系统测试及性能分析 系统的硬件部分和软件部分完成以后,应对系统进行严 格的测试及性能分析。为了保证系统功能的实现,系统的测 试按照主程序流程所设计的方案依次对各模块进行测试。系 统测试流程图如图 5.1。 喇叭测试 主程序下载运行 控制模块测试 音频输入 音频输出 图 5.1 系统测试流程图 5.1 喇叭测试 目的:测试喇叭能否正常工作 56 条件:只连接喇叭和电路板,噪音相对较小的室内环境。 步骤 1:接通电源,用万用表测量喇叭的正负极看是否有 电压。 步骤 2:将一个最简单的语音播放程序下载并运行。 现象 1:万用表可以测量出电压。 结论:喇叭无损环,电路连接正常。 现象 2:程序下载并运行后,声音能正常播放。 结论:喇叭可以正常工作。 5.2 程序下载及运行 在程序下载前,先按照硬件连接图 3.3连接好硬件,然 后把 3节五号电池装入电池盒并把电源线与系统连接。下载 线的一边(25 针插座)与 pc后面的并行接口相接,另一边的 五针接头与电路板上标有“ez-probe”的插座(j11)相接, 并用 j11接口边上的 s5跳线把 s5的 2和 3管脚短接。打开 57 电池盒开关,power 指示灯和 lcd液晶显示屏上的电源指示灯 都被点亮,证明系统连接正常,可以开始下载。 用 ide打开设计好的工程文件,并确认以选定了“use ice”按钮。选择“use ice”如图 5.2。 图 5.2 选择“use ice” 当程序处于下载状态时,会弹出一个进度框。下载进程 如图 5.3。 图 5.3 下载进程对话框 下载完成后关闭电池盒开关,断开“ez-probe”下载线 并把 s5跳线的 1、2 管脚短接。这时程序下载完成,打开电 池盒开关运行。 58 5.3 系统功能测试 系统运行后,如果 sd卡没有插入,会提示“注意,sd 卡 没有插入”,并等待 sd卡插入后进行下一步操作; 如果 sd卡被写保护,则会提示“注意,sd 卡写保护”, 此后,所有按键均无效,按下任意键会提示“sd 卡写保护”。 此时,用户需要去除 sd卡写保护,并重新运行程序; 如果 sd卡正常插入并且没有写保护,等待 sd卡初始化 成功后会有“就绪”的提示音。 sd卡正常初始化后,可以按照各按键功能进行操作; 按下 key3键,启动录音,此时,会有“开始录音”的提 示音。再次按下 key3键结束本次录音,此时,会有“结束录 音”的提示音; 停止录音后,按下 key2播放上一段录音,按下 key1播 放下一段录音; 长按 key2键将清除所有已录语音,此时会有“sd 卡已擦 除”的提示音; 59 长按 key1键将停止放音。 结论:实现录音,放音,删除功能,测试成功。 结论 本课题是基于单片机的 sd卡录音笔设计与实现,根据课 题的要求设计了 sd卡数码录音笔,在设计中主要完成了以下 几个方面的内容: 系统硬件结构设计:spce061a 开发板,sd 卡模组。系统 软件架构设计:完成了语音文件的录制,播放和删除,写入, 读取及擦除 sd卡。 在本课题中,用 spce061a开发板上的 mic作为语音信号 采集器,喇叭作语音播放器,通过单片机内部存储器并调用 语音模块对输入的命令进行处理,完成录音的过程。 由于芯片功能和本人能力的限制,本系统还有许多有待 完善和扩展的地方,主要有以下两方面: 60 spce061a开发板片内 flash的容量只有 32k,预存的语 音信息质量受到了很大的限制。这些问题可以通过外接 spr 模组扩充系统存储空间来解决。 随着计算机的不断普及,人们对人机交互的要求越来越 高。sd 卡录音笔的研究和开发将极大的提高人机交互质量, 因而我相信在不久的将来 sd卡数码录音笔会得到充分的发展 和应用。 致谢 经过 3个多月的努力,终于完成了本次毕业设计。一直 以来,邢老师不但为我们创造了良好的学习氛围而且给我们 提供了毕业设计的设备。从邢老师那里我不仅学习到了知识, 更重要的是他严格要求,精益求精,严谨求实的治学态度给 我留下了深刻的印象,这必将使我终身受益。在此,向邢老 师致以深深的谢意。 61 感谢北方工业大学信息工程学院为我们提供了做毕业设 计的实验室,感谢信息工程学院所有帮助过我、指导过我的 老师,是他们无私的指导和耐心的教诲,让我学习到了很多。 同时我也真诚的感谢我的班级导师邢志强老师,从刚进大学 的毛头小子成长到现在,都得到了邢老师热情的帮助和无微 不至关怀。 感谢通信工程 06a-2班的所有同学。在与他们共同学习, 共同生活的四年里,与他们的交流和讨论,扩展了我的思路, 对论文的完成颇有益处。 真诚的感谢我的家人,他们对我无私的关心和支持,是 我勇往直前的动力,他们对我的鼓励使我度过了大学生活中 的一个个难关。 62 参考文献 1 姜志玲.用凌阳单片机实现多路数据采集与传输系统j. 西华大学学报.2005 2 王素珍,田振清.用 isp实现对 isd25120语音芯片的录 放音控制j.电声技术.2002 3 林阳.凌阳16位单片机与其它主流单片机的比较j. 电 子世界. 2003 4 王竹便.录音技术及技巧浅议j.科技情报开发与经济. 2005 5 孟宪超. 数码录音笔原理及应用j.信息时代导刊.2004 6 薛驹义,张彦斌等.凌阳 16位单片机原理及应用m.北 京:北京航空航天大学出版社,2005 7 罗亚非 等编.凌阳 16位单片机应用基础m.北京:北京 航空航天大学出版社,2005 63 8 digital voice recorder design.db/ol.sunplus technology, dec.21,2004 version 0.8 9 john markus.电子电路大全m.北京:计量出版社, 1995 10 邓元庆.数字电路与逻辑设计m.北京:电子工业出版 社,2001 11 胡隆,许静波.录音、调音与音响技术m.北京:北京 工业大学出版社,第 1版 12 王宏民.录音与调音m.北京:中国广播电视出版社, 第 1版 13 杨行峻,迟惠生.语音信号数字处理m.北京:电子工业 出版社,第 1版 14 one based on monolithic integrated circuits digital sound recording and the broadcast system.m.prentice hall press,1993 64 15 sd memory card specifications.z.2001 附录 附录 1 主程序代码(main.c) #include “sd_recording_demo.h“ #include “.driversdsd_driver.h“ #include “.fsfs.h“ #include “.dvrsystemsacmv40.h“ #include “.dvrsystemplaysnd.h“ #include “.systemsetinterruptstatus.h“ #include “.driverkeykey.h“ #define adc_channel mic / 07 (mic, line_in1 line_in6) 65 void keyprocess(); void statusprocess(); sysstatus status; / 系统状态, sysstatus定义在 sddvr.h中 int speechindex; int writeprotect; /= = / 语法格式: int main(void) / 实现功能: 主函数 /= = int main() 66 speechindex = 0; writeprotect = 0; status = idle; drvkeyinit(); sd_ioinit(); setintstatus(c_irq5_2hz); setintstatus(c_irq4_1khz); _asm(“irq on“); sacm_dvr1600_initial(); / 语音初始 化 if(0 = sd_chkcard() / 检测卡是否插入 playsnd(voice_attention, dac1 + dac2); playsnd(voice_sdcardnotinsert, dac1 + dac2); while(0 = sd_chkcard(); / 等待卡插入 67 if(1 = sd_chkcardwp() / 检测卡是 否有写保护 writeprotect = 1; playsnd(voice_attention, dac1 + dac2); playsnd(voice_sdcardwriteprotect, dac1 + dac2); else fs_init(); / 没有写保护,执 行初始化操作 playsnd(voice_ready, dac1 + dac2); /- - while(1) 68 keyprocess(); / 按键处理 statusprocess(); / 系统状态处理 sacm_dvr1600_serviceloop(); / 录/放音 服务 return 0; /= = / 语法格式: int statusprocess(void) / 实现功能: 系统状态处理函数 /= = void statusprocess() 69 switch(status) case record: if(fs_getunusedsecnum() = fs_max_filenum) | (fs_getunusedsecnum() 0) if(play = status) / 如果正在放 音,则先停止播放 sacm_dvr1600_stop(); fs_closeopenfile(); else if(record = status)/ 如果正在录 音则不处理 break; 75 if(c_lreleasekeystate = keytype) / 长按键,擦除所有 语音段 fs_init(); playsnd(voice_sdcarderased, dac1 + dac2); status = idle; break; else if(c_sreleasekeystate = keytype) / 短按键,播放上一 曲 if(-speechindex 0) if(play = status) / 如果正在放 音,则先停止播放 sacm_dvr1600_stop(); 77 fs_closeopenfile(); else if(record = status)/ 如果正在录 音则不处理 break; if(c_lreleasekeystate = keytype) / 长按键,停止当前 播放 status = idle; break; else if(c_sreleasekeystate = keytype) / 短按键,播放下一 曲 if(+speechindex g_filenum) 78 speechindex = 1; fs_openfile(speechindex); sacm_dvr1600_play(manual_mode_index, dac1 + dac2, ramp_up + ramp_dn); status = play; break; default: break; 79 外文资料翻译(附原文) 录音笔设计 凌阳科技 2004 年 12月 21日 第 0.8版 一、摘要 首先,介绍设计方案的选择,介绍了凌阳单片机的集成 开发环境。接着进行了系统的硬件设计,包括音频输入输出 电路的设计、存储电路的设计、按键控制电路的设计、液晶 显示电路的设计等,设计中采用了凌阳的功放芯片 spy0030, 利用了单片机其串行接口 sio实现上位机与下位机的通讯, 利用 uart的 rs232接口与 pc机 232接口进行连接,并设置 了 8位键盘和 lcd显示的人机界面。然后分模块进行了软件 设计,包括主程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年信息管理专业硕士考试试卷及解答
- 2025年社会工作者职业资格考试卷及答案
- 2025年教育信息化与技术应用考试题及答案
- 2025年驾考科目二模拟试题及答案
- 2025年公共文化服务管理考试卷及答案
- 物资储存使用管理制度
- 物资部门防汛管理制度
- 特殊儿童辅助管理制度
- 特殊区域顶板管理制度
- 特殊物品运输管理制度
- 病原微生物识别技巧试题及答案
- 2024-2025学年高中中国航天日班会 课件 弘扬航天精神 逐梦星辰大海
- 不稳定型心绞痛护理诊断及护理措施
- 药品配送运输流程图解
- 腹膜透析围手术期的护理
- 虚拟实验在高中生物学实验教学中的应用研究
- 糖尿病足护理疑难病例讨论
- 频繁停电培训课件
- 2025年度数据中心制冷设备采购与安装施工合同范本
- 2025年广西宏桂资本运营集团招聘笔试参考题库含答案解析
- 英语中国文化
评论
0/150
提交评论