各种版本的《生日快乐》歌

发布时间:2013-08-24 17:50:04   来源:文档文库   
字号:

#include

#define uchar unsigned char

#define uint unsigned int

sbit BEEP=P2^6;

void Music(uchar number);

void delay10us(uchar time);

void delay50us(uchar time);

uchar code SOUNDLONG[]= //控制音调

{

18,6,24,24,24,48,

18,6,24,24,24,48,

18,6,24,24,24,24,24,

18,6,24,24,24,48,0

};

uchar code SOUNDTONE[]= //控制音色

{

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

//生日快乐end

};

void Play_Music()

{

uint k,n;

uint SoundLong,SoundTone;

uint i,j,m;

do {

if(i>=25) i=0;

SoundLong=SOUNDLONG[i];

SoundTone=SOUNDTONE[i];

i++;

for(n=0;n<SoundLong;n++)

{

for(k=0;k<12;k++)

{

BEEP=0;

for(m=0;m<SoundTone;m++);

BEEP=1;

for(m=0;m<SoundTone;m++);

}

}

delay50us(6);

}

while((SOUNDLONG[i]!=0)||(SOUNDTONE[j]!=0));

}

//延时程序

void delay10us(uchar time)

{

uchar a,c;

for(a=0;a<time;a++)

for(c=0;c<120;c++);

}

void delay50us(uchar time)

{

uchar a,b;

for(a=0;a<time;a++)

for(b=0;b<6;b++);

}

void main()

{

while(1)

{

Play_Music(); //生日快乐

delay10us(250);

}

}

//-----------------------------------------------------

//<<12*12点阵+音乐产生>>

// MCU:89C51 晶振:12M

//编写日期:20101225

//编写人:李春起

#include

#define uchar unsigned char

#define uint unsigned int

uint a=0,a1=0,a2=0;

uint miusfla,miust,mius=64536;

uint disfla1,sta=0;

char flag=0,mdflag=0;

sbit k1=P3^2;

sbit k2=P3^3;

sbit YY=P3^1;

