當前位置:編程學習大全網 - 源碼下載 - 給壹段用BEEP()調用蜂鳴器播放簡單樂譜的源代碼。。我喜歡通過讀代碼學程序。。。分數不多,好人壹生平安

給壹段用BEEP()調用蜂鳴器播放簡單樂譜的源代碼。。我喜歡通過讀代碼學程序。。。分數不多,好人壹生平安

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar Count;

sbit Speak =P1^2; //蜂鳴器器控制腳

/*以下數組是音符編碼*/

unsigned char code SONG[] ={ //祝妳平安

0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,

0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,

0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,

0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,

0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,

0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,

0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,

0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,

0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,

0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,

0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,

0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,

//路邊的野華不要采

0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,

0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,

0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,

0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,

0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,

0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,

0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,

0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,

0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,

0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};

/********************************************************************

* 名稱 : Time0_Init()

* 功能 : 定時器的初始化,定時時間可用光碟中軟件計算,11.0592MZ晶振,10ms

* 輸入 : 無

* 輸出 : 無

***********************************************************************/

void Time0_Init()

{

TMOD = 0x01;

IE = 0x82;

TH0 = 0xDC;

TL0 = 0x00;

}

/********************************************************************

* 名稱 : Time0_Int()

* 功能 : 定時器中斷,中斷中實現 Count 加壹

* 輸入 : 無

* 輸出 : 無

***********************************************************************/

void Time0_Int() interrupt 1

{

TH0 = 0xDC;

TL0 = 0x00;

Count++; //長度加1

}

/********************************************************************

* 名稱 : Delay_xMs()

* 功能 : 延時子程序,經過軟件調試,測得延時程序大概為55us.

* 輸入 : x

* 輸出 : 無

***********************************************************************/

void Delay_xMs(uint x)

{

uint i,j;

for(i=0; i<x; i++)

{

for(j=0; j<3; j++);

}

}

/********************************************************************

* 名稱 : Play_Song()

* 功能 : 播放蜂鳴器控制程序

* 輸入 : i (選擇播放哪首歌曲,0為“祝妳平安”,1為“路邊的野花妳不要采”

* 輸出 : 無

***********************************************************************/

void Play_Song(uchar i)

{

uchar Temp1,Temp2;

uint Addr;

Count = 0; //中斷計數器清0

Addr = i * 217;

while(1)

{

Temp1 = SONG[Addr++];

if (Temp1 == 0xFF) //休止符

{

TR0 = 0;

Delay_xMs(100);

}

else if (Temp1 == 0x00) //歌曲結束符

{

return;

}

else

{

Temp2 = SONG[Addr++];

TR0 = 1;

while(1)

{

Speak = ~Speak;

Delay_xMs(Temp1);

if(Temp2 == Count)

{

Count = 0;

break;

}

}

}

}

}

/********************************************************************

* 名稱 : Main()

* 功能 : 主函數

* 輸入 : 無

* 輸出 : 無

***********************************************************************/

void Main()

{

Time0_Init(); //定時器0中斷初始化

while(1)

{

Play_Song(0); //Play_Song(0)為祝妳平安 Play_Song(1)為路邊的野花妳不要裁

}

}

  • 上一篇:介紹銷售源代碼
  • 下一篇:既然蒂克幣是傳銷那麽公安為什麽不抓尼都好幾個億了
  • copyright 2024編程學習大全網