• 【单片机】【让蜂鸣器发声】认识蜂鸣器,让蜂鸣器发出你想要的声音


    单片机中的蜂鸣器

    1. 三极管

    三极管是一种控制电流的半导体器件,作用是把微弱信号放大成幅度值较大的电信号(射频方法),也用作无触点开关(用作开关)。

    简单来说,三极管具有电流放大作用

    三极管全称为半导体三极管,或双极型晶体管、晶体三极管,有两种封装方式:直插式和贴片式。

    三极管的工作原理:三极管内部有两种电路排布,一种是PNP型,一种是NPN型,二者之间只是电流流向不同。

    三极管有三个引脚,分别是BASE(基极)、EMITTER(发射极)、COLLECTOR(集电极)。三极管内部电路如下,左边是NPN型,右边是PNP型。

     PNP型:当B极(基极)电流大于1mA时,或基极电压小于发射极电压时,集电极与发射极之间导通,有电流通过。

    NPN型:当基极电位高于发射极点为零点几伏时,发射结处于正偏状态,而集电极电位高于基极电位几伏时,集电结处于反偏状态,集电极电源要高于基极电源。

    对于NPN管,它是由2块N型半导体中间夹着一块P型半导体所组成,发射区与基区之间形成的PN结称为发射结,而集电区与基区形成的PN结称为集电结,

     2. 认识蜂鸣器

    单片机上的蜂鸣器实物如下,左边有绿色电路板的是有源蜂鸣器,右边用黑胶封起来的是无源蜂鸣器。

    根据是否含有振荡电路,可以把蜂鸣器分为有源蜂鸣器和无源蜂鸣器。

    有源蜂鸣器由高低电平直接控制发声,而无源蜂鸣器需要一定频率的脉冲触发发声。

    电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳组成。工作原理是:接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。该种蜂鸣器有振荡电路,属于有源蜂鸣器。

    压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳灯组成。工作原理是:多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5V~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。该种蜂鸣器属于无源蜂鸣器。

    蜂鸣器需要通过放大电路放大驱动电流才能工作。

    对于无源蜂鸣器来说,

    改变单片机引脚输出波形的频率,可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音;
    该百年输出电平的高低电平占空比,可以控制蜂鸣器的声音大小。

    3. ULN2003芯片简单介绍

    前面说到蜂鸣器要发出声音需要通过放大电路,在【普中51-单核-A2板子】上,使用ULN2003芯片起到放大电流的作用。

    ULN2003是耐高压、大电流达林顿陈列,由七个硅NON达林顿管组成。

    ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡灯控制电路中,可直接驱动蜂鸣器、继电器等负载。

    4. 蜂鸣器相关电路

    蜂鸣器通过放大电路连接到P1^5,通过控制P1^5端口的高低电平形成脉冲,触发蜂鸣器发声。

    1. sbit beep = P1^5;
    2. void ring_buzzer()
    3. {
    4. beep = 0;
    5. while(1)
    6. {
    7. beep = ~beep;
    8. delay_ms(100);
    9. }
    10. }

    与流水灯综合应用,制作流水灯,灯亮蜂鸣器发出响声

    1. /************************************************************
    2. P1口接8个LED,共阳极,P37接蜂鸣器
    3. 制作流水灯,灯亮蜂鸣器发出响声
    4. ************************************************************/
    5. #define LEDP1 P1
    6. sbit beep = P3^7;
    7. void led_p1_beep_p37()
    8. {
    9. u8 i=0;
    10. u16 delay_times = 10000; // 200ms
    11. // 初始状态
    12. P1 = ~0x01;
    13. delay_ms(delay_times);
    14. while(1)
    15. {
    16. for(i=0;i<7;i++)
    17. {
    18. P1 = _crol_(P1,1); // 左移一位
    19. beep = ~beep;
    20. delay_ms(delay_times);
    21. }
    22. for(i=0;i<7;i++)
    23. {
    24. P1 = _cror_(P1,1); // 左移一位
    25. beep = ~beep;
    26. delay_ms(delay_times);
    27. }
    28. }
    29. }

    ​​​​​​​Proteus仿真显示结果:

     5. 利用蜂鸣器制作音乐

    参考:STC89C52单片机蜂鸣器介绍以及《孤勇者》歌曲代码示例_牛油果爱吃小猪的博客-CSDN博客_51单片机蜂鸣器音乐代码

  • 相关阅读:
    Tomcat工作原理 + Tomcat生命周期实现剖析(下期)
    【新知实验室 TRTC&IM】实时互动课堂最佳实践
    数据库 varchar 类型应该设计多长?
    自定义终结符:EOF
    组件的自定义事件①
    10.3 调试事件转存进程内存
    vue入门简单学习
    搜题公众号题库系统搭建
    VOP —— Noise
    代码随想录算法训练营day35 | 0-1背包理论基础、416. 分割等和子集
  • 原文地址:https://blog.csdn.net/sinat_41752325/article/details/125381155