热门搜索 :
考研考公
您的当前位置:首页正文

单片机音乐播放器

来源:伴沃教育
简单单片机音乐播放器

这类型的东西多了去咯,只是大家听腻了世上只有妈妈好,两只老虎什么的,可以试试这个。有张雨生的大海,林志炫的单身情歌,只有高潮部分哈。研究曲谱部分时,看到

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;t1{

for(t2=0;t2<3000;t2++)

{ ; }

}

}

void song()

{

TH0=timer0h;

TL0=timer0l;

TR0=1;

delay(time);

TR0=0;

}

void delayms(uint x)

{

uint i,j;

for(i=x;i>0;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;

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top