单片机音乐播放器
简单单片机音乐播放器
这类型的东西多了去咯,只是大家听腻了世上只有妈妈好,两只老虎什么的,可以试试这个。有张雨生的大海,林志炫的单身情歌,只有高潮部分哈。研究曲谱部分时,看到 9,3,x之类的是独家弄的休止符哦,第29个音调0x00也是为了休止符加进去的。
#include
#define uchar unsigned char
#define uint unsigned int
sbit beep=P1^3;
sbit music=P1^6;
sbit music1=P1^7;
uchar timer0h,timer0l,time,key,flag,chang,chang2;
uchar code dahai[]={ 3,2,2,5,2,2,6,2,2,6,2,4,6,2,2,6,2,4,1,3,2,6,2,2, 5,2,2,5,2,4,6,2,2,5,2,4,3,2,2,2,2,2,1,2,2,1,2,4,1,2,2,1,2,4,2,2,4,3,2,12, 3,2,2,2,2,2,1,2,2,1,2,4,1,2,2,1,2,4,1,3,2,6,2,2,5,2,2,5,2,4,6,2,2,5,2,4, 3,2,2,5,2,2,6,2,6,1,3,2,1,3,4,6,2,2,5,2,2,5,2,12,3,2,2,5,2,2,6,2,2,6,2, 4,6,2,2,6,2,4,1,3,2,6,2,2,5,2,2,5,2,4,6,2,2,5,2,4,3,2,2,2,2,2, 1,2,2,1,2,4,1,2,2,1,2,4,5,2,4,3,2,12,3,2,2,2,2,2,1,2,2,1,2,4,1,2,2,1,2,4, 2,2,2,3,2,2,5,2,2,5,2,4,3,2,2,5,2,4,3,2,2,5,2,2,6,2,16,9,3,4,9,3,2,6,1,2,3,2,2,2,2,4,1,2,2,1,2,12,0,0,0
};
uchar code
dsqg[]={3,2,2,5,2,2,7,2,2,7,2,2,1,3,2,1,3,2,1,3,2,1,3,2,7,2,2,6,2,2,7,2,2,7,2,2,7,2,2,7,2,2,6,2,2,5,2,
2,6,2,4,6,2,2,5,2,2,3,2,2,5,2,2,5,2,2,6,2,4,
9,3,2,6,2,2,7,2,2,1,3,2,1,3,2,1,3,2,1,3,2,7,
2,2,6,2,2,7,2,2,7,2,2,7,2,1,7,2,2,6,2,3,5,2,
1,6,2,4,6,2,2,5,2,2,6,2,2,1,3,2,6,2,6,6,2,6,
2,3,2,2,3,2,2,3,2,2,3,2,1,3,2,6,2,2,6,2,6,6,
2,4,2,3,2,2,3,2,2,3,2,3,3,2,2,3,2,6,2,2,6,2,
6,9,3,2,6,2,2,7,2,2,1,3,2,1,3,2,1,3,2,1,3,2,
7,2,2,6,2,2,7,2,2,7,2,2,7,2,2,7,2,2,6,2,2,5,
2,2,6,2,4,6,2,2,5,2,2,3,2,3,5,2,1,5,2,2,6,2,
4,0,0,0};
uchar code TH_0[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0x00,
} ;
uchar code TL_0[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,
0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,0x00,
};
void delay(uchar t)
{
uchar t1;
unsigned long t2;
for(t1=0;t10;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar k,i;
TMOD=1;
EA=1;
ET0=1;
while(1)
{
if(music&&music1)
{ flag=0;}
if(!music)
{ flag=1;chang=1;
i=0;
while(1)
{
if(!chang)
{ beep=1;
break;
}
k=dahai[i]+7*dahai[i+1]-1;
timer0h=TH_0[k];
timer0l=TL_0[k];
time=dahai[i+2];
i+=3;
song();
if((dahai[i]==0)&&(dahai[i+1]==0)) chang=0;
}
}
if(!music1)
{
flag=1; chang2=1;
i=0;
while(1)
{
if(!chang2)
{
beep=1;
break; }
k=dsqg[i]+7*dsqg[i+1]-1;
timer0h=TH_0[k];
timer0l=TL_0[k];
time=dsqg[i+2];
i+=3;
song();
if((dsqg[i]==0)&&(dsqg[i+1]==0)) chang2=0;
}
}
}
}
void time0() interrupt 1
{
if(flag==0)
{
beep=!beep;
TH0=TH_0[key];
TL0=TL_0[key];
}
else
{ beep=!beep;
TH0=timer0h;
TL0=timer0l;
}
}