LPC2138 PWM音乐输出实验设计教案资料Word文档格式.docx
- 文档编号:13241042
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:11
- 大小:488.49KB
LPC2138 PWM音乐输出实验设计教案资料Word文档格式.docx
《LPC2138 PWM音乐输出实验设计教案资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《LPC2138 PWM音乐输出实验设计教案资料Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
本课题的CPU核心芯片采用的是ARM7的LPC2138,实现了采用LPC2138的一个I/O口控制speaker发声,演唱《祝你平安》歌曲。
设计的关键所在,必须熟悉ARM的原理与结构,同时还要对整个设计流程有很好的把握,衔接好各个模块。
二、系统硬件设计
2.1系统电路:
2.2CPU核心芯片:
2.3电源模块:
2.4P0.7引脚选择PWM2功能:
2.5声音模块:
通过改变PWMMR0的值,可以改变PWM输出的频率。
本设计设定PWM输出单边沿PWM方波,控制蜂鸣器BEEP发声,改变PWM的频率,蜂鸣器发出不同频率的声音。
三、系统软件设计
3.1PWM音乐输出流程图:
进行PWM音乐输出设计,需要我们了解一些简谱和频率的关系。
在文件music.h中可以得到我们需要的信息,它给出了常用简谱和频率的对应关系,这使我们成功得把歌曲《祝你平安》简谱转换成我们需要的歌曲简谱和节拍数。
程序将歌曲简谱和节拍数各自放在一数组中,依次从简谱数组中得到相应频率后放到PWMMR0中,然后进行所存,改变PWM输出频率,并从节拍数组中获得相应的延时参数,两者配合得到音乐输出。
歌曲简谱、music.h文件和程序清单请看附录。
3.2“ARMDeveloperSuite”软件生成“.hex”文件的过程:
编写好程序后,先点击编译
,没有错误后,在窗口中点击
,设置.hex文件的保存路径,成功在设置的路径文件夹里生成.hex文件。
四、总结
经过这几个星期的努力,我们小组终于顺利完成了本次嵌入式课程设计。
刚开始做这个设计的时候感觉我们什么都不清楚,不知道从哪里下手,脑子里比较浮躁和零乱。
但通过一段时间的努力,重温书籍,还有查看相关的设计技术以及一些参考文献,再加之在老师的指导和周围同学的帮助下,使我们对本设计有了基本的掌握,确定基本设计方案,对所用芯片功能有了较清晰的认识。
经历了一次次的困难,却积累了很多宝贵的经验。
在整个设计的过程中遇到的问题主要有以下三点,第一:
对ARM的编译语言与C语言没有清楚的区别,出现了一些难以发现的错误。
第二:
对proteus软件应用的不熟练,在画电路图和系统的仿真调试的时候,操作不熟练,浪费了很多时间。
第三:
缺少这种系统设计的经验,相关知识掌握的不够全面,多走了很多弯路。
最后,我们要衷心的感谢老师给了我们一次实践的机会,让我们更加深刻地了解和认识到了自己的优点和不足。
通过这个课程设计我们发现了我们好多知识都不熟悉甚至有的东西我们根本就不知道,这让我们感到了要学习的东西还有很多很多。
因此使我们更坚定了在以后的学习中要扎实好基础,阔广知识面。
五、参考文献
[1]周立功.深入浅出ARR7—LPC213x/214x北京航空出版社,2005
[2]钱能.C++程序设计教程.清华大学出版社,2009
六、附录
6.1歌曲《祝你平安》简谱:
6.2music.h文件内容:
/*
*********************************************************************************************************
**文件名:
music.h
**描述:
节拍和简谱频率
*/
#ifndef_MUSIC_H
#define_MUSIC_H
//以4分音符为1拍
#defineTEMPO8
#define_1TEMPO*4//全音符
#define_1dTEMPO*6//附点全音符
#define_2TEMPO*2//2音符
#define_2dTEMPO*3//附点2音符
#define_4TEMPO*1//4分音符
#define_4dTEMPO*3/2//附点4分音符
#define_8TEMPO*1/2//8分音符
#define_8dTEMPO*3/4//附点8音符
#define_16TEMPO*1/4//16分音符
#define_16dTEMPO*3/8//附点16分音符
#define_32TEMPO*1/8//32分音符
/*低音*/
#define_1DO262
#define_1RE294
#define_1MI330
#define_1FA349
#define_1SO392
#define_1LA440
#define_1TI494
/*中音*/
#define_DO523
#define_RE587
#define_MI659
#define_FA698
#define_SO784
#define_LA880
#define_TI988
/*高音*/
#define_DO11047
#define_RE11175
#define_MI11319
#define_FA11397
#define_SO11568
#define_LA11760
#define_TI11976
#endif
6.3PWM音乐输出程序:
#include"
config.h"
music.h"
/*歌曲曲谱-祝你平安*/
constuint32HCMM[]=
{
_DO1,_DO1,_MI,_SO,_SO,_MI,_RE,
_DO,_DO,_LA,_SO,_SO,
_LA,_LA,_LA,_DO,_DO,_1LA,_DO,
_SO,_MI,_MI,_RE,_RE,
_MI,_DO,_DO,_DO,_1LA,_MI,_RE,_RE,_RE,
_1SO,_1SO,_SO,_SO,_RE,_MI,_DO,_DO,
};
/*歌曲节拍*/
constuint32HCMM_L[]=
_8,_8,_8,_8,_4d,_16,_16,
_8,_8,_8,_8,_2,
_8,_16,_16,_8,_8,_8,_16,_16,_4,
_16,_16,_16,_16,_16,_8,_16,_2,
********************************************************************************************************
**函数名称:
Delay
**功能描述:
软件延时函数
*******************************************************************************************************
voidDelay(uint8dly)
uint32i;
for(;
dly>
0;
dly--)
for(i=0;
i<
0x3FFFF;
i++);
}
**函数名称:
main()
**函数功能:
PWM音乐输出实验。
**调试说明:
需要将music.h包含进来。
intmain(void)
uint8i;
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)
{
40;
i++)
//for(i=0;
sizeof(HCMM);
PWMMR0=Fpclk/HCMM[i];
//设置输出频率
PWMMR2=PWMMR0/2;
PWMLER=0x05;
//更新匹配值后,必须锁存
Delay(HCMM_L[i]);
//延时,控制播放速度
}
return0;
/*********************************************************************************************************
**EndOfFile
********************************************************************************************************/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LPC2138 PWM音乐输出实验设计教案资料 PWM 音乐 输出 实验设计 教案 资料