51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安.docx
《51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安.docx》由会员分享,可在线阅读,更多相关《51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安.docx(7页珍藏版)》请在冰豆网上搜索。
51单片机蜂鸣器播放音乐代码生日快乐两只蝴蝶祝你平安
51单片机蜂鸣器播放音乐代码(生日快乐-两只蝴蝶-祝你平安)
/*生日快乐歌曲*/
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitbeep=P1^5;
ucharcodeSONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
212,212,106,126,159,169,190,119,119,126,159,142,159,0};
ucharcodeSONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};
//延时
voidDelayMS(uintx)
{
uchart;
while(x--)for(t=0;t<120;t++);
}
voidPlayMusic()
{
uinti=0,j,k;
while(SONG_LONG[i]!
=0||SONG_TONE[i]!
=0)
{//播放各个音符,SONG_LONG为拍子长度
for(j=0;j{
beep=~beep;
//SONG_TONE延时表决定了每个音符的频率
for(k=0;k}
DelayMS(10);
i++;
}
}
voidmain()
{
beep=0;
while
(1)
{
PlayMusic();//播放生日快乐
DelayMS(500);//播放完后暂停一段时间
}
}
两只蝴蝶:
#include//这是单片机音乐代码生成器生成的代码
#defineucharunsignedchar
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},{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},{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>0;i--)
for(j=181;j>0;j--);
}
voidpause()
{
uchari,j;
for(i=150;i>0;i--)
for(j=150;j>0;j--);
}
voidT0_int()interrupt1
{
beepIO=!
beepIO;
TH0=T[m][0];TL0=T[m][1];
}
voidmain()
{
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)
{TR0=0;delay(30);i=0;}
elseif(m==music[i+1][0])
{TR0=1;delay(n);TR0=0;pause();i++;}
else
{TR0=1;delay(n);i++;}
}
}
祝你平安:
#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
{
TH0=0xD8;
TL0=0xEF;
Count++;//长度加1
}
/*-------------------------------------------------
功能:
1MS延时子程序
-------------------------------------------------*/
voidDelay_xMs(unsignedintx)
{
unsignedinti,j;
for(i=0;i{
for(j=0;j<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;
}
else
{
Temp2=SONG[Addr++];
TR0=1;
while
(1)
{
_Speak=~_Speak;
Delay_xMs(Temp1);
if(Temp2==Count)
{
Count=0;
break;
}
}
}
}
}
/*-------------------------------------------------
功能:
主程序
-------------------------------------------------*/
voidmain()
{
Time0_Init();//定时器0中断初始化
while
(1)
{
Play_Song(0);//播放
}
}