uchar code tabfas[]={

//==============笑脸===================================

//P0

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

//P1

0x8E,0x4D,0xAB,0x57,0x5F,0x9F,0x9F,0x5F,0x5F,0xAF,0x4F,0x8F,

0x8E,0x4D,0xAB,0x97,0x9F,0x9F,0x9F,0x9F,0x9F,0xAF,0x4F,0x8F,

//P2

0x87,0x88,0x50,0x20,0xA4,0x68,0x68,0xA4,0x20,0x50,0x88,0x87,

0x87,0x88,0x50,0x20,0xA4,0x68,0x68,0xA4,0x20,0x50,0x88,0x87,

//P0

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

//P1

0x8E,0x8D,0xEB,0x87,0x8F,0xCF,0x4F,0x4F,0x4F,0xCF,0x0F,0x0F, //

0x0E,0x0D,0x8B,0xE7,0x8F,0x8F,0x0F,0x0F,0xEF,0x0F,0x0F,0x0F, //

0x0E,0x0D,0x0B,0x87,0x4F,0x0F,0x0F,0xCF,0x0F,0x0F,0x0F,0x0F, //

0x0e,0xed,0xab,0xa7,0xef,0xaf,0xbf,0xaf,0xef,0xaf,0xaf,0x0f,//

0x0E,0x0D,0x8B,0xE7,0x8F,0x8F,0xEF,0x8F,0x8F,0x8F,0x0F,0x0F, //

0x0E,0x0D,0x0B,0xE7,0x2F,0x2F,0x2F,0x2F,0xEF,0x0F,0x0F,0x0F, //

//0x0E,0x4D,0xDB,0x67,0xCF,0x4F,0x0F,0x8F,0x4F,0x4F,0x2F,0x0F, //

//0x0E,0x0D,0x8B,0x47,0x7F,0x4F,0xCF,0x4F,0x4F,0x4F,0x4F,0x0F, //

0x0E,0x0D,0xEB,0x07,0x8F,0x8F,0xEF,0x8F,0x8F,0x8F,0x0F,0x0F, //

0x0E,0x8D,0x4B,0x47,0x4F,0xAF,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F, //

0xCE,0x2D,0x2B,0x27,0x4F,0x8F,0x8F,0x4F,0x2F,0x2F,0x2F,0xCF, //心形

0x0F,0x0F,0x2B,0x27,0xAF,0x6F,0xFF,0x6F,0xAF,0x2F,0x2F,0x0F, //

0x0E,0x0D,0x2B,0xA7,0xAF,0xFF,0xAF,0xAF,0x2F,0x0F,0x0F,0x0F, //

0x0E,0x0D,0x4B,0x47,0xEF,0x4F,0x4F,0x8F,0x8F,0x8F,0x0F,0x0F, //

//0x0E,0xFD,0x5B,0x57,0x5F,0xFF,0x0F,0x4F,0x4F,0xCF,0x4F,0x0F, //

0xCE,0x2D,0x2B,0x27,0x4F,0x8F,0x8F,0x4F,0x2F,0x2F,0x2F,0xCF, //心形

//P2

0x08,0x04,0xFE,0x05,0x08,0x43,0x3E,0x02,0x3E,0x23,0x30,0x00, //

0x00,0x09,0x0A,0x7F,0x2A,0x08,0x0F,0x09,0x7F,0x09,0x0F,0x00, //

0x00,0x02,0x01,0x7F,0x02,0x22,0x22,0x3F,0x22,0x22,0x02,0x00, //

0xc0,0x3f,0x88,0x6a,0x2a,0xff,0x2a,0xff,0x2a,0x6a,0xde,0x88,//

0x00,0x21,0x20,0x20,0x24,0x24,0x3F,0x24,0x24,0x20,0x20,0x00, //

0x00,0x00,0x00,0x3F,0x22,0x22,0x22,0x22,0x3F,0x00,0x00,0x00, //

//0x00,0x2A,0x5A,0xFF,0x1A,0x2A,0x40,0x3F,0x02,0x7E,0x02,0x00, //

//0x08,0x09,0x0F,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x00, //

0x01,0x06,0x7F,0x22,0x14,0x0C,0x07,0x0C,0x14,0x27,0x24,0x00, //

0x00,0x23,0x12,0x0E,0x22,0x7F,0x06,0x0A,0x13,0x22,0x00,0x00, //

0x03,0x04,0x08,0x10,0x20,0x60,0x20,0x10,0x08,0x04,0x02,0x01, //心形

0x00,0x00,0x11,0x11,0x12,0x52,0xFB,0x1A,0x16,0x11,0x11,0x00, //

0x00,0x12,0x0A,0xFE,0xAB,0xAA,0xAA,0xFE,0x0A,0x12,0x00,0x00, //

0x40,0x21,0x1D,0x09,0x1F,0x25,0x41,0x5D,0x54,0x53,0x58,0x00, //

//0x84,0x45,0x35,0x3D,0x55,0x95,0x84,0xAF,0x9D,0x91,0xAF,0x80, //

0x03,0x04,0x08,0x10,0x20,0x60,0x20,0x10,0x08,0x04,0x02,0x01, //心形

};

//----------------音符----------------------

uint code miusdata[]={

//祝你生日快乐

64260,64260,64399,64260,64579,64524,64260,64260,

64399,64260,64684,64580,64260,64260,64898,64777,

64580,64524,64399,64819,64819,64777,64580,64777,

64684,0,

64260,64260,64399,64260,64579,64524,64260,64260,

64399,64260,64684,64580,64260,64260,64898,64777,

64580,64524,64399,64819,64819,64777,64580,64684,

64580,0,

64580,64580,64684,64580,64819,64777,64580,64580,

64684,64580,64898,64819,64580,64580,65058,64968,

64819,64777,64684,65000,65000,64960,64819,64967,

64898,0,

64580,64580,64684,64580,64819,64777,64580,64580,

64684,64580,64898,64819,64580,64580,65058,64968,

64819,64777,64684,65000,65000,64960,64819,64898,

64819,0

};

//---------------节拍-----------------------

uchar code miustime[]={

40,40,80,80,80,160,40,40,80,80,80,160,40,40,

80,80,80,80,80,40,40,80,80,80,160,80,

40,40,80,80,80,160,40,40,80,80,80,160,40,40,

80,80,80,80,80,40,40,80,80,80,160,80,

40,40,80,80,80,160,40,40,80,80,80,160,40,40,

70,75,80,80,80,40,40,80,80,80,160,80,

40,40,80,80,80,160,40,40,80,80,80,160,40,40,

70,75,80,80,80,40,40,80,80,80,160,80,

};

void delay500();

