⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 song.c.bak

📁 51单片机下写的音乐程序,有12首音乐,含protus仿真工程.
💻 BAK
字号:
#include <reg51.h>

sbit Y1=P1^0;
sbit Y2=P1^1;
sbit Y3=P1^2;
sbit Y4=P1^3;
sbit Y5=P1^4;
sbit Y6=P1^5;
sbit Y7=P1^6;
sbit Y8=P1^7;
sbit Y9=P3^0;
sbit Y10=P3^1;
sbit Y11=P3^2;
sbit Y12=P3^3;

sbit SPK=P0^0;
static unsigned char bdata StateREG;
sbit m=StateREG^0;
unsigned char code * data song;
unsigned int data j;
unsigned char data i;
unsigned char data k;
unsigned char data l;
unsigned char data p11;
unsigned char data p33;

void delay(void);
unsigned char code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xFD,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85};
unsigned char code song1[97]={0x34,0x32,0x32,0x34,0x42,0x51,
                             0x62,0x52,0x42,0x32,0x34,0x04,
							 0x74,0x74,0x62,0x62,0x64,
							 0x3c,0x04,
							 0x64,0x62,0x52,0x42,0x32,0x34,
							 0x33,0x31,0x32,0x72,0x76,0x72,
							 0x83,0x81,0x82,0x82,0x82,0x74,0x72,
							 0x7c,0x04,
							 0x63,0x61,0x62,0x62,0x64,0x72,0x82,
							 0x72,0x74,0x72,0x62,0x52,0x42,0x32,
							 0x42,0x44,0x42,0x42,0x52,0x62,0x52,
							 0x5c,0x04,
							 0x64,0x62,0x62,0x64,0x72,0x82,
							 0x72,0x74,0x72,0x62,0x52,0x42,0x32,
							 0x42,0x46,0x53,0x41,0x42,0x32,
							 0x3c,0x04,
							 0x44,0x48,0x02,0x32,
							 0x3f,
							 0x44,0x48,0x02,0x32,
							 0x3f,
							 0x34,0x0c,
                             0xFF};
unsigned char code song2[46]={0x12,0x52,0x52,0x52,0x56,0x42,
                             0x32,0x42,0x32,0x22,0x18,
							 0x82,0x82,0x82,0x82,0x86,0x72,
							 0xB2,0x72,0x72,0x62,0x58,
							 0x52,0x82,0x82,0x72,0x56,0x42,
							 0x32,0x42,0x32,0x22,0x16,0xB2,
							 0xB2,0x32,0x32,0x22,0x16,0x52,
							 0x42,0x32,0x22,0xC2,0x88,
							 0xFF};
unsigned char code song3[131]={0x52,0x42,
                             0x58,0x02,0x42,0x52,0x42,
                             0x38,0x04,0x12,0x32,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x12,
                             0xC8,0x04,0x52,0x42,
                             0x58,0x02,0x42,0x52,0x42,
                             0x38,0x04,0x12,0x32,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x32,
                             0x48,0x04,0x52,0x42,
                             0x58,0x02,0x42,0x52,0x42,
                             0x38,0x04,0x12,0x32,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x11,0x31,
                             0xC8,0x04,0x52,0x72,
                             0x78,0x02,0x72,0x82,0x72,
                             0x58,0x04,0x42,0x42,
                             0x44,0x42,0x52,0x42,0x32,0x12,0x12,
                             0x32,0x32,0x3C,
                             0x09,0x72,0x72,0x82,
                             0xA2,0x92,0x92,0x82,0x52,0x42,0x42,0x42,
                             0x58,0x02,0x52,0x52,0x72,
                             0x84,0x84,0x02,0x12,0x52,0x42,
                             0x48,0x04,0x52,0x72,
                             0x72,0x52,0x74,0x02,0xA4,0x92,
                             0x82,0x92,0x54,0x02,0x82,0x82,0x92,
                             0x82,0x72,0x52,0x42,0x02,0xC4,0x12,
                             0x3C,
							 0xFF};
unsigned char code song4[37]={0xC4,0x12,0x32,0x44,0x42,0x52,
                             0x52,0x44,0x32,0x32,0x12,0x14,
                             0x12,0x12,0x32,0x42,0x54,0x44,
                             0x4F,
                             0xC4,0x12,0x32,0x44,0x42,0x72,
                             0x58,0x42,0x32,0x34,
                             0x14,0x12,0x32,0x34,0x32,0x12,
                             0x1F,
							 0xFF};
