<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STC89C52單片機蜂鳴器唱歌實(shí)驗

STC89C52單片機蜂鳴器唱歌實(shí)驗

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò ) 收藏
////////////////////////////////////////////////////////////////////////

實(shí)現功能:通過(guò)對單片機定時(shí)器的配置,讓其產(chǎn)生不同頻率的方波,蜂鳴器根據頻
率的不同而發(fā)出不同的聲音,來(lái)達到唱歌的目的
實(shí)驗板型號:KBL-XYD-C52
實(shí)驗名稱(chēng): 蜂鳴器唱歌實(shí)驗
編寫(xiě)人: 謝應東
編寫(xiě)日期: 2012-4-26
////////////////////////////////////////////////////////////////////////
#include

本文引用地址:http://dyxdggzs.com/article/201611/319236.htm

#define uchar unsigned char
#define uint unsigned int

uchar cCount;

sbit FMQ =P2^4; //定義實(shí)驗板上蜂鳴器器控制腳


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,

};
////////////////////////////////////////////////////////////////////////
函數名稱(chēng):Time0_Init
函數功能:定時(shí)器的初始化配置,使其能中斷,中斷的時(shí)間間隔為10ms
參數介紹:無(wú)
返回值: 無(wú)
注意事項:注意此時(shí)實(shí)驗板上用到的晶振為11.0592M的,要選用其他的,得重新配置
////////////////////////////////////////////////////////////////////////
void Init_Time0()
{
TMOD = 0x01; //設置定時(shí)器0為模式1(16bit)

TH0 = 0xDC; //給定時(shí)器0高八位賦初值
TL0 = 0x00; //給定時(shí)器0第八位賦初值

ET0 = 1; //允許定時(shí)器0中斷
EA = 1; //打開(kāi)全局中斷
}
////////////////////////////////////////////////////////////////////////
函數名稱(chēng):Time0_Routine
函數功能:定時(shí)器0中斷服務(wù)函數,重新給定時(shí)器0賦值,同時(shí)把全局變量cCount加1
參數介紹:無(wú)
返回值: 無(wú)
注意事項:無(wú)
////////////////////////////////////////////////////////////////////////
void Time0_Routine() interrupt 1 using 1
{
TH0 = 0xDC;//重新給高八位賦新值
TL0 = 0x00;//重新給第八位賦新值
cCount++;//計數變量加1
}
////////////////////////////////////////////////////////////////////////
函數名稱(chēng):DelayUs
函數功能:延時(shí)函數,通過(guò)示波器測試,此函數每執行一次大概能延時(shí)55us
參數介紹:iDelay_Us:執行此延時(shí)函數的次數
iNumber1:第一個(gè)for語(yǔ)句所用的記錄循環(huán)的變量
iNumber2:第二個(gè)for語(yǔ)句所用的記錄循環(huán)的變量
返回值: 無(wú)
注意事項:無(wú)
////////////////////////////////////////////////////////////////////////
void DelayUs(unsigned int iDelay_Us)
{
uint iNumber1,iNumber2;
for(iNumber1=0;iNumber1 {
for(iNumber2=0;iNumber2<3;iNumber2++);
}
}
////////////////////////////////////////////////////////////////////////
函數名稱(chēng):FMQ_PlaySong
函數功能:控制實(shí)驗板上與蜂鳴器相連的引腳輸出不同的頻率的方波,依次來(lái)控制蜂鳴
器唱歌
參數介紹:cNumber:歌曲的選擇,0代表“祝你平安”,‘1’代表“路邊的野花不要采”
返回值: 無(wú)
注意事項:無(wú)
////////////////////////////////////////////////////////////////////////
void FMQ_PlaySong(unsigned char cNumber)
{
uchar cTemp1,cTemp2;
uint iAddr;
cCount = 0;//中斷計數器清0
iAddr = cNumber * 217;//歌曲的地址,可以參看SONG[],你就會(huì )明白
while(1)
{ //把音碼變量數組里的值賦給臨時(shí)變量
cTemp1 = SONG[iAddr++];
if (cTemp1 == 0xFF) //休止符
{
TR0 = 0;
DelayUs(100); //延時(shí)
}
else if (cTemp1 == 0x00) //判斷是否歌曲結束
{
return;
}
else
{
cTemp2 = SONG[iAddr++];//判斷完,不是休止符與結束符后,讓蜂鳴器唱歌
TR0 = 1; //讓定時(shí)器0開(kāi)始工作
while(1)
{
FMQ = ~FMQ; //讓蜂鳴器不停地在開(kāi)與關(guān)之間切換
DelayUs(cTemp1);
if(cTemp2 == cCount)
{
cCount = 0;
break;
}
}
}
}
}
////////////////////////////////////////////////////////////////////////
函數名稱(chēng):main
函數功能:完成系統的初始化,讓實(shí)驗板上的蜂鳴器不停循環(huán)的唱上面的兩首歌
參數介紹:無(wú)
返回值: 無(wú)
注意事項:無(wú)
////////////////////////////////////////////////////////////////////////
void main()
{
DelayUs(100); //穩定系統
Init_Time0();//定時(shí)器0中斷初始化
while(1)
{
FMQ_PlaySong(0); //播放“祝你平安”
DelayUs(100); //延時(shí)一下,以便播放下一首歌
FMQ_PlaySong(1); //播放“祝你平安”
DelayUs(100); //延時(shí)一下,以便播放下一首歌
}
}



關(guān)鍵詞: STC89C52單片機蜂鳴

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>