资源描述
挥着翅膀的女孩
unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03, 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03, 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03, 0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02, 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};
天空之城
unsigned char code music_tab[] ={
0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x19, 0x18,
0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30, 0x20, 0x60,
0x26, 0x30, 0x26, 0x30, 0x24, 0x40, 0x26, 0x30, 0x24, 0x30, 0x18, 0x40, 0x26, 0x60,
0x18, 0x20, 0x18, 0x20, 0x18, 0x20, 0x19, 0x40, 0x24, 0x30, 0x24, 0x30, 0x19, 0x30,
0x19, 0x60, 0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30,
0x19, 0x60, 0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30,
0x20, 0x80, 0x26, 0x30, 0x24, 0x30, 0x24, 0x30, 0x18, 0x30, 0x19, 0x20, 0x19, 0x30,
0x18, 0x30, 0x15, 0x20, 0x15, 0x20, 0x13, 0x20, 0x18, 0x40, 0x18, 0x30, 0x19, 0x30,
0x1c, 0x20, 0x1c, 0x20, 0x19, 0x30, 0x20, 0x30, 0x1c, 0x60, 0x18, 0x30, 0x15, 0x30,
0x13, 0x40, 0x15, 0x30, 0x13, 0x30, 0x10, 0x30, 0x15, 0x60, 0x20, 0x30, 0x20, 0x30,
0x18, 0x30, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x13, 0x60, 0x1c, 0x20, 0x19, 0x20,
0x18, 0x30, 0x19, 0x30, 0x15, 0x20, 0x15, 0x20, 0x18, 0x40, 0x20, 0x30, 0x20, 0x30,
0x12, 0x30, 0x13, 0x30, 0x15, 0x30, 0x18, 0x30, 0x13, 0xc0, 0x13, 0x80, 0x13, 0x30,
0x0e, 0x80, 0x10, 0x30, 0x10, 0x30, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30,
0x15, 0x30, 0x18, 0x20, 0x15, 0x20, 0x15, 0x30, 0x10, 0x30, 0x13, 0x60, 0x13, 0x30,
0x0e, 0x60, 0x10, 0x60, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30, 0x15, 0x30,
0x15, 0x20, 0x18, 0x20, 0x15, 0x30, 0x19, 0x30, 0x1c, 0x60, 0x1c, 0x30, 0x19, 0x30,
0x1c,0xc0, 0x00,
};
示例
#include <REG52.H>
#include <INTRINS.H>
//本例采用89C52, 晶振为11.0592MHZ
//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.
//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
//所以拿出谱子, 试探编吧!
#define LED P0
sbit Beep = P1^5 ;
void delaya(unsigned int);
unsigned char n=0; //n为节拍常数变量
unsigned char code music_tab[] ={
0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x19, 0x18,
0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30, 0x20, 0x60,
0x26, 0x30, 0x26, 0x30, 0x24, 0x40, 0x26, 0x30, 0x24, 0x30, 0x18, 0x40, 0x26, 0x60,
0x18, 0x20, 0x18, 0x20, 0x18, 0x20, 0x19, 0x40, 0x24, 0x30, 0x24, 0x30, 0x19, 0x30,
0x19, 0x60, 0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30,
0x19, 0x60, 0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30,
0x20, 0x80, 0x26, 0x30, 0x24, 0x30, 0x24, 0x30, 0x18, 0x30, 0x19, 0x20, 0x19, 0x30,
0x18, 0x30, 0x15, 0x20, 0x15, 0x20, 0x13, 0x20, 0x18, 0x40, 0x18, 0x30, 0x19, 0x30,
0x1c, 0x20, 0x1c, 0x20, 0x19, 0x30, 0x20, 0x30, 0x1c, 0x60, 0x18, 0x30, 0x15, 0x30,
0x13, 0x40, 0x15, 0x30, 0x13, 0x30, 0x10, 0x30, 0x15, 0x60, 0x20, 0x30, 0x20, 0x30,
0x18, 0x30, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x13, 0x60, 0x1c, 0x20, 0x19, 0x20,
0x18, 0x30, 0x19, 0x30, 0x15, 0x20, 0x15, 0x20, 0x18, 0x40, 0x20, 0x30, 0x20, 0x30,
0x12, 0x30, 0x13, 0x30, 0x15, 0x30, 0x18, 0x30, 0x13, 0xc0, 0x13, 0x80, 0x13, 0x30,
0x0e, 0x80, 0x10, 0x30, 0x10, 0x30, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30,
0x15, 0x30, 0x18, 0x20, 0x15, 0x20, 0x15, 0x30, 0x10, 0x30, 0x13, 0x60, 0x13, 0x30,
0x0e, 0x60, 0x10, 0x60, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30, 0x15, 0x30,
0x15, 0x20, 0x18, 0x20, 0x15, 0x30, 0x19, 0x30, 0x1c, 0x60, 0x1c, 0x30, 0x19, 0x30,
0x1c,0xc0, 0x00,
};
void delaya(unsigned int x)
{
unsigned int i;
for(i=0;i<x;i++);
}
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) Beep=~Beep,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0;
//关定时器1
LED=music_tab[i] ;
delayms(100);
}
} 、
#include <reg51.h>
sbit buzzer=P3^7;
unsigned char timer0h,timer0l,time;
//生日歌
code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,
5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,
5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,
4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4};
// 音阶频率表 高八位
code unsigned char FREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
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, //1,2,3,4,5,6,7,8,i
0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
};
void delay(unsigned char t)
{
unsigned char t1;
unsigned long t2;
for(t1=0;t1<t;t1++)
{
for(t2=0;t2<8000;t2++)
{
;
}
}
TR0=0;
}
void t0int() interrupt 1
{
TR0=0;
buzzer=!buzzer;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);
}
void main(void)
{
unsigned char k,i;
TMOD=1; //置CT0定时工作方式1
EA=1;
ET0=1;//IE=0x82 //CPU开中断,CT0开中断
while(1)
{
i=0;
while(i<75){ //音乐数组长度 ,唱完从头再来
k=sszymmh[i]+7*sszymmh[i+1]-1;
timer0h=FREQH[k];
timer0l=FREQL[k];
time=sszymmh[i+2];
i=i+3;
song();
}
}
}
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int //必不可少的定义头文件
sbit BEEP=P3^7;
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;j<SONG_LONG[i]*20;j++) //播放各个音符,SONG_LONG 为拍子长度
{
BEEP=~BEEP;
//SONG_TONE 延时表决定了每个音符的频率
for(k=0;k<SONG_TONE[i]/3;k++);
}
DelayMS(10);
i++;
}
}
void main()
{
BEEP=0;
while(1)
{
PlayMusic(); //播放生日快乐
DelayMS(500);
//播放完后暂停一段时间
}
}
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int //必不可少的定义头文件
sbit BEEP=P3^7;
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;j<SONG_LONG[i]*20;j++) //播放各个音符,SONG_LONG 为拍子长度
{
BEEP=~BEEP;
//SONG_TONE 延时表决定了每个音符的频率
for(k=0;k<SONG_TONE[i]/3;k++);
}
DelayMS(10);
i++;
}
}
void main()
{
BEEP=0;
while(1)
{
PlayMusic(); //播放生日快乐
DelayMS(500);
//播放完后暂停一段时间
}
}
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7;
//生日快乐歌的音符频率表,不同频率由不同的延时来决定
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)
{ //播放各个音符,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++;
}
}
void main()
{
BEEP=0;
while(1)
{
PlayMusic(); //播放生日快乐
DelayMS(500); //播放完后暂停一段时间
}
}
展开阅读全文