A. 单片机引脚可以直接驱动蜂鸣器吗一定采纳
这还得单片机的电气特性,5V小型蜂鸣器至少约需要10mA电流,最大一般30mA。通常单片机很难输出这么大的电流,适宜采用电流流入方式。
我知道的STC采用开漏方式是可以将蜂鸣器直接连单片机IO管脚,另外电磁炉上的蜂鸣器通常也是直接连IO管脚的。
B. 单片机蜂鸣器工作原理是什么哪位高手可以指教一下
蜂鸣器工作发声原理:
蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型。
无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出。
有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号。
电路原理:PORTC.3/T0 作为I/O 口通过三极管Q2 来驱动蜂鸣器LS1,而PORTC.2/PWM0 则作为PWM 输出口通过三极管Q1 来驱动蜂鸣器LS2。另外在PORTA.3 和PORTA.2 分别接了两个按键,一个是PWM 按键,是用来控制PWM 输出口驱动蜂鸣器使用的;另一个是PORT 按键,是用来控制I/O 口驱动蜂鸣器使用的。连接按键的I/O 口开内部上拉电阻。
(2)单片机驱动蜂鸣器扩展阅读:
蜂鸣器的应用领域
蜂鸣器广泛应用领域:计算机行业(主板蜂鸣器,机箱蜂鸣器,电脑蜂鸣器)打印机(控制板蜂鸣器)、复印机、报警器行业(报警蜂鸣器,警报蜂鸣器)、电子玩具(音乐蜂鸣器)、农业、汽车电子设备行业(车载蜂鸣器,倒车蜂鸣器,汽车蜂鸣器,摩托车蜂鸣器)电话机(环保蜂鸣器)、定时器,空调,医疗设备等电声行业。
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. 单片机驱动蜂鸣器电路
单片机驱动蜂鸣器电路如下:
蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个 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; //反转蜂鸣器控制电平
}
E. 单片机驱动蜂鸣器的电路分析
你所说的情况并不限制与蜂鸣器的驱动,包括常用的继电器,指示灯等很多情况(布尔控制器件)都会遇到。
设计这种电路,首先是要考察驱动的对象,看其正常工作的额定电流和电压。根据电流和电压参数选择三极管的,一般要保证三极管的最大Ic要大于等于1.5倍驱动对象的额定电流,Vce要大于等于1.2倍驱动器件的额定电压,如果是感性负载(如继电器),还必须在负载上反向并联吸收二极管,以防止感生电压过高损坏三极管。
选择好三极管后,根据三极管手册给出的最小放大倍数和驱动器件的最大工作电流计算所需要的Ib,根据这个Ib查询三极管数据手册,看看是否在三极管的安全工作范围中,如果超出就必须要重新选择三极管,如果合用,则计算Rb。
三极管的Vbe基本上可以取一个定值0.7V,查询单片机手册在既定工作电压下IO端口的高电平输出电压,用此电压减去0.7V,再除以之前所得的Ib,得出所需的Rb,这个Rb可能不是标准电阻,取最接近的标准电阻,记住,只能取小值(以保证三极管能处于饱和状态),验算实际Ib是不是在三极管的安全范围之内。
F. 求助.单片机驱动蜂鸣器时,声音很小
用单片机的引脚直接驱动蜂鸣器,声音肯定小,不可能大呀。
因单片机的引脚的驱动能力很小,不能直接驱动蜂鸣器的。
首先,要看你的单片机是什么型号的,如果是STC10及以上系列的单片机,I/O设置为强推挽模式才可以。
其它型号的单片机,就必须用一个三极管放大后再驱动蜂鸣器了。
G. 单片机可以直接驱动一个蜂鸣器吗
蜂鸣器的工作电流一般比较大,以致于单片机的i/o
口是无法直接驱动的(但avr可以驱动小功率蜂鸣器),所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。