【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)

简介: 【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)

蜂鸣器实验


在这里插入图片描述

蜂鸣器这个实验最重要的是当IO不足以直接支撑设备时,要使用放大电路的意识。其次的蜂鸣器类型的认识以及代码落实相对都没有这么重要的。


项目实现代码

微信图片_20221019160557.png

刨根问底环节


蜂鸣器介绍


浅看一下,知道有这个东西,就当做硬件常识积累起来就好。

蜂鸣器常常用作电子产品中作发声器件

微信图片_20221019160838.jpg

蜂鸣器的分类

主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。


想要压电式蜂鸣器发声,需提供一定频率的脉冲信号;

想要电磁式蜂鸣器发声,只需提供电源。


压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳

等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工

作电压),多谐振荡器起振,输出1.5~5kHZ 的音频信号,阻抗匹配器推动压电

蜂鸣片发声。


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


蜂鸣器的有源无源之分

51开发板上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型。这里说的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路。

有源蜂鸣器内部自带振荡电路,只需提供电源即可发声;

而无源蜂鸣器则需提供一定频率的脉冲信号才能发声,频率大小通常在1.5-5KHz 之间。


两者的明显差别

对于无源蜂鸣器,可以改变频率调节蜂鸣器音调,产生各种不同音色、音调的声音。如果改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大小。

对于有源蜂鸣器,通常内部已经固定频率,对于调节频率或占空比可能改变不了蜂鸣器的音调和音量


放大电路引入

常规情况下,想要驱动蜂鸣器大约需要30mA的电流

微信图片_20221019161056.png


此时就可以引入咱的应该着重拿捏的思想——放大电路

通过三极管把电流放大后再去驱动蜂鸣器,这样51 单片机的IO 口只需要提供不到1mA 的电流就可控制蜂鸣器。

51单片机中并没有直接简单粗暴的上一个三极管进行电流放大,而是使用ULN2003 芯片来驱动,但是本质仍旧是对电流的放大。


微信图片_20221019161212.png

代码设计


代码要根据开发板文档中提供蜂鸣器电路图来思考咱们要怎么控制它。

微信图片_20221019161319.jpg

这个电路图中涉及一个网络标号的知识点,需要积累一下

简单来说就是具备相同标号的节点,是可以连接在一起的,比如上图中框起来的两个位置节点,其实是相连的。

微信图片_20221019161348.png

从图中可以看出,蜂鸣器控制管脚直接连接到51 单片机的P2.5 管脚上。

这个ULN2003芯片的具体的了,暂时不展开,不然会很冗杂,现在记住在使用ULN2003芯片来驱动的时候,有点像一个非门。当P25输出高电平,BEEP输出低电平;当P25输出低电平,BEEP则输出高电平。

因为使用的是无源蜂鸣器,它需要使用一定频率的脉冲(即出现高低电平)才会发出声音,因此需要让P25引脚用一定的频率不断的输出高低电平信号才能够控制蜂鸣器发出声音。


项目代码

#include "reg52.h"
typedef unsigned int u16; 
typedef unsigned char u8;
sbit BEEP = P2^5;//操作和蜂鸣器相连的P2.5引脚
//延时函数
void delay_10us(u16 ten_us)
{
    while(ten_us--);
}
void main()
{
  u16 i=1,j=2000;
  while(i)
  {
     while(j--)
     {
       //通过反转赋值,产生一定频率的脉冲信号
       BEEP=1;
      delay_10us(190);
      BEEP=0;
      delay_10us(10);
      BEEP = !BEEP;
      delay_10us(100);//延时鸣响一段时间
     }  
    i = 0;//结束循环
    BEEP = 0;//关闭蜂鸣器
  }
}


相关文章
|
10月前
|
存储 芯片
SGM58031与单片机驱动实现
SGM58031与单片机驱动实现
215 0
|
传感器
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
496 0
蓝桥杯之单片机学习(二十八)——详解A/D、D/A、PCF8591、AD与DA的综合使用(附官方驱动的一个坑)
|
6天前
|
传感器
基于51单片机的自动浇花器电路
该文档是一个基于AT89C51单片机的自动浇水灌溉系统的设计方案。系统由5V供电模块、土壤湿度传感器模块、ADC0832模数转换模块、水泵控制模块、按键输入模块、LCD显示模块和声光报警模块组成。它通过检测土壤湿度并将其转换为数字信号,与预设的湿度上下限值进行比较,以决定是否启动水泵进行灌溉。用户可以通过按键设置湿度上下限值,LCD屏幕实时显示当前湿度和上下限值。如果湿度低于下限,系统会启动声光报警并打开水泵;当湿度超过上限,声光报警关闭,但水泵会继续工作,直至湿度下降到下限以下。设计中还提供了Proteus仿真电路图和C代码实现。
18 1
|
6天前
|
存储 芯片
【期末不挂科-单片机考前速过系列P12】(第十二章:单片机的并行拓展例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P12】(第十二章:单片机的并行拓展例题)经典例题盘点(带图解析)
|
10月前
【单片机】简易计算器完整代码带电路图
【单片机】简易计算器完整代码带电路图
232 0
【单片机】简易计算器完整代码带电路图
|
6天前
|
物联网 芯片
STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计
STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计
43 0
|
6天前
|
芯片
单片机中GPIO八种工作模式详细分析
单片机中GPIO八种工作模式详细分析
120 0
|
8月前
|
安全 芯片
单片机检测220V交流电通断电路
单片机检测220V交流电通断电路
|
8月前
|
芯片
STM32F0单片机快速入门五 GPIO中断
STM32F0单片机快速入门五 GPIO中断
|
10月前
|
C# Android开发 C++
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
156 0
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动