蜂鸣器音乐

程序功能

单片机蜂鸣器播放铃芽之旅

程序代码

main.c


#include<reg52.h>
#include<intrins.h>
#include<Music.h>		//音乐播放头文件


sbit KEY1 = P3^1; 
sbit KEY2 = P3^0; 
sbit KEY3 = P3^2; 
sbit KEY4 = P3^3; 


//--定义使用的IO口--//

sbit BUZZ0 = P2^5;  //蜂鸣器控制引脚
sbit BUZZ1 = P0^1;

uchar KEY = 0;

uchar T0_group = 1;
uchar T1_group = 1;

bit start = 0;

uchar skip_t0();


void main()
{

	MainInitialize_Music_T0();	 //T0初始化
//	MainInitialize_Music_T1();	 //T1初始化

	while(1)
	{
		if(KEY1 == 0)
		{	
		P2 = ~1;
			start = 1;
		}	
		T0_Service();
//		T1_Service();	
	}
}

//T0计时器的主程序服务函数
void T0_Service () 
{
	if(tmrflag_T0 == 1 & start == 1)	   //如果计时器T0退出中断
	{
		tmrflag_T0 = 0;
		switch(T0_group)
		{
			case 1:	  
				T0_group += PlayMusic_T0(LYHD1_Note1,LYHD1_Beat1);	break;
			case 2:	  
				T0_group += PlayMusic_T0(LYHD1_Note2,LYHD1_Beat2); 	break;
			case 3:	  
				T0_group += /*skip_t0();*/PlayMusic_T0(LYHD1_Note3,LYHD1_Beat3); 
					break;
			case 4:	  
				T0_group += /*skip_t0();*/PlayMusic_T0(LYHD1_Note4,LYHD1_Beat4); 
					break;
			case 5:	  
				T0_group += PlayMusic_T0(LYHD1_Note5,LYHD1_Beat5); 	break;
			case 6:	  
				T0_group += PlayMusic_T0(LYHD1_Note6,LYHD1_Beat6); 	break;
			case 7:	  
				T0_group += PlayMusic_T0(LYHD1_Note7,LYHD1_Beat7); 	break;
			case 8:	  
				T0_group += PlayMusic_T0(LYHD1_Note8,LYHD1_Beat8); 	break;
			case 9:	  
				T0_group += PlayMusic_T0(LYHD1_Note9,LYHD1_Beat9); 	break;
			case 10:	  
				T0_group += PlayMusic_T0(LYHD1_Note10,LYHD1_Beat10); 	break;
			case 11:	  
				T0_group += PlayMusic_T0(LYHD1_Note11,LYHD1_Beat11); 	break;
			case 12:	  
				T0_group += PlayMusic_T0(LYHD1_Note12,LYHD1_Beat12); 	break;
			case 13:	  
				T0_group += PlayMusic_T0(LYHD1_Note13,LYHD1_Beat13); 	break;
			case 14:	  
				T0_group += PlayMusic_T0(LYHD1_Note14,LYHD1_Beat14); 	break;
			case 15:	  
				T0_group += PlayMusic_T0(LYHD1_Note15,LYHD1_Beat15); 	break;
			case 16:	  
				T0_group += PlayMusic_T0(LYHD1_Note16,LYHD1_Beat16); 	break;
			case 17:	  
				T0_group += PlayMusic_T0(LYHD1_Note17,LYHD1_Beat17); 	break;
			case 18:	  
				T0_group += PlayMusic_T0(LYHD1_Note18,LYHD1_Beat18); 	break;
			case 19:	  
				T0_group += PlayMusic_T0(LYHD1_Note19,LYHD1_Beat19); 	break;
			case 20:	  
				T0_group += PlayMusic_T0(LYHD1_Note20,LYHD1_Beat20); 	break;
			case 21:	  
				T0_group += PlayMusic_T0(LYHD1_Note21,LYHD1_Beat21); 	break;
			case 22:	  
				T0_group += PlayMusic_T0(LYHD1_Note22,LYHD1_Beat22); 	break;
			case 23:	  
				T0_group += PlayMusic_T0(LYHD1_Note23,LYHD1_Beat23); 	break;
			case 24:	  
				T0_group += PlayMusic_T0(LYHD1_Note24,LYHD1_Beat24); 	break;
			case 25:	  
				T0_group += PlayMusic_T0(LYHD1_Note25,LYHD1_Beat25); 	break;
			case 26:	  
				T0_group += PlayMusic_T0(LYHD1_Note26,LYHD1_Beat26); 	break;
			case 27:	  
				T0_group += PlayMusic_T0(LYHD1_Note27,LYHD1_Beat27); 	break;
			case 28:	  
				T0_group += PlayMusic_T0(LYHD1_Note28,LYHD1_Beat28); 	break;
			case 29:	  
				T0_group += PlayMusic_T0(LYHD1_Note29,LYHD1_Beat29); 	break;
			case 30:	  
				T0_group += PlayMusic_T0(LYHD1_Note30,LYHD1_Beat30); 	break;
			case 31:	  
				T0_group += PlayMusic_T0(LYHD1_Note31,LYHD1_Beat31); 	break;
			case 32:	  
				T0_group += PlayMusic_T0(LYHD1_Note32,LYHD1_Beat32); 	break;
			case 33:	  
				T0_group += PlayMusic_T0(LYHD1_Note33,LYHD1_Beat33); 	break;
			case 34:	  
				T0_group += PlayMusic_T0(LYHD1_Note34,LYHD1_Beat34); 	break;
			case 35:	  
				T0_group += PlayMusic_T0(LYHD1_Note35,LYHD1_Beat35); 	break;
			case 36:
				T0_group = 1;
				start = 0;
				tmrflag_T0 = 1;
				break;
		}		
	}	
}
uchar skip_t0()
{
	tmrflag_T0 = 1;
	return 1;
}
//T1计时器的主程序服务函数
void T1_Service () 
{
	if(tmrflag_T1 == 1 & start == 1)	   //如果计时器T1退出中断
	{
		tmrflag_T1 = 0;
		switch(T1_group)
		{
			case 0:	  
				T1_group += PlayMusic_T1(LYHD2_Note1,LYHD2_Beat1,8); 	break;
			case 1:	  
				T1_group += PlayMusic_T1(LYHD2_Note2,LYHD2_Beat2,8); 	break;

			case 2:
				T1_group = 0;
				start = 0;
				tmrflag_T1 = 1;
				break;
		}		
	}	
}


