基于lpc2131的模拟MP3播放器实验.docx
- 文档编号:29906383
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:30
- 大小:141.77KB
基于lpc2131的模拟MP3播放器实验.docx
《基于lpc2131的模拟MP3播放器实验.docx》由会员分享,可在线阅读,更多相关《基于lpc2131的模拟MP3播放器实验.docx(30页珍藏版)》请在冰豆网上搜索。
基于lpc2131的模拟MP3播放器实验
西安邮电大学
嵌入式系统设计实验报告
专业
班级
学号
学生姓名
指导教师
学期
2013-2014学年第2学期
完成日期
2014-06-25
基于lpc2131的模拟MP3播放器实验
1、实验目的
1、熟悉ARM&ADSV1.2的环境
2、理解LPC2131芯片引脚功能的选择
3、理解GPIO的使用设置、输入驱动方法
4、理解PWM的通信原理,学习ARMPWM资源的通信编程
5、学习在LPC2131上移植ucosⅡ系统
2、实验内容及要求
(1)通过键盘输入,进入MP3播放器相应的功能选项。
(2)MP3播放器具备的功能选项为:
播放、暂停、停止、音量控制、音乐下载。
(3)MP3播放器响应进入各功能状态时,蜂鸣器蜂鸣。
(4)流水灯表示MP3播放器当前所处的功能状态。
(5)蜂鸣器蜂鸣声音的大小代表音量的大小,音量控制状态和音乐下载状态可分别与其他3种状态同事存在。
(6)数码管数字大小表示执行MP3各功能状态的时间。
3、系统总体设计(总体方案及系统框图)
系统主要创建了六个任务,分别为MP3总任务、判断按键任务、播放音乐任务、控制音量任务、播放上一曲或下一曲任务及暂停或停止任务,然后启动多任务环境,通过创建的消息邮箱发送并接收消息,进而实现MP3播放的一些简单功能。
4、系统详细设计(模块详细设计及流程图)
5、系统测试(数据测试结果及分析)
通过键盘按键输入相应功能,发送到开发板,数码管和LED灯接收到数据后,数码管会自动变化到该按键号,并且相应的LED灯在数码管变化的同时会点亮。
在程序运行的任何期间都可以从键盘输入相应功能,而且程序会自动判断要满足的用户的优先级。
此次试验实现了简单的基本MP3功能。
6、总结
通过这次课程设计,使我对以前完全陌生的ARM软件有了初步的接触,我学到了如何在ARM中实现基本的MP3播放功能。
原先我对嵌入式系统并没有很深刻的了解,在做完课程设计后,我对数码管、蜂鸣器及流水灯的结构和功能有了更进一步的了解,并且知道了一些相关函数的功能与运用,真正的把所学的东西运用到了实际中,更好的把课本知识与实际相结合,对我以后的学习有很大帮助。
7、附录(代码+注释)
#include"config.h"
#include"stdlib.h"
#include"music.h"
#defineKEY11<<16//P0.16连接KEY1
#defineKEY21<<17//P0.17连接KEY2
#defineKEY31<<18//P0.18连接KEY3
#defineKEY41<<19//P0.19连接KEY4
#defineKEY51<<20//P0.20连接KEY5
#defineKEY61<<21//P0.21连接KEY6
#defineBEEP1<<7//P0.7控制蜂鸣器BEEP
#defineHC595_CS(1<<29)//P0.29口为74HC595的片选
#defineTaskStkLengh64//DefinetheTask0stacklength定义用户任务0的堆栈长度
OS_EVENT*voice;
OS_EVENT*b_n;
OS_EVENT*p_s;
//歌曲曲谱-虹彩妹妹
constuint32HCMM1[]=
{
_LA,_SO,_MI,_LA,_SO,_MI,
_LA,_LA,_SO,_LA,
_LA,_SO,_MI,_LA,_SO,_MI,
_RE,_RE,_DO,_RE,
_MI,_MI,_SO,_LA,_DO1,_LA,_SO,
_MI,_MI,_SO,_DO,
_MI,_MI,_MI,_MI,_MI,
_1LA,_1LA,_1SO,_1LA,
};
/*歌曲节拍*/
constuint32HCMM_L1[]=
{
_4,_8,_8,_4,_8,_8,
_8,_4,_8,_2,
_4,_8,_8,_4,_8,_8,
_8,_4,_8,_2,
_4,_8,_8,_8,_8,_8,_8,
_8,_4,_8,_2,
_4,_4,_4,_8,_8,
_8,_4,_8,_2,
};
//歌曲曲谱-倩女幽魂
constuint32HCMM2[]=
{
_LA,_SO,_MI,_MI,
_MI,_RE,_DO,_SO,
_LA,_DO,_LA,_LA,
_DO1,_DO1,_LA,_LA,
_MI,
_DO1,_DO,_1TI,_DO,_1TI,
_1LA,
_DO1,_DO1,_MI,_SO,
_DO,_DO,_LA,
_SO,_SO,_MI,_DO,_1LA,
_RE,
_DO1,_DO1,_RE,_RE,_RE,
_FA,
_DO1,_FA,_MI,_FA,_LA,
_MI,_RE,_DO,
_DO1,_FA,_MI,_RE,
_1TI,_1TI,_FA,
_MI,_RE,_DO,
_1LA,_1SO,_1LA,_1LA,
_1LA,
};
//歌曲节拍
constuint32HCMM_L2[]=
{
_16,_16,_8,_2d,
_4d,_4,_4,_8,
_16,_16,_8,_2d,
_4,_4,_4d,_8,
_1,
_4,_8,_8,_4d,_8,
_1,
_4,_4,_4,_4,
_4,_2,_4,
_8,_4,_8,_4,_4,
_1,
_4,_4,_8,_4,_8,
_1,
_4,_8,_8,_4,_4,
_4d,_8,_2,
_4d,_8,_4,_4,
_4,_2,_4,
_4d,_8,_2,
_4d,_8,_4,_4,
_1,
};
//当年情
constuint32HCMM3[]=
{
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_SO,_SO,_LA,_SO,_FA,_MI,
_FA,_FA,_MI,_FA,_RE,_DO,
_TI,_LA,_TI,_MI,_RE,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_LA,_LA,_TI,_LA,_LA,_RE,_MI,_RE,_DO,
_RE,_RE,_MI,_RE,_DO,_1LA,_DO,
_DO,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_SO,_SO,_LA,_SO,_SO,_MI,_MI,
_FA,_MI,_MI,_FA,_MI,_DO,
_RE,_DO1,_DO1,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_LA,_LA,_TI,_LA,_LA,_RE,_DO,
_RE,_RE,_DO,_MI,_RE,_DO,
_SO,_DO1,_SO,_SO,_FA,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_SO,_SO,_LA,_SO,_SO,_MI,_MI,
_FA,_MI,_MI,_FA,_MI,_DO,
_RE,_DO1,_DO1,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_LA,_LA,_TI,_LA,_LA,_RE,_DO,
_RE,_RE,_DO,_RE,_MI,_1LA,_DO,_DO,
_DO,_DO1,_DO1,
_DO,_MI,_FA,_FA,_DO,_DO,
_TI,_LA,_SO,_TI,_MI,_MI,
_LA,_DO,_RE,_DO,_RE,
_MI,_FA,_MI,_1TI,_RE,_1TI,_1TI,
_DO,_MI,_FA,_FA,_DO,_DO,
_TI,_DO,_TI,_MI,_LA,
_LA,_DO,_RE,
_DO1,_MI,_MI,_1TI,_RE,_1TI,_1TI,_1SO,
_1TI,_1LA,_1LA,_1LA,_DO1,
_DO1,_DO1,_DO1,_DO1,
_DO,_MI,_FA,_FA,_DO,_DO,
_TI,_LA,_SO,_TI,_MI,_MI,
_LA,_DO,_RE,_DO,_RE,
_MI,_FA,_MI,_1TI,_RE,_1TI,_1TI,
_DO,_MI,_FA,_FA,_DO,_DO,
_TI,_DO,_TI,_MI,_LA,
_LA,_DO,_RE,
_DO1,_MI,_MI,_LA,_SO,_TI,
_LA,
_LA,_DO1,_SO,_FA,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_SO,_SO,_LA,_SO,_FA,_MI,
_FA,_FA,_MI,_FA,_RE,_DO,
_TI,_LA,_LA,_MI,_RE,
_MI,_MI,_RE,_MI,_MI,_RE,
_MI,_LA,_LA,_TI,_LA,_RE,_DO,
_RE,_RE,_DO,_RE,_MI,_RE,_DO,
_SO,
_LA,
_MI,_LA,_LA,_TI,_LA,_LA,_MI,_RE,_DO,
_RE,_RE,_MI,_RE,_DO,_LA,_DO,
_DO,
_DO,
};
//歌曲节拍
constuint32HCMM_L3[]=
{
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8d,_16,_4d,_16,_16,
_4d,_16,_16,_8,_4,_8,
_4d,_8,_4d,_16,_16,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8d,_16,_4,_16,_16,_16,_16,_16,
_4d,_16,_16,_8,_8,_16,_8d,
_1,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_16,_16,_4d,_16,_16,
_4d,_16,_16,_8,_4,_8,
_2,_4,_4,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_16,_16,_4d,_16,_16,
_4d,_16,_16,_8,_4,_8,
_2,_8,_8,_8,_8,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_16,_16,_4d,_16,_16,
_4d,_16,_16,_8,_4,_8,
_2,_4,_4,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_16,_16,_4d,_16,_16,
_4d,_16,_16,_8,_8,_8,_16,_16,
_2,_4,_4,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_16,_16,_2,
_4d,_8,_4d,_16,_16,
_8,_8,_8,_8,_8,_8,_4,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_8,_2,
_4d,_8,_2,
_8,_8,_8,_8,_8,_8,_8,_8,
_16,_16,_8,_2,_4,
_4,_4,_4,_4,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_16,_16,_2,
_4d,_8,_4d,_16,_16,
_8,_8,_8,_8,_8,_8,_4,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8,_8,_2,
_4d,_8,_2,
_8,_8,_8,_8,_4d,_8,
_1,
_2,_4,_8,_8,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8d,_16,_4d,_16,_16,
_4d,_16,_16,_8,_4,_8,
_4d,_8,_4d,_16,_16,
_4d,_16,_16,_4d,_16,_16,
_8,_8,_8d,_16,_4d,_16,_16,
_4d,_16,_16,_8,_8,_8,_8,
_1,
_1,
_8,_8,_8d,_16,_4,_16,_16,_16,_16,
_4d,_16,_16,_8,_8,_8,_8,
_1,
_1,
};
//沉默是金
constuint32HCMM4[]=
{
_DO,_LA,
_SO,
_DO,_RE,_MI,
_SO,
_RE,
_DO,
_DO,
_MI,_SO,_SO,_LA,_SO,_SO,_MI,_RE,
_MI,_MI,_MI,_RE,_DO,_DO,
_LA,_DO,_DO,_RE,_DO,_DO,_LA,_SO,_MI,
_SO,
_LA,_DO,_DO,_RE,_DO,_DO,_LA,_SO,_MI,
_SO,_SO,_SO,_LA,_MI,_MI,_SO,_MI,
_RE,_LA,_SO,_MI,_RE,_MI,
_SO,
_RE,_LA,_SO,_MI,_RE,
_DO,
_DO,_DO,_RE,_MI,_MI,_MI,_RE,_DO,
_LA,_DO,_DO,_LA,_SO,_SO,
_LA,_DO,_DO,_RE,_DO,_DO,_LA,_SO,_MI,
_SO,
_LA,_DO,_DO,_RE,_DO,
_LA,_SO,_SO,_LA,_MI,_MI,_SO,_MI,
_RE,_MI,_RE,_RE,_MI,_FA,
_SO,
_MI,_SO,_SO,_LA,_SO,_SO,_MI,_RE,
_MI,_MI,_MI,_RE,_DO,_DO,
_LA,_DO,_DO,_RE,_DO,_DO,_LA,_SO,_MI,
_SO,
_LA,_DO,_DO,_RE,_DO,_DO,_LA,_SO,_MI,
_SO,_SO,_SO,_LA,_MI,_MI,_SO,_MI,
_RE,_RE,_LA,_SO,_MI,_RE,
_DO,
_DO,
_DO,_SO,_MI,
_RE,_LA,_SO,_MI,_RE,
_DO,_SO,_MI,
_RE,_LA,_SO,_MI,_RE,
_DO,
};
/*歌曲节拍*/
constuint32HCMM_L4[]=
{
_2d,_1,
_2d,
_2d,_8,_8,
_1,
_1,
_1,
_1,
_8,_8,_8,_16,_16,_4,_16,_8d,
_8,_8,_8,_16,_16,_2,
_8,_8,_8,_16,_16,_4,_8,_8,_8,
_1,
_8,_8,_8,_16,_16,_4,_8,_8,_8,
_8,_8,_8,_16,_16,_4,_8,_8,
_4d,_8,_4,_8,_8,_8,
_1,
_4d,_8,_4,_8,_8,
_1,
_4,_8,_16,_16,_8,_8d,_16,_8d,
_8,_8,_8,_16,_16,_2,
_8,_8,_8,_16,_16,_4,_8,_8,_8,
_1,
_4d,_8,_8,_8,_4,
_8,_8,_8,_16,_16,_4,_8,_8,
_4d,_8,_4,_8,_8,_8,
_1,
_8,_8,_8,_16,_16,_4,_16,_8d,
_8,_8,_8,_16,_16,_2,
_8,_8,_8,_16,_16,_4,_8,_8,_8,
_1,
_8,_8,_8,_16,_16,_4,_8,_8,_8,
_8,_8,_8,_16,_16,_4,_8,_8,
_8,_4,_8,_8,_4,_8,
_1,
_1,
_2d,_8,_8,
_4d,_8,_8,_4,_8,
_2d,_8,_8,
_4d,_8,_8,_4,_8,
_1,
};
/*
********************************************************************************************************
**函数名称:
Delay
**功能描述:
软件延时函数
*******************************************************************************************************
*/
voidDelay(uint8dly)
{
uint32i;
for(;dly>0;dly--)
for(i=0;i<0x7FFFF;i++);
}
uint8constDISP_TAB[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
OS_STKTaskStk[TaskStkLengh];//DefinetheTask0stack定义用户任务0的堆栈
OS_STKTask0Stk[TaskStkLengh];
OS_STKTask1Stk[TaskStkLengh];
OS_STKTask2Stk[TaskStkLengh];
OS_STKTask3Stk[TaskStkLengh];
OS_STKTask4Stk[TaskStkLengh];
voidMP3(void*pdata);//对MP3主任务声明
voidIs_button_press(void*pdata);//对判断按键任务声明
voidPWM(void*pdata);//对音乐播放任务声明
voidvoicepend(void*pdata);//对控制音量任务声明
voidb_npend(void*pdata);
voidp_spend(void*pdata);
uint32voice_global;
uint32b_n_global;
uint32p_s_global;
voidMSPI_Init(void)//SPI初始化
{
PINSEL0=(PINSEL0&0xFFFF00FF)|0x00005500;//设置管脚连接SPI
PINSEL0=(PINSEL0&(~(0xFF<<8)))|(0x15<<8);
SPI_SPCCR=0x52;//设置SPI时钟分频
SPI_SPCR=(0<<3)|//CPHA=0,数据在SCK的第一个时钟沿采样
(1<<4)|//CPOL=1,SCK为低有效
(1<<5)|//MSTR=1,SPI处于主模式
(0<<6)|//LSBF=0,SPI数据传输MSB(位7)在先
(0<<7);//SPIE=0,SPI中断被禁止
}
uint8MSPI_SendData(uint8data)//向数码管发送消息
{
IOCLR=HC595_CS;//片选74HC595
SPI_SPDR=data;
while(0==(SPI_SPSR&0x80));//等待SPIF置位,即等待数据发送完毕
IOSET=HC595_CS;
return(SPI_SPDR);
}
intmain(void)
{
INT8Uerror;
OSInit();//系统初始化
OSTaskCreate(MP3,(void*)0,&TaskStk[TaskStkLengh-1],2);//创建MP3主任务
OSStart();//启动多任务环境
return0;
}
voidMP3(void*pdata)
{
pdata=pdata;
TargetInit();//初始化目标板
PINSEL1=0x00000000;//设置管脚连接GPIO
IO0DIR=BEEP;//设置蜂鸣器为输出
IO0DIR=~(0x3F)<<16;//选择按键作为输入
PINSEL2&=~0x08;//设置管脚连接到GPIO
IO1DIR=0xFF<<18;//选择流水灯作为输出
IO1SET=0xFF<<18;//使流水灯处于高电平,灯熄灭
MSPI_Init();//SPI初始化
IODIR=HC595_CS;//将SPI作为输出
IO0DIR=~(0x3F)<<16;//将p0.16~p0.21作为输入
OSTaskCreate(Is_button_press,(void*)0,&Task0Stk[TaskStkLengh-1],4);//创建任务
OSTaskCreate(PWM,(void*)0,&Task4Stk[TaskStkLengh-1],5);
OSTaskCreate(voicepend,(void*)0,&Task1Stk[TaskStkLengh-1],5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 lpc2131 模拟 MP3 播放 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)