0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU控制蜂鸣器演奏音乐小程序

算法&编程学院 来源:网络整理 作者:工程师3 2018-04-20 09:17 次阅读

程序功能:MCU控制蜂鸣器演奏歌曲《祝你平安》

----------------------------------------------

拨码开关设置:将BUZZER位拨至ON,其余位拨至OFF

测试说明:聆听蜂鸣器“唱出”的乐曲

既然是演奏乐曲对于一个音符应该包括两个部分

一是声调 二是持续时间,在这个程序中声调是用简单的

延时-电平翻转来实现的,改变了延时的时间就改变了

声调,而时间是通过计数比较来实现的,当计数值相等时

就跳出循环演奏下一个音符。

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

#include 《msp430x14x.h》

typedef unsigned char uchar;

#include “music.h”

#define Buzzer BIT7

#define Buzzer_Port P6OUT

#define Buzzer_DIR P6DIR

uchar counter;

void Play_Song(void);

/***************主函数****************/

void main(void)

{

uchar i;

/*下面六行程序关闭所有的IO口*/

P1DIR = 0XFF;P1OUT = 0XFF;

P2DIR = 0XFF;P2OUT = 0XFF;

P3DIR = 0XFF;P3OUT = 0XFF;

P4DIR = 0XFF;P4OUT = 0XFF;

P5DIR = 0XFF;P5OUT = 0XFF;

P6DIR = 0XFF;P6OUT = 0XFF;

P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

/*------选择系统主时钟为8MHz-------*/

BCSCTL1 &= ~XT2OFF; // 打开XT2高频晶体振荡器

do

{

IFG1 &= ~OFIFG; //清除晶振失败标志

for (i = 0xFF; i 》 0; i--); // 等待8MHz晶体起振

}

while ((IFG1 & OFIFG)); // 晶振失效标志仍然存在?

BCSCTL2 |= SELM_2 + SELS; //主时钟和从时钟都选择高频晶振

//设置定时器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的函数 ps:不知道这个地方怎么算出来的是延时毫秒

参 数: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 = SONG[addr++];

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

{

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

Delay_Nms(100);

}

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

{

return;

}

else

{

Temp2 = SONG[addr++];

TACTL |=MC_1; //开始计数

while(1)

{

Buzzer_Port ^= Buzzer;//电平取反

Delay_Nms(Temp1);//Temp1的值决定了延时的长短,也决定了声音的频率

if ( Temp2 == counter )//决定了音调持续的时间,计数时间到时就跳出循环演奏下一个。

{

counter = 0;

break;

}

}

}

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16013

    浏览量

    343572
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112034
  • 蜂鸣器
    +关注

    关注

    12

    文章

    850

    浏览量

    45300
收藏 人收藏

    评论

    相关推荐

    利用蜂鸣器和单片机演奏简单的音乐电路设计

    利用蜂鸣器和单片机演奏简单的音乐,包含源程序代码。
    发表于 04-03 12:59 1.1w次阅读
    利用<b class='flag-5'>蜂鸣器</b>和单片机<b class='flag-5'>演奏</b>简单的<b class='flag-5'>音乐</b>电路设计

    各位,问一个问题,用蜂鸣器演奏流行音乐曲子,做成产品卖的话,算侵权吗?

    各位,问一个问题,用蜂鸣器演奏流行音乐曲子,做成产品卖的话,算侵权吗?
    发表于 01-22 11:09

    简易电子琴演奏音乐

    用51单片机写的一个小程序,可以演奏音乐,通过矩阵按键控制,并通过1602显示时间信息,有兴趣可以看看
    发表于 09-15 16:55

    按键控制无源蜂鸣器发出不同声音来演奏音乐

    cortex-A8用不同按键控制无源蜂鸣器发出不同声音来演奏音乐程序
    发表于 06-05 21:36

    如何用步进电机演奏音乐

    如何用步进电机演奏音乐
    发表于 11-19 06:17

    通过单片机演奏音乐

    /************************************************************************[文件名]C51音乐程序(八月桂花)[功能] 通过单片机演奏音乐 接线说明:参考
    发表于 11-30 07:08

    如何利用单片机实现蜂鸣器音乐之八月桂花

    ]C51音乐程序(八月桂花)[功能] 通过单片机演奏音乐 /********************************************************...
    发表于 12-01 08:19

    如何利用Arduino与蜂鸣器实现音乐演奏

    如何利用Arduino与蜂鸣器实现音乐演奏呢?其程序代码该怎样去实现呢?
    发表于 02-14 07:22

    单片机音乐程序教程

    单片机音乐程序教程:声音基础,单一程序音乐演奏,模块化音乐程序演奏等内容。
    发表于 06-03 12:17 173次下载
    单片机<b class='flag-5'>音乐程序</b>教程

    音乐演奏器设计

    音乐演奏器设计 一、任务设计并制作一个可以演奏乐曲的远程音乐演奏器,基本电路框图如图。
    发表于 08-02 08:35 1540次阅读
    <b class='flag-5'>音乐演奏</b>器设计

    eda音乐演奏程序

    EDA音乐演奏程序例程,可根据需要改编
    发表于 12-09 23:19 6次下载

    如何使用单片机进行蜂鸣器演奏音乐程序资料免费下载

    本文档的主要内容详细介绍的是如何使用单片机进行蜂鸣器演奏音乐程序资料免费下载。
    发表于 05-05 08:00 6次下载
    如何使用单片机进行<b class='flag-5'>蜂鸣器</b><b class='flag-5'>演奏</b><b class='flag-5'>音乐</b>的<b class='flag-5'>程序</b>资料免费下载

    单片机音乐演奏(STC89C51)

    /************************************************************************ [文件名] C51音乐程序(八月桂花) [功能] 通过单片机演奏音乐
    发表于 11-21 21:06 9次下载
    单片机<b class='flag-5'>音乐演奏</b>(STC89C51)

    单片机中级项目12丨蜂鸣器音乐之八月桂花

    ] C51音乐程序(八月桂花) [功能] 通过单片机演奏音乐 /********************************************************...
    发表于 11-22 09:36 9次下载
    单片机中级项目12丨<b class='flag-5'>蜂鸣器</b><b class='flag-5'>音乐</b>之八月桂花

    利用蜂鸣器演奏简单的乐谱

    那么,今天分享的是利用蜂鸣器演奏一些简单的乐谱。
    的头像 发表于 05-26 16:04 1452次阅读
    利用<b class='flag-5'>蜂鸣器</b><b class='flag-5'>演奏</b>简单的乐谱