📄 yingyue.c
字号:
/* 播放两首音乐(C语言)
*********************************
测试通过*/
#include<reg51.h>
void Music(unsigned char number);
void delay10ms(unsigned char time);
void delay50us(unsigned char time);
unsigned char code SOUNDLONG[];
unsigned char code SOUNDTONE[];
sbit P3_4=P3^4;
void main()
{
while(1)
{
Music(1); //生日快乐
delay10ms(250);
delay10ms(250);
//Music(2); //三轮车
//delay10ms(250);
//delay10ms(250);
}
}
void Music(unsigned char number)
{
unsigned int k,n;
unsigned int SoundLong,SoundTone;
unsigned int i,j,m;
for(k=0;k<number-1;k++)
{
while(SOUNDLONG[i] !=0){i++;}
i++;
if(i>=25) i=0;//若要播放两段音乐改为57
}
for(k=0;k<number-1;k++)
{
while(SOUNDTONE[j] !=0){j++;}
j++;
if(j>=25) j=0;
}
do
{
if(i>=25) i=0;
if(j>=25) j=0;
SoundLong=SOUNDLONG[i];
SoundTone=SOUNDTONE[j];
i++;
j++;
for(n=0;n<SoundLong;n++)
{
for(k=0;k<12;k++)
{
P3_4=0;
for(m=0;m<SoundTone/2;m++)
;
P3_4=1;
for(m=0;m<SoundTone/2;m++)
;
}
}
delay50us(6);
}while((SOUNDLONG[i] !=0) || (SOUNDTONE[j] !=0));
}
//延时程序
void delay10ms(unsigned char time)
{
unsigned char a,b,c;
for(a=0;a<time;a++)
for(b=0;b<10;b++)
for(c=0;c<120;c++)
;
}
void delay50us(unsigned char time)
{
unsigned char a,b;
for(a=0;a<time;a++)
for(b=0;b<6;b++)
;
}
unsigned char code SOUNDLONG[]=
{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 //生日快乐end
//6,6,9,3,6,6,12,
//6,6,6,6,6,6,12,
//6,6,9,3,6,6,9,3,
//6,3,3,6,3,3,6,6,9,
//0 //三轮车end
};
unsigned char code SOUNDTONE[]=
{
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 //生日快乐end
//239,239,212,189,159,159,189,
//159,159,142,126,120,120,159,
//120,120,142,159,189,142,159,189,
//239,212,189,159,142,159,189,212,239,
//0 //三轮车end
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -