<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    16100

    瀏覽量

    344582
  • 定時器
    +關注

    關注

    23

    文章

    3154

    瀏覽量

    112380
  • 蜂鳴器
    +關注

    關注

    12

    文章

    853

    瀏覽量

    45406
收藏 人收藏

    評論

    相關推薦

    利用蜂鳴器和單片機演奏簡單的音樂電路設計

    利用蜂鳴器和單片機演奏簡單的音樂,包含源程序代碼。
    發表于 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 ?1569次閱讀
    <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 ?1627次閱讀
    利用<b class='flag-5'>蜂鳴器</b><b class='flag-5'>演奏</b>簡單的樂譜
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>