基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx

上传人:b****1 文档编号:22983389 上传时间:2023-04-29 格式:DOCX 页数:10 大小:474.30KB
下载 相关 举报
基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx_第1页
第1页 / 共10页
基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx_第2页
第2页 / 共10页
基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx_第3页
第3页 / 共10页
基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx_第4页
第4页 / 共10页
基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx

《基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx》由会员分享,可在线阅读,更多相关《基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx(10页珍藏版)》请在冰豆网上搜索。

基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文.docx

基于msp430控制蜂鸣器演奏乐曲的设计论文本科论文

 

基于MSP430控制蜂鸣器演奏乐曲的设计

 

指导老师:

队员:

学校:

延安大学

院系:

物理与电子信息学院

摘要:

本作品为了实现蜂鸣器演奏音乐,设计基于单片机MSP430,以高低电平控制音调,电流通过蜂鸣器的电磁线圈,从而带动振动膜发声为方案,达到演奏美妙音乐的目的。

技术报告以蜂鸣器演奏音乐的设计为主线,包括蜂鸣器演奏音乐的的框架设计,软硬件设计,以及对灯光随高低电平闪烁的研究等。

基于可靠的硬件设计和稳定的软件算法,实现题目要求。

关键词:

单片机MSP430高低电平蜂鸣器

Abstract:

Thisworkinordertoachieveabuzzerplaymusic,designbasedonthesinglechipmicrocomputerMSP430,withhighandlowlevelcontroltones,thecurrentthroughthebuzzerelectromagneticcoils,thuspromotevibrationmembranevoiceforplantomeetwonderfulmusicplayingthepurpose.Technicalreporttoplaymusicofthedesignofthebuzzermainline,includingplayingmusicoftheframeworkofthebuzzerdesign,softwareandhardwaredesign,andwithhighandlowleveloflightsflashing.Basedonreliablehardwaredesignandstablesoftwarealgorithm,andrealizethetopicrequest.

 

Keywords:

MSP430microcontrollerHighandlowlevelbuzzer

一、设计要求

(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

#include"BoardConfig.h"

#include"music.h"

#defineBuzzerBIT7

#defineBuzzer_PortP6OUT

#defineBuzzer_DIRP6DIR

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

{

for(j=0;j<3;j++)

_NOP();

}

}

/*******************************************

函数名称:

Play_Song

功能:

播放《祝你平安》的乐曲

参数:

返回值:

********************************************/

voidPlay_Song(void)

{

ucharTemp1,Temp2;

ucharaddr=0;

counter=0;//中断计数器清0

while

(1)

{

Temp1=SONG[addr++];

if(Temp1==0xFF)//休止符

{

TACTL&=~MC_1;//停止计数

Delay_Nms(100);

}

elseif(Temp1==0x00)//歌曲结束符

{

return;

}

else

{

Temp2=SONG[addr++];

TACTL|=MC_1;//开始计数

while

(1)

{

Buzzer_Port^=Buzzer;

Delay_Nms(Temp1);

if(Temp2==counter)

{

counter=0;

break;

}

}

}

}

}

(2)单片机实物图

(3)蜂鸣器实物图

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1