/***************************************************************************************************
工程名稱: bz_happy
功能描述: 控制蜂鳴器實現播放音樂"生日快樂"***************************************************************************************************/
#include<reg51.h> //包含頭文件
sbit BZ=P0^0; //定義蜂鳴器控制管腳
#define uchar unsigned char
#define uint unsigned int
uchar code SOUNDLONG[25]= //"生日快樂"節拍
{
15,5,20,20,20,40,
15,5,20,20,20,40,
15,5,20,20,20,20,20,
15,5,20,20,20,40
};
uchar code SOUNDTONE[25]= //"生日快樂"音調
{
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
};
//**************************************************************************************************
//延時函數
//**************************************************************************************************
delay(uint time) //int型數據為16位,所以最大值為65535
{
uint i,j; //定義變量i,j,用于循環語句
for(i=0;i<time;i++) //for循環,循環50*time次
for(j=0;j<50;j++); //for循環,循環50次
}
//**************************************************************************************************
//播放音調
//**************************************************************************************************
void Play_music()
{
uint Tone,Long; //定義音調變量
uint i,j,k; //定義
for(i=0;i<25;i++) //"生日快樂"的25種音調
{
Tone=SOUNDTONE[i]; //讀取音調
Long=30*SOUNDLONG[i]; //讀取節拍
for(j=0;j<Long;j++) //輸出不同節拍
{
BZ=0; //關閉蜂鳴器
for(k=0;k<Tone;k++); //Tone的不同來區分7種音調
BZ=1; //打開蜂鳴器
for(k=0;k<Tone;k++); //Tone的不同來區分7種音調
}
}
}
//**************************************************************************************************
//主函數
//**************************************************************************************************
void main()
{
while(1)
{
Play_music(); //播放音樂
BZ=0; //關閉蜂鳴器
delay(10000); //關閉蜂鳴器時間
}
}
|