无源蜂鸣器(普中A2)
    原理图
    image.png
    beep可以编在任意管脚(当原理图无所匹配时)
    无源的,必需给晶体管的基极加注信号电压,一般是由单片机直接提供的间断脉冲信号通过晶体管驱动蜂鸣器产生声音。

    1. #include "reg51.h"
    2. //蜂鸣器
    3. typedef unsigned char u8;
    4. typedef unsigned int u16;
    5. sbit beep=P1^5; //定义管脚
    6. void delay(u16 i)
    7. {
    8. while(i--);
    9. }
    10. void main()
    11. {
    12. while(1)
    13. {
    14. beep=~beep;
    15. /*将电平取反,上拉电阻默认高电平,到蜂鸣器为低电平,所以再次 取反为高电平,在循环里不断变化,使蜂鸣器发声*/
    16. delay(10);
    17. /*高低电平不断转化,形成脉冲*/
    18. }
    19. }

    有源蜂鸣器
    原理图
    image.png
    有源的,只是用单片机给个开关电平就可以了,晶体管只是开关作用。
    定义特殊管脚,beep=0即响。