A. 急求無源蜂鳴器的驅動程序,單片機是51的
無源蜂鳴器驅動薯旦,只需定時將塵衫管腳2端電平取反即可
如讓其響1S,頻率約500HZ,可用軟延時
uint i;
for(i=0;i<1000;i++)
{
P1^0=~P1^0;
delay_ms(1);
}
如果想長時間響,並且還不佔用CPU,可以用定派手腔時器實現定時中斷取反
B. 單片機驅動蜂鳴器的程序,原理不懂,為什麼能用定時器工作方式1來驅動
用定時器的工作方式1是用其16位的數據,也就是說數據范圍是最大的,可以做到頻率更精確,TR0在子程序PlayMusic裡面,因為是播放音樂,所以需要較為嚴格的控制定時器的啟停,所以沒有開始初始化時就打開定時器。
C. 51單片機之蜂鳴器
蜂鳴器是一種一體化結構的電子訊響器,採用直流電壓供電,廣泛應用於計算機、列印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。我們開發板上常用的蜂鳴器就是常常說的交流蜂鳴器或直流蜂鳴器(自激式蜂鳴器)。 直流蜂鳴器是給一定的驅動直流電壓就會響。而交流蜂鳴器是需要給蜂鳴器一個脈沖才會響。常見的有PWM波控制蜂鳴器的頻率。脈沖就是高低電平的切換,如下圖:一個方波脈沖
我們用單片機的IO口實現一種這樣高低電平的方波,驅動蜂鳴器發音。我們板子上配的就是交流蜂鳴器。
接下來我們看一下蜂鳴器的硬體電路:
蜂鳴器通過三極體驅動。我們利用杜邦線將蜂鳴器的一端J8連接到板子上P1.5管腳上。
示常式序:
#include "reg52.h"
#include "intrins.h"
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit beep = P1^5;
void delay(uint16 i)
{
while(i--);
}
void main()
{
while(1)
{
beep = ~beep;
delay(10);
}
}
該程序實現蜂鳴器的響和停,程序較為簡單,可以在此基礎上進行擴展。
D. 求51單片機蜂鳴器程序
#include<reg51.h>
sbit buzzer = P1^0 ;聲明區
void delay(int) ;
void pulse_BZ(int,int,int);聲明函數void main(void)
{
while(1)
{
pulse_BZ(500,1,1); 調用發聲
delay(1000); 延時1000 X 0.5ms
pulse_BZ(500,1,1);
delay(1000);
pulse_BZ(500,1,1);
delay(1000);
pulse_BZ(200,1,1);
delay(1000);
pulse_BZ(200,1,1);
delay(1000);
}
}void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<60;j++);
}void pulse_BZ(int count;int TH;int TL)
{
int i;
for(i=o;i<count;i++) //循環count次,時間count x 1ms
{
buzzer=1; //此程序段產生1HZ 信號
delay(TH);
buzzer=0;
delay(TL);
}
}
E. 關於單片機驅動蜂鳴器發出滴滴的聲音的程序怎麼寫
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit SPK=P1^0;
sbit K1=P1^7;
//發聲函數,注意這里是用揚聲器,不能用普通的蜂鳴器
void Alarm(uchar t)
{
uchari,j;
for(i=0;i<200;i++)
{
SPK=~SPK;
for(j=0;j<t;j++); //由參數t行成不同的頻率產生不同的聲音
}
}
voidmain()
{
SPK=0;
while(1)
{
if(K1==1)
{
Alarm(90);
Alarm(120);
}
}
}
F. 單片機驅動蜂鳴器電路
單片機驅動蜂鳴器電路如下:
蜂鳴器經常用於電腦、列印機、萬用表這些設備上做提示音,提示音一般也很簡單,就是簡單發出個聲音就行,我們用程序簡單做了個 4KHZ 頻率下的發聲和 1KHZ 頻率下的發聲程序代碼如下:
#include
sbit BUZZ = P1^6; //蜂鳴器控制引腳
unsigned char T0RH = 0; //T0 重載值的高位元組
unsigned char T0RL = 0; //T0 重載值的低位元組
voidOpenBuzz(unsigned int frequ);
void StopBuzz();
void main(){
unsigned int i;
TMOD = 0x01; //配置 T0 工作在模式 1,但先不啟動
EA = 1;
while(1){ //使能全局中斷
OpenBuzz(4000); //以 4KHz 的頻率啟動蜂鳴器
for (i=0; i<40000; i++);
StopBuzz(); //停止蜂鳴器
for (i=0; i<40000; i++);
OpenBuzz(1000); //以 1KHz 的頻率啟動蜂鳴器
for (i=0; i<40000; i++);
StopBuzz(); //停止蜂鳴器
for (i=0; i<40000; i++);
}
}
/* 蜂鳴器啟動函數,frequ-工作頻率 */
void OpenBuzz(unsigned int frequ){
unsigned int reload;//計算所需的定時器重載值
reload = 65536 - (11059200/12)/(frequ*2); //由給定頻率計算定時器重載值
T0RH = (unsigned char)(reload >> 8); //16 位重載值分解為高低兩個位元組
T0RL = (unsigned char)reload;
TH0 = 0xFF; //設定一個接近溢出的初值,以使定時器馬上投入工作
TL0 = 0xFE;
ET0 = 1; //使能 T0 中斷
TR0 = 1; //啟動 T0
}
/* 蜂鳴器停止函數 */
void StopBuzz(){
ET0 = 0; //禁用 T0 中斷
TR0 = 0; //停止 T0
}
/* T0 中斷服務函數,用於控制蜂鳴器發聲 */
void InterruptTimer0()interrupt1{
TH0 = T0RH; //重新載入重載值
TL0 = T0RL;
BUZZ = ~BUZZ; //反轉蜂鳴器控制電平
}
G. 單片機驅動無源蜂鳴器的C程序問題
void delay();
void main()
{
PORTD = 0xFF;
DDRD = 0xFF;//初始化 AVR的不知道是不是這樣的
while(1)
{
int i;
for(i=0;i<3;i++)
{
PORTD=0x01;//蜂鳴器IO
_delay(X);//x為響一次「滴」鍵世的時型亮嫌間
}
PORTD=0x00;
delay(Y);//Y為你所說的 間隔1S想一次(改變Y值 調試你要的1s或用你的延時函數里的
}
}
void delay(int t)
{
int i,j;
for(i=0;i<卜手t;i++)
for(j=0;j<300;j++);
}
H. 怎麼用單片機C語言編寫驅動蜂鳴器發出7個音的電路圖和程序代碼(最好有解釋)。
搜:
基於51單片機的4×4矩陣鍵盤電子琴
網路一下。
I. C51 單片機控制蜂鳴器程序
把2個蜂鳴器的頻率各寫成一個函數。
然後主函數里這樣寫
if (key1 == 0)
"執行1蜂鳴器頻率"
else if (key2 == 0)
"執行2蜂鳴器頻率"
J. 51單片機蜂鳴器程序是什麼
51單片機蜂鳴器程序為:
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
void delay(u16 i)
{
while(i--);
}
void main()
{
while(1)
{
beep=~beep;
delay(1000);//控制音調頻率
beep=~beep;/控制聲音大小
delay(10);
}
}
(10)單片機蜂鳴器驅動程序擴展閱讀:
BUZZER蜂鳴器的分類:
1、按其驅動方式的原理分,可分為:有源蜂鳴器(內含驅動線路,也叫自激式蜂鳴器)和無源蜂鳴器(外部驅動,也叫他激式蜂鳴器)。
2、按構造方式的不同,可分為:電磁式蜂鳴器和壓電式蜂鳴器。
3、按封裝的不同,可分為:DIP BUZZER(插針蜂鳴器)和SMD BUZZER(貼片式蜂鳴器)。
4、按電流的不同,可分為:直流蜂鳴器和交流蜂鳴器,其中,以直流最為常見壓電式蜂鳴器,用的是壓電材料,即當受到外力導致壓電材料發生形變時壓電材料會產生電荷。同樣,當通電時壓電材料會發生形變。
電磁式蜂鳴器,主要是利用通電導體會產生磁場的特性,用一個固定的永久磁鐵與通電導體產生磁力推動固定在線圈上的鼓膜。
由於兩種蜂鳴器發音原理不同,壓電式結構簡單耐用但音調單一音色差,適用於報警器等設備。而電磁式由於音色好,所以多用於語音、音樂等設備。