|
` 本次讲解一下蜂鸣器的驱动方式,首先我们先看一下文档中的原理图关于蜂鸣器的部分(如下图所示)。
从图中我们可以看到,在蜂鸣器的前端我们增加了一个8050的三极管作为驱动,增加三极管的原因是因为单片机IO的驱动能力是有限的,蜂鸣器的驱动需要较大的电流,这个大电流一般是超过单片机规格书上要求的IO电流的承受范围的,因此如果直连会烧毁单片机。通过三极管的放大作用可以给蜂鸣器提供充足的电流,具体的三极管的放大原理在这就不赘述bilibili上有很多视频讲解的。冒昧的给板子的设计者大大提个小意见,我觉得这个电路设计上也是有一定的问题的,我们这块开发板是衔接学习和工作的那就应该培养一个工程师严谨的意识,所以这个电路应该像原子哥的战舰一样去设计,如下图所示。 我们可以看一下这个电路中的R60这个电阻,在一定程度上这个电阻可以减小三极管“漏电”和上电状态不确定导致的蜂鸣器沙沙响的问题,笔者曾经参加蓝桥杯比赛的时候一上电蜂鸣器bbbbbb响个不停,一定程度上来说就是上电瞬间IO状态未知导致了蜂鸣器发出了响声。 下面我们说一下蜂鸣器的种类,蜂鸣器有两种一种是仅仅需要一个电平信号就可以驱动的有源蜂鸣器和需要跳变信号控制的无源蜂鸣器。相对来说呢有源蜂鸣器更好驱动仅仅一个电平信号就可以了,但是有源蜂鸣器和无源蜂鸣器相比价格稍微高一点并且有源蜂鸣是内部起震的无法控制蜂鸣器的震荡的频率和响度所以一般在工程设计上还是采用无源蜂鸣的比较多。UFUN开发板上的这颗蜂鸣器就是无源的蜂鸣器,因此仅仅需要跳变的电平信号即可。 抛开这些问题不说蜂鸣器的驱动简直不能说再简单了,仅仅需要一个跳变的电平信号。最简单的驱动方式就是采用delay延时的方式或者是采用定时器延时的方式下面我附上我写的代码仅供测试和参考。
`
|