//计时器T0初始化函数
void MainInitialize_Music_T0()
{	    
    EA = 1;       //使能全局中断
    TMOD &= 0xf0;  //配置T0工作在模式1
	TMOD |= 0x01;
    TH0 = T0RH;
    TL0 = T0RL;
//	PT0 = 1;
	ET0 = 1;      //使能T0中断
   	TR0 = 1;      //启动T0
}
//计时器T1初始化函数
void MainInitialize_Music_T1()
{	    
    EA = 1;       //使能全局中断
    TMOD &= 0x0f;  //配置T0工作在模式1
	TMOD |= 0x10;
    TH1 = T1RH;
    TL1 = T1RL;
    ET1 = 1;      //使能T1中断
    TR1 = 1;      //启动T1
}




/* 计时器T0乐曲播放函数 */
uchar PlayMusic_T0(uchar *MusicNote,uchar *MusicBeat)
{
    static unsigned char beat = 1;   //当前节拍索引
    static unsigned char note = 1;   //当前节拍对应的音符
	static uchar MusicLong = 0;
	static uchar MusicSpeed = 0;

	enable_T0 = 0;

	MusicLong = *MusicNote; 		//音符数组的第一位是音符的个数
	MusicSpeed = *MusicBeat;		//节拍数组的第一位是节拍的速度(拍/min)

    if (beat <= MusicLong)  //判断是否已经播放完
    {
	    note = *(MusicNote+beat)+tone;		//提取音符					
	    T0RH = NoteReload[note] >> 8;		//刷新计时器预装载值	     
	    T0RL = NoteReload[note];
	  
	    beatTime0 = (*(MusicBeat+beat) *NoteFrequ[note]*2 /MusicSpeed *60 /4 );    //计算节拍所需中断次数
	    soundTime0 = beatTime0 - (beatTime0 >> 3);		   //计算发声所需中断次数
	
		if(note != NO+tone)	   //判断是否为空音符
		{		
	    	enable_T0 = 1;  //使能蜂鸣器发声
		}
		beat++;		  //节拍加1
		ET0 = 1;
		return 0;  //未播完,返回0
    }
	else	//播放完,返回1
	{
		P2 = ~(T0_group+1);
		beat = 1;	//重置节拍索引值
		tmrflag_T0 = 1;
		return 1;
	}	
}

