嵌入式MP3实验报告.doc_第1页
嵌入式MP3实验报告.doc_第2页
嵌入式MP3实验报告.doc_第3页
嵌入式MP3实验报告.doc_第4页
嵌入式MP3实验报告.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安邮电大学嵌入式系统设计实验报告专 业班 级学 号学生姓名指导教师学 期2013-2014学年第2学期完成日期2014-06-25基于lpc2131的模拟MP3播放器实验1、 实验目的1、 熟悉ARM & ADS V1.2 的环境2、 理解LPC2131芯片引脚功能的选择3、 理解GPIO的使用设置、输入驱动方法4、 理解PWM的通信原理,学习ARM PWM资源的通信编程5、 学习在LPC2131上移植ucos系统2、 实验内容及要求 (1)通过键盘输入,进入MP3播放器相应的功能选项。 (2)MP3播放器具备的功能选项为:播放、暂停、停止、音量控制、音乐下载。 (3)MP3播放器响应进入各功能状态时,蜂鸣器蜂鸣。 (4)流水灯表示MP3播放器当前所处的功能状态。 (5)蜂鸣器蜂鸣声音的大小代表音量的大小,音量控制状态和音乐下载状态可分别与其他3种状态同事存在。 (6)数码管数字大小表示执行MP3各功能状态的时间。3、 系统总体设计(总体方案及系统框图)系统主要创建了六个任务,分别为MP3总任务、判断按键任务、播放音乐任务、控制音量任务、播放上一曲或下一曲任务及暂停或停止任务,然后启动多任务环境,通过创建的消息邮箱发送并接收消息,进而实现MP3播放的一些简单功能。蜂鸣器模块数码管显示模块LPC2131PWM串口模块LED显示与键盘模块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#define BEEP 1 7 / P0.7控制蜂鸣器BEEP#define HC595_CS (1 0; dly-) for(i = 0; i 0x7FFFF; i+);uint8 const DISP_TAB10 = 0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90; OS_STKTaskStk TaskStkLengh;/Define 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); /对音乐播放任务声明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 & 0xFFFF00FF) | 0x00005500;/ 设置管脚连接SPIPINSEL0 = (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 中断被禁止uint8 MSPI_SendData(uint8 data) /向数码管发送消息 IOCLR = HC595_CS; / 片选74HC595 SPI_SPDR = data; while( 0 = (SPI_SPSR & 0x80);/ 等待SPIF置位,即等待数据发送完毕 IOSET = HC595_CS; return(SPI_SPDR);int main(void)INT8U error;OSInit (); /系统初始化OSTaskCreate (MP3,(void *)0, &TaskStkTaskStkLengh - 1, 2);/创建MP3主任务OSStart (); /启动多任务环境return 0;void MP3(void *pdata)pdata = pdata;TargetInit (); / /初始化目标板PINSEL1 = 0x00000000; /设置管脚连接GPIOIO0DIR = BEEP; /设置蜂鸣器为输出IO0DIR = (0x3F) 16; /选择按键作为输入PINSEL2 &= 0x08; /设置管脚连接到GPIOIO1DIR = 0xFF 18; /选择流水灯作为输出IO1SET = 0xFF 18; /使流水灯处于高电平,灯熄灭MSPI_Init(); /SPI初始化IODIR = HC595_CS; /将SPI作为输出IO0DIR = (0x3F) 16; /将p0.16p0.21作为输入OSTaskCreate (Is_button_press,(void *)0, &Task0StkTaskStkLengh - 1, 4); /创建任务OSTaskCreate (PWM,(void *)0, &Task4StkTaskStkLengh - 1, 5);OSTaskCreate (voicepend,(void *)0, &Task1StkTaskStkLengh - 1, 5);OSTaskCreate (b_npend,(void *)0, &Task2StkTaskStkLengh - 1, 5);OSTaskCreate (p_spend,(void *)0, &Task3StkTaskStkLengh - 1, 5);while (1)OSTimeDly(10); /延时10秒void voicepend(void *pdata) uint8 *voice_msg,error; voice_msg= OSMboxPend(voice, 0, &error); /接收消息 voice_global = *voice_msg; /将消息赋给定义变量void b_npend(void *pdata) uint8 *b_n_msg,error; b_n_msg= OSMboxPend(b_n, 0, &error); b_n_global = *b_n_msg; void p_spend(void *pdata) uint8 *p_s_msg,error; p_s_msg= OSMboxPend(p_s, 0, &error); p_s_global = *p_s_msg; void Is_button_press(void *pdata) INT8U error,key;voice = OSMboxCreate(void*)0); /创建消息邮箱b_n = OSMboxCreate(void*)0);p_s = OSMboxCreate(void*)0);pdata = pdata;TargetInit (); /初始化目标板while (1)if (IO0PIN & KEY1) = 0)/ 如果KEY1按下OSTimeDly(2);if(IO0PIN & KEY1) = 0) key = 1;OSMboxPost (voice,(void *)&key); /将按键1消息发送出去else if (IO0PIN & KEY2) = 0)/ 如果KEY2按下 OSTimeDly(2);if(IO0PIN & KEY2) = 0)key = 2;OSMboxPost (voice,(void *)&key); /将按键2消息发送出去 else if (IO0PIN & KEY3) = 0)/ 如果KEY3按下 OSTimeDly(2);if(IO0PIN & KEY3) = 0)key = 3;OSMboxPost (b_n,(void *)&key); else if (IO0PIN & KEY4) = 0)/ 如果KEY4按下 OSTimeDly(2);if(IO0PIN & KEY4) = 0)key = 4;OSMboxPost (b_n,(void *)&key); else if (IO0PIN & KEY5) = 0)/ 如果KEY5按下 OSTimeDly(2);if(IO0PIN & KEY5) = 0)key = 5;OSMboxPost (p_s,(void *)&key); else if (IO0PIN & KEY6) = 0)/ 如果KEY6按下 OSTimeDly(2);if(IO0PIN & KEY6) = 0)key = 6;OSMboxPost (p_s,(void *)&key); else key = 0; MSPI_SendData(DISP_TABkey); /向数码管发送显示数据 IO1CLR = 1 (17 + key); /点亮按键对应的流水灯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 = 0x00; / 不分频,计数频率为Fpclk PWMMCR = 0x02;/ 设置PWMMR0匹配时复位PWMTC PWMPCR = 0x0400;/ 允许PWM2输出,单边PWM PWMMR0 = Fpclk / 1000; PWMMR2 = PWMMR0 / 2;/ 50%占空比 PWMLER = 0x05; / PWM0和PWM2匹配锁存 PWMTCR = 0x02; / 复位PWMTC PWMTCR = 0x09; / 启动PWM输出 while(1) /*播放 暂停 停止*/ if(p_s_global=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 &PWMMR2!=0) PWMMR2 -=PWMMR0 / 10; else if(voice_global=2&PWMMR2!=9*(PWMMR0 / 10) PWMMR2 +=PWMMR0 / 10; else ; /*上一曲 下一曲*/ 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+; 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(H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论