欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機驅動蜂鳴器
[打印本頁]
作者:
Kansa
時間:
2018-10-5 19:46
標題:
51單片機驅動蜂鳴器
蜂鳴器
會
根據輸入的脈沖發聲,脈沖頻率不一樣發出的聲音也不一樣
。
Proteus中提供有3種聲音部件:BUZZER、SPEAKER、SOUNDER。
輸入的脈沖頻率
用延時函數或計時器來實現。
在這里我將
通過獨立按鍵啟動警燈警笛(頻率和節拍可能控制的不準確,僅供參考),控制報警燈旋轉(旋轉燈用
8個LED燈實現旋轉時低3位亮,然后每次左移一位形成旋轉顯示),并讓蜂鳴器發出警報聲(即通過定時產生兩種不同頻率的輸入脈沖給蜂鳴器)。
蜂鳴器驅動.zip
(18.23 KB, 下載次數: 12)
2018-10-5 19:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-10-7 01:08
0.png
(18.21 KB, 下載次數: 47)
下載附件
2018-10-7 01:08 上傳
單片機源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar fre=0x00;
sbit BEEP=P2^3;
uchar temp=0xf8;
uchar num=0;
uint num1;
uint index=1;
uint code SONG_TONE[]={7360,7835};
uint code SONG_LONG[]={275,265};
bit flag=0;
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
void PlayMusic()
{
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{ //播放各個音符,SONG_LONG為拍子長度
for(j=0;j<SONG_LONG[i]*20;j++)
{
BEEP=~BEEP;
//SONG_TONE延時表決定了每個音符的頻率
for(k=0;k<SONG_TONE[i]/3;k++);
}
DelayMS(10);
i++;
}
}
void main()
{
TMOD=0x01;//定時器0,工作方式1
TH0=55536/256;
TL0=55536%256;
TH1=7192/32;
TL1=7192%32;
EA=1;//打開全局中斷允許
EX0=1;//打開外部中斷0中斷
IE0=1;//外部中斷0請求
IT0=1;//外部中斷0下降沿觸發
ET0=1;//打開定時器/計數器0中斷
ET1=1;
TR0=0;//關閉定時器0
TR1=0;
while(1) {
//if(flag==0)
//PlayMusic();
}
}
void EX_INT0() interrupt 0
{
P0=0xff;
TR0=~TR0;
TR1=~TR1;
flag=~flag;
BEEP=1;
}
void ET_T0() interrupt 1
{
num++;
TH0=55536/256;
TL0=55536%256;
if(num==10)
{
P0=temp;
temp=_crol_(temp,1);
num=0;
}
}
void ET_T1() interrupt 3
{
TH1=SONG_TONE[index]/32;
TL1=SONG_TONE[index]%32;
num1++;
BEEP=~BEEP;
if(num1==SONG_LONG[index])
{
num1=0;
index=(index+1)%2;
BEEP=1;
}
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1