音乐播放器的设计与实现.docx
第一章绪论1.l背景伴随电子技术B¾飞速发展,嵌入式设备在各领域0应用越来越广泛,复杂度也越来越高,对其他开发措施也提出了更多的规定和更大的挑战。在嵌入式设备系统开发过程中需要将软件应用与操作系统编译连接成一种整体,然后下载到目的机上运行,因此,嵌入式设备的开发过程是一种复杂的过程。MP3作为高质量音乐压缩原则,给音频产业带来了具大的冲击。MP3技术使音乐数据压缩比率大,回放质量高。如CD格式日勺音乐数据压缩成MP3格式,音效相差无己,但大小至少可压缩12倍。由于MP3音乐B¾较小数据量和近乎完美的播放效果使其在网络上传播得以实现。1995年,MP3格式的音乐文献刚在网络上传播时,重要用WinamP等播放软件进行播放,使MP3音乐无法脱离计算机进行播放,给音乐欣赏带来了不便。近几年以来,伴随MP3播放器的出现及其技术的发展,人们对MP3播放器0规定越来越高,制造商在MP3播放器B选型、设计、开发、附加功能和合用领域等方面做了诸多努力,设计了多种方案。本设计重要是运用ARM技术设计一款新型的MP3播放器。ARM9是ARM企业的16/32位RSIC处理器,是合用于一般设备的一种高性价比的微控制器。本设计采用B¾MCU是三星企业推出的ARM9芯片S3C2440,具有低价格、低功耗、高性能、超小体积等特点重要合用于中高端场所,目前在嵌入式系统中正得到日益广泛的应用。S3C2440主频高达400M,片上集成了丰富B¾资源:如IIS(Inter-ICSoUnd)总线与DMA控制器,为与数模转换器(DAC)的连接提供了一种理想的处理方案。MP3播放器的设计比较复杂且对处理器0¾规定较高,因而MP3播放器必须仔细设计以减少成本。本设计是在ARM9平台上设计、实现一种MP3播放器。第二章系统总体方案2.1 系统功能本设计提出了一种基于嵌入式ARM处理器硬件平台卧JMP3播放器设计措施。此播放器采用ARM体系构造中的ARM9作为系统控制器,运用外围设备USB通用串行接口下载MP3歌曲,用flashcard存贮MP3文献。重要对MP3做了各个方面B¾功能分析,对硬件设计、软件设计、软件实现、系统编译等方面做了简介。系统的重要部分是音频编码与解码,这是系统设计日勺关键。MP3播放器设计的突出问题就是硬件控制和软件控制,此外尚有硬盘控制、键盘控制、液晶显示,这些控制都是基于一块芯片。基于ARM9的MP3播放器设计的软件体系构造采用分层模式,它包括软件层、硬件层、驱动层、操作系统层、及MP3播放器应用层。重要实现歌曲的播放。2.2 设计指标1、MP3工作电压为具有3.3V左右,电流25OmA,具有音频解码和播放功能。2、通过USB接口与大容量外部存储设备进行数据传播,能实现网络播放与下载、触摸屏输入功能。3.操作界面统一管理功能,支持mp3格式、Wma格式,该MP3播放器除具有播放音乐外还附有歌词同步等功能。4、MP3在不充电B状况下待机2小时。2.3系统总体构造设计嵌入式微处理器采用三星企业生产日勺ARM9处理器S3C2440,处理器采用ARM9处理器,它具有小体积、低功耗、低成本、高性能B特点是嵌入式微处理器的理想选择。同步,ARM9处理器可以运行嵌入式操作系统,处理速度足够软件解码,扩充性好,是目前理想的处理方案。本设计的系统总体构造如图2.1。三星企业推出的基于ARM9内核32位RISC嵌入式微处理器S3C2440,最高可运行在200MHz。该芯片B功能强大,完全可以满足MP3定点或浮点解码程序0实现,还可以将LinUX操作系统移植进入该芯片,实现包括播放MP3在内B¾多进程,多任务处理,是一种理想0¾处理方案。硬件部分软件部分电源USB接口复位电路.初始化、驱动程序带触摸屏的LCD音频编解码S3C2440微处理器A V .1:9Jnux操作系统应用程序储模块图形界面图2.1系统总体构造图第三章硬件详细设计方案3.1 硬件设计阐明系统设计的硬件部分重要包括电源、ARM微处理器芯片、存储芯片、USB接口芯片以及音频芯片等。可归结为两个部分:(1)微处理器S3C2440,及其外围电路,详细包括复位电路,存储模块(包括FLASH、RAM和ROM)、电源。(2)系统的外围部分:音频接口、UARTsUSB接口、带触摸屏的LCD、调试及下载接口。音频编解码可以采用PHILIPSB,JUCB1400等芯片。LCD可以采用320X240B,JTFT液晶显示屏,电源则宜用可充电锂电池。复位电路带触摸屏的LCD以太网控制芯片:S3C2440,微处理器VFLASH SDRAM串口电路UCB1400蓑音接1;功率放大喇叭电USB接源口图3.1硬件系统构造图如上图3.1可知,在本次设计中,MP3重要构成部分是:CPU、MP3解码部分、音频放大器、FLASH存储器及SDRAM存储器。我们所设计的MP3播放器以微处理器S3C244O为中心,包括外部存储器、串口UART、音频接口、带触摸屏的LCD、USB接口、复位电路、调试及下载接口。解码部分由软件完毕。整个播放器整体控制。此MP3播放器0关键是三星企业BS3C2440芯片。系统可以分为关键部分、音频编解码部分、音频输出、液晶控制等几种部分,此外尚有必不可少0电源管理等部分。音频编解码可以采用PHILIPS企业日勺UCB1400芯片。LCD可以采用试验箱上的TFTLCD显示屏。硬件设计部分重要是S3C2440与UCB1400芯片的连接。详细的模块阐明如下。3.2 处理器模块S3C2440S3C2440是三星企业生产的基于arm920T内核HRISC微处理器,其主频可达203MHz,合用于信息家电、PDA、手持设备、移动终端等领域。S3C2440除具有一般嵌入式芯片所具有的总线、SDRAM控制器和3个串口等外设之外,还具有TFrLCD控制器、USBSlaveUSBHost、12C总线控制器、SPl控制器、IIS音频接口、SD&MMC存储卡接口等丰富的扩展功能、AD转换器,有GPlo(通用10口),尚有nandflash控制器,这些东西均有某些寄存器来控制。芯片工作电压3.3/1.8V,最高运行速度可达200MHz。由于它是一款专为手持设备设计的低功耗处理器.因此可以减少手持设备成本,具有较高B性价比。该芯片是基于ARM9而开发B多功能SOC(signaloperationcontrol)<>ARM9是一种小型、迅速、低能耗、集成式的内核。它的功能和特性如下:具有较高的处理速度,通过内部锁相环,最高可在203MHZB<J系统时钟下运行;具有极低的J功耗.其关键供电电压为1.8V,外围I/O口使用3.3V电压;具有3种低功耗控制方式,甚至可关闭CPU中除唤醒逻辑外的所有功能,极大地减少了功耗;与其他arm器件相比,S3C2410片上集成了更多B¾外设接口,如外部存储控制器、LCD,DMA,USBl.1,SD,MoMC卡控制器、UART,SPl接口、总线控制器和产$总线控制器、产S音频接口、PWM定期器、看门狗、117个外部I/O口、24个外部中断源、A/D转换器和触摸屏接口、实时时钟及片上PLL的时钟产生等。使用集成接口,有助于功能的扩展。3.3 存储模块存储模块由一片64MBB,JSDRAM和两片16MBFlash构成,可为系统提供足够的存储空间。Flash存储器是一种可在系统电擦写,掉电后信息不丢失的存储器。与FIaSh存储器相比,SDRAM不具有掉电保持数据0特性,但存取速度大大高于FIaSh存储器,且具有读/写特性。因此系统中SDRAM重要用作程序的运行空间、数据及堆栈区。3.4 音频解码/编码模块决定MP3音质的关键是主控解码器件中的数模转换器(DAC)单元和耳机功率放大器单元。DAC负责把解码的数字音频流转换成可驱动耳机发音的模拟音频信号;耳机放大器则可把模拟音频信号放大到可驱动耳机的功率。该系统音频解码/编码模块采用PHILIPS企业的UCB1400芯片,UCB1400的外部接口共有48个管脚,大部分都提供ACLink,中断、音频、ADC触屏、功率和其他接口。其接口电路图如图3所示。UCBI400是一种用于音频处理的20位立体声解码/编码器。它在一种芯片上集成了音频解码/编码功能、一种触屏控制器和功率管理接口。10个通用管脚可进行可编程输入/输出,使得主机控制器可执行控制功能和监控运行状态。在本次设计中,UCB1400重要日勺作用是音频编解码器与触摸屏控制器,尚有就是对电源管理进行监控。S3C2440可通过IIC音频接口与UCB1400连接。音频数据图3.2音频模块流程3.5 网络模块S3C2440自身并没有网络控制器,接入以太网时需增长独立的以太网控制器,在此选用DM9000作为以太网控制器。该器件具有通用的处理器接口、10M100M自适应、4K双字节静态存取存储器、低功耗、高处理性能,可支持3.3-5V0容差。3.6 带触摸屏的LCD模块显示MP3播放控制界面,通过触摸屏实现对播放和暂停,停止,音量递增,音量递减等功能的控制。LCD可以采用试验箱上的320*240的TFT液晶显示屏。3.7 USB接口模块USB接口模块是连接U盘等存储设备为MP3播放器提供歌曲来源。本设计中,主机是通过主控制器与USB设备进行数据传播0,USB主控制器采用USB2.0原则和开放式主机控制器接口原则,可支持高速和低速B¾USB设备,具有内置的MCU和内部缓存,与CPU之间有一种静态存储器的接口。CPU通过这个接口进行读写来完毕USB协议规定0控制和数据收发功能。USB主控制器提供一系列0寄存器,系统通过对这些寄存器可以实现对USB主控制器B¾控制。3.8 串口电路此MP3提供一种串口,用来调试硬件和软件。Max232用来转换电平。UART用于开发调试控制和返回调试信息。3.9 系统复位电路系统时钟输入由24.576MHz0外部晶振提供,而微处理器内核0工作频率为66MHz,S3C2440内部具有PLL电路实现倍频,因此,系统由内部PLL电路倍频至66MHZ,供应CPU运行。系统复位信号由IMP811T芯片提供,并且设计了RESET按钮,可以在系统运行过程中随时复位操作,便于系统调试。3.10 电源模块系统电源由XC6206P332MR芯片提供,宜用可充电锂电池。第四章系统软件设计方案总体上来说,系统软件包括操作系统、驱动程序及播放器应用程序3部分。4.1 软件总体设计在本次设计中,MP3播放器B¾软件体系构造采用分层模式,它包括硬件层、驱动层、操作系统层及MP3播放器应用层等,软件体系构造图如下所示4.1。Mp3playApplicationLinuxOsFileSyetemProtocalStackDiversAudio,USB,HDD,LCDHardwarePhysicalLayer图4.1MP3播放器的软件体系构造图从软件角度看,嵌入式LinUX操作系统分为引导加载程序、内核、文献系统及顾客应用程序4部分。其一用于完毕初始化RAM,初始化串口、设置LinUX启动参数、调用LinUX内核映像等功能;其二为特定于详细硬件0定制内核以及控制内核引导系统的参数;其三为含根目录文献的系统建立FIaSh存储器设备的文献系统;其四为特定于顾客B¾应用程序,即为播放程序。软件的关键是LinUX操作系统。首先需要设备驱动程序,包括USB、硬盘控制、音频控制、LCD等等。然后是文献系统。该设计采用的是通用於JFAT32文献系统,在对WindOWS平台有很好B兼容性。硬件层包括了MP3播放器所需的物理设备:USB接口、音频接口芯片AC97、3.5英寸的TFT液晶屏等;设备驱动层包括上述各个设备的驱动程序的J编写;操作系统层我们移植了LinUX2.6的操作系统,由操作系统来统一管理各个硬件设备;最上层是应用层,我们使用QT设计图形顾客界面,通过移植开源0¾Madplay解码器实现对MP3文献丛J解码,播放、音量增减的控制。此MP3播放器软件系统包括驱动程序、操作系统及MP3播放器应用程序3部分。4.2 操作系统时实现在嵌入式系统中,一般并没有像BloS那样0固件程序,因此整个系统B加载启动任务就完全由BootLoader来完毕。BOotLOader的任务是初始化芯片和主板,通过修改对应B¾配置文献和驱动程序就可以实现移植过程中需要创立的开发板文献。嵌入式开发环境的搭建在本次设计中,硬件平台是基于XSBASE270试验箱的。嵌入式开发环境0搭建重要包括如下几种方面,如下:1、虚拟机安装安装虚拟机,采用VMWareo2LinUX系统安装在VMWare上安装REDHAT企业版IinUX操作系统。安装完毕之后,安装VMWareTOOlS工具。3、minicom配置在启动红帽之前,要设置添加一种串口,设置成功之后,打开IinUX操作系统,在终端执行minicoms命令,会出现如下界面:configurationFilenamesandpathsFiletransferprotocolsSerialportsetupModemanddialingScreenandkeyboardSauesetupasdFlSauesetupas.ExitExitFromMinicom选择SeriaIPortSetup,按照如下设置:设置串口,设置波特率为115200,硬件流控制设为无。详细如下:A-SerialDeuicedeutS0B-LockFileLocationuarlockC-CallinProgranD-CalloutProgranE-Bps/Par/Bits1152008N1F-HardwareFlowControlNoG-SoftwareFlowControlNoChangewhichsetting?选择SaVesetupasdtl选择EXit即可启动minicom4、TftP配置TftP是类似于ftp的一种传播协议。它使用IP和UDP作为子协议。在目的板上,该协议被会在BoOtIOadel'下被用来下载kernel和文献系统的镜像,传播媒质是以太网,以较高的速度。安装tftprpm包0¾环节如下:安装tft-server-0.179.i386软件包修改etcxinetd.dtftp文献,内容如下:servicetftp(socket_type=dgramprotocol=udpwait=yesuser=rootserver=usrsbinin.tftpdserver-args="s/tftpbootserver_args+=-sodmtftpbootdisable=no15、在根目录下建立/tftpboot文献夹,将要下载的文献放在该目录中即可。6、bootp配置引导协议(Bc)OTP)是一种基于UDPIPB协议。这种协议容许正在启动B主机动态配置而无需顾客监督。BooTP重要用于客户机从服务器获得自己B¾IP地址,服务器的IP地址以及启动映象文献名。在一种评估板系统中,这些协议一般是和IftP一起使用用来将内核和文献系统从PC上下载到目的板中。BOotP重要用来获得目卧J板和主机的ip信息,以便可以使用T即协议来传播文献。安装bootp-7.i386软件包在终端中输入命令:rpm-ivhbootp-7.i386.rpm在etcxinetd.d目录下建立bootp文献,文献内容如下:servicebootps(disable=nosocket_type=dgramprotocol=udpwait=yesuser=rootserver=usrsbinbootpd)在/etc/目录下建立bootptab文献,内容如下test:ht=1:ha=OxaOOA#ha=0x:ip=192.168.0.50重启Xinitd在终端中输入:etcrc.dinit.dxinetdrestart7、nfs配置8、交编译环境配置交叉编译环境日勺配置总共分为四个部分:配置交叉编译环境,然后将交叉编译工具安装在/opt目录下,试交叉编译环境,测试的时候用file命令查看文献。Bootloader烧写BootLoader就是在操作系统内核运行之前运行0¾一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间B映射图,从而将系统0软硬件环境带到一种合适0状态,以便为最终调用操作系统内核准备好对B¾B¾环境。一般,BootLoader是严重地依赖于硬件而实现的,尤其是在嵌入式世界。因此,在嵌入式世界里建立一种通用0BootLoader几乎是不也许的。尽管如此,我们仍然可以对BootLoader归纳出某些通用的概念来,以指导顾客特定的BootLoader设计与实现。下面简介BOOtLOader的烧写过程,以LiIWX-.10内核为例,我们采用的烧写工具是jflashmm。详细环节如下:将bootloader日勺映象文献boot拷贝JfIaSh-XSBaSe270(jflashmm所在目录),并运用用JfIaSh-XSBaSe270目录中jflashmm程序,将bootloader映象文献boot烧写到开发板上。在JfIaSh_Xsbase270文献夹下打开一种终端,同步给板子上电,输入命令:./Jflashmmboot,即可完毕bootl向烧写。指令为:root()localhostpxa270#cdJflash_Xsbase270IrOOtloCaIhoStJflash-XSBase270J#./jflashmmboot内核、文献系统的烧写BOotk)ader烧写成功后,接下来就进行内核和文献系统0烧写,详细环节如下:(1)开发板上电,进入下载模式打开minicom,已经配置好了,拔掉JTAG下载线。按空格键,进入下载模式Welcometouse51BoardBootloaderforXSRaSe270boardCopyriht(C)2002-200651BoardCoLtd.SupportihttpJ/wwv.51Board.coinVersion01.00.0311ahJbasc=Ok(X)OOO(XX).sie三0x02000000EIhportcanaccess,thebaseaddressi»OvOc000300ElhchipisLAN91CIIIautoboolinprogress.pressanykeytostop.Booldelay2seconds按空格键,进入下载模式Welcometouse51BoardBootloaderforXSBase270boardCopyright(C)2002-200651BoardCo.Ltd.Support:http:/ww.51BVersion:Ol.00.03flash:base=0x00000000.size=0x02000000Ethportcanaccess.thebaseaddressisOxOc000300EthchipisLANglClllautobootinprogress.pressanykeytostop.BOOldelay2secondsautobootaborted.=OperationMenu=0ComanndLinemode1 Viewcurrentconfiguration2 Btp3 DownloaddefaultKernel(zImage)4 FlashKernel5 DownloaddcfaultFilesystem(rootfs.img)6 FlashFilesystem7 Bootsystem8 Rebootsystem9 Resettofactorydefaultconfigurationa SetdefaultKernelftIenameandFiIesystemfiIenameb Setbootdelaytimec Help(togetalistofcommands)Pleaseenteryourselection:按菜单0,51Board>setmyipaddr:192.168.0.50destipaddr:192.168.0.100myhaddr:00:02:88:8E:CA:Blautoboot:loadkernel;loadramdisk;bootkernelname:zlmagefsname:rootfs.imgdelay:2按键盘上的0,进入命令行模式:0Comanndlinemode51 board>set/查看系统状态0123456 71 9 al b c=OperationMenu=ComanndLinemodeViewcurrentconfigurationBootpDownloaddefaultKernel(zImage)FlashKernelDownloaddefaultFiIesysten(rootfs.img)FlashFiIesystemBootsystemRebootsystemResettofactorydefaultconfigurationSetdefaultKernelfiIenameandFiIesystemfiIenameSetbootdelaytimeHe1p(togetalistofCommandS)Pleaseenteryourselection:O51Board>setmyipaddr:192.168.0.50destipaddr:192.168.0.100myhaddr:12:34:56:78:9A:00autoboot:loadkernel:loadramdisk:bootkernelname:zImagefsname:rootfs.img加Iay:251Board>将系统属性修改成以上状态按键盘上B¾l,进入命令行模式:1VieWCUrrentCOnfigUratiOn,回车。然后按2,3,4等烧写成功后,可看到显示屏亮起来,显示目前的操作系统。4.4驱动程序的实现在嵌入式LimIX系统中操作设备的措施,是将设备看作一种文献来访问。顾客只需注意对文献的操作。在嵌入式Linux系统中一种设备体现为主设备和从设备。Linux系统B设备分为字符设备、块设备和网络设备3种。字符设备是指存取时没有缓存B¾设备,块设备的读写均有缓存来支持,并且块设备必须可以随机存取,字符设备则没有这个规定。经典的字符设备包括鼠标、键盘、串行口等;块设备重要包括硬盘软盘设备、CDROM等,这些设备要想在操作系统下正常运行,必须配置对应的驱动程序。在本系统中,FlaSh及USB属于块设备,AUDlO及LCD属于字符设备。下面是读写FIaSh存储器0驱动程序0¾重要代码:main()charbuf4096,buf24096;intfdl,fd2;if(fd1=open(t7devdsk5,ORDONLY)=1)(fd1=open(7devdsk5,ORDONLY)=1)Printf("failureonopenn");exit();)lseek(fdl,8192L,O);lseek(fd2,8192L,O);if(read(fd1,buf,sizeof(buf1)=-l)(read(fdl,bufl,sizeof(buf1)=-1)(printf(ufailureonreadn''):exit();)for(i=0;1<sizeof(bufl);i+)if(bufli!=buf2i)(Printfi(udiferentatoffset%dn,i);exit();PrintR“readsmatchn);)MP3解码部分芯片l驱动。音频驱动程序实现的重要功能是:(1)系统启动时可以完毕芯片B¾初始化;(2)详细操作时可以提供应操作系统合适0软件接口。音频驱动初始化程序如下:voidSTAOl3_Init(void)(if(STA013_SendCommand(RESET_REG,0,0x00)复位STAOl3STA013_PrintError();if(STA013_SendCommand(ACT_CON_REG,0,0x00)未激活状态STAOl3_PrintError();if(STA013_SendCommand(PWR_CQN_REG,0,0x00)上电STA013_PrintError();if(STA013_SendCommand(FS_CON_REG,0,ISTAO13L_FsValuelSysInfo.Samplinglndex)选择采样频率STA013_PrintError();if(STA013_SendCommand(IF_CON_REG,0,0x02+(0«6)/选择16位IIS数据格式STA013_PrintError();if(STAOi3.SendCommand(ANG_CTL_REG,0,0)/0x13,0x12选择DAC和LineIn输入模式STAOl3_PrintError();if(STA013_SendCommand(DGT_CTL_REG,0,0x00)/DAC静音STA013_PrintError();if(STA013_SendCommand(LHP_VOL_REG,0,0x00)左声道音量STAOl3_PrintError();if(STAO13_SendCommand(RHP_VOL_REG,0,0x00)右声道音量STA013_PrintError();if(STA013_SendCommand(ACT_CON_REG,0,0x00)数据传送激活STA013_PrintError();)4.3音频驱动电路音频设备驱动程序重要通过对硬件B¾控制实现音频流B¾传播,同步向上层提供原则音频接口。音频接口驱动向上提供2个原则接口:数字音频处理(DSP),负责音频数据的传播即播放数字化声音文献和录音操作等;混音器(MIXER),负责对输出音频进行混音处理,如音量调整等。这2个原则接口分别对应设备文献dev/sound/dsp和dev/sound/mixer。整个音频驱动欧!实现分为初始化、打开设备、DSP驱动、MlXER驱动和释放设备等部分:设备初始化重要完毕对UCB1400音量、采样频率、L3接口等的初始化,并且注册设备、打开设备。为设备分派DMA通道,根据采样参数计算出缓存内段0¾大小。当缓存区和DMA设置好后,读写操作重要对缓存操作。DSP驱动的实现:DSP驱动实现了音频数据的传播即播放和录音的数据传播。同步提供ioctl对UCB1400中的DAC何ADC采样频进行控制。MIXER驱动的实现:MlXER驱动只控制混音效果,并不执行读写操作,通过ioctl函数完毕混音效果、音量的J增减等功能。4.4Mp3播放器软件的实现本系统使用QAEmbeded制作图形顾客界面,运用开源BMadplay解码器对Mp3文献进行软件解码,功能包括打开文献、播放和暂停、快进快退、上下曲、音量加减、显示时间进度、显示歌曲名、总的播放时间、多种状态信息等。下面就某些重要功能的实现做简要的简介。外部事件的响应当顾客通过触摸屏单击某个按钮时,QT的窗口在事件发生后将激发信号如clicked(),可以通过调用COnneCt()函数把这个信号和一种插槽(函数)连接起来,完毕对事件B¾响应,对于其他外部日勺事件(如按键),可以通过read函数来读取设备B¾值,并根据返回值转向对应B¾程序。MP3文献打开功能QT中的QFileDialog类提供了容许顾客选择文献或者目录的J对话框。我们可以通过继承这个类,调用其中F、JgetOpenFileName函数,实现建立打开MP3文献和选择文献的对话框:QStringfileName=QFileDialog:getOpenFileName(,fileFilters,this);其中flleFilters指文献过滤器,只有符合EleFilters中设置的文献才能被读出。该函数将返回所选择0MP3文献0¾文献名和途径名到fileName中。MP3播放功能通过调用开源B¾MADPLAY解码程序对打开的MP3文献进行解码播放。MADPLAY程序播放歌曲的命令是:./MADPLAYfilename上下曲功能实现上一曲播放功能时,运用QstringList类打开MP3寄存途径中的MP3歌曲列表:QstringListfiles=dir.entryList(,'*.mp3",QDiEiFiles);该函数将返回播放列表,将目前播放B¾文献与列表中文献一一比较,并且计数,当比较到相似的文献后,将此时的计数值减1,就得到了下一曲的文献名,然后将文献播放。音量调整功能通过调用UCB14000驱动程序0mixer接口B¾ioctl函数,可以实现音量0¾控制功能。此Mp3播放器软件是用C语言编写B¾,其中函数micSendCommand()够实现mp3文献的播放、暂停、停止。此函数是采用不同样参数取值实现不同样功能的1方式实现的。micSendCommand()的!形式为:intmicSendCommand(intstyle,file*pFilename,char*env);其中:StyIe参数取不同样值时,所实现欧1功能不同样样,Style=I时实现播放;StyeI=2时实现暂停;StyIe=3时实现停止。下面列出实现软件播放B¾重要代码:voidplay(file*pFilename,charenv)附录intfd,reva;if(fd=oPen(PFilename,O_RDONLY=1)printf4failureonopenfilen");exit();)reval=micSendCommand(1,pFilename,env);图二电路板的背面20©。9O工。1DooOOOOOOO0R9ZOOO,。4。f3JDGN一P二。OOOOOO。图三PCb图C83bS三能由§H图三整体电路图