① 怎樣控制51單片機的蜂鳴器發出不同頻率的聲音
用定時器來產生頻率,如產生100Hz的聲音。x0dx0a思路:x0dx0a100Hz即每秒變換200次,每次的時間就是1/200秒=0.005秒=5毫秒。x0dx0a計算定時器的初值:TH0 = 0x0EE; TL0 = 0x00;x0dx0a x0dx0a#include
② 51單片機如何把矩陣鍵盤控制數碼管和獨立鍵盤控制蜂鳴器共同實現
我們先了解矩陣鍵盤的工作原理,掌握編碼方法並能夠編寫出掃描程序,使用矩陣鍵盤控制數碼管輸出矩陣鍵值。
顯示內容
在顯示備橘祥模塊的八位 LED 數碼的個位顯示當前使用矩陣鍵盤所按下的值。
鍵陣鍵盤多用於鍵伍李數目較多的時候。這樣可以更多的節省IO口的佔用量,
對於矩陣鍵盤常用的掃描方法為線反轉查詢法。具體的思路是:首先使行作為輸入,使用單片機內部仿搏電阻上拉為高電平,列輸出低電平,讀行的狀態。如果行有一個IO口是低,說明有鍵按下,進行下一步,否則退出掃描。如果有鍵按下,置列為輸入,行輸出低電平,讀列的狀態。最後根據
行列的狀態查表就可以知道是那個按鍵按下。
③ 如何用stc15f2k60s2單片機加按鍵控制無源蜂鳴器分別發出1,2,3的聲音
需要編程控制,首先需要一個模擬發聲的功能函數,函數包含兩個時間控制循環一個控制聲音的頻率另一個控制聲音的長度;其次程序中還要有一個按鍵控制函數,兩個函數配合使用就可以達到你要的效果了,在此只能提供編程思路,具體代碼請網路搜索。
④ 在單片機匯編語言里,我用一個按鍵控制蜂鳴器控制播放音樂,請問,我該如何在用這個按鍵控制關斷
這個很容易的,一般而枯困言,播放音樂都是通過定時器來控制旋律或節拍的,你只要根據按鍵狀態根據設中並計要求,改沒培念變TR0或TR1的值就可以關斷或開啟了。
⑤ 單片機按鍵蜂鳴器響5秒就停
單片機按鍵蜂鳴器響5秒就停的原因如下:
1、電路接觸不良。重新接電路即可。
2、電壓悄基達不到。改變硬體,使蜂鳴器在控制的IO口為低電平時老敏響,並改動程序的相應部分。啟含謹
⑥ 51單片機C語言控制按鍵蜂鳴器
unsigned char flag=1; //定義上升沿ready標志
while(1)
{
if(key1&&flag) // 默認key1下拉至GND,若產生上升沿,則響一次,同時清零兆陵洞標志
{
SPK=1;
delay();
SPK=0;
flag=0;
}
if(!key1) { flag=1;} //檢測key1是否歸零 准備第二次上升沿,是族枯,則標志位置1
......
}
僅供參考汪禪
⑦ 51單片機用按鍵控制蜂鳴器發出do re mi fa...的聲音,
T0H EQU30H
T0LEQU31H
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0ISR
ORG0030H
MAIN:
MOVSP,#5FH
MOVTMOD,#01H
SETBET0
SETBEA
LOOP:
MOVDPTR,#FREQ
MOVA,P2 ;控制高中低音區
MOVR1,#0
ANLA,#03H
JBACC.0,LOOP01
MOVR1,#14
SJMPLOOP0
LOOP01:
JBACC.1,LOOP0
MOVR1,#28
LOOP0:
JBP0.0,LOOP1 ;控制音頻1234567
MOVA,R1
MOVCA,@A+DPTR
MOVT0H,A
INC扮攔DPTR
MOVA,R1
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP1:
JBP0.1,LOOP2
MOVA,R1
ADDA,#2
MOVCA,@A+DPTR
MOVT0H,A
INCDPTR
MOVA,R1
ADDA,#2
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP2:
JBP0.2,LOOP3
MOVA,R1
ADDA,#4
MOVCA,@A+DPTR
MOVT0H,A
INCDPTR
MOVA,R1
ADDA,#4
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP3:
JBP0.3,LOOP4
MOVA,R1
ADDA,#6
MOVCA,@A+DPTR
MOVT0H,A
INCDPTR
MOVA,R1
ADDA,#6
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP4:
JBP0.4,LOOP5
MOVA,R1
ADDA,#8
MOVCA,@A+DPTR
MOVT0H,A
INCDPTR
MOVA,R1
ADDA,#8
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP5:
JBP0.5,LOOP6
MOVA,R1
ADDA,#10
MOVCA,@A+DPTR
MOVT0H,A
INCDPTR
MOVA,R1
ADDA,#10
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP6:
JBP0.6,LOOP7
MOVA,R1
ADDA,#12
MOVCA,@A+DPTR
MOVT0H,A
INCDPTR
MOVA,R1
ADDA,#12
MOVCA,@A+DPTR
MOVT0L,A
LJMPLOOP
LOOP7:
CLRTR0
LJMPLOOP
;-----------------------------
T0ISR:
CLRTR0
MOVTH0,T0H
MOVTL0,T0L
SETBTR0
CPLP3.0
RETI
;-----------------------------
FREQ:
DB0F2H,03DH ;低音1
DB0F3H,0BDH ;低音2
DB0F5H,014H ;低音3
DB0F5H,0B1H ;低音4
DB0F6H,0D0H ;低音5
DB0F7H,0D1H ;低音配缺頃6
DB0F8H,0B5H ;低音7
DB0F9H,01EH ;中音1
DB0F9H,0DEH ;中音2
DB0FAH,08AH ;中音3
DB0FAH,0D8H ;中音4
DB培陸0FBH,068H ;中音5
DB0FBH,0E8H ;中音6
DB0FCH,05AH ;中音7
DB0FCH,08FH ;高音1
DB0FCH,0EFH ;高音2
DB0FDH,045H ;高音3
DB0FDH,06CH ;高音4
DB0FDH,0B4H ;高音5
DB0FDH,0F4H ;高音6
DB0FEH,029H ;高音7
;-----------------------------
END
⑧ 怎麼使用單片機控制蜂鳴器發聲
蜂鳴器有兩種,一種是無源的,另一種為有源的,確認的方法為:1)看封裝,如果引腳端為PCB板的,一般為無源的,引腳端為樹脂灌封的,一般為有源的。2)加電實驗,用5V電壓點擊接觸引腳時,只有「噠噠」聲的為無源的,發出一個單音響的為有源的。
兩種蜂鳴器用單片機的控制方法是一樣的,對於無源的,要求單片機送出一組斷續的音頻信號,使蜂鳴器按要求發聲,對於有源蜂鳴器,要求單片機送出一組斷續的電脈沖信號,用於分斷蜂鳴器的通斷狀態,而使有源蜂鳴器發出「嘀...嘀」,「嘀...嘀...嘀」等希望的聲音。
無源蜂鳴器舉例:
/**********************************************************************/
//聲響驅動程序 BELL--整點報時(鬧鍾音兩短一長)
/**********************************************************************/
void Beep(void)
{
uint a;//定義變數用於發聲的長度設置
uchar b;
for(b=2;b>0;b--){
for(a=200;a>0;a--){//第一個聲音的長度
beep = ~beep;//取反揚聲器驅動口,以產生音頻
Delay_1us(500);//音調設置延時
}
DelayM(1000);
}
for(a=1000;a>0;a--){//第一個聲音的長度
beep = ~beep;//取反揚聲器驅動口,以產生音頻
Delay_1us(500);//音調設置延時
}
beep = 1;//音樂結束後揚聲器關閉
}
有源蜂鳴器舉例:
void main(void)
{
NB=0;//有源蜂鳴器初始不送電
while(1)
{
NB=0;//有源蜂鳴器斷電
delay(300);//停一段時間
NB=1;//有源蜂鳴器送電
delay(1000);//響一段時間
}
}
⑨ 51單片機 ,用C語言編程 通過獨立按鍵控制蜂鳴器和靜態數碼管,
#include<reg51.h>
#defineucharunsignedchar
uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbitkey=P2^2;
sbitfmq=P2^3;
uchardat;
voiddelay()//延時約10毫秒
{
uchari,j;
for(i=0;i<10;i++)
for(j=0;j<120;j++);
}
main()
{
while(1)
{
if(key==0)
{
delay();
if(key==0)
{
fmq=0;
while(key==0);
fmq=1;
dat++;
dat%=10;
P1=table[dat];
}
}
}
}
⑩ 51單片機用三個按鍵控制報警,任意按兩個按鍵蜂鳴器就報警的程序
設按鍵為k1,k2,k3
void main()
{
char beepflag=0;
while(1)
{
if((k1==0)
beepflag|=0x01;
else
beepflag&=0xFE;
if(k2==0) //按鍵按下腔喚差
beepflag|=0x02;
else
beepflag&=0xFD;
if(k3==0) /鏈基/按鍵按下
beepflag|=0x04;
else
beepflag&=0xFB;
//------------這里判斷字元低三位,如果有其中兩位置一,則開啟蜂鳴器
}
}
思路大概就是這樣,如對您有幫助,請採納,謝謝伍皮!