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