当前位置:文档之家› 新型MP3播放器设计

新型MP3播放器设计

简易模拟MP3播放器功能一.目的:1.通过学习,尝试编写歌曲简谱,加深对PWM音乐输出控制原理的认识和理解。

2.实验通过7段数码管显示播放曲目,提高对SPI接口的应用能力。

3.通过修改和添加《深入浅出ARM7》中的相关程序,控制歌曲的快进、快退、暂停、循环播放、停止等实现简易模拟MP3播放器功能,增强对ARM的程序读写能力。

二.仪器:ARM开发板一块、装有ADS1.2及EasyJTAG仿真器的电脑一台三.原理:1.SPI接口控制7段数码管显示:(1)SPI数据和时钟的相位关系:(2)SPI寄存器描述:①SPI控制寄存器SPCR:②SPI状态寄存器SPSR:通过对相关寄存器的读写操作,即可控制主从机的数据传输。

2.PWM控制音乐输出:(1)两个匹配寄存器可用控制单边沿PWM输出。

PWMMR0控制PWM周期速率,另一个匹配寄存器(PWMMR1~PWMMR6)控制PWM边沿的位置。

每个额外的单边沿PWM输出只需要一个匹配寄存器,因为所有PWM输出的重复速率是相同的。

多个单边控制PWM周期的开始,当PWMMR0发生匹配时,都有一个上升沿。

(2)PWM管脚汇总:(3)PWM定时器控制寄存器PWMMTCR:(4)PWM匹配寄存器PWMMR0—PWMMR6:PWM匹配寄存器值连续与PWM定时器计数TC值比较。

当两个值相等时自动触发相应动作(产生中断、复位计数器或停止定时器)。

具体执行什么动作油PWMMCR 寄存器控制。

(5)PWM锁存使能寄存器PWMLER:四.实验程序:1.实验流程图:2.实验程序:(见附录)五.调试结果:(跳线连接:PWMMR3,4,5,6输出口连接LED1~4; PWMMR1连接BEEP;)当烧录程序后,数码管先显示0,然后按KEY3或KEY4可播放下一首或上一首歌曲,同时数码管更新显示曲目;放音过程中,按一次KEY5可实现放音暂停,再按KEY5继续放音;放音过程中,按KEY1键可复位播放当前歌曲,并实现重复播放。

按KEY2键复位并停止播放音乐。

放音过程中LED1~4伴随播放音调明暗变化。

六.调试总结及体会:通过不断调试,终于实现了简易模拟MP3播放功能,调试过程是自己不断学习进步的过程,从中收获了很多。

通过对课本中关于“虹彩妹妹”音乐编程的分析,以及通过网络学习了相关的音乐简谱常识,掌握了用蜂鸣器实现播放音乐的编程方法。

实验中“倩女幽魂”、“沉默是金”、“当年情”都是自己通过歌曲简谱编写的音乐程序。

事物都是相互联系的。

通过对音乐程序的编写,加深了对用PWM播放音乐原理的认识。

通过反复的调试,对AXD调试环境更加的熟悉,更加熟练了对其基本功能的应用。

同时,提高了ARM编程应用能力。

能够对一些基本的错误快速识别,为今后的编程奠定一定基础。

附录://跳线连接:PWMMR3,4,5,6输出口连接LED1~4; PWMMR1连接BEEP;#include "config.h"#include "music.h"#define HC595_CS (1 << 29) // P0.29口为74HC595的片选#define AA 1<<12// 歌曲曲谱-倩女幽魂const uint32 HCMM1[] ={_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,_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,};// 歌曲节拍const uint32 HCMM_L1[] ={_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,};//歌曲曲谱-虹彩妹妹const uint32 HCMM2[] ={_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,};// 歌曲节拍const uint32 HCMM_L2[] ={_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,};//当年情const uint32 HCMM3[] ={_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,};//歌曲节拍const uint32 HCMM_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,};//沉默是金const uint32 HCMM4[] ={_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,};/* 歌曲节拍*/const uint32 HCMM_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,};const uint32 KEY1=1<<16;const uint32 KEY2=1<<17;const uint32 KEY3=1<<18;const uint32 KEY4=1<<19;const uint32 KEY5=1<<20;void Delay(uint8 dly){uint32 i;for(; dly > 0; dly--)for(i = 0; i < 0x7FFFF; i++);}/****************************************************************************** **************************** 函数名称:MSPI_Init()** 函数功能:初始化SPI接口,设置为主机。

相关主题