//==========按键==========================================

void kk()

{

if(!k1){delay500();if(++flag>1)flag=0;else {a=72;a2=0;}sta=1;}

if(!k2){delay500();if(++mdflag>1)mdflag=0;sta=1;}

}

//=========延时===========================================

void delay(uint m)

{

uint i,j;

for(i=0;i<m;i++)

{

for(j=0;j<300;j++)

{kk();if(sta){sta=0;goto abc;}}

}

abc:;

}

//------按键消拉动用----------------

void delay500()

{

uint i1;

P0=0XFF;

P1=0X0F;

P2=0X00;

for(i1=0;i1<32000;i1++);

}

//=========定时器T0用于频率产生和显示======================

void time0() interrupt 1

{

P0=0XFF;

P1=0X0F;

P2=0X00;

TH0=mius>>8;

TL0=mius&0xff;

YY=~YY;

switch(flag)

{

case 0:{ //笑脸

P0=tabfas[a];

P1=tabfas[a+24];

P2=tabfas[a+48];

if(++disfla1<700){if(++a>11)a=0;}

if(disfla1>=700){if(++a>23)a=11;}

if(disfla1>800){a=0;disfla1=0;}

}break;

case 1:{ //汉字

P0=tabfas[a];

P1=tabfas[a+192];

P2=tabfas[a+348];

if(++disfla1<500){if(++a>(a2+83))a=(a2+72);}

else{if(++a>(a2+83))a=(a2+72);}

if(disfla1>1000){a2+=12;disfla1=0;}

if(a2>144){a2=0;}

}break;

default:break;

}

}

//========定时器T1只用于显示================================

void time1() interrupt 3

{

P0=0XFF;

P1=0X0F;

P2=0X00;

TH1=0xf8;

TL1=0x30;

switch(flag)

{

case 0:{ //笑脸

P0=tabfas[a];

P1=tabfas[a+24];

P2=tabfas[a+48];

if(++disfla1<700){if(++a>11)a=0;}

if(disfla1>=700){if(++a>23)a=11;}

if(disfla1>800){a=0;disfla1=0;}

}break;

case 1:{ //汉字

P0=tabfas[a];

P1=tabfas[a+192];

P2=tabfas[a+348];

if(++disfla1<500){if(++a>(a2+83))a=(a2+72);}

else{if(++a>(a2+83))a=(a2+72);}

if(disfla1>1000){a2+=12;disfla1=0;}

if(a2>144){a2=0;}

}break;

default:break;

}

}

//----------------主程序-----------------------------------//

void main()

{

P0=0XFF;

P1=0X0F;

P2=0X00;

P3=0XFD;

TMOD=0X11;

TH0=mius>>8;

TL0=mius&0xff;

TH1=0xf8;

TL1=0x30;

TR0=1;

ET0=1;

TR1=0;

ET1=1;

EA=1;

while(1)

{

switch(mdflag)

{

case 0:{//音乐暂停

TR0=0;TR1=1;kk();sta=0;

}break;

case 1:{ //音乐继续

TR0=0;

delay(1);

TR0=1;

mius=miusdata[a1];

if(mius==0){TR0=0;TR1=1;}

else {TR1=0;TR0=1;}

delay(miustime[a1]);

if(++a1>=104)a1=0;

}break;

default:break;

}

}

}

#include

#define uchar unsigned char

#define uint unsigned int

sbit BEEP=P1^1;//生日快乐歌的音符频率表,不同频率由不同的延时来决定

uchar code SONG_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};

//生日快乐歌节拍表,节拍决定每个音符的演奏长短

uchar code SONG_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};

//延时

void DelayMS(uint x)

{

uchar t;

while(x--)

for(t=0;t<120;t++);

}

//播放函数

void PlayMusic()

{

uint i=0,j,k;

while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)

{

for(j=0;ji]*17;j++) //播放各个音符,SONG_LONG为拍子长度

{

BEEP=~BEEP;//SONG_TONE延时表决定了每个音符的频率

for(k=0;ki];k++);

}

DelayMS(500);

i++;

}

}

void main()

{

BEEP=0;

while(1)

{

PlayMusic(); //播放生日快乐

DelayMS(300); //播放完后暂停一段时间

}

}

本文来源:https://www.2haoxitong.net/k/doc/6d13ed9fc77da26925c5b0f0.html

《各种版本的《生日快乐》歌.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式