unsigned char code song5[144]={0x52,0x62,
                             0x74,0x74,0x74,0x34,
                             0x42,0x34,0x52,0x56,0x42,
                             0x34,0x34,0x14,0x32,0x12,
                             0x12,0xC2,0xC4,0x04,0x52,0x62,
                             0x74,0x74,0x74,0x34,
                             0x42,0x34,0x52,0x56,0x42,
                             0x34,0x32,0x12,0x12,0x34,0x42,
                             0x4C,0x52,0x42,
                             0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
                             0xC2,0x54,0x52,0x54,0x52,0x52,
                             0x42,0x32,0x32,0x12,0x32,0x42,0x32,0x52,
                             0x5C,0x52,0x42,
                             0x34,0x32,0x42,0x32,0x12,0x12,0xC2,
                             0xC2,0x54,0x52,0x54,0x02,0x52,
                             0x52,0x42,0x32,0x12,0x32,0x84,0x72,
                             0x7F,
                             0x0F,
                             0x74,0x72,0x52,0x54,0x74,
                             0x82,0x52,0x52,0x72,0x78,
                             0x34,0x32,0x32,0x42,0x54,0x72,
                             0x7F,
                             0x86,0x82,0x72,0x52,0x54,
                             0x72,0x84,0x32,0x36,0x52,
                             0x42,0x52,0x42,0x32,0x34,0x12,0x32,
                             0x32,0x42,0x4C,
                             0x86,0x82,0x72,0x52,0x54,
                             0x72,0x84,0x52,0x56,0x52,
                             0x42,0x52,0x72,0x82,0x52,0x34,0x12,
                             0x12,0x32,0x3C,
                             0xFF};
unsigned char code song6[85]={
0x04,0x24,0x14,0xC4,
0x54,0x54,0x48,
0x04,0x54,0x44,0x34,
0x22,0x14,0xB2,0xC8,
0x04,0x12,0xC2,0x16,0x12,
0x76,0x52,0x46,0x12,
0x3F,
0x04,0xB4,0xD4,0xC4,
0x14,0x28,0xC4,
0x14,0x12,0x32,0x16,0xC2,
0x54,0x78,0x34,
0x4C,0x42,0x52,
0x86,0x72,0x76,0x52,
0x74,0x28,0x42,0x52,
0x46,0x12,0x26,0x12,
0xCF,
0x04,0x24,0x14,0xC4,
0x56,0x52,0x48,
0x04,0x54,0x44,0x34,
0x22,0x14,0xB2,0xC8,
0x04,0x34,0x14,0xC4,
0x12,0x32,0x18,0x42,0x42,
0x74,0x58,0x44,
0x3F,
0xFF};
unsigned char code song7[138]={0xC2,0xC2,0x12,
                             0x34,0x32,0x32,0x32,0x12,0x12,0x52,
                             0x54,0x02,0xC2,0x12,
                             0x32,0x32,0x32,0x32,0x34,0x52,0x72,
                             0x7C,0x02,0x72,
                             0x82,0x72,0x82,0x72,0x84,0x72,0x41,0x51,
       						 0x52,0x41,0x31,0x34,0x02,0x32,0x32,0x12,
							 0x34,0x32,0x12,0x32,0x54,0x42,
							 0x32,0x32,0x32,0x32,0x34,0x52,0x72,
                             0x7C,0x72,0x72,
                             0x82,0x72,0x82,0x72,0x84,0x82,0x72,
                             0x42,0x52,0x42,0x34,0x12,0x12,0x32,
                             0xC4,0x52,0x42,0x34,0x12,0x12,
                             0x31,0x41,0x32,0x3C,
                             0x0A,0x72,0x82,0xA2,
                             0x84,0x82,0x72,0x82,0x72,0x52,0x72,
                             0x78,0x02,0x72,0x82,0xA2,
                             0x84,0x82,0x72,0x82,0x72,0x82,0x32,
                             0x38,0x02,0x32,0x42,0x52,
                             0x64,0x62,0x72,0x82,0x82,0x72,0x82,
                             0x82,0xA2,0x82,0x82,0x82,0xA2,0x82,0x72,
                             0x78,0x72,0x32,0x82,0x72,
                             0x78,0x72,0x82,0xA3,0x51,
                             0x42,0x51,0x41,0x3C,
                             0xFF};