/* 计时器T1乐曲播放函数 */
uchar PlayMusic_T1(uchar *MusicNote,uchar *MusicBeat,uchar MusicLong)
{
    static unsigned char beat = 0;   //当前节拍索引
    static unsigned char note = 0;   //当前节拍对应的音符

	enable_T1 = 0;

    if (beat < MusicLong)  //判断是否已经播放完
    {
	    note = *(MusicNote+beat)+tone;		//提取音符					
	    T1RH = NoteReload[note] >> 8;		//刷新计时器预装载值	     
	    T1RL = NoteReload[note];
	  
	    beatTime1 = (*(MusicBeat+beat) * NoteFrequ[note]) /3;		//计算节拍所需中断次数
	    soundTime1 = beatTime1 - (beatTime1 >> 3);		   //计算发声所需中断次数
	
		if(note != NO+tone)	   //判断是否为空音符
		{		
	    	enable_T1 = 1;  //使能蜂鸣器发声
		}
		beat++;		  //节拍加1
		ET1 = 1;
		return 0;  //未播完,返回0
    }
	else	//播放完,返回1
	{
		beat = 0;	//重置节拍索引值
		tmrflag_T1 = 1;
		return 1;
	}	
}
/* T0中断服务函数,用于控制蜂鸣器发声 */
 void InterruptTimer0() interrupt 1
 {
    TH0 = T0RH;   //重新加载重载值
    TL0 = T0RL;
    
    if (enable_T0)   //使能时反转蜂鸣器控制电平
	{
		 BUZZ0 = ~BUZZ0;    
	}
    else          //未使能时关闭蜂鸣器
	{
       	BUZZ0 = 1;
	}

	
	if (time0 >= beatTime0)  //计时器达到节拍次数
	{                     
	    time0 = 0;	   	//重置计数器
		ET0 = 0;	
		tmrflag_T0 = 1;	   //开启下一个节拍

	}
	else if (time0 == soundTime0)//计时器达到发声次数
    {                       
        enable_T0 = 0;         
    }
	time0++;
}

/* T1中断服务函数,用于控制蜂鸣器发声 */
 void InterruptTimer1() interrupt 3
{
//	EA = 0;
    TH1 = T1RH;   //重新加载重载值
    TL1 = T1RL;
//	EA = 1;
    
    if (enable_T1)   //使能时反转蜂鸣器控制电平
	{
		 BUZZ1 = ~BUZZ1;    
	}
    else          //未使能时关闭蜂鸣器
	{
       	BUZZ1 = 1;
	}

	
	if (time1 >= beatTime1)  //计时器达到节拍次数
	{                     
	    time1 = 0;		   //重置计数器
		ET1 = 0;
		tmrflag_T1 = 1;	      //开启下一个节拍
	}
	else if (time1 == soundTime1)//计时器达到发声次数
    {                       
        enable_T1 = 0;         
    }
	time1++;
	
}


music.h



/*********************Music.h*************************************/

#define uchar unsigned char
#define uint unsigned int


#define L1 0
#define L2 2
#define L3 4
#define L4 5
#define L5 7
#define L6 9
#define L7 11

#define M1 12
#define M2 14
#define M3 16
#define M4 17
#define M5 19
#define M6 21
#define M7 23

#define H1 24
#define H2 26
#define H3 28
#define H4 29
#define H5 31
#define H6 33
#define H7 35

#define NO 36

