51单片机之蜂鸣器,有源蜂鸣器和无源蜂鸣器的区别,简叙三极管

有源蜂鸣器和无源蜂鸣器

这里的“源”不是指电源。而是指震荡源

我们知道,纸盆扬声器能发出声音是因为纸盆的振动,要想纸盆振动,就要让经过扬声器线圈的电流“通”、“断”、“通”、“断”......


有源蜂鸣器内部有震荡源,只要给它施加电流,它就会自动地“通”、“断”、“通”、“断”......,发出声音,所以编程的时候只需令它两端有电压差就行了。但是它的震荡源的频率是固定的,故发出声音的频率不能变,即只能发出一种音调。

无源蜂鸣器内部没有震荡源,想使它发出声音,要在编程时使它两端的电压差是“高”、“低”、“高”、“低”......虽然在编程的时候复杂一点,但是我们可以通过控制蜂鸣器两端电压的频率来控制其发出声音的音调。

简叙三极管

三极管分为PNP型和NPN型。B(BASE)基极,E(EMITTER)发射极,C(COLLECTOR)集电极。这两型只是C和E位置不同,可以进行类比。这里我只拿PNP型来说。



三极管的用处简单来说就是小电流驱动大电流。

小电流有多小呢?当然也不能太小,假设这个小电流需要大于1mA吧。



蜂鸣器用小电流驱动不起来,但是单片机不能输出大电流,需要额外的电源为蜂鸣器提供大电流。通过三极管,我们就可以通过单片机输出的小电流控制通过蜂鸣器的大电流。

所以蜂鸣器的电路长这个模样


P23引脚内部接有上拉电阻。(通俗解释,“上拉”,电压往上拉,即高电平5V。“电阻”,这条支路上接有一个电阻)

编程思路

VCC电位也是5V,R10电阻两端不存在压差,电流为0A,没有达到所需的“小电流”。编程P23引脚为低电平,达到“小电流”,蜂鸣器支路导通,发出声音。

#include <reg52.h>

sbit beep = P2^3;  //P23引脚位定义,命名为beep

void delay(unsigned int z)
{
    unsigned int x, y;
    for(x = z; x > 0; x--)
        for(y = 114; y >0; y--);
}

void main()
{
    while(1)
    {
        beep = ~beep;  //按位取反,原来是0就变1;原来是1,就变0
        delay(100);  //延时100ms,不要让它一直叫
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 13,541评论 0 7
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,070评论 0 13
  • 电路,顾名思义就是指由基本元件组成的电流通路,它主要有两个功能:一个是处理能量,包括能量的产生、传输、分配和使用等...
    小马爱读书阅读 4,787评论 0 6
  • Retrofit2的好处 超级解耦 解耦?解什么耦? 我们在请求接口数据的时候,API接口定义和API接口使用总是...
    穷极_d8f1阅读 276评论 0 0
  • 那天,我住院了,我终于住院了,我到底还是住院了。住院的原因是,医生说,要取出寄居在我身体里二十多年的冗物。我...
    云游天下看世界阅读 329评论 1 6