嵌入式MP3 实验报告

上传人:飞*** 文档编号:44999222 上传时间:2018-06-14 格式:DOC 页数:25 大小:231KB
返回 下载 相关 举报
嵌入式MP3     实验报告_第1页
第1页 / 共25页
嵌入式MP3     实验报告_第2页
第2页 / 共25页
嵌入式MP3     实验报告_第3页
第3页 / 共25页
嵌入式MP3     实验报告_第4页
第4页 / 共25页
嵌入式MP3     实验报告_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《嵌入式MP3 实验报告》由会员分享,可在线阅读,更多相关《嵌入式MP3 实验报告(25页珍藏版)》请在金锄头文库上搜索。

1、西安邮电大学西安邮电大学嵌入式系统设计实验报告嵌入式系统设计实验报告专 业班 级学 号学生姓名指导教师学 期2013-2014 学年第 2 学期完成日期2014-06-25基于基于 lpc2131lpc2131 的模拟的模拟 MP3MP3 播放器实验播放器实验1、实验目的实验目的1 1、熟悉熟悉 ARMARM dly-)for(i = 0; i 0x7FFFF; i+);uint8 const DISP_TAB10 = 0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90;OS_STKTaskStk TaskStkLengh;/D

2、efine the Task0 stack 定义用户任务定义用户任务 0 的堆栈的堆栈OS_STKTask0Stk TaskStkLengh;OS_STKTask1Stk TaskStkLengh;OS_STKTask2Stk TaskStkLengh;OS_STKTask3Stk TaskStkLengh;OS_STKTask4Stk TaskStkLengh;void MP3(void *pdata); /对对 MP3 主任务声明主任务声明void Is_button_press(void *pdata); /对判断按键任务声明对判断按键任务声明void PWM(void *pdata);