/*变量tone控制歌曲的原调:
原调C:		tone = 0-12
原调C#:		tone = 1-12
原调D:		tone = 2-12
原调D#:		tone = 3-12
原调E:		tone = 4-12
原调F:		tone = 5-12
原调F#:		tone = 6-12
原调G:		tone = 7-12
原调G#:		tone = 8-12
原调A:		tone = 9-12
原调A#:		tone = 10-12
原调B:		tone = 11-12
*/

char tone =  -7;



unsigned char T0RH = 0xFF;  //T0重载值的高字节
unsigned char T0RL = 0x00;  //T0重载值的低字节

unsigned char T1RH = 0xFF;  //T1重载值的高字节
unsigned char T1RL = 0x00;  //T1重载值的低字节

bit enable_T0 = 0;   //蜂鸣器发声使能标志
bit tmrflag_T0 = 0;  //定时器中断完成标志

bit enable_T1 = 0;   //蜂鸣器发声使能标志
bit tmrflag_T1 = 0;  //定时器中断完成标志

unsigned int time0 = 0;      //计时器T0中断次数计数器
unsigned int beatTime0 = 0;  //计时器T0节拍所需中断次数
unsigned int soundTime0 = 0; //计时器T0发声所需中断次数

unsigned int time1 = 0;      //计时器T0中断次数计数器
unsigned int beatTime1 = 0;  //计时器T0节拍所需中断次数
unsigned int soundTime1 = 0; //计时器T0发声所需中断次数



//unsigned int code NoteFrequ[] = {  //低音1-7中音1-7和高音1-7对应频率列表
//	262,  294,  330,  349,  392,  440,  494,  //低音1-7
//    523,  587,  659,  698,  784,  880,  988,  //中音1-7
//    1047, 1175, 1319, 1397, 1568, 1760, 1976,  //高音1-7
//	1976
//};
unsigned int code NoteFrequ[] = {  //低音1-7中音1-7和高音1-7对应频率列表

262,278,294,312,330,350,370,392,416,440,467,494,
524,555,588,623,660,699,740,784,831,880,933,988,
1047,1109,1175,1245,1319,1397,1480,1568,1662,1760,1865,1976,
1976
} ;



unsigned int code NoteReload[] = { //低音1-7中音1-7和高音1-7对应的定时器重载值
	65536 - (11059200/12) / (262*2),  //低音1
	65536 - (11059200/12) / (278*2),  //1#
	65536 - (11059200/12) / (294*2),  //2
	65536 - (11059200/12) / (312*2),  //2#
	65536 - (11059200/12) / (330*2),  //3
	65536 - (11059200/12) / (350*2),  //4
	65536 - (11059200/12) / (270*2),  //4#
	65536 - (11059200/12) / (392*2),  //5
	65536 - (11059200/12) / (416*2),  //5#
	65536 - (11059200/12) / (440*2),  //6
	65536 - (11059200/12) / (467*2),  //6#
    65536 - (11059200/12) / (494*2),  //7
    65536 - (11059200/12) / (524*2),  //中音1
	65536 - (11059200/12) / (555*2),  //1#
    65536 - (11059200/12) / (588*2),  //2
	65536 - (11059200/12) / (623*2),  //2#
    65536 - (11059200/12) / (660*2),  //3
    65536 - (11059200/12) / (699*2),  //4
	65536 - (11059200/12) / (740*2),  //4#
    65536 - (11059200/12) / (784*2),  //5
	65536 - (11059200/12) / (831*2),  //5#
    65536 - (11059200/12) / (880*2),  //6
	65536 - (11059200/12) / (933*2),  //6#
    65536 - (11059200/12) / (988*2),  //7
    65536 - (11059200/12) / (1047*2), //高音1
	65536 - (11059200/12) / (1109*2), //1#
    65536 - (11059200/12) / (1175*2), //2
	65536 - (11059200/12) / (1245*2), //2#
    65536 - (11059200/12) / (1319*2), //3
    65536 - (11059200/12) / (1397*2), //4
	65536 - (11059200/12) / (1480*2), //4#
    65536 - (11059200/12) / (1568*2), //5
	65536 - (11059200/12) / (1662*2), //5#
    65536 - (11059200/12) / (1760*2), //6
	65536 - (11059200/12) / (1856*2), //6#
    65536 - (11059200/12) / (1976*2), //7

	65536 - (11059200/12) / (1976*2), //NO

};

