- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM7_简易模拟MP3播放器功能
简易模拟MP3播放器功能
实验目的:
通过学习,尝试编写歌曲简谱,加深对PWM音乐输出控制原理的认识和理解。
实验通过7段数码管显示播放曲目,提高对SPI接口的应用能力。
通过修改和添加《深入浅出ARM7》中的相关程序,控制歌曲的快进、快退、暂停、循环播放、停止等实现简易模拟MP3播放器功能,增强对ARM的程序读写能力。
实验仪器:
ARM开发板一块、
装有ADS1.2及EasyJTAG仿真器的电脑一台
实验原理:
SPI接口控制7段数码管显示:
(1)SPI数据和时钟的相位关系:
(2)SPI寄存器描述:
①SPI控制寄存器SPCR:
②SPI状态寄存器SPSR:
通过对相关寄存器的读写操作,即可控制主从机的数据传输。
PWM控制音乐输出:
两个匹配寄存器可用控制单边沿PWM输出。PWMMR0控制PWM周期速率,另一个匹配寄存器(PWMMR1~PWMMR6)控制PWM边沿的位置。每个额外的单边沿PWM输出只需要一个匹配寄存器,因为所有PWM输出的重复速率是相同的。多个单边控制PWM周期的开始,当PWMMR0发生匹配时,都有一个上升沿。
PWM管脚汇总:
PWM定时器控制寄存器PWMMTCR:
PWM匹配寄存器PWMMR0—PWMMR6:
PWM匹配寄存器值连续与PWM定时器计数TC值比较。当两个值相等时自动触发相应动作(产生中断、复位计数器或停止定时器)。具体执行什么动作油PWMMCR寄存器控制。
PWM锁存使能寄存器PWMLER:
实验程序:
实验流程图:
实验程序:(见附录)
调试结果:
(跳线连接: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 112
// 歌曲曲谱 - 倩女幽魂
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,
_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,
};
// 歌曲节拍
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, _
原创力文档


文档评论(0)