开篇先说一句废话····
本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛!
蜂鸣器是个啥
蜂鸣器一般分为两种,一种是无源蜂鸣器,一种是有源蜂鸣器。
电磁式蜂鸣器就是有源蜂鸣器,由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器是无源蜂鸣器,由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
工作原理
无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出,无源他激型蜂鸣器的工作发声原理图如下:
源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号,有源自激型蜂鸣器的工作发声原理图如下:
调整蜂鸣器的音调,控制蜂鸣器的声音大小
改变输出波形的频率 --> 调整音调
改变高低电平占空比 --> 控制大小
这里要解释下,占空比 :
在周期型的现象中,某种现象发生后持续的时间与总时间的比。
例如,在俗语中有句话:「三天打渔,两天晒网」,是说一共三天,有一天是打渔,两天是晒渔网。打渔的占空比为1/3。
蜂鸣器在单片机中的使用
因为用的是无源蜂鸣器,所以要想让其发声,就必须给其加一定的频率,才能出声,所以用延迟函数来加间隔。
#include "reg51.h"
#include <intrins.h>
sbit beep=P1^5; //蜂鸣器接在p15口上
//延时函数
void Delay(unsigned int x) //@11.0592MHz
{
unsigned char i, j;
while(x>0){
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
x--;
}
}
void main(){
beep=1;
while(1){
beep=~beep;
Delay(10);
}
}
发现蜂鸣器已经响了,如果结合LED的流水灯,让其每一次亮一次灯,
只需加入
#define led P2
led=0xfe;
P2=_crol_(P2,1);
仿真电路
终结语
有点遗憾的就是,不能调蜂鸣器的音调,控制声音大小,频率快一点,声音能听清,慢一点,就容易让人忽略。
卖家给的蜂鸣器的原理图比起视频里少了一部分,不能很好的玩蜂鸣器。
部分蜂鸣器的介绍来自百度百科。
补充
这次补充的内容其实很简单,就是改变蜂鸣器的控制声音的大小,但是实现下来我觉得我改变的是它的音调,在区分音调和音量这块我个人不是很分得清,请读者自行分析
就是通过改变Delay()函数的参数来实现对蜂鸣器的控制,比如Delay(1) 和Delay(2) 的声音区别很明显。