| 课程设计报告 | ||||||
| 音频播放器 | ||||||
| 班级: | 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 |
音频播放器设计
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下载本文