视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
嵌入式音乐播放器实验报告
2025-09-28 02:24:06 责编:小OO
文档

课程设计报告
音频播放器
班级:20090614
学号:
姓名:
教师评语:
教师签名:
2012年10月

课程设计题目音频播放器设计
主要内容学习WAV格式音频播放原理、数字音频接口及IIS总线接口的相关知识。

了解模拟音频信号和数字音频信号的概念。掌握编写音频播放器的方法。

实现音频播放,支持触摸屏操作和小键盘输入,能够显示歌词。

采用的工具方法硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。

软件:PC 机操作系统Windows、ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

进度安排第1、2次课:确定音频播放器的界面布局以及风格,各功能所需要的方法。

第3、4次课:编码实现触摸屏操作音频播放器。

第5、6次课:编码实现小键盘输入操作音频播放器。

第7、8次课:测试并完善各种功能。

参考资料[1] 武俊鹏,张国印,姚爱红,赵国冬.基于ARM的嵌入式系统设计实验与实践教程[M]. 北京:清华大学出版社,2011:255-2

1. 题目

音频播放器设计

2. 系统简介

本系统为音频播放器,其支持WAV格式音频播放,支持触摸屏操作(主要有ENTER键、播放键、上一首、下一首、停止键、OPEN等),小键盘输入(上键,下键,ENTER键)和显示相应的歌词。

3. 系统设计

本系统的触摸屏操作的设计流程应为:界面设计,触摸屏按键设计,编码设计等。

3. 1界面设计

初始状态肯定是在启动界面上,先是待机界面设计、然后是操作界面设计、最后是播放歌曲时的界面状态设计。

待机界面设计:待机时,即未进行任何操作时,屏幕上只有一个ENTER按键(其在一个话筒背景上),一旦ENTER按键被触摸,即进入操作界面。

操作界面设计:操作界面内有播放键、上一首、下一首、停止键、OPEN键等。播放键分为第一首、第二首、第三首歌曲播放三个按键。当随意点击这三个按键中的任意一个时,即会播放相应的歌曲。上一首按键:当点击上一首按键时,当前播放歌曲的上一首歌首被播放。下一首按键:当点击下一首按键时,当前播放歌曲的下一首歌曲即被播放。当点击停止键时,当前歌曲即会被停止。

播放界面设计:在歌曲进行播放时,界面应包含所有的按键,并且要歌曲的曲目单,还有显示歌词。

3. 2触摸屏按键设计

本系统要完成触摸屏按键的功能,即要让系统接收到触摸屏的消息,如果触摸点在pFirst_Button_RECT里,创建播放界面及置这个framestate标志位为1。

定义矩形框结构、设置PID参数轴1P的文本框、将字符转换为Unicode数据、设置文本框内容。

定义矩形结构、创建列表框控件、焦点移到列表框控件、将文件名转换为Unicode、向列表框中添加表项、将文件名存入文件名数组、重画控件。

3. 3编码设计

本系统的流程是初始化硬件、初始化操作系统和创建用户任务。

因为只要硬件就得有驱动程序才能去使用,而工程下面的一些头文件.h和对应的.c文件都是驱动程序。这一层即是驱动层(对于本系统最重要的是液晶驱动和IIS音频驱动)。

上面一层是API接口层,它给程序提供很多接口(即函数),它可以在main.c之间调用。

本系统的所有功能全部在用户任务里,设计的任务maintask只有一个。

在用户任务中设计一些控件的创建如文本框、列表框,还有showbmp来显示图片。这样便可以出现相应的按钮。

然后就是等待系统的消息(即pMsg=WaitMessage(0))在这里有两种。而本部分主要设计的是触摸屏消息。接下来是对消息进行更加具体的判定。

4. 系统实现

