基于MSP430控制蜂鸣器演奏乐曲的设计Word下载.docx
- 文档编号:17498600
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:8
- 大小:477.15KB
基于MSP430控制蜂鸣器演奏乐曲的设计Word下载.docx
《基于MSP430控制蜂鸣器演奏乐曲的设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于MSP430控制蜂鸣器演奏乐曲的设计Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
Thisworkinordertoachieveabuzzerplaymusic,designbasedonthesinglechipmicrocomputerMSP430,withhighandlowlevelcontroltones,thecurrentthroughthebuzzerelectromagneticcoils,thuspromotevibrationmembranevoiceforplantomeetwonderfulmusicplayingthepurpose.Technicalreporttoplaymusicofthedesignofthebuzzermainline,includingplayingmusicoftheframeworkofthebuzzerdesign,softwareandhardwaredesign,andwithhighandlowleveloflightsflashing.Basedonreliablehardwaredesignandstablesoftwarealgorithm,andrealizethetopicrequest.
Keywords:
MSP430microcontroller
Highandlowlevel
buzzer
一、设计要求
(1)基于单片机MSP430为主控芯片,利用蜂鸣器发声,以高低电平控制音调,来实现演奏乐曲的功能。
(2)准备八个发光二级管,定义MSP430单片机的八个管脚分别为歌曲中的不同音符这样,每当蜂鸣器演奏一个音符时,相应的LED就会发光,随着闪烁。
二、硬件设计
(1)整体方案
通过改编430程序使其能够发出相应的音乐。
演奏乐曲,对于一个音符应该包括两个部分,一是声调,二是持续时间,在这个程序中声调是由简单的延时——电平翻转来实现,改变了延时时间就改变了声调,而时间是通过计数比较来实现,当计数值相等时就跳出循环演奏下一个音。
(2)系统框架
图
(一)
(3)主控芯片的选择
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;
大量的寄存器以及片内数据存储器都可参加多种运算;
还有高效的查表处理指令。
这些特点保证了可编制出高效率的源程序。
而且其运算速度快,超低功耗,片内资源丰富,方便高效的开发环境也是我们优先选择的主要原因.
图
(二)
(4)蜂鸣器
蜂鸣器分为两种:
压电式蜂鸣器和电磁式蜂鸣器
实验室中,我们一般使用电磁式蜂鸣器
电磁式蜂鸣器:
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。
振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
如图所示:
蜂鸣器的正极接到电源上面,蜂鸣器的负极接到三极管发射极上,三极管的基极接到限流电阻R1上,由单片机的P3.7控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;
当P3.7输出低电平时,三极管T1导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7脚输出波形的频率,就可以控制蜂鸣器的音调,产生不同的音调,音色。
另外,改变P3.7输出高低电平的占空比,则可以控制蜂鸣器的声音的大小,这些我们都可以通过编程实验来验证。
图(三)
三、软件设计
程序功能:
MCU控制蜂鸣器演奏歌曲《祝你平安》。
拨码开关设置:
将BUZZER位拨至ON,其余位拨至OFF
。
测试说明:
聆听蜂鸣器“唱出”的乐曲
,既然是演奏乐曲对于一个音符应该包括两个部分
,一是声调
二是持续时间,在这个程序中声调是用简单的
,延时-电平翻转来实现的,改变了延时的时间就改变了
,声调,而时间是通过计数比较来实现的,当计数值相等时
,就跳出循环演奏下一个音符。
流程图:
图(四)
四、结论及感想
该设计完成了基本功能,可以实现任意歌曲的播放,只要换下歌曲里面的程序即可。
不过让八个发光二级管随着歌曲的节奏闪烁完成的不够彻底。
程序也是在我们的修改下面目全非,好在基本功能倒是可以轻易显示。
总而言之,虽然课程结束了,但是我们依然不会放弃它的扩展功能的实现,我们会再接再厉,争取将它完好实现。
参考文献:
1.《MSP430学习笔记5---利用蜂鸣器演奏音乐》
2.蜂鸣器:
附录:
(1)程序:
*********************************************/
#include
<
msp430x14x.h>
"
BoardConfig.h"
music.h"
#define
Buzzer
BIT7
Buzzer_Port
P6OUT
Buzzer_DIR
P6DIR
ucharcounter;
voidPlay_Song(void);
/***************主函数****************/
voidmain(void)
{
uchari;
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
/*------选择系统主时钟为8MHz-------*/
BCSCTL1&
=~XT2OFF;
//打开XT2高频晶体振荡器
do
IFG1&
=~OFIFG;
//清除晶振失败标志
for(i=0xFF;
i>
0;
i--);
//等待8MHz晶体起振
}
while((IFG1&
OFIFG));
//晶振失效标志仍然存在?
BCSCTL2|=SELM_2+SELS;
//主时钟和从时钟都选择高频晶振
BoardConfig(0xf8);
//关闭数码管、流水灯、电平转换
//设置定时器A每10ms中断一次
CCTL0=CCIE;
CCR0=10000;
TACTL|=TASSEL_2+ID_3;
//设置控制蜂鸣器的IO方向为输出
Buzzer_DIR|=Buzzer;
//打开全局中断
_EINT();
//循环演奏歌曲
while
(1)
Play_Song();
/*******************************************
函数名称:
TimerA_ISR
功
能:
定时器A的中断服务函数
参
数:
无
返回值
:
********************************************/
#pragmavector=TIMERA0_VECTOR
__interruptvoidTimerA_ISR(void)
counter++;
Delay_Nms
延时N个ms的函数
n--延时长度
voidDelay_Nms(ucharn)
uchari,j;
for(i=0;
i<
n;
i++)
for(j=0;
j<
3;
j++)
_NOP();
Play_Song
播放《祝你平安》的乐曲
voidPlay_Song(void)
ucharTemp1,Temp2;
ucharaddr=0;
counter=0;
//中断计数器清0
Temp1=SONG[addr++];
if(Temp1==0xFF)
//休止符
TACTL&
=~MC_1;
//停止计数
Delay_Nms(100);
elseif(Temp1==0x00)
//歌曲结束符
return;
else
Temp2=SONG[addr++];
TACTL|=MC_1;
//开始计数
Buzzer_Port^=Buzzer;
Delay_Nms(Temp1);
if(Temp2==counter)
break;
(2)单片机实物图
(3)蜂鸣器实物图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MSP430 控制 蜂鸣器 演奏 乐曲 设计