在江科大发布的视频中有一节介绍蜂鸣器使用的部分先展示一下蜂鸣器图片
下面这张是无源蜂鸣器的电路图
然后介绍一下驱动蜂鸣器的芯片,这里在看江科大的可能有点疑惑,特别是在进行写代码实操时,可能会出现与芯片部分衔接不好的情况出现(这是我的问题哈,大佬忽略)
下面先介绍一下驱动芯片(ULN2003D)
这里图片提到一个非门,这个芯片的关键部分,也就是为什么写代码时会出现的这句Buzzer = !Buzzer代码。
在这里提一下C语言中i=!a的意思是将a取非的值赋值给i,也就是如果a=0,那么代码中i=1。
回到这句Buzzer = !Buzzer代码中来,刚开始芯片是通电的,也就是说P25口这时为“1”,通电的意思。所以在启动单片机的瞬间会听到蜂鸣器响,就是因为这时芯片驱动了蜂鸣器。
当P25口给“1”,经过非门转换到达OUT5时为“0”,这时BEEP连接着蜂鸣器
BEEP为“0” ,VCC为“1”,就是一个通路。到达这里NL2003D芯片驱动蜂鸣器基本说清楚了。
下面讲解代码
void Buzzer_Time(unsigned int ms)
{
unsigned int i=0;
for(i=0;i<ms*2;i++)
{
Buzzer = !Buzzer;
Buzzer_Delay500us();
}
}
在Buzzer = !Buzzer代码之后,出现一句Buzzer_Delay500us()代码,这句代码就是每次电流通过之后都会有一次延迟,延迟的目的控制声音。