3、 /对音乐播放任务声明对音乐播放任务声明void voicepend(void *pdata); /对控制音量任务声明对控制音量任务声明void b_npend(void *pdata); void p_spend(void *pdata);uint32 voice_global;uint32 b_n_global;uint32 p_s_global;void MSPI_Init(void) /SPI 初始化初始化 PINSEL0 = (PINSEL0 / 设置管脚连接设置管脚连接 SPIPINSEL0 = (PINSEL0 SPI_SPCCR = 0x52; / 设置设置 SPI 时钟分频时

4、钟分频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 中断被禁止中断被禁止uint8 MSPI_SendData(uint8 data) /向数码管发送消息向数码管发送消息 IOCLR = HC595_CS; / 片选片选 74HC595SPI_SPDR = dat

5、a;while( 0 = (SPI_SPSR / 等待等待 SPIF 置位,即等待数据发送完毕置位,即等待数据发送完毕IOSET = HC595_CS;return(SPI_SPDR);int main(void)INT8U error;OSInit (); /系统初始化系统初始化OSTaskCreate (MP3,(void *)0, /创建创建 MP3 主任务主任务OSStart (); /启动多任务环境启动多任务环境return 0;void MP3(void *pdata)pdata = pdata;TargetInit (); / /初始化目标板初始化目标板PINSEL1 = 0x0

6、0000000; /设置管脚连接设置管脚连接 GPIOIO0DIR = BEEP; /设置蜂鸣器为输出设置蜂鸣器为输出IO0DIR = (0x3F) 16; /选择按键作为输入选择按键作为输入PINSEL2 /设置管脚连接到设置管脚连接到 GPIOIO1DIR = 0xFF 18; /选择流水灯作为输出选择流水灯作为输出IO1SET = 0xFF 18; /使流水灯处于高电平,灯熄灭使流水灯处于高电平,灯熄灭MSPI_Init(); /SPI 初始化初始化IODIR = HC595_CS; /将将 SPI 作为输出作为输出IO0DIR = (0x3F) 16; /将将 p0.16p0.21 作

7、为输入作为输入OSTaskCreate (Is_button_press,(void *)0, /创建任务创建任务OSTaskCreate (PWM,(void *)0, OSTaskCreate (voicepend,(void *)0, OSTaskCreate (b_npend,(void *)0, OSTaskCreate (p_spend,(void *)0, while (1)OSTimeDly(10); /延时延时 10 秒秒void voicepend(void *pdata) uint8 *voice_msg,error;voice_msg= OSMboxPend(voice

8、, 0, /接收消息接收消息voice_global = *voice_msg; /将消息赋给定义变量将消息赋给定义变量void b_npend(void *pdata)uint8 *b_n_msg,error;b_n_msg= OSMboxPend(b_n, 0, b_n_global = *b_n_msg; void p_spend(void *pdata)uint8 *p_s_msg,error;p_s_msg= OSMboxPend(p_s, 0, p_s_global = *p_s_msg; void Is_button_press(void *pdata) INT8U error,

9、key;voice = OSMboxCreate(void*)0); /创建消息邮箱创建消息邮箱b_n = OSMboxCreate(void*)0);p_s = OSMboxCreate(void*)0);pdata = pdata;TargetInit (); /初始化目标板初始化目标板while (1)if (IO0PIN if(IO0PIN OSMboxPost (voice,(void *) /将按键将按键 1 消息发送出去消息发送出去else if (IO0PIN if(IO0PIN OSMboxPost (voice,(void *) /将按键将按键 2 消息发送出去消息发送出去

10、else if (IO0PIN if(IO0PIN OSMboxPost (b_n,(void *) else if (IO0PIN if(IO0PIN OSMboxPost (b_n,(void *) else if (IO0PIN if(IO0PIN OSMboxPost (p_s,(void *) else if (IO0PIN if(IO0PIN OSMboxPost (p_s,(void *) else key = 0;MSPI_SendData(DISP_TABkey); /向数码管发送显示数据向数码管发送显示数据IO1CLR = 1 (17 + key); /点亮按键对应的流水灯

11、点亮按键对应的流水灯IO0CLR=BEEP; /让蜂鸣器鸣响让蜂鸣器鸣响OSTimeDly(OS_TICKS_PER_SEC / 2); /延时函数延时函数IO0SET=BEEP; /蜂鸣器停止鸣响蜂鸣器停止鸣响OSTimeDly(50); / 延时延时void PWM (void *pdata)uint8 error,i,flag_b_n=0,flag_p_s=0x1;uint8 *voice_msg,*b_n_msg,*p_s_msg;uint8 temp=0;PINSEL0 = 0x02 14;/ P0.7 选择选择 PWM2 功能功能/* PWM 初始化初始化 */PWMPR = 0x

12、00; / 不分频,计数频率为不分频,计数频率为 FpclkPWMMCR = 0x02;/ 设置设置 PWMMR0 匹配时复位匹配时复位 PWMTCPWMPCR = 0x0400;/ 允许允许 PWM2 输出,单边输出,单边 PWMPWMMR0 = Fpclk / 1000;PWMMR2 = PWMMR0 / 2;/ 50%占空比占空比PWMLER = 0x05; / PWM0 和和 PWM2 匹配锁存匹配锁存PWMTCR = 0x02; / 复位复位 PWMTCPWMTCR = 0x09; / 启动启动 PWM 输出输出while(1)/*播放播放 暂停暂停 停止停止*/ if(p_s_gl

13、obal=5) if(flag_p_s)PWMTCR = 0x09; flag_p_s=0;else PWMTCR = 0x00; flag_p_s=1;temp=i; if(p_s_global=6) PWMTCR = 0x00; flag_p_s=1;temp=0;/*声音调节声音调节*/ if(voice_global=1 else if(voice_global=2else ;/*上一曲上一曲 下一曲下一曲*/if(b_n_global = 3)if(flag_b_n=0)flag_b_n=1;else if(flag_b_n=4)flag_b_n=1;else flag_b_n+;

14、if(b_n_global=4)if(flag_b_n=0)flag_b_n=4;else if(flag_b_n=1)flag_b_n=4;else flag_b_n-; if(flag_b_n=0)for(i = temp; i sizeof(HCMM1); i+)PWMMR0 = Fpclk / HCMM1i; PWMLER = 0x05;Delay(HCMM_L1i);temp=0; else if(flag_b_n=1)for(i = temp; i sizeof(HCMM1); i+)PWMMR0 = Fpclk / HCMM1i; PWMLER = 0x05;Delay(HCMM_L1i);temp=0; el

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号