導航:首頁 > 操作系統 > 單片機蜂鳴器發聲歌曲的代碼

單片機蜂鳴器發聲歌曲的代碼

發布時間:2025-06-16 17:47:44

1. STM32蜂鳴器播放音樂實例

本文闡述了使用STM32單片機蜂鳴器播放音樂的實例,開發工具為STM32CubeIDE。實驗效果展示了無源蜂鳴器的發聲原理,其需要外部信號以特定頻率翻轉電平,從而發出不同的聲調。電路原理圖中,蜂鳴器連接於PB5管腳,通過調整管腳電平實現發聲。

在STM32CubeIDE中新建工程,配置相關設置以開啟PB5管腳,實現信號控制功能。編寫延時函數,通過開啟定時器TIM7來實現,這是為了在代碼中插入延時,控制蜂鳴器的發聲時間。生成代碼後,對gpio.c文件進行修改,從音調數組中選取音樂片段,對應到特定的發聲頻率,通過調用sound函數來控制蜂鳴器發聲,同時,聲音持續時間由time數組控制。音樂的演奏依賴於聲音頻率和持續時間的精確匹配。

本文提供了免費學習資源,包括學習交流群、ARM開發環境搭建、ARM體系架構、蜂鳴器播放音樂、中斷GIC分析等技術講解和實操課程,以及關於STM32的串口操作、Z-stack協議棧實現串口透傳、直流電機驅動、零基礎電子產品設計、設計自己的開發板、STM32中斷以及定時器技術等內容。這些資源涵蓋了從基礎到進階的學習路徑,幫助用戶深入理解STM32應用和相關技術。

2. 用89C51單片機和蜂鳴器播放「 生日快樂」歌的C程序 12M晶振

1、寫入頭文件。

3. 能提供幾首單片機的歌曲代碼用蜂鳴器唱的

#include <reg52.h>
#include <intrins.h>
//本例採用89C52, 晶振為11.0592MHZ
//關於如何編制音樂代碼, 其實十分簡單,各位可以看以下代碼.
//頻率常數即音樂術語中的音調,而節拍常數即音樂術語中的多少拍;
//所以拿出譜子, 試探編吧!

sbit out=P2^3;
unsigned char n=0; //n為節拍常數變數
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式為: 頻率常數, 節拍常數, 頻率常數, 節拍常數,
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};

void int0() interrupt 1 //採用中斷0 控制節拍
{ TH0=0xd8;
TL0=0xef;
n--;
}

void delay (unsigned char m) //控制頻率延時
{
unsigned i=3*m;
while(--i);
}

void delayms(unsigned char a) //豪秒延時子程序
{
while(--a); //採用while(--a) 不要採用while(a--); 各位可編譯一下看看匯編結果就知道了!
}

void main()
{ unsigned char p,m; //m為頻率常數變數
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0, delayms(1000); goto play;} //如果碰到結束符,延時1秒,回到開始再來一遍
else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //若碰到休止符,延時100ms,繼續取下一音符
else {m=music_tab[i++], n=music_tab[i++];} //取頻率常數 和 節拍常數
TR0=1; //開定時器1
while(n!=0) out=~out,delay(m); //等待節拍完成, 通過P1口輸出音頻(可多聲道哦!)
TR0=0; //關定時器1
}
}

閱讀全文

與單片機蜂鳴器發聲歌曲的代碼相關的資料

熱點內容
怎麼把pdf轉ppt 瀏覽:392
單片機在廣告燈的應用 瀏覽:764
stringjavautf8 瀏覽:731
硬碟優盤加密工具推薦 瀏覽:874
伺服器一般怎麼安裝驅動 瀏覽:986
單軸多級離心式壓縮機 瀏覽:314
買了雲伺服器可以干什麼 瀏覽:622
用iView開發的源碼 瀏覽:712
拍多肉app哪個好 瀏覽:881
java數組訪問 瀏覽:538
在通信過程中待加密 瀏覽:271
孩子掛社保在哪裡app 瀏覽:340
身份證識別軟體源碼 瀏覽:875
cad摳圖命令健 瀏覽:281
cad2010填充命令 瀏覽:546
車載u盤mv不能顯示文件夾 瀏覽:794
rtp加密傳輸 瀏覽:936
公眾號平台源碼下載 瀏覽:769
android設置網路代理 瀏覽:460
dir命令dos 瀏覽:218