知道谁会么 特急!!!
六首歌曲的门铃制作 毕业设计的命题关于单片机和C语言的
- 提问者网友:niaiwoma
- 2021-07-17 00:21
- 五星知识达人网友:往事隔山水
- 2021-07-17 00:42
//单片机C语言音乐播放程序
//12M
#include<reg51.h>
sbit p34 = P2^1; //扬声器的输出端口
void Music(unsigned char number);
void delay10ms(unsigned char time);
void delay50us(unsigned char time);
unsigned char code SOUNDLONG[];
unsigned char code SOUNDTONE[];
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>=57) i=0;
}
for(k=0;k<number-1;k++)
{
while(SOUNDTONE[j] !=0){j++;}
j++;
if(j>=57) j=0;
}
do
{
if(i>=57) i=0;
if(j>=57) j=0;
SoundLong=SOUNDLONG[i];
SoundTone=SOUNDTONE[j];
i++;
j++;
for(n=0;n<SoundLong;n++)
{
for(k=0;k<12;k++)
{
p34=0;
for(m=0;m<SoundTone/2;m++)
;
p34=1;
for(m=0;m<SoundTone/2;m++)
;
}
}
delay50us(6);
}while((SOUNDLONG[i] !=0) || (SOUNDTONE[j] !=0));
}
//延时程序
void delay10ms(unsigned char time) //延时程序1
{
unsigned char a,b,c;
for(a=0;a<time;a++)
for(b=0;b<100;b++)
for(c=0;c<12;c++)
;
}
void delay50us(unsigned char time) //延时程序2
{
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
};