嵌入式音乐播放器实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告

音频播放器

班级:20090614 学号:

姓名:

2012年10月

1. 题目

音频播放器设计

2. 系统简介

本系统为音频播放器,其支持WA V格式音频播放,支持触摸屏操作(主要有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数据,并将其显示在文本框中,即标示着当前歌曲开始被播放。最后是将歌曲播放(读取头文件信息、读取波形数据、播放歌曲)。

相关文档
最新文档