unsigned char code song8[77]={0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x41,0x51,0x5C,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x31,0x41,0x4C,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x41,0x51,0x58,0x32,0x52,
                             0x4C,0x42,0x32,
                             0x34,0x32,0x42,0x48,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x72,0x41,0x51,0x5C,
                             0x04,0xC2,0xC2,0x32,0x32,0x42,0x42,
                             0x52,0x42,0x4C,
                             0x04,0xC2,0xC2,0x34,0x42,0x42,
                             0x52,0x41,0x51,0x58,0x32,0x52,
                             0x4C,0x42,0x32,
                             0x32,0x42,0x4C,
							 0xFF};
unsigned char code song9[]={
0X54,0XC4,0X12,0X32,0X34,
0X52,0X52,0X52,0X52,0X42,0X32,0X34,
0XC1,0XC2,0X52,0XC2,0X12,0X32,0X34,
0X11,0X12,0X31,0X12,0XC2,
0X78,0X72,0X52,0X52,0X42,
0X32,0X42,0X52,0X11,0XC1,0XC4,0XC1,0XC1,0XC1,0XC1,
0X12,0X32,0X32,0X12,0X42,0X42,0X44,
0XC2,0X12,0X32,0X42,0X52,0X72,0X72,0X82,
0X41,0X51,0X42,0X48,0X42,0X12,
0X3C,0X72,0X62,
0X3C,0X72,0X62,
0X3C,0X72,0X62,
0x21,0x31,0x41,0x51,0x61,0x71,0x81,0x91,0x61,0x71,0x81,0x91,
0X3F,
0X3F,
0X54,0XC2,0XC2,0X42,0XC2,0XC4,
0X34,0X32,0X42,0X52,0XC2,0XC4,
0XD2,0XC2,0X12,0X22,0X38,
0X12,0X22,0X32,0X42,0X48,
0xFF};
unsigned char code song10[]={
0x32,0x31,0x41,
0x52,0x52,0x42,0x31,0x41,0x44,0x31,0x41,
0x52,0x52,0x42,0x32,0x34,0x71,0x11,
0x74,0x71,0x71,0x11,0x31,0x34,0x32,
0x32,0x32,0x32,0x31,0x41,0x44,0x32,0x41,0x51,
0x52,0x52,0x72,0x81,0x41,0x44,0x52,0x41,0x31,
0x32,0x32,0x42,0x51,0x71,0x74,0x71,0x71,
0x12,0x31,0x31,0x31,0x52,0x42,0x32,0x32,0x41,0x31,
0x34,0x52,0x51,0x71,
0x72,0x71,0x71,0x72,0x71,0x81,0x84,0x52,0x42,
0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x52,
0x42,0x32,0x32,0x12,0x44,0x51,0x71,
0x72,0x72,0x71,0x82,0x71,0x84,0x52,0x42,
0x32,0x32,0x32,0x41,0x51,0x54,0x51,0x71,
0x72,0x72,0x72,0x81,0xA1,0xA2,0x82,0x72,0x51,0x41,
0x42,0x42,0x44,0x32,0x51,0x61,
0x72,0x42,0x44,0x52,0x41,0x31,
0x34,0x52,0x41,0x31,0x34,0x52,0x42,
0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x71,
0x82,0x81,0x71,0x72,0x81,0x71,0x74,0x51,0x41,0x31,
0x42,0x41,0x51,0x42,0x31,0x41,0x44,0x52,0x41,0x31,
0x34,0x52,0x41,0x31,0x34,0x52,0x42,
0x52,0x32,0x52,0x81,0x71,0x74,0x51,0x41,
0x82,0x82,0xA2,0x71,0x81,0x72,0x71,0x51,0x41,0x31,
0x44,0x41,0x31,0x41,0x51,0x44,0x52,0x52,
0x42,0x31,0x34,0x52,0x41,0x31,
0x42,0x31,0x34,
0xFF};
unsigned char code song11[]={
0XC2,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X4C,0X42,0X32,
0X74,0X82,0X74,0X82,0X72,
0X52,0X41,0X38,0X32,0X42,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0XC2,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X4C,0X42,0X32,
0X76,0X82,0X74,0X82,0X72,
0X53,0X41,0X38,0X32,0X42,
0X16,0XC2,0X72,0X52,0X41,0X51,0X12,
0XCC,0XC2,0XB2,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0X32,0X32,
0X26,0X22,0X24,0X42,0X32,
0x22,0x12,0x18,0x02,0x52,
0X46,0X12,0X44,0X72,0X82,
0X5C,0X52,0X52,
0X46,0X42,0X74,0X42,0X32,
0X36,0X42,0X58,
0X82,0X72,0X62,0X52,0X46,0X32,
0X3C,0X12,0XB2,
0X36,0X52,0X42,0X32,0X11,0XC1,0XB2,
0XC6,0X12,0XC4,0X12,0XC2,
0X76,0XA2,0X82,0X72,0X51,0X41,0X32,
0X48,0X02,0X42,0X52,0X62,
0X76,0X82,0X74,0X82,0X72,
0X56,0X41,0X38,0X32,0X22,
0X16,0XC2,0X72,0X52,0X42,0X42,
0X3C,0X04,0X04,0X04,0X04,
0xFF};
unsigned char code song12[]={
0x34,0x32,0x34,0x34,0x24,0x34,0x32,0x32,0x24,0x38,0x44,0x58,0x48,
0x34,0x32,0x34,0x34,0x24,0x38,0x34,0x7F,0x34,0x32,0x34,0x32,
0x24,0x38,0x34,0x24,0x38,0x44,0x58,0x48,0x34,0x32,0x34,0x34,
0x24,0x38,0x34,0x7F,0x16,0x4C,0x74,
0x78,0x64,0x54,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
0x14,0x12,0x21,0x11,0x78,0x68,0x3F,0x4C,0x74,
0x78,0x64,0x52,0x42,0x48,0x54,0x64,0x58,0x44,0x34,0x24,0x38,0x24,
0x24,0x38,0x44,0x58,0x48,0x3C,
0xFF};


