毕业论文-基于单片机的sd卡录音笔设计与实现

毕业论文-基于单片机的sd卡录音笔设计与实现

ID:25627322

大小:1.25 MB

页数:60页

时间:2018-11-21

上传者:U-25923
毕业论文-基于单片机的sd卡录音笔设计与实现_第1页
毕业论文-基于单片机的sd卡录音笔设计与实现_第2页
毕业论文-基于单片机的sd卡录音笔设计与实现_第3页
毕业论文-基于单片机的sd卡录音笔设计与实现_第4页
毕业论文-基于单片机的sd卡录音笔设计与实现_第5页
资源描述:

《毕业论文-基于单片机的sd卡录音笔设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

基于单片机的SD卡录音笔设计与实现摘要本文介绍的是基于单片机的SD卡录音笔的设计与实现。首先介绍了SD卡和SPCE061A的技术应用,发展趋势和研究意义;然后深入分析了单片机录音笔的基本原理,同时全面介绍了实现基于单片机的SD卡录音笔所需要的硬件和软件;接下来是详细介绍了实现基于单片机的SD卡录音笔的硬件电路设计以及软件结构设计;最后对整个系统的性能进行测试和分析。整个系统分为硬件设计和软件设计两大模块。硬件部分由凌阳公司的SPCE061A单片机,扬声器,电池组等构成;软件环境选择的是与硬件配套的u’nspIDE2.0.0。本系统能够实现对声音的多段录音、放音、删除等功能。关键词:μ’nSPIDE,SPCE061A,SD卡,录音笔 Microcontroller-basedSDCardRecorderDesignAbstractThisarticleisbasedontheSDCardRecorderMCUDesignandImplementation.FirstintroducedtheSDcardandSPCE061Aoftechnology,trendsandresearchsignificance;thenanalyzedindepththebasicprinciplesofsinglechipvoicerecorder,whileachievingacomprehensiveintroductiontomicrocontroller-basedSDCardRecordernecessaryhardwareandsoftware;followedbyimplementationdetailsofthemicrocontroller-basedSDCardRecorderhardwarecircuitdesignandsoftwarearchitecturedesign;Finally,overallsystemperformancetestingandanalysis.Thewholesystemisdividedintotwomajorhardwareandsoftwaredesignmodule.HardwareusedbythemicrocontrollercontrolchipSunplus'sSPCE061Adevelopmentboard,speaker,batterypack;softwareenvironmentandhardwarechoicesaresupportingu'nspIDE2.0.0.Thesystemcanrealizethemultisoundrecording,playback,deleteandsoon.Keyword:μ’nSPIDE,SPCE061A,SDCard,Recorder 目录1绪论11.1SD卡录音笔概论11.2录音器的发展历史31.2.1留声机31.2.2钢丝录音和磁带31.2.3数码录音笔41.3SD卡录音笔的发展趋势51.3.1提高录音质量51.3.2多功能于一身51.3.3降低成本减小体积51.4基于单片机的SD卡录音笔研究意义62录音笔功能分析及开发环境72.1功能概述72.1.1SPCE061A对SD卡的读写功能72.1.2录/放音及删除功能 72.2设计环境介绍82.2.1系统硬件环境介绍82.2.2软件工作环境Μ’NSPIDE介绍92.2.3工程的操作132.2.3.1创建工程过程132.2.3.2开发操作过程133录音笔总体设计方案及硬件设计153.1总体设计方案153.1.1硬件设计总体框图153.1.2系统软件设计架构163.2系统硬件设计173.2.1系统硬件连接实物图173.2.2SPCE061A最小系统17III 3.2.3按键电路193.2.4音频输出电路193.2.5SD卡模组电路204系统软件设计214.1主程序设计214.2按键处理程序流程234.3按键扫描程序294.4语音录/放在SD卡上的实现314.5语音文件操作管理程序364.6录/放音程序375系统测试及性能分析395.1喇叭测试395.2程序下载及运行405.3系统功能测试41结论42致谢43参考文献44附录45附录1主程序代码(MAIN.C)45外文资料翻译(附原文)56III III 1绪论1.1SD卡录音笔概论SD卡录音笔,数字录音器的一种,特点是机身小巧精致,携带方便,录音笔是通过SD卡的方式来存储音频的。比较于以前的录音机和磁带录音方式来讲,录音笔通过对模拟信号的采样、编码将模拟信号通过数模转换器转换为数字信号,并进行一定的压缩后进行存储,音质效果也要比传统的录音机好一些,而数字信号即使经过多次复制,声音信息也不会受到损失,保持原样不变,由于是数字的录制方式,因此数码录音笔的播放、定位、查找都非常的方便,并且可以实现循环播放。SD卡是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机和多媒体播放器等。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。除了体积极小之外,SD卡的存储特点是可以经受上百万次的反复擦写,因此反复使用的成本是零。而且SD卡容量越大,录音时间也就越长。从现在的情况来看,1GB闪存可以存储大约272小时录音信息。对于传统的磁带式录音方式来说,简直是天方夜谭。本课题是在SD卡和凌阳SPCE061A单片机的基础上设计一款录音笔。凌阳SPCE061A单片机具有的数字信号处理功能及其所提供的音频压缩函数库来实现语音信号的实时采样与压缩;通过RS232接口,将采集到的语音信号实时上传到SD卡中存储。SD卡数码录音笔主要由下列二部分组成:SPCE061A开发板,SD卡模组。SD卡数码录音笔的技术要求主要是:录制语音,播放语音,删除语音。SPCE061A开发板:SPCE061A是一款16位微控制器,内嵌32K的闪存(FLASH)。SPCE061A为语音产品而集成了ADC、DAC、AGC等,还具有n55 项内积运算指令,较高的处理速度使u’nSP能够非常容易快速地处理复杂的数字信号,是数字语音识别应用领域的一种最经济选择。SPCE061A精简开发板配有调试功能;结合集成开发环境不需外界任何仿真、调试器即可以完成编程、仿真、调试功能。本课题利用SPCE061A的语音处理功能,以及其强大的处理能力,再配合SD卡模组,很容易实现了大容量超长录音功能。SD卡模组:SD卡座模组为单片机提供了SD卡的插接装置,以SPI总线方式与单片机通讯,同时,提供卡检测、写保护检测等检测端口,以便用户可以方便灵活的为单片机外扩SD卡存储设备。还包括:外置扬声器,外置电源。SD卡数码录音笔广泛应用于社会各个部分,是当今最为常见的录音设施之一。录音笔也由笔形逐渐发展成为各种形状,趋于小巧实用。1.2录音器的发展历史1.2.1留声机1877年8月15日,爱迪生发明了留声机。这台留声机由金属大圆桶、曲轴、受话机和膜板构成,如上图。金属圆桶上面刻有螺旋的槽纹,并安装在一个长的曲轴上,曲轴一端是手柄,摇动手柄圆通就随之转动。受话器其实是一根金属小管,管的一头有一张振膜,振膜上贴着一个有金属钝头的细针,另一头是受话端。录音的时候,先在圆桶上贴一张锡箔,然后将受话器细针端对准圆桶,匀速转动圆桶,对受话器的另一端说话,声音则被振动的细针记录在锡箔上。回放的时候,将细针端再拿回到圆桶的最开始处,转筒圆桶,声音就被原样播放出来。1.2.2钢丝录音和磁带55 爱迪生的留声机是纯机械录音技术,在这之后,录音技术发展为光学录音、磁性录音和电子录音。其中,光学录音顾名思义就是将声音信号转变为光学信号,记录在感光底片上的一种技术,最初应用在有声电影的研究上,并在最早的电影领域取得了广泛的应用。在电影胶片的一侧有一条窄条,叫做声带,播放时由播放机转变为同步的声音信号予以伴音。需要说明的是,光学录音由于对制作技术环节要求较高,且不可擦写,所以当时除了电影伴音这部分应用广泛发展外,其他应用面较为狭窄。磁性录音是应非常广泛的录音技术,最具代表性的革新就是1900年钢丝录音机的发明。钢丝录音机利用磁性录音原理,将受话器与电磁铁连接,将声音信号首先转换为不断变化的磁信号,然后将钢丝与电磁铁紧密贴在一起并匀速转动,这样钢丝上就形成了强度随声音信号变化而变化的磁场,回放的时候只需要把钢丝重新在电磁铁上经过一次,声音就被还原出来,磁带录音机就是钢丝录音机的改进版本,只是现代人把钢丝改为了软质的塑料磁带而已。1.2.3数码录音笔21世纪初,数码录音技术(也称电子录音)诞生,这是通过对模拟信号的采样、编码将模拟信号通过数模转换器转换为数字信号,并进行一定的压缩后进行存储的技术。而数字信号即使经过多次复制,声音信息也不会受到损失,保持原样不变。通常数码录音笔的音质效果要比传统的录音机要好一些。录音笔通常标明有SP,LP等录音模式,SP表示ShotPlay即短时间模式,这种方式压缩率不高,音质比较好,但录音时间短。而数码录音笔品牌分布图LP表示LongPlay,即长时间模式,压缩率高,音质会有一定的降低。因此,数码录音笔迅速取代之前所有录音产品,成为当今录音领域的“专家”。1.3SD卡录音笔的发展趋势从首款SD卡录音笔上市到现在,短短4年内成为销量最大的随身录音设备,证明其有着极高的性能和质量,价格而比较合理。随着电子录音技术的发展和消费者使用需求的提高,数码录音笔的革新也是势在必行。55 1.3.1提高录音质量一方面,随着科技的发展,录音笔的录音质量将会提升,高清录音笔,超长时间录音笔将会面世。1.3.2多功能于一身近几年,数码产品都朝着多功能化发展,随着技术的不断发展,数码产品的整合绝对是将来的一个大方向,现在很多录音笔都已经支持MP3播放功能,已经从单纯的录音发展到具备听MP3音乐,U盘,复读以及电话录音等多项功能。此外,录音笔将发展到一个全新的阶段,录音/复读,MP3播放,影像记录,图片浏览(数码伴侣),TXT文档阅读,移动存储等多功能于一身的录音笔将会出现。1.3.3降低成本减小体积降低成本是任何技术商业化的重要前提,一般的途径是通过规模生产来摊薄成本。录音笔的成本在于技术和原材料两个方面,而技术的发展势必在成本上很难降低,所以,相信通过生产原材料价格的走低,录音笔也会渐渐便宜。既多功能,又小巧实用,外观精致创新,也是录音笔外形的发展趋势。1.4基于单片机的SD卡录音笔研究意义本课题主要是研究基于单片机的SD卡录音笔设计,本课题是以单片机SPCE061A来实现一个录音笔系统。SPCE061A该款单片机资源丰富,有强大的数字语音处理功能可应用与语音播放和语音识别领域,内置有2路DA转换,8路AD转换及在线仿真等丰富的功能,这些都为实现数码录音和播放提供了良好的方便条件。长期以来,以FlashMemory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。55 当数据采集系统需要长时间地采集、记录海量数据时,选择SD卡作为存储媒质是开发者们一个很好的选择在电能监测以及无功补偿系统中,要连续记录大量的电压、电流、有功功率、无功功率以及时间等参数,当单片机采集到这些数据时可以利用SD作为存储媒质。因此,基于单片机的SD卡录音笔将会是今后最常见的录音工具。2录音笔功能分析及开发环境2.1功能概述随着数字存储技术的发展,大容量存储设备充斥着电子应用的方方面面。对于嵌入式系统来说,功能的增强,也需要大容量存储设备做支撑。SD卡是一种轻便的大容量的存储设备。它使用方便,工作稳定,可以为嵌入式系统提供大容量的数据存储扩展,使得系统有强大的录音功能。利用SPCE061A为主控芯片,SD卡做为存储介质,实现单片机的超长时间录放音功能。2.1.1SPCE061A对SD卡的读写功能(1)SPCE061A对SD卡的操作方式为SPI模式;(2)提供SD卡插入检测功能,并进行语音提示;(3)提供SD卡写保护检测功能,并进行语音提示;(4)可以对SD卡进行初始化、扇区写、扇区读、扇区擦除、得到SD卡的容量信息等操作。2.1.2录/放音及删除功能(1)录音数据存储在SD卡中;(2)支持多段录音;(3)放音支持“上一曲”、“下一曲”;(4)可以删除所有的录音片断,重新开始录音。55 2.2设计环境介绍2.2.1系统硬件环境介绍本系统的硬件部分采用的是SPCE061A单片机。SPCE061A单片机是一个16位结构的微控制器。以下是它的性能简介:(1)16位的高性能u’nSP内核单片机(2)CPU时钟范围:0.32MHz~49MHz(3)片内32K字的Flash程序存储器、2K字的SRAM数据存储器(4)4个16位I/O端口(5)14个中断源(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片内结构图。55 图2.1SPCE061A片内结构2.2.2软件工作环境μ’nSPIDE介绍本系统的软件设计使用的是μ’nSPIDE集成开发环境。u’nSPIDE集成开发环境支持汇编语言和C语言混合编程进行程序开发,集程序的编辑、编译、链接、调试以及仿真等功能为一体并且支持软件仿真和调试的功能。u’nSPIDE的主要特点是:提供了友好的交互界面、易于操作,使调试工作方便且高效。工具界面主要分为主菜单,工具栏,工作区窗口,编辑区窗口,输出区窗口。图2.2为工具界面参照图。55 图2.2工具界面参照图Workspace窗口,如图2.3。Workspace窗口由FileView和ResourceView两个视窗组成。单击FileView标签,用户可以方便浏览到工程内的各文件。FileView视窗用层次图排列出当前工程的所有文件的逻辑关系。Files文件夹包含了源程序、程序接口和说明硬件配置情况的文件。Resource文件夹包括了各种资源文件(rc)。SourceFiles文件夹用于保存源文件。HeadFiles文件夹用于保存头文件。ExternalDependencies文件夹用于保存对工程的一些标注信息。ResourceView视窗列出当前工程用到的所有资源。可以单击视窗内分支顶部旁边的+和-号展开和收缩层次图。Workspace窗口所体现的逻辑位置不是指文件在硬盘上的物理位置,而是指一种逻辑从属关系。用户可用拖曳的办法改变文件的逻辑位置。在Workspace窗口内,不同类型的文件有不同的图标表现。图2.3Workspace窗口55 Output窗口,如图2.4。Output窗口用于显示编译、调试和查找的结果。在窗口底部有几个视窗标签:Build、Debug和FindinFiles等。用鼠标单击这些标签,可以激活相应的视窗。Build:显示编译和链接过程里产生的信息,包括文件编辑过程里的错误和警告信息等。Debug:显示程序调试过程里出现的信息。FindinFiles:显示在文件中查找字符的结果。Edit窗口:在Edit窗口里,文件的打开格式有两种:用户可用文本格式打开文件,也可以用二进制代码格式打开文件。图2.4Output窗口文件编辑器,如图2.5。文本编辑器可以用来打开汇编语言程序和C语言程序。图2.5文件编辑器二进制代码编辑器,如图2.6。二进制代码编辑器让用户在Edit窗口里以十六进制数/ASCII字符的形式来编辑二进制代码的资源文件。55 图2.6二进制代码编辑器2.2.3工程的操作2.2.3.1创建工程过程(1)选择[File]→[New],打开New对话框如图2.7,选择Project标签;(2)在File文本框内输入工程名称;(3)在Location文本框内输入工程文件的路径;(4)在SelectBodyHere区域内选择Probe;(5)单击[OK],创建工程。图2.7创建工程对话窗口2.2.3.2开发操作过程从[开始]菜单内启动工具;选择[File]→[OpenProject],在‘打开’对话框内选择所要打开的工程;窗口(工作区窗口)显示在工具的左半边,在这个窗口内,用户可以看到当前工程所包含的所有文件;选择[Build]→[RebuildAll],进行源文件的编译和链接。编译过程里的语法错误显示在Output窗口内;55 选择[Build]→[StartDebug]→[Download],把程序加载到RAM,然后,用户可以用Debug菜单内所提供的调试命令来优化和运行程序。选择6、[Build]→[StartDebug]→[Go],在调试器内运行程序。3录音笔总体设计方案及硬件设计3.1总体设计方案3.1.1硬件设计总体框图系统采用SPCE061A做为主控制器,使用其通用I/O口控制SD卡设备,实现存储器扩展;利用电路板上的三个按键对录放音进行控制;利用SPCE061A带有AGC的专用A/D转换通道做为音频输入,完成语音录制功能;利用SPCE061A的D/A进行音频输出,实现语音播放功能。图3.1为硬件总体框图。55 输入指令麦克风扬声器电源线录音放音电源SD卡SPCE061A储存或删除数字信号提取数字信号按键键盘图3.1硬件总体框图3.1.2系统软件设计架构软件系统包括以下部分:主程序:完成系统的初始化,处理按键信息,并根据按键,在语音文件操作管理程序的配合下,创建语音文件进行录音,或控制读取语音文件进行回放。按键扫描程序:完成对IOA口低八位的1×8按键进行扫描,并完成去抖、判断长/短按键等功能。SD卡驱动程序:该部分完成对SD卡的初始化、得到卡的容量信息、读写操作、擦除操作等。语音文件操作管理程序:该部分完成对多段录音的管理。每增加一段录音,程序会将起始地址、终止地址等相关信息保存,以便可以回放。录/放音程序:实现对A/D采样数据的编码和存储,以及从SD卡读取录音数据并解码然后送至D/A播放等操作。55 3.2系统硬件设计3.2.1系统硬件连接实物图系统主要由SPCE061A单片机,麦克风,扬声器,电源及储存器构成。SPCE061A单片机控制板作为整个系统的主控板,对麦克风采集来的声音信号进行数字处理并储存号功能。图3.3为硬件连接实物图。3.3系统硬件连接实物图3.2.2SPCE061A最小系统本设计选用的单片机模块为SPCE061A单片机模块,该模块包括SPCE061A芯片(MCU)、片内FLASH和其外围的基本模块。外围模块有:电机驱动电路板、锁相环外围电路(PLL)、复位电路(RESET)等。SPCE061A的主控芯片,负责构建语音录放的数据结构,并在单片机内部Flash中保存有语音内容和相关语音信息。SPCE061A控制端口输出控制信息,并控制喇叭输出声音信息。实现对整个系统的控制。通过本系统中的音频输入电路和MIC,可以采集语音信号并处理。图3.4为SPCE061A最小系统图。55 图3.4SPCE061A最小系统图3.2.3按键电路本系统使用三个按键完成录放音控制。图3.5为按键电路图。Key1为“下一曲”键,Key2为“上一曲”键,Key3为“录音键”。图3.5按键电路图3.2.4音频输出电路SPCE061A内置2路10位精度的DAC,只需要外接功放电路即可完成语音的播放。电路中SPY0030是凌阳公司一款音频放大芯片。它和LM386相比,LM386工作电压需在4V以上,55 SPY0030仅需2.4V即可工作(两颗电池即可工作);LM386输出功率100mW以下,SPY0030约700mW。图3.6为音频输出电路图。图3.6音频输出电路图3.2.5SD卡模组电路在本系统中,SPCE061A通过SPI总线实现对SD卡设备的访问。SD卡模组同时提供卡插入检测和写保护检测接口。图3.7为SD卡模组电路图。图3.7SD卡模组电路图55 4系统软件设计4.1主程序设计主程序采用的是汇编语言和C语言混合编程。主程序流程图如图4.1。系统初始化检测SD卡是否插入?否检查SD卡是否写保护?置写保护标志播放“SD卡写保护”是否初始化SD卡按键处理系统状态处理是播放“注意SD卡没有插入”检测SD卡是否插入?否是播放“就绪”语音提示程序开始图4.1主程序流程图主程序完成系统初始化后检测SD卡是否插入以及是否有写保护,并有相应的语音提示,告知用户当前的系统状态。如果SD卡正确插入,则系统根据用户的不同按键进行录/放音控制。同时,在循环中对系统当前的状态进行检测,控制系统在录制语音时不至于超出存储器容量限制,或控制系统在放音时播放至文件尾部自动停止播放。部分程序如下:55 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;elseFS_Init();//没有写保护,执行初始化操作PlaySnd(VOICE_READY,DAC1+DAC2);//播放"就绪"//------------------------------------------------------while(1)KeyProcess();//按键处理StatusProcess();//系统状态处理SACM_DVR1600_ServiceLoop();//录/放音服务4.2按键处理程序流程按键处理程序中,当检测到有SD卡写保护时,会播放“卡有写保护”的提示音,对按键不做处理。按键处理流程图如图4.2。55 初始化判断是否有写保护标志?否判断按键Key3录音键是Key2上一曲键Key1下一曲键返回开始图4.2按键处理流程图部分程序如下:Key=KeyScan_GetKey(&KeyType);if(1==WriteProtect)//卡有写保护,拒绝按键操作if((C_SReleaseKeyState==KeyType)||(C_LReleaseKeyState==KeyType))return;switch(Key)当按下录音键时,若为短按键且SD卡未满,提示录音开始并置录音标志,开始录音。“录音”按键处理程序的流程图如图4.3所示。55 正在播放?短按键?是是停止播放,关闭读取SD卡系统状态置空闲SD卡已满?否是否系统空闲?否启动写入SD卡,开始录音系统状态置录音否是正在录音?结束录音,录音收尾是否开始返回图4.3录音键流程图部分程序如下:caseC_Record://Recordif(C_SReleaseKeyState==KeyType)//短按键,录/放音控制if(PLAY==Status)55 SACM_DVR1600_Stop();//如果正在放音,则先停止播放FS_CloseOpenFile();Status=IDLE;if(IDLE==Status)if((g_FileNum>=FS_MAX_FILENUM)||(FS_GetUnusedSecNum()<=0))//文件已满,退出PlaySnd(VOICE_DANG,DAC1+DAC2);Status=RECORD;elseif(RECORD==Status)SACM_DVR1600_Stop();while(RECORD==Status)//等待完成录音收尾工作SACM_DVR1600_ServiceLoop();PlaySnd(VOICE_OVER,DAC1+DAC2);当按下上一曲键,短按键(小于一秒)播放上一曲,长按键清除SD卡上所有录音。“上一曲”按键处理程序的流程图如图4.4。55 正在录音?正在播放?是判断是否有文件?结束放音是否短按键?否否是长按键?是清除SD卡内所有文件系统状态置空闲读取语音段,启动声音播放上一曲系统状态置播放否是否开始返回图4.4上一曲键流程图部分程序如下:if(PLAY==Status)//如果正在放音,则先停止播放SACM_DVR1600_Stop();FS_CloseOpenFile();elseif(RECORD==Status)//如果正在录音则不处理if(C_LReleaseKeyState==KeyType)//长按键,擦除所有语音段FS_Init();Status=IDLE;elseif(C_SReleaseKeyState==KeyType)//短按键播放上一曲当按下下一曲键,短按键(小于一秒)播放下一曲,长按键停止放音。“下一曲”按键处理程序的流程图如图4.5。55 正在录音?当前有录音片段?是是停止播放正在播放?否否短按键?否长按键?否系统状态置空闲是启动声音播放下一曲系统状态置播放否是是开始返回图4.5下一曲键流程图部分程序如下:caseC_Next://PlayNextif((C_SReleaseKeyState!=KeyType)&&(C_LReleaseKeyState!=KeyType))if(g_FileNum>0)if(PLAY==Status)//如果正在放音,则先停止播放SACM_DVR1600_Stop();FS_CloseOpenFile();elseif(RECORD==Status)//如果正在录音则不处理if(C_LReleaseKeyState==KeyType)//长按键,停止当前播放Status=IDLE;elseif(C_SReleaseKeyState==KeyType)//短按键,播放下一曲系统状态处理程序主要完成在录音时判断是否超出SD卡容量限制,或者在放音时当前语音是否播放完毕。系统状态流程图如图4.6。55 检查SD卡是否已满?是否正在录音?播放是否结束?停止录音系统状态置空闲是否正在播放?停止读取系统状态置空闲是否否否是是是否返回开始图4.7系统状态处理流程图部分程序如下:switch(Status)caseRECORD:if(FS_GetUnusedSecNum()<1)//检测是否超出SD卡容量范围SACM_DVR1600_Stop();Status=IDLE;casePLAY:if(FS_CheckFileEnd())//检测当前语音是否播放完毕SACM_DVR1600_Stop();FS_CloseOpenFile();Status=IDLE;4.3按键扫描程序系统使用1024Hz时基中断对IOA口低八位进行扫描,并进行去抖、长短按键判断等工作。55 时基中断中的按键扫描服务程序采用了状态机的形式对按键状态进行判断。使用变量KeyScanState记录当前按键的扫描状态,并对扫描状态进行计时,通过判断计时变量KeyCount的值来判断按键的类型KeyState(短按键、长按键等)。通常状况下,没有键按下,KeyScanState处于First状态。当有键被按下后,KeyScanState便进入Debounce去抖状态,此时KeyCount开始每1/1024秒计时累加一次。当KeyCount超过去抖规定的时间后(通常为几十毫秒),便进入Repeat状态,这时候可以认为一个短按键被按下(KeyState=SKey)。此时如果检测到键抬起,则进入ReleaseDebounce状态,对按键抬起进行去抖,去抖成功后则可以认为形成了一个抬起的短按键(KeyState=SKeyRelease)。相反,如果在Repeat状态下超过了一个长按键规定的时间(1秒)后按键仍未抬起,则认为一个长按键被按下(KeyState=LKey),此时进入AfterLKey状态,无需再进行计时操作,只需等待按键抬起即可。当按键抬起时,则从AfterLKey状态进入ReleaseDebounce状态,去抖后得到一个抬起的长按键(KeyState=LKeyRelease)。按键扫描程序提供如下API函数按键功能:voidKeyScan_Init();功能:按键扫描初始化。调用该函数将同时初始化按键扫描使用的I/O口。voidDrvKeyInit(void)*P_KEY_Dir&=~KEY_PORT_MASK;*P_KEY_Attrib&=~KEY_PORT_MASK;#ifKEY_COM*P_KEY_Buffer&=~KEY_PORT_MASK;#else*P_KEY_Buffer|=KEY_PORT_MASK;#endifunsignedintKeyScan_GetKey(unsignedint*KeyType);55 功能:该函数将返回当前按键的键值,并通过入口参数KeyType返回该按键的类型。unsignedintKeyScan_GetKey(unsignedint*KeyType){unsignedintKey;if(C_NullKey==ui_KeyState)Key=C_Null;elseKey=ui_KeyID;*KeyType=ui_KeyState;if(C_KeyStateFirst==ui_KeyScanState){ui_KeyID=C_Null;ui_KeyState=C_NullKey;}return(Key);4.4语音录/放在SD卡上的实现在语音录/放的过程中,存储/读取语音资源主要是调用F_USER_DVR1600_WriteData和F_USER_DVR1600_GetData两个函数实现的。通过自行定义这两个函数,即可将语音库录制的语音资料存储至SD卡,或从SD卡读取语音资料给语音库解码播放。F_USER_DVR1600_WriteData函数主要完成存储录音数据至用户存储器的作用。这里需要调用“向语音文件写入多个word数据的函数”FS_WritingFile()以完成此功能。F_USER_DVR1600_GetData函数主要完成从用户存储器读取语音资料至缓冲区的作用。这里,需要调用“从语音文件中读取多个word数据的函数”FS_ReadingFile()以完成从SD卡中读取数据。部分程序如下:55 F_USER_DVR1600_GetData:F_USER_WriteWordBlock://StartAdr:R1;Length:R2pushr1,r5to[sp]pushr2to[sp]pushr1to[sp]call_FS_ReadingFilesp+=2popr1,r5from[sp]RETF;F_USER_DVR1600_WriteData:F_USER_ReadWordBlock://StartAdr:R1;Length:R2pushr1,r5to[sp]pushr2to[sp]pushr1to[sp]call_FS_WritingFilesp+=2popr1,r5from[sp]RETF;单片机通过SPI总线向SD卡发送命令,控制SD卡的动作,并通过SPI总线读取SD卡返回的数据。SD卡上电后工作在具有1bit数据总线宽度的SD模式。而本系统中,需要令SD卡工作于SPI模式。单片机通过使连接SD卡CS脚的I/O口输出低电平,并发送CMD0命令,即可使SD卡进入SPI模式工作。SD卡进入SPI模式后,用户可以通过调用SD_SendCmd()函数发送命令对SD卡进行控制。SD卡每次写入(读取)数据,都需要以Block为单位。但是,在语音录制过程中,编码器是以帧为单位向SD卡内写入数据的,而帧的长度并不刚好是BlockSize个。在语音播放过程中类似,解码器每次解码的数据量也并不刚好是BlockSize个。为了解决这个矛盾,需要首先来看一下SD卡Block读写的过程。单片机从SD卡读取Block数据的过程。55 首先,单片机发送CMD17命令以及希望读取的Block的地址参数给SD卡,然后SD卡返回一个byte的响应数据,告知单片机该操作是否可以正常进行。然后,单片机从SPI总线上读取BlockSize个数据,这些数据就是SD卡发送来的Block数据;最后,SD卡发送CRC校验给单片机,单片机结束SPI总线的接收操作,至此,一个Block被正确读入单片机内。读Block操作:1)发送CMD17,启动读Block操作;2)接收数据,直至接收完毕BlockSize个数据;3)接收CRC校验,结束读Block操作。.public_SPI_SendByte_SPI_SendByte:.procr1=sp+3r1=[r1]r2=8?L_SPI_SendByte_Lop:testr1,0x0080jz?L_SPI_SendByte_Bit8_0SPI_DOUT_SETjmp?L_SPI_SendByte_Bit8_End?L_SPI_SendByte_Bit8_0:SPI_DOUT_CLR?L_SPI_SendByte_Bit8_End:SPI_SCK_CLRSPI_SCK_SETr1=r1lsl1r2-=1jnz?L_SPI_SendByte_Lopretf.endp单片机从SD卡写入Block数据的过程。首先单片机发送CMD24命令以及希望写入的Block的地址参数给SD卡,然后,SD卡返回一个byte的响应数据,告知单片机该操作是否可以正常进行。55 然后,单片机通过SPI总线发送BlockSize个数据,这些数据被SD卡接收,并缓存。最后,单片机发送CRC校验,并等待SD卡完成这些数据的烧写。写Block操作:1)发送CMD24,启动写Block操作;2)发送数据给SD卡,直至写满BlockSize个数据;3)发送CRC校验,等待SD卡完成内部烧写,结束写Block操作。.public_SPI_RecByte_SPI_RecByte:.procr1=0r2=8?L_SPI_RecByte_Loop:SPI_SCK_CLRSPI_SCK_SETr1=r1lsl1r3=[SD_BUS_Data]testr3,SD_BUS_Dinjz?L_SPI_RecByte_NoAddr1+=1?L_SPI_RecByte_NoAdd:r2-=1jnz?L_SPI_RecByte_Loopretf.endp4.5语音文件操作管理程序语音文件操作管理程序主要完成对语音文件的管理,以及在录/放音的过程中对写入SD卡的数据进行控制,保证数据按照Block为单位写入。程序中使用一个简单的结构体保存每个语音文件在SD卡中的位置信息:typedefstruct_SD_FS{unsignedlongintStartSec;//语音文件的起始Block地址55 unsignedlongintEndSec;//语音文件的结束Block地址unsignedintOffset;//语音文件在最后一个Block中的使用量}FileList;FileListg_FileListArray[FS_MAX_FILENUM];//文件索引表语音文件操作管理相关函数中通过定义一个全局变量CurOffset存储当前Block已经写入的数量,以便在写入(读取)新的数据时对是否超出Block进行判断。当连续读取(写入)数量超过一个Block的大小时将读完(写满)本Block并自动切换至下一Block继续读取(写入)剩余数据。同时,程序中规定语音文件在存储的时候如果最后一个Block没有使用完,则下一段语音从下一个Block的起始地址开始存储。4.6录/放音程序SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟频率可达到49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放、录放、合成及辨识提供了条件。压缩算法中SACM-A1600、SACM-S530、SACM-S480/S720、SACM-S200主要是用来放音,可用于语音提示,而DVR1600则用来录/放音。部分程序如下:55 .includespce061a.inc.publicF_USER_DVR1600_EndRecord//.public_USER_DVR1600_SetStartAddr//.publicF_USER_DVR1600_SetStartAddr.publicF_USER_DVR1600_GetData.publicF_USER_DVR1600_WriteData//.publicF_USER_WriteWordBlock//*//.publicF_USER_ReadWordBlock//*.external_FS_ReadingFile.external_FS_WritingFile.external_FS_EndEncodevoidFS_WritingFile(unsignedint*Buf,unsignedintLen)unsignedinti;Len<<=1;if(Len>=(SD_BLOCKSIZE-CurOffset))SD_WritingBlockData((unsignedlongint)(SD_BLOCKSIZE-CurOffset),(unsignedchar*)Buf);SD_WriteFinished();55 CurFileSec++;CurFileEndSec=CurFileSec;i=SD_BLOCKSIZE-CurOffset;CurOffset=Len-i;i>>=1;SD_WriteNewBlock(CurFileSec);SD_WritingBlockData((unsignedlongint)CurOffset,(unsignedchar*)&Buf[i]);elseSD_WritingBlockData((unsignedlongint)Len,(unsignedchar*)Buf);CurOffset+=Len;voidFS_ReadingFile(unsignedint*Buf,unsignedintLen)unsignedinti;Len<<=1;if(Len>=(SD_BLOCKSIZE-CurOffset))SD_ReadingBlockData((unsignedlongint)(SD_BLOCKSIZE-CurOffset),(unsignedchar*)Buf);SD_ReadFinished();if(CurFileSec>=1;SD_ReadNewBlock(CurFileSec);SD_ReadingBlockData((unsignedlongint)CurOffset,(unsignedchar*)&Buf[i]);elseSD_ReadingBlockData((unsignedlongint)Len,(unsignedchar*)Buf);CurOffset+=Len;5系统测试及性能分析系统的硬件部分和软件部分完成以后,应对系统进行严格的测试及性能分析。为了保证系统功能的实现,系统的测试按照主程序流程所设计的方案依次对各模块进行测试。系统测试流程图如图5.1。55 喇叭测试主程序下载运行控制模块测试音频输入音频输出图5.1系统测试流程图5.1喇叭测试目的:测试喇叭能否正常工作条件:只连接喇叭和电路板,噪音相对较小的室内环境。步骤1:接通电源,用万用表测量喇叭的正负极看是否有电压。步骤2:将一个最简单的语音播放程序下载并运行。现象1:万用表可以测量出电压。结论:喇叭无损环,电路连接正常。现象2:程序下载并运行后,声音能正常播放。结论:喇叭可以正常工作。5.2程序下载及运行在程序下载前,先按照硬件连接图3.3连接好硬件,然后把3节五号电池装入电池盒并把电源线与系统连接。下载线的一边(25针插座)与PC后面的并行接口相接,另一边的五针接头与电路板上标有“EZ-Probe”的插座(J11)相接,并用J11接口边上的S5跳线把S5的2和3管脚短接。打开电池盒开关,POWER指示灯和LCD液晶显示屏上的电源指示灯都被点亮,证明系统连接正常,可以开始下载。55 用IDE打开设计好的工程文件,并确认以选定了“USEICE”按钮。选择“USEICE”如图5.2。图5.2选择“USEICE”当程序处于下载状态时,会弹出一个进度框。下载进程如图5.3。图5.3下载进程对话框下载完成后关闭电池盒开关,断开“EZ-Probe”下载线并把S5跳线的1、2管脚短接。这时程序下载完成,打开电池盒开关运行。5.3系统功能测试系统运行后,如果SD卡没有插入,会提示“注意,SD卡没有插入”,并等待SD卡插入后进行下一步操作;如果SD卡被写保护,则会提示“注意,SD卡写保护”,此后,所有按键均无效,按下任意键会提示“SD卡写保护”。此时,用户需要去除SD卡写保护,并重新运行程序;如果SD卡正常插入并且没有写保护,等待SD卡初始化成功后会有“就绪”的提示音。SD卡正常初始化后,可以按照各按键功能进行操作;按下Key3键,启动录音,此时,会有“开始录音”的提示音。再次按下Key3键结束本次录音,此时,会有“结束录音”的提示音;停止录音后,按下Key2播放上一段录音,按下Key1播放下一段录音;长按Key2键将清除所有已录语音,此时会有“SD卡已擦除”的提示音;长按Key1键将停止放音。结论:实现录音,放音,删除功能,测试成功。55 结论本课题是基于单片机的SD卡录音笔设计与实现,根据课题的要求设计了SD卡数码录音笔,在设计中主要完成了以下几个方面的内容:系统硬件结构设计:SPCE061A开发板,SD卡模组。系统软件架构设计:完成了语音文件的录制,播放和删除,写入,读取及擦除SD卡。在本课题中,用SPCE061A开发板上的MIC作为语音信号采集器,喇叭作语音播放器,通过单片机内部存储器并调用语音模块对输入的命令进行处理,完成录音的过程。由于芯片功能和本人能力的限制,本系统还有许多有待完善和扩展的地方,主要有以下两方面:SPCE061A开发板片内FLASH的容量只有32K,预存的语音信息质量受到了很大的限制。这些问题可以通过外接SPR模组扩充系统存储空间来解决。随着计算机的不断普及,人们对人机交互的要求越来越高。SD卡录音笔的研究和开发将极大的提高人机交互质量,因而我相信在不久的将来SD卡数码录音笔会得到充分的发展和应用。致谢经过3个多月的努力,终于完成了本次毕业设计。一直以来,邢老师不但为我们创造了良好的学习氛围而且给我们提供了毕业设计的设备。从邢老师那里我不仅学习到了知识,更重要的是他严格要求,精益求精,严谨求实的治学态度给我留下了深刻的印象,这必将使我终身受益。在此,向邢老师致以深深的谢意。感谢北方工业大学信息工程学院为我们提供了做毕业设计的实验室,感谢信息工程学院所有帮助过我、指导过我的老师,是他们无私的指导和耐心的教诲,让我学习到了很多。同时我也真诚的感谢我的班级导师邢志强老师,从刚进大学的毛头小子成长到现在,都得到了邢老师热情的帮助和无微不至关怀。55 感谢通信工程06A-2班的所有同学。在与他们共同学习,共同生活的四年里,与他们的交流和讨论,扩展了我的思路,对论文的完成颇有益处。真诚的感谢我的家人,他们对我无私的关心和支持,是我勇往直前的动力,他们对我的鼓励使我度过了大学生活中的一个个难关。参考文献[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[8]DigitalVoiceRecorderDesign.[DB/OL].SunplusTechnology,DEC.21,2004Version0.8[9]JohnMarkus.电子电路大全[M].北京:计量出版社,1995[10]邓元庆.数字电路与逻辑设计[M].北京:电子工业出版社,2001[11]胡隆,许静波.录音、调音与音响技术[M].北京:北京工业大学出版社,第1版[12]王宏民.录音与调音[M].北京:中国广播电视出版社,第1版[13]杨行峻,迟惠生.语音信号数字处理[M].北京:电子工业出版社,第1版[14]Onebasedonmonolithicintegratedcircuit'sdigitalsoundrecordingandthebroadcastsystem.[M].PrenticeHallPress,1993[15]SDMemoryCardSpecifications.[Z].200155 附录附录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"#defineADC_ChannelMic//0~7(Mic,Line_In1~Line_In6)voidKeyProcess();voidStatusProcess();SysStatusStatus;//系统状态,SysStatus定义在SDDVR.h中intSpeechIndex;intWriteProtect;//=================================================//语法格式:intmain(void)//实现功能:主函数//=================================================intmain()55 {SpeechIndex=0;WriteProtect=0;Status=IDLE;DrvKeyInit();SD_IOInit();SetINTStatus(C_IRQ5_2Hz);SetINTStatus(C_IRQ4_1KHz);__asm("IRQON");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;PlaySnd(VOICE_ATTENTION,DAC1+DAC2);PlaySnd(VOICE_SDCARDWRITEPROTECT,DAC1+DAC2);}else{FS_Init();//没有写保护,执行初始化操作PlaySnd(VOICE_READY,DAC1+DAC2);}//-----------------------------------------------------------------55 while(1){KeyProcess();//按键处理StatusProcess();//系统状态处理SACM_DVR1600_ServiceLoop();//录/放音服务}return0;}//=================================================//语法格式:intStatusProcess(void)//实现功能:系统状态处理函数//=================================================voidStatusProcess(){switch(Status){caseRECORD:if(FS_GetUnusedSecNum()<1)//检测是否超出SD卡容量范围{SACM_DVR1600_Stop();Status=IDLE;}break;casePLAY:if(FS_CheckFileEnd())//检测当前语音是否播放完毕{SACM_DVR1600_Stop();55 FS_CloseOpenFile();Status=IDLE;}//caseIDLE:default:break;}}//=================================================//语法格式:intKeyProcess(void)//实现功能:按键处理函数//=================================================voidKeyProcess(){unsignedintKey,KeyType;Key=KeyScan_GetKey(&KeyType);if(1==WriteProtect)//卡有写保护,拒绝按键操作{if((C_SReleaseKeyState==KeyType)||(C_LReleaseKeyState==KeyType)){PlaySnd(VOICE_SDCARDWRITEPROTECT,DAC1+DAC2);}return;}switch(Key){caseC_Record://Recordif(C_SReleaseKeyState==KeyType)55 {//短按键,录/放音控制if(PLAY==Status){SACM_DVR1600_Stop();//如果正在放音,则先停止播放FS_CloseOpenFile();Status=IDLE;}if(IDLE==Status){if((g_FileNum>=FS_MAX_FILENUM)||(FS_GetUnusedSecNum()<=0)){//文件已满,退出PlaySnd(VOICE_DANG,DAC1+DAC2);break;}PlaySnd(VOICE_START,DAC1+DAC2);FS_CreatFile();FS_WriteFile(0);//为语音长度跳过两个wordFS_WriteFile(0);SACM_DVR1600_Rec(RceMonitorOff,ADC_Channel,BIT_RATE_24K);Status=RECORD;}elseif(RECORD==Status){SACM_DVR1600_Stop();while(RECORD==Status)//等待完成录音收尾工作SACM_DVR1600_ServiceLoop();55 PlaySnd(VOICE_OVER,DAC1+DAC2);SpeechIndex=g_FileNum-1;}}break;caseC_Prev://PlayPrevif((C_SReleaseKeyState!=KeyType)&&(C_LReleaseKeyState!=KeyType))break;if(g_FileNum>0){if(PLAY==Status)//如果正在放音,则先停止播放{SACM_DVR1600_Stop();FS_CloseOpenFile();}elseif(RECORD==Status)//如果正在录音则不处理{break;}if(C_LReleaseKeyState==KeyType){//长按键,擦除所有语音段FS_Init();PlaySnd(VOICE_SDCARDERASED,DAC1+DAC2);Status=IDLE;break;}elseif(C_SReleaseKeyState==KeyType)55 {//短按键,播放上一曲if(--SpeechIndex<=0){SpeechIndex=g_FileNum;}FS_OpenFile(SpeechIndex);SACM_DVR1600_Play(Manual_Mode_Index,DAC1+DAC2,Ramp_Up+Ramp_Dn);Status=PLAY;}}break;caseC_Next://PlayNextif((C_SReleaseKeyState!=KeyType)&&(C_LReleaseKeyState!=KeyType))break;if(g_FileNum>0){if(PLAY==Status)//如果正在放音,则先停止播放{SACM_DVR1600_Stop();FS_CloseOpenFile();}elseif(RECORD==Status)//如果正在录音则不处理{break;}if(C_LReleaseKeyState==KeyType)55 {//长按键,停止当前播放Status=IDLE;break;}elseif(C_SReleaseKeyState==KeyType){//短按键,播放下一曲if(++SpeechIndex>g_FileNum){SpeechIndex=1;}FS_OpenFile(SpeechIndex);SACM_DVR1600_Play(Manual_Mode_Index,DAC1+DAC2,Ramp_Up+Ramp_Dn);Status=PLAY;}}break;default:break;}}外文资料翻译(附原文)录音笔设计凌阳科技2004年12月21日第0.8版一、摘要55 首先,介绍设计方案的选择,介绍了凌阳单片机的集成开发环境。接着进行了系统的硬件设计,包括音频输入输出电路的设计、存储电路的设计、按键控制电路的设计、液晶显示电路的设计等,设计中采用了凌阳的功放芯片SPY0030,利用了单片机其串行接口SIO实现上位机与下位机的通讯,利用UART的RS232接口与PC机232接口进行连接,并设置了8位键盘和LCD显示的人机界面。然后分模块进行了软件设计,包括主程序模块、语音信号的采集模块、键盘扫描模块、语音信号存储模块的设计等,进行了程序流程的设计,编写了程序代码。最后使用IDE进行了仿真调试,验证了系统设计的正确性。系统实现了语音数据的录制、播放、暂停、循环播放、重复播放、选择上一段、选择下一段以及与PC机进行数据传输等功能。二、引言随着视听家电产品的不断丰富,已经有越来越多微小型化的产品走入了人们的日常生活,他们最突出的优点是体积小巧、非常薄,而且重量很轻,给人们带来方便,并增添了无穷乐趣。作为一种简单方便地获取和记录数字化声音文件的工具,数码录音笔从2000年开始风靡市场,成为学生、记者和商务人士购置录音设备的首选。不仅在校园里取代了复读机,也成为时间紧张的在职进修人员的掌上新宠。带FM功能的数码录音笔,还可以便利地收听调频广播外语教学节目。数码录音笔,实际上是一种采用数码录音技术的录制设备,通过对声音进行采集、压缩、存储到闪存(FlashMemory)进行记录,无需使用额外的录音磁带、话筒等设备,音质清晰逼真,即使反复播放其音质也毫无损失。在设计中将说明怎样利用凌阳16位单片机SPCE061A来实现一个录音笔系统。SPCE061A该款单片机资源丰富,有强大的数字语音处理功能可应用与语音播放和语音识别领域,内置有2路DA转换,8路AD转换及在线仿真等丰富的功能,这些都为实现数码录音和播放提供了良好的方便条件。三、设计方案55 SPCE061A是凌阳科技研发生产的一款高性价比十六位单片机,把各功能部件模块化地集成在一个芯片里,内部采用总线结构,减少了各功能部件之间的连线,提高了可靠性和抗干扰能力。片内带有高寻址能力的ROM、静态RAM和多功能的I/O口。芯片工作电压范围大,能在低电压供电时正常工作,且能用电池供电。其指令系统为其应用增添了DSP功能但是又比专用的DSP芯片廉价。对于我的设计来说SPCE061A可以非常方便灵活的实现语音的录放功能,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益AGC电路。这为实现语音录入提供了方便的硬件条件。两路10精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外凌阳十六位单片机具有易学易用、高效率的指令系统和集成开发环境。该开发环境支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件。同时还可根据设计要求在实现基本录放功能的基础上运用SPCE061A的多功能集成功能扩展录放系统的功能。比如,使用SPCE061A的通用异步串行接口UART来实现与PC机的通讯,或者使用其他的IO口来外挂USB器件实现与PC机的USB通讯;进行低电压检测;还可通过LCD显示字符、数字等图象,在录音笔设计系统中可用来显示按键功能等。这样可以制作更复杂的录、放音系统。四、SPCE061A功能及其特点1)集成度高,易于扩展凌阳16位单片机内部采用总线结构,把各功能部件模块化地集成在一个芯片里,有效地减少各功能部件之间的连线,提高了集成度,增强了芯片的可靠性和抗干扰能力。此单片机属于非总线型单片机,省去厂片外的地址、数据及控制并行总线,而外部封装引脚可明显减少,使芯片成本下降。它既可通过I/O端口与外设器件通信,也可采用串行扩展方式。目前,由于串行传输速度的不断提高,用串行口扩展外围器件,特别在SOC中,已得到了较多的应用。55 凌阳16位单片机采用CMOS制造工艺,有较好的低功耗和功耗管理功能,它提供了软件激发的弱振方式、空闲方式和掉电方式三种低功耗工作方式,大大降低了芯片功耗。由于它工作电压范围大,可在低电压供电时正常工作,并可用电池供电,从而可大幅度地减少器件的功耗。低功耗是一切电子应用系统所追求的目标,特别是在野外作业、便携式仪器仪表的开发等方面具有特殊的意义。2)较强的中断处理能力凌阳16位单片机中断系统可支持三种类型的中断:异常中断、事件中断和软件中断。中断系统共有10个中断向量,可响应14个中断源的中断请求,由于对外界突发事件具有快速反应能力,使其适合用于实时控制领域。3)高效的指令系统凌阳16价单片机的指令系统以字为单位,从而格式紧凑、灵活,执行时间迅速,并提供了对高级语言和数字信号处理运算能力的良好支持,从而可有效缩短基于凌阳单片机的各种产品的研发周期。五、硬件设计录音笔系统中硬件设备采用由220V交流电压供电。由于在系统中要运用到LCD和SPR4096,他们的接口逻辑电压为3.3V,并且我选用了SPR4096内部存储空间较大的4MBitFLASH存储语音数据,而电源输入端VDDI是给内部FLASH和控制逻辑供电的,VDDI:2.25V-2.75V。因此系统电压选择了采用220V交流电压供电。六、SPCE061A最小系统设计前面已经提到我所设计的录音笔系统的核心采用SPCE061A。SPCE061A内置的7路10bitAD转换器和2路音频输出电路使得设计电路简单了很多。七、音频输入电路在这里把要记录的语音信号最高频率定为4KHz,规定系统的采样频率为8KHz。当录入的语音信号有高于4KHz的部分时,则把高于4KHz频率的信号认为是噪声。噪声是不需要记录的,所以应该把高于4KHz的声音频率排除在记录范围外,因此需在ADC电路前加一个截止频率为4KHz的前置低通滤波器用来滤除噪声。八、音频输出电路55 音频输出电路采用凌阳功放芯片SPY0030,SPY0030音频输出大于700mw,而供电电压仅需2.4V。电路中SPY0030的放大倍数被固定为20倍,音量的大小可以通过电位器调整。喇叭直流阻抗8欧,左右两个通道音量分立调节并备有两个外部音频信号放大输入端。录入后的语音信号经MIC转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器,经过2路10位精度的DA转换后,通过功放SPY0030A即可完成语音的播放。九、软件流程设计在软件设计上,由于语音资源存放在外扩存储器SPR4096上,只能采用手动的方式播放语音。在主函数中首先初始化SIO,这样可以获得存储在SPR4096上的语音资源的起始地址与结束地址,这样便于语音控制。另外,需要对图片的显示,在播放语音的同时需要刷新图片,这样采用在中断中填充语音队列的方法来实现。录放音的编解码是靠调用库函数完成,不需要设计硬件电路。凌阳公司提供了丰富的库函数,只要了解库函数的使用,就能轻松完成语音录放。本系统采用的是凌阳公司提供的音频格式SACM_A2000,它的压缩编码率是16Kbit/s,因此可以计算出1Mbit的存储器可以存放播放1M/16K=64秒的语音数据。 本系统底层驱动程序包括IO口初始化、LCD初始化、SPR4096的读写、擦除、按键处理等使用的是汇编语言编写的。上层程序包括语音的录放采用C语言编写。程序以函数的形式封装对SPR4096芯片的操作,上层程序可以轻松调用这些函数,实现对SPR4096读写、擦除操作。这些主要源于凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用。55 十、UART模块55 为与PC传输数据而采用的UART模块提供了一个全双工标准接口。P_UART_Data(7023H)(读/写)单元可以用于接收和发送缓冲数据,向该单元写入数据,可以将要发送的数据送入寄存器;从该单元读取,可以从寄存器读出数据字节。使用UART模块进行通讯时,必须事先将Rx(IOB7)引脚设置为输入状态、Tx(IOB10)引脚设置为输出状态。然后,通过设置P_UART_BaudScalarLow(7024H)、P_UART_BaudScalarHigh(7025H)单元指定所需的波特率。同时,设P_UART_Command1(7021H)和P_UART_Command2(7022H)单元以启用UART通讯功能。以上设置完成后,UART将处于启用状态。设置P_UART_Command1单元的第6、7位可以启用UARTIRQ中断,并决定中断是由TxRDY或RxRDY信号触发,或是由二者共同触发。设置P_UART_Command2单元的第6、7位可以启用UARTTx、Rx引脚功能。当SPCE061A接收或发送一个字节数据时,P_UART_Command2(7022H)单元的第6、7位会被置为“1”,且同时触发UARTIRQ。无论UARTIRQ中断是否被启用,UART收发功能都可以由P_UART_Command2(7022H)单元的第6、7位来控制。在任何时刻读取P_UART_Command2(7022H)单元,将会清除UARTIRQ的中断标志。十一、系统调试首先进行硬件连接:将下载的排线连接电脑的打印机并口和硬件的系统下载接口;用排线将IOA0-IOA7与1×8键盘连接;SPR4096模块中将JP10的三个短路线接好,注意CF7选择B11。用排线把J26和J16接上;LCD采用默认连接;将UART的Tx、Rx都拨到高端。硬件连接好后运行IDE,将程序编译后下载进SPCE061A芯片,然后点击运行程序。按键实现系统功能:K1录音、K2停止、K3播放、K4播放下一段、K5播放上一段、K6删除全部、K7单首循环、K8低电压检测。通过对系统的使用调试,我对设计做了如下的总结:充分利用了手中的资源,运用了凌阳16位单片机作为集成开发环境。选用高低电平按键电路作为按键功能的控制,而放弃选用键数更多的4×4矩阵键盘,是由于它的程序设计更为简单,使用起来更为方便;选用更低功耗的LCD作为人机界面,使操作更加直观、方便;用通用串行口UART作为于PC机通讯的通道比使用USB更加易懂,更容易掌握,同时使系统程序简单;合理利用了单片机中断系统所支持的中断,操作更加的快捷。55 55 55 55 55 Visa-freepolicybringsChengdubiz,tourismboost.Makingnationalheadlinesseveraltimes,Chengdu's72-hourvisa-freepolicyhasattractedwideattentionfrombothChineseandforeignexpertsandbusinessmensinceittookeffectonSept1lastyear.Theprogrampermitscitizensfrom51countriesandregionsincludingtheUnitedStates,Australia,CanadaandJapanwhohavevalidvisasandflightticketstoathirdcountrytospendthreedaysinthecity.ThecapitalofSichuanprovinceisthefirstcityinthewesternregionofChinatoofferforeigntouristsathree-dayvisaandthefourthnationwidetoadoptthepolicyfollowingShanghai,BeijingandGuangzhou.LiZhiyong,deputydeanofthetourisminstituteatSichuanUniversity,saidthemove"contributestoalargeincreaseinthenumberofoverseastouristsandraisesthecity'slevelofinternationalization"."Thepolicywillalsobring55 directeconomicrevenue,"Lisaid."Chengduhasmanyculturallegaciesandisalsoaparadiseforpandaloverswiththeworld'slargestbreedingandresearchcenter.Threedaysarelongenoughforforeignvisitorstovisitthoseiconictouristspots,"henoted.ThecityishometotheremainsoftheJinshacivilizationthatdatesbackmorethan3,000yearsaswellastheQingchengMountainsandtheDujiangyanirrigationsystem.QingchenghaslongbeenrecognizedasthebirthplaceofTaoism,China'sancientindigenousreligion,whileDujiangyanisconsideredtobetheoldestfunctioningwater-controlprojectintheworld.Chengdurankedthirdintouristfacilities,managementandservicesamong60Chinesecitiesinacustomersatisfactionsurveyreleasedlastyear.But,Liaddedthateffortsarestillneededtodevelopmoretourismproducts,improveEnglishservicesandprovideaccuratetranslationoftrafficsignsandscenicbillboards.ZhaoYun,chairwomanofBritishChamberofCommerceSouthwestChina,toldChinaDailythathiscolleaguesfoundthepolicyveryconvenient."ABritishclientonceflewhereandstayedforjustonedaytocheckherorderedgoods,"shesaid.ZhaowasborninShanxiprovince,butshehaslivedinChengduformorethan10years."Mylifewaslikearunningracemovingfromplacetoplace.IalsolivedinBeijingandShanghaibefore,"shesaid."ButChengduisaplacethatyouneverwanttoleaveoncesettlingdown.Itisnowmysecondhometown,"shesaid.Iftheenvironmentisfurtherimproved,thecitywillattractmorepeopletovisitandlive,withthe72-hourvisa-freepolicyandcompellingconditionsintransportation,culture,climateandcuisine,hesaid.Foreignersalsogavepositivefeedbackonthepolicy.AspokesmanfromDellIncsaidthecompanyhasaglobalhubofoperationinChengdu,sothethree-dayvisa"hasanimmediateandpositiveinfluenceonthecompany'sbusinessdevelopment".RudyButtignol,presidentofthepublicbroadcastingcompanyinBritishColumbia,Canada,saidhisworkrequiresfrequenttraveltoChengduandthepolicy"makesthetripseasier".Datafromthecity'spublicsecuritybureaushowssome100foreignvisitorsenjoyedthe72-hourpolicybytheendofMarch,mostofthemfromtheUnitedStates,theUnitedKingdomandGermany.Chengdualsoreportedrobustgrowthinitsoveralltouristindustrylastyear.Officialstatisticsshowthatitreceivedsome150milliontouristslastyear,anincreaseof28percentfrom2012.Around1.7millioncamefromabroad,anincreaseof12percent.Totalrevenuefromtourismsurpassed133billionyuan($21.7billion).DuringhisvisittoKazakhstaninSeptember,ChinesePresidentXiJinpingproposedthatChinaandCentralAsiajoinhandstobuildaSilkRoadeconomicbelttoboostcooperation.TheideahasbeenwidelyechoedinCentralAsiancountries,becominganencouragingblueprintforChineseareasalongtheSilkRoadthathaslinkedAsiaandEuropeformorethan2,000years.Inthenextthreeweeks,ChinaDailyreporterswilltravelthroughthebeltinChinaandinKazakhstan,UzbekistanandTurkey.Theywillshowtheprogressandexpectationsofthecountries,businessesandpeoplesontheroute.Shaanxi-thestartoftheancientSilkRoad-haspositioneditselfasthenewstartingpointforthedevelopmentoftheSilkRoadEconomicBelt,whichwillstrengthenChina'scooperationwithCentralAsiancountries,aseniorofficialsaid.ShaanxiGovernorLouQinjiansaidtheprovinceisfresh,richandunique,asitwaswhenitanchoredoneendoftheancientSilkRoad."ItisthebestoptionforaccommodatingindustrialtransfersfromEastChinaortheworldatlarge,"hesaidonWednesdayinXi'an.Louheldajointinterviewwith27media,includingChinaDaily,thefirstinaseriesofinterviewsentitledChineseMediaAlongtheSilkRoad.TheinterviewswillbeinShaanxiandGansuprovincesandtheXinjiangUygurautonomousregion,aswellasKazakhstan,UzbekistanandTurkey.ThemediagroupheldthefirstinterviewonWednesdaymorninginXi'an,thestartingpointoftheancientSilkRoad,atradechannelestablishedmorethan2,000yearsagolinkingChina,CentralAsiaandEurope.55

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