1.介绍
蜂鸣器分为有源蜂鸣器和无源蜂鸣器。这里的“源”不是指电源,而是指震荡源。
1.1、无源蜂鸣器
(1)早期蜂鸣器都是无源的。
(2)内部没有震荡电路,无源蜂鸣器比有源蜂鸣器更便宜。
(3)无源蜂鸣器内部没有震荡源,需要采用一定频率的方波才可以驱动发声。
(4)通过控制方波频率可以控制蜂鸣器的音调。
(5)声音大小由硬件决定,不能通过单片机程序改变。
(6)物体振动越快,频率越高,音调越高尖。
1.2、有源蜂鸣器
(1)内部有震荡电路,有源蜂鸣器比无源蜂鸣器贵。
(2)只要供电就会发出声音。
(3)不能改音调。
2.原理图
#include <REGX52.H> typedef unsigned char u8; typedef unsigned int u16; //重新定义蜂鸣器的管脚 sbit BEEP=P2^5; //定义延时函数,ten_us=1,大约延时10us; void delay_10us(u16 ten_us) { while(ten_us--); } // 有且只有一个 void mian() { u16 i = 9000; while(1) { while(i--) { //产生一定频率的脉冲信号:不断输出高低信号 BEEP=!BEEP; //蜂鸣器频率是1毫秒,100us等于1毫秒 delay_10us(100); } i=0; BEEP=0; } }
#include <REGX52.H> typedef unsigned char u8; typedef unsigned int u16; //重新定义蜂鸣器的管脚 sbit BEEP=P2^5; //定义延时函数,ten_us=1,大约延时10us; void delay_10us(u16 ten_us) { while(ten_us--); } // 有且只有一个 void mian() { u16 i = 9000; while(1) { while(i--) { //产生一定频率的脉冲信号:不断输出高低信号 BEEP=0; //改变脉冲来调节声音大小 delay_10us(50); BEEP=1; delay_10us(150); } i=0; BEEP=0; } }