void main()
{
    TMOD=0x01;
    IE=0x82;
	while(1)
	{
start:	j=0;
	m=0;
	while(m==0)
	{if(Y1==0)
	{
	   song=song1;
	   m=1;
	}  
	if(Y2==0)
	{
	   song=song2;
	   m=1;
	}
	if(Y3==0)
	{
	   song=song3;
	   m=1;
	}
	if(Y4==0)
	{
	   song=song4;
	   m=1;
	}
	if(Y5==0)
	{
	   song=song5;
	   m=1;
	}
	if(Y6==0)
	{
	   song=song6;
	   m=1;
	}
	if(Y7==0)
	{
	   song=song7;
	   m=1;
	}
	if(Y8==0)
	{
	   song=song8;
	   m=1;
	}
	if(Y9==0)
	{
	   song=song9;
	   m=1;
	}
	if(Y10==0)
	{
	   song=song10;
	   m=1;
	}
	if(Y11==0)
	{
	   song=song2;
	   m=1;
	}
	if(Y12==0)
	{
	   song=song11;
	   m=1;
	}
	}
	for(i=0;i<5;i++)
	{
	  delay();
	}
    p11=P1;
	p33=P3;
    while(*(song+j)!=0xFF)
    {
	   k=*(song+j)&0x0F;
	   l=*(song+j)>>4;
       //if((p11!=P1)||((p33&0x0f)!=(P3&0x0f)))
	    if((P1!=0xff)||(P3!=0xff))
	      {
		    goto start;
          }
 	   TH0=yin[2*l];
       TL0=yin[2*l+1];
	   TR0=1;
	   if ((yin[2*l]==0xff)&&(yin[2*l+1]==0xff))
           {
		       TR0=0;
			}
       for(i=k;i>0;--i)
	       {
		       delay();
	       }
	   TR0=0;
       j++;
    }
}
}

/*每个音符的发声*/
void timer0() interrupt 1 using 1
{
     TH0=yin[2*l];
     TL0=yin[2*l+1];
     SPK = !SPK;
}

/*延时1/4拍时间即187ms*/
void delay(void)
{ unsigned char i,j,k;
   for(i=0;i<2;i++)
   {for(j=0;j<170;j++)
    for(k=0;k<100;k++);
    }
   /* #pragma ASM
	        MOV R7,#02
	    D1: MOV R4,#125
		D2: MOV R3,#248
		    DJNZ R3,$
			DJNZ R4,D2
			DJNZ R7,D1
    #pragma ENDASM*/
}
  /* 前八首曲目:

1.干杯,朋友
    2.兰花草
    3.两只蝴蝶
    4.祈祷
    5.阳关总在风雨后
    6.心心相印
    7.最浪漫的事
    8.一生有你  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -