51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安Word文档格式.docx
《51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安Word文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
t<
120;
t++);
}
voidPlayMusic()
uinti=0,j,k;
while(SONG_LONG[i]!
=0||SONG_TONE[i]!
=0)
{//播放各个音符,SONG_LONG为拍子长度
for(j=0;
j<
SONG_LONG[i]*20;
j++)
beep=~beep;
//SONG_TONE延时表决定了每个音符的频率
for(k=0;
k<
SONG_TONE[i]/3;
k++);
DelayMS(10);
i++;
voidmain()
beep=0;
while
(1)
PlayMusic();
//播放生日快乐
DelayMS(500);
//播放完后暂停一段时间
两只蝴蝶:
//这是单片机音乐代码生成器生成的代码
sbitbeepIO=P1^5;
//输出为P1.5可以修改成其它IO口
ucharm,n;
ucharcodeT[49][2]={{0,0},
{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
};
ucharcodemusic[][2]={{0,4},
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{21,24},
{23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{16,2},{19,2},{19,24},{0,20},
{26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4},{28,8},{28,12},{16,4},{23,4},{21,4},
{21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16},
{0xFF,0xFF}};
voiddelay(ucharp)
uchari,j;
for(;
p>
0;
p--)
for(i=181;
i>
i--)
for(j=181;
j>
j--);
voidpause()
for(i=150;
for(j=150;
voidT0_int()interrupt1
beepIO=!
beepIO;
TH0=T[m][0];
TL0=T[m][1];
uchari=0;
TMOD=0x01;
EA=1;
ET0=1;
while
(1)
{
m=music[i][0];
n=music[i][1];
if(m==0x00)
{TR0=0;
delay(n);
i++;
}
elseif(m==0xFF)
delay(30);
i=0;
elseif(m==music[i+1][0])
{TR0=1;
TR0=0;
pause();
else
}
祝你平安:
#include"
reg52.h"
unsignedcharCount;
sbit_Speak=P1^5;
unsignedcharcodeSONG[]={//祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00};
voidTime0_Init()
TMOD=0x01;
IE=0x82;
TH0=0xD8;
TL0=0xEF;
//12MZ晶振,10ms
voidTime0_Int()interrupt1
Count++;
//长度加1
/*-------------------------------------------------
功能:
1MS延时子程序
-------------------------------------------------*/
voidDelay_xMs(unsignedintx)
unsignedinti,j;
for(i=0;
i<
x;
i++)
for(j=0;
3;
j++);
voidPlay_Song(unsignedchari)
unsignedcharTemp1,Temp2;
unsignedintAddr;
Count=0;
//中断计数器清0
Addr=i*217;
while
(1)
Temp1=SONG[Addr++];
if(Temp1==0xFF)//休止符
TR0=0;
Delay_xMs(100);
elseif(Temp1==0x00)//歌曲结束符
return;
Temp2=SONG[Addr++];
TR0=1;
_Speak=~_Speak;
Delay_xMs(Temp1);
if(Temp2==Count)
break;
主程序
Time0_Init();
//定时器0中断初始化
Play_Song(0);
//播放