//音符表/节拍表
uchar code LYHD1_Note1[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M5, NO};  //1
uchar code LYHD1_Beat1[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    1,1,2 ,   4,   4};
uchar code LYHD1_Note2[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M6, NO};
uchar code LYHD1_Beat2[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    1,1,2 ,   4,   4};

uchar code LYHD1_Note3[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M5, NO};   //5
uchar code LYHD1_Beat3[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    1,1,2 ,   4,   4};
uchar code LYHD1_Note4[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M6, NO};
uchar code LYHD1_Beat4[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    1,1,2 ,   4,   4};

uchar code LYHD1_Note5[]={9,	H3, H5,H3,	H2,		H3,		H1,		H2,	 	M7,		M5	  };   //9
uchar code LYHD1_Beat5[]={78,	4,   3,1,   4,    	4,  	4,    	4,   	4,  	 4	  };
uchar code LYHD1_Note6[]={9,	H3, H5,H3,	H2,		H3,		H1,		H2,	 	M7,		H1	  };
uchar code LYHD1_Beat6[]={78,	4,   3,1,   4,    	4,  	4,    	4,   	4,  	 4	  };

uchar code LYHD1_Note7[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M5, NO};	//13
uchar code LYHD1_Beat7[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    2,1,1 ,   4,   4};
uchar code LYHD1_Note8[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M6, NO};
uchar code LYHD1_Beat8[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    2,1,1 ,   4,   4};

uchar code LYHD1_Note9[]={17,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M5, NO};	//17
uchar code LYHD1_Beat9[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    2,1,1 ,   4,   4};
uchar code LYHD1_Note10[]={18,	M6, H3,H3, H1,M7,M6, M5,M3,M5,	M6,M7,H1, H2,H1,M7, M6, H1,H2};
uchar code LYHD1_Beat10[]={78,	4,   3,1,   1,1,2,    2,1,1,  	2,1,1,    2,1,1 ,   6,   1,1 };

uchar code LYHD1_Note11[]={14,	H3,H2,	H1,H2,H3,	H1,H2,	H3,H2,	H1,H2,H3,	H1,H2};	//21
uchar code LYHD1_Beat11[]={78,	3,1,	1,1,6,		2,2,	3,1,	1,1,6,		2,2	 };
uchar code LYHD1_Note12[]={13,	H3,H2,	H1,H2,H3,	H1,H2,	H3,H2,	H1,H2,H3,	NO	 };
uchar code LYHD1_Beat12[]={78,	3,1,	1,1,6,		2,2,	3,1,	1,1,6,		4	 };

uchar code LYHD1_Note13[]={23,	H6,H5,H5,H5,	H3,H3,H3,H2,	H2,H2,H2,H2,	H2,H1,H1,H2,	H3,		H1,H2,H3,H2,	H1,H1};	//25
uchar code LYHD1_Beat13[]={78,	1,1,1,1,		1,1,1,1,		1,1,1,1,		1,1,1,3,		6,		1,1,1,2,		1,2	};
uchar code LYHD1_Note14[]={24,	H6,H5,H5,H5,	H5,H3,H3,H3,	H3,H2,H2,H2,	H2,H1,H1,H2,	H3,		H1,H2,H3,H2,	H1,H1,M5};
uchar code LYHD1_Beat14[]={78,	1,1,1,1,		1,1,1,1,		1,1,1,1,		1,1,1,3,		6,		1,1,1,2,		1,1,1	};
//XW
uchar code LYHD1_Note15[]={16,	M6,H1,	M7,M5,M6,	NO,M5,M6,M5,	M6,H1,	H1,H2,H2,	H3,	NO	}; //29
uchar code LYHD1_Beat15[]={78,	2,2,	   2,1,5,		1,1, 1, 1,		2,2,	   2,1,1,		4,	4	};
uchar code LYHD1_Note16[]={25,	H6,H5,H5,H5,	H5, H3,H3,H3,	H3,H2,H2,H2,	H2,H1,H1,H2,	H3,	H1,H1,H2,H3,H2,	H2,H1,H1};
uchar code LYHD1_Beat16[]={78,	 1, 1, 1,1,		1,	1 ,1, 1,	1,1, 1, 1,		1,1,1, 3,		 5,	1,1,1,  1,1,	1,1,2	};
 //