当初始界面接收到触摸屏消息时,如果触摸点在pFirst_Button_RECT里,创建播放界面及置这个framestate(自己定义的状态标志位)标志位为1。

     if(IsInRect2(pFirst_Button_RECT, pTouch_Position))

      {

       ClearScreen();

       Frame_State=1;

       ClearScreen();

       ShowBmp(pdc,bmpname2,10,90);

       DrawButton(pPlay1_Button);

       DrawButton(pPlay2_Button);

       DrawButton(pPlay3_Button);

       DrawButton(pStop_Button);

       DrawButton(pNext_Button);

       DrawButton(pPrior_Button);

       DrawButton(pExit_Button);

       DrawButton(pOpen_Button);

           CreateText();

      }

    }

以上代码即是显示系统操作界面的代码,只要触摸了图4.1中的ENTER键,便可以进入操作界面。显示播放第一首、第二首、第三首歌曲键,停止键,OPEN键,下一曲键,上一曲键。

图4.1初始界面

if(Frame_State==1)//        当正处在播放界面时

    {

         if(IsInRect2(pPlay1_Button_RECT, pTouch_Position))

      {     

       ShowBmp(pdc,bmpname3,105,0);

           Play_State=1;

           Frame_State=1;

                 

           strChar2Unicode(str,start);//将字符转换为Unicode数据

            SetTextCtrlText(pTextCtrl, str,TRUE);//设置文本框内容

           song_index = 0;

          

    rIISCON=0;                                 //首先禁止IIS控制器

   rIISMOD=IISMOD_TX|                    //初始化为发送模式

IISMOD_16BIT|

IISMOD_32FS|

IISMOD_MCLK_384FS; 

                                     rIISFCON=IISFCON_TXDMA|IISFCON_TXFIFO;

 rIISPSR=0x11;

    rIISCON=IISCON_PRESCALE|IISCON_ENABLE;

    

       Init_UDA1341();

           pfile=OpenOSFile(filename, FILEMODE_READ);

           if(!pfile)

           return ;

           ReadOSFile(pfile, (U8*) buffer, 0x16*2);//读取头文件信息

           nbyte=ReadOSFile(pfile, (U8*) buffer, sizeof(buffer));//读取波形数据

           for(;;)

             {//死循环

          /****** BDMA0 Initialize ******/

          //for Source

          rBDISRC0=(1<<30)+(1<<28)+(int)buffer;    //Half word,inc,Buf

          //for des

          rBDIDES0=(1<<30)+(3<<28)+((int)0x1d18010);    //M2IO,fix,IISFIF

          //Size

          //iis,reserve,done_int,not auto-reload/start,DMA enable,COUNT

rBDICNT0=(1<<30)+(1<<26)+(3<<22)+(0<<21)+(0<<20)+(sizeof(buffer)&(~0x3));

rBDICNT0 |= (1<<20);//enable

          //Enable DMA

rBDCON0 = 0x0<<2;

          //Tx DMA

          rIISCON|=IISCON_TXDMA;

          break ;

         }

       }

以上代码即为播放第一首按键被触摸时,系统做的反应。首先要保证界面处在播放界面时,触摸第一首按键,显示一张图片,置播放歌曲状态标志位为1(即Play_State=1),置界面状态标志位(即Frame_State=1)。然后要将start字符转换为Unicode数据,并将其显示在文本框中,即标示着当前歌曲开始被播放。最后是将歌曲播放(读取头文件信息、读取波形数据、播放歌曲)。

5. 总结

通过本次实验,主要学习了WAV格式音频播放原理、数字音频接口及IIS总线接口的相关知识。了解了模拟音频信号和数字音频信号的概念。掌握了编写音频播放器的方法并且实现了音频播放。本系统能够支持触摸屏操作,显示歌词等功能。

6. 参考文献

[1] 武俊鹏,张国印,姚爱红,赵国冬.基于ARM的嵌入式系统设计实验与实践教程[M]. 北京:清华大学出版社,2011:255-2下载本文

显示全文
专题