基于MSP430控制蜂鸣器演奏乐曲的设计论文(9页).doc
-
资源ID:37047694
资源大小:128.50KB
全文页数:9页
- 资源格式: DOC
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于MSP430控制蜂鸣器演奏乐曲的设计论文(9页).doc
-基于MSP430控制蜂鸣器演奏乐曲的设计论文-第 7 页基于MSP430控制蜂鸣器演奏乐曲的设计 指导老师: 队员: 学校: 延安大学 院系: 物理与电子信息学院摘要 : 本作品为了实现蜂鸣器演奏音乐,设计基于单片机MSP430,以高低电平控制音调,电流通过蜂鸣器的电磁线圈,从而带动振动膜发声为方案,达到演奏美妙音乐的目的。技术报告以蜂鸣器演奏音乐的设计为主线,包括蜂鸣器演奏音乐的的框架设计,软硬件设计,以及对灯光随高低电平闪烁的研究等。基于可靠的硬件设计和稳定的软件算法,实现题目要求。关键词:单片机MSP430 高低电平 蜂鸣器Abstract:This work in order to achieve a buzzer play music, design based on the single chip microcomputer MSP430, with high and low level control tones, the current through the buzzer electromagnetic coils, thus promote vibration membrane voice for plan to meet wonderful music playing the purpose. Technical report to play music of the design of the buzzer main line, including playing music of the framework of the buzzer design, software and hardware design, and with high and low level of lights flashing. Based on reliable hardware design and stable software algorithm, and realize the topic request.Keywords: MSP430 microcontroller High and low level 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>#include "BoardConfig.h"#include "music.h"#define Buzzer BIT7#define Buzzer_Port P6OUT#define Buzzer_DIR P6DIRuchar counter;void Play_Song(void);/*主函数*/void main(void) uchar i; 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的中断服务函数参 数:无返回值 :无#pragma vector = TIMERA0_VECTOR_interrupt void TimerA_ISR(void) counter+;函数名称:Delay_Nms功 能:延时N个ms的函数参 数:n-延时长度返回值 :无void Delay_Nms(uchar n) uchar i,j; for( i = 0;i < n; i+ ) for( j = 0;j < 3;j+ ) _NOP();函数名称:Play_Song功 能:播放祝你平安的乐曲参 数:无返回值 :无void Play_Song(void) uchar Temp1,Temp2; uchar addr = 0; counter = 0; /中断计数器清0 while(1) Temp1 = SONGaddr+; if ( Temp1 = 0xFF ) /休止符 TACTL &=MC_1; /停止计数 Delay_Nms(100); else if ( Temp1 = 0x00 ) /歌曲结束符 return; else Temp2 = SONGaddr+; TACTL |=MC_1; /开始计数 while(1) Buzzer_Port = Buzzer; Delay_Nms(Temp1); if ( Temp2 = counter ) counter = 0; break;(2)单片机实物图(3)蜂鸣器实物图