uchar code LYHD1_Note17[]={24,	H6,H5,H5,H5,   H5,H3,H3,H3,  H3,H2,H2,H2,  H2,H1,H1,H2, H3, H1,H2,H3,H2, H1,H1,H5};//33
uchar code LYHD1_Beat17[]={78,	1, 1, 1, 1,     1,1,1,1,     1,1,1,1,       1,1,1,3,   6,   1,1,1,2,     1,1,1};
uchar code LYHD1_Note18[]={15,	M6,H1, 	M7,M5,M6, 	NO,M5,  	M6,H1, 	H1,H2,H2, 	H3,  	NO,M5};
uchar code LYHD1_Beat18[]={78,	2, 2,   2,1,5,   	3,1,    	2,2,    2,1,1,  	 4,  	3,1};
	
uchar code LYHD1_Note19[]={17,  M6,H1,	 M7,M5,M6,	H1,	 H1,H2,H2, 	 NO,H1,H1,H2, 	H3,H2, 	H2,H1}; //37
uchar code LYHD1_Beat19[]={78,	2,2,   	2,1,3,     	2,  	2,1,5,     1,1,1,1,     3,1,    3,1};
uchar code LYHD1_Note20[]={8,	H1,H5, 	H3,H2,  H1,  H2, 	H3, 	NO};  
uchar code LYHD1_Beat20[]={78,	2,2,   2,2,    4,   4,   	6,  	10}; //有改动
//	
uchar code LYHD1_Note21[]={12, H3,H5, H6,H5, H3, H2, H1,  NO, NO, NO,H1,H2};//41 
uchar code LYHD1_Beat21[]={78,  2,2,   2,2,   4,  4,  6,   2,  4,  2,1,1};		//有改动
uchar code LYHD1_Note22[]={16, H3,H2,H2, H1,M6, NO,M6,M5, M6,H1,H1, H2,H3, NO,H1,H2};
uchar code LYHD1_Beat22[]={78,  2,1,2,   1,6,    2,1,1,    2,1,2,   1,6,    2,1,1};

uchar code LYHD1_Note23[]={17, H3,H2,H2, H1,M6, NO,M6,M5,  M6,H1,H1,H1, H3,H2, NO,H3,H2};//45
uchar code LYHD1_Beat23[]={78,  2,1,2,    1,6,   2,1,1,     1,1,1,2,     1,6,   2,1,1};
uchar code LYHD1_Note24[]={14, H3,H3, H6,H5,   NO,H1,M6,   H1,H1,  H2,H3, NO,M6,M5};
uchar code LYHD1_Beat24[]={78,  3,2,   1,6,     2, 1,1,     3,2,    1,6,   2,1,1};
	
uchar code LYHD1_Note25[]={16, M6,H1, H1,H2,H3, H3, H2,H1,M7, M6,M5,M6,M6, NO,H3,H2};//49
uchar code LYHD1_Beat25[]={78,	3,1,   1,1,6,    2,  1,1,2,    3,2,1,6,     2,1,1};
uchar code LYHD1_Note26[]={14, H3,H3, H6,H5,   NO,H1,M6,  H1,H1,  H2,H3,  NO,M6,M5};	 
uchar code LYHD1_Beat26[]={78,  3,2,   1,6,     2, 1,1,    3,2,    1,6,   2,1,1};

//XW

uchar code LYHD1_Note27[]={16,	M6,H1,	H1,H2,H3,	H3,		H2,H1,M7,	M6,M6,M5,	M6,M6,	NO,H3	};	//53
uchar code LYHD1_Beat27[]={78,	3,1,	1,1,4,		2,		1,1,2,		2,1,2,		1,6,	2,2		};
uchar code LYHD1_Note28[]={21,	H2,H1,	M7,M6,	NO,		H6,H5,H5,H5,	H3,H3,H3,H2,	H2,H2,H2,H2,	H2,H1,H1,H2};
uchar code LYHD1_Beat28[]={78,	3,2,	1,6,	4,		1,1,1,1,		1,1,1,1,		1,1,1,1,		1,1,1,3,   };

