MCU-51:单片机蜂鸣器播放孤勇者
生活随笔
收集整理的這篇文章主要介紹了
MCU-51:单片机蜂鸣器播放孤勇者
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 一、蜂鳴器介紹
- 二、驅(qū)動(dòng)電路
- 2.1 三極管驅(qū)動(dòng)
- 2.2 集成電路驅(qū)動(dòng)
- 三、蜂鳴器播放音樂(lè)
- 3.1 鍵盤(pán)與音符對(duì)照
- 3.2 音符與頻率對(duì)照
- 四、孤勇者樂(lè)譜
- 五、代碼演示
前面學(xué)習(xí)了 MCU-51:單片機(jī)蜂鳴器播放音樂(lè)和提示音
我們知道了可以用51單片機(jī)播放樂(lè)譜
今天我們用51單片機(jī)播放 孤勇者
愛(ài)你孤身走暗巷
愛(ài)你不跪的模樣
愛(ài)你對(duì)峙過(guò)絕望
不肯哭一場(chǎng)
愛(ài)你破爛的衣裳
卻敢堵命運(yùn)的槍
愛(ài)你和我那么像
缺口都一樣
去嗎 配嗎 這襤褸的披風(fēng)
戰(zhàn)嗎 戰(zhàn)啊 以最卑微的夢(mèng)
…
下面我們?cè)賮?lái)回顧下蜂鳴器知識(shí)
一、蜂鳴器介紹
蜂鳴器是一種將電信號(hào)轉(zhuǎn)換為聲音信號(hào)的器件,常用來(lái)產(chǎn)生設(shè)備的按鍵音、報(bào)警音等提示信號(hào)
蜂鳴器按驅(qū)動(dòng)方式可分為有源蜂鳴器和無(wú)源蜂鳴器
有源蜂鳴器:內(nèi)部自帶振蕩源,將正負(fù)極接上直流電壓即可持續(xù)發(fā)聲,頻率固定
無(wú)源蜂鳴器:內(nèi)部不帶振蕩源,需要控制器提供振蕩脈沖才可發(fā)聲,調(diào)整提供振蕩脈沖的頻率,可發(fā)出不同頻率的聲音
二、驅(qū)動(dòng)電路
2.1 三極管驅(qū)動(dòng)
2.2 集成電路驅(qū)動(dòng)
三、蜂鳴器播放音樂(lè)
3.1 鍵盤(pán)與音符對(duì)照
3.2 音符與頻率對(duì)照
四、孤勇者樂(lè)譜
五、代碼演示
#include <REG52.H> #include <INTRINS.H> sbit speaker=P2^5; unsigned char timer0h,timer0l,time=1; // 孤勇者,3分30秒,原唱4分16秒 code unsigned char gyz[]={ 122,27,121,26,122,27,121,26,122,27,121,26,120, // 音高(低音0,中音1,高音2),音長(zhǎng)(節(jié)拍),音調(diào)(do,le,mi,fa,so,la,si) 143,140,110,111,112,111,143,130,111,112,111,112,113,36,111,36,111,36,111,122,121,47,140, //都,是勇敢的,你額頭的傷口你的不同你犯的錯(cuò) 143,140,111,112,111,143,140,111,112,111,112,113,36,111,36,111,36,111,123,122,47,140, //都,不必隱藏,你破舊的玩偶你的面具你的自我 16,111,136,116,116,115,126,116,115,116,115,116,115,143,140,16,111,136,116,116,115,116,115,137,117,117,116,127,126,143, //他們說(shuō)要帶著光馴服每一頭怪獸,他們說(shuō)要縫好你的傷沒(méi)有人愛(ài)小丑 120,113,115,113,132,113,132,113,132,113,115,113,115,113,132,113,132,113,142,120,111,112,123,26,121,123,132,113,112,121,46,140, //為何孤獨(dú)不可光榮,人只有不完美值得歌頌,誰(shuí)說(shuō)污泥滿(mǎn)身的不算英雄 116,117,211,212,117,211,221,211,117,211,212,117,211,221,211,212,213,212,213,212,223,213,212,223,225,223, //愛(ài)你孤身走暗巷,愛(ài)你不跪的模樣,愛(ài)你對(duì)峙過(guò)絕望,不肯哭一場(chǎng), 116,117,211,212,117,211,221,211,117,211,212,117,211,221,211,212,213,212,213,212,223,213,212,223,225,223,225, //愛(ài)你破爛的衣裳卻敢堵命運(yùn)的槍,愛(ài)你和我那么像缺口都一樣 233,215,233,215,213,215,216,213,225,225,233,215,233,215, //去嗎,配嗎,這襤褸的披風(fēng),戰(zhàn)嗎,戰(zhàn)啊, 213,215,216,213,225,215,215,213,222,222,211,223,232,222,221,146,140,215,215,213,222,222,211,233,222,222,221,146,140,140, //以最卑微的夢(mèng),致那黑夜中的嗚咽與怒吼(hou),誰(shuí)說(shuō)站在光里的才算英雄 116,115,136,115,116,115,116,115,126,116,115,116,115,116,115,143,140,116,115,136,115,116,115,116,115,137,117,117,116,117,116,143,140, //他們說(shuō)要戒了你的狂就像擦掉了污垢(gou),他們說(shuō)要拾臺(tái)階而上而代價(jià)是低頭 113,115,113,132,113,132,113,132,113,115,113,115,113,132,113,132,113,142,120,111,112,123,126,221,223,232,213,212,231,166,120, //那就讓我不可乘風(fēng),你一樣驕傲著那種孤勇,誰(shuí)說(shuō)對(duì)弈平凡的不算英雄116,117,211,212,117,211,221,211,117,211,212,117,211,221,211,212,213,212,213,212,223,213,212,223,225,223, //愛(ài)你孤身走暗巷,愛(ài)你不跪的模樣,愛(ài)你對(duì)峙過(guò)絕望,不肯哭一場(chǎng), 116,117,211,212,117,211,221,211,117,211,212,117,211,221,211,212,213,212,213,212,223,213,212,223,225,223,225, //愛(ài)你破爛的衣裳卻敢堵命運(yùn)的槍,愛(ài)你和我那么像缺口都一樣 233,215,233,215,213,215,216,213,225,225,233,215,233,215, //去嗎,配嗎,這襤褸的披風(fēng),戰(zhàn)嗎,戰(zhàn)啊, 213,215,216,213,225,215,215,213,222,222,211,223,232,222,221,146,140,215,215,213,222,222,211,233,222,222,221,146,140,140, //以最卑微的夢(mèng),致那黑夜中的嗚咽與怒吼(hou),誰(shuí)說(shuō)站在光里的才算英雄26,121,123,147,127,117,127,186,120,26,121,123,147,127,117,127,186,120, //你的斑駁與眾不同,你的沉默震耳欲聾116,117,211,212,117,211,221,211,117,211,212,117,211,221,211,212,213,212,213,212,223,213,212,223,225,223, //愛(ài)你孤身走暗巷,愛(ài)你不跪的模樣,愛(ài)你對(duì)峙過(guò)絕望,不肯哭一場(chǎng), 116,117,211,212,117,211,221,211,117,211,212,117,211,221,211,212,213,212,213,212,223,213,212,223,225,223,225, //愛(ài)你來(lái)自于蠻荒,一生不借誰(shuí)的光,你將造你的城邦,在廢墟之上 233,215,233,215,213,215,216,213,225,225,233,215,233,215, //去嗎,去啊,以最卑微的夢(mèng),戰(zhàn)嗎,戰(zhàn)啊, 213,215,216,213,225,215,215,213,222,222,211,223,232,222,221,146,140,215,215,213,222,222,211,233,222,222,221,146,140,140, //以最孤高的夢(mèng),致那黑夜中的嗚咽與怒吼(hou),誰(shuí)說(shuō)站在光里的才算英雄 0 };// 定時(shí)時(shí)間越短,那么聲音頻率越高, code unsigned char FREQH[]={ 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, } ; code unsigned char FREQL[]={ 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B, 0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, };//做成對(duì)應(yīng)的頻率表,其實(shí)前幾個(gè)很少遇得到,那么這里再縮減的話(huà), //就除以10,就可以用char類(lèi)型而不用int類(lèi)型了,后邊計(jì)算計(jì)時(shí)時(shí)間的時(shí)候再乘10補(bǔ)回 unsigned int code FreTab[28] = { 3517,3134,2792,2633,2351,2094,1865, 1758,1566,1395,1319,1175,1046,932 , 880 ,785 ,699 ,660 ,587 ,523 ,466 , 440 ,392 ,349 ,329 ,293 ,261 ,233 , };void t0int() interrupt 1 {speaker=!speaker;TH0=timer0h;TL0=timer0l; }// 節(jié)奏的快慢,這里是半個(gè)節(jié)拍的時(shí)間 void delay(unsigned char t) {unsigned long t2;for(;t>0;t--){for(t2=0;t2<5000;t2++){;}}TR0=0;// 停止發(fā)音 如果屏蔽掉,會(huì)出現(xiàn)連音的不正常現(xiàn)象 } /**/ void song() {unsigned char k=0;unsigned long i=0; // 由于歌詞長(zhǎng)度問(wèn)題,需要設(shè)置大一點(diǎn)的范圍,否則還沒(méi)唱完一遍又重新開(kāi)始了// 這里這樣做就只唱一遍,尋到最后的0值時(shí)就停止了while(time) {if(gyz[i]%10==0) // 音調(diào)為0值時(shí)停頓處理{TR0=0; // 停止發(fā)音}else{k=gyz[i]%10+7*(gyz[i]/100+1)-1;timer0h=FREQH[k]; // 這里將K值改成定值,發(fā)現(xiàn)實(shí)際上并不是按照do,le,mi,fa,so,la,si這樣發(fā)音timer0l=FREQL[k];//如果用頻率表輸出的話(huà),就屏蔽上兩句,開(kāi)啟下兩句//timer0h=(65535-FreTab[k])/256;//timer0l=(65535-FreTab[k])%256;TR0=1; // 啟動(dòng)T0輸出方波去發(fā)音}time=gyz[i]/10%10;i=i+1;delay(time);} } void main(void) {TMOD=1; // 設(shè)置定時(shí)器0為16位計(jì)數(shù)模式 EA=1;ET0=1; // 開(kāi)定時(shí)器0中斷while(1){song();} }總結(jié)
以上是生活随笔為你收集整理的MCU-51:单片机蜂鸣器播放孤勇者的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 慢聊Go之JSON编码解码中的道法术
- 下一篇: 开平二手房(www.kpsfw.com)