uchar code LYHD1_Note29[]={23,	H3,		H1,H2,H3,H2,	H1,H1,		H6,H5,H5,H5,	H5,H3,H3,H3,	H3,H2,H2,H2,	H2,H1,H1,H2};	//57
uchar code LYHD1_Beat29[]={78,	6,		1,1,1,2,		1,2,			1,1,1,1,		1,1,1,1,		1,1,1,1,		1,1,1,3};
uchar code LYHD1_Note30[]={16,	H3,		H1,H2,H3,H2,	H1,H1,M5,	M6,H1,	M7,M5,M6,	NO,M5,M6,M5};
uchar code LYHD1_Beat30[]={78,	6,		1,1,1,2,		1,1,1,		2,2,	2,1,5,		1,1,1,1};

uchar code LYHD1_Note31[]={23,	M6,H1,	H1,H2,H2,	H3,		NO,		H6,H5,H5,H5,	H5,H3,H3,H3,	H3,H2,H2,H2,	H2,H1,H1,H2	}; //61
uchar code LYHD1_Beat31[]={78,	2,2,	2,1,1,		4,		4,		1,1,1,1,		1,1,1,1,		1,1,1,1,		1,1,1,3,	};
uchar code LYHD1_Note32[]={23,	H3,		H1,H2,H3,H2,	H1,H1,		H6,H5,H5,H5,	H5,H3,H3,H3,	H3,H2,H2,H2,	H2,H1,H1,H2	};
uchar code LYHD1_Beat32[]={78,	6,		1,1,1,2,		1,2,		1,1,1,1,		1,1,1,1,		1,1,1,1,		1,1,1,3,	};

uchar code LYHD1_Note33[]={15,	H3,		H1,H2,H3,H2,	H1,H1,M5,	M6,H1,	M7,M5,M6,	NO,M5};	//65
uchar code LYHD1_Beat33[]={78,	6,		1,1,1,2,		1,1,1,		2,2,	2,1,5,		3,1};
uchar code LYHD1_Note34[]={17,	M6,H1,	H1,H2,H2,	H3,		NO,M5,	M6,H1,	M7,M5,M6,	H1,		H1,H2,H2};
uchar code LYHD1_Beat34[]={78,	2,2,	2,1,1,		4,		3,1,	2,2,	2,1,3,		2,		2,1,5};

uchar code LYHD1_Note35[]={15,	NO,H1,H1,H2,	H3,H2,	H2,H1,	H1,	H5,H3,	H2,	M7,	NO,	M6};	//69
uchar code LYHD1_Beat35[]={78,	1,1,1,1,		3,1,	3,1,	4,	2,2,	4,	4,	4,	4};










//		uchar code LYHD1_Note13[]={0,	};	//25
//		uchar code LYHD1_Beat13[]={78,	};
//		uchar code LYHD1_Note14[]={0,	};
//		uchar code LYHD1_Beat14[]={78,	};
















uchar code LYHD2_Note1[]={	L6,	NO,	L6,	NO,	L6,	NO,	L6,	NO	};
uchar code LYHD2_Beat1[]={	4,  4,  4,	4,	4,	4,	4,	4	};
uchar code LYHD2_Note2[]={	L6,	NO,	L6,	NO,	L6,	NO,	L6,	NO	};
uchar code LYHD2_Beat2[]={	4,  4,  4,	4,	4,	4,	4,	4	};









//--声明调用函数--//
void MainInitialize_Music_T0();	//主函数初始化函数

uchar PlayMusic_T0(uchar *MusicNote,uchar *MusicBeat); 
		//音乐播放函数,音符数组,节拍数组,音符/节拍长度

void MainInitialize_Music_T1();	//主函数初始化函数

uchar PlayMusic_T1(uchar *MusicNote,uchar *MusicBeat,uchar MusicLong); 
		//音乐播放函数,音符数组,节拍数组,音符/节拍长度

void T0_Service ();
void T1_Service ();

简谱

来源B站UP主指尖灬旋律

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值