问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32控制有源蜂鸣器实验教程

创作时间:
作者:
@小白创作中心

STM32控制有源蜂鸣器实验教程

引用
CSDN
1.
https://blog.csdn.net/qq_44016222/article/details/142545189

蜂鸣器是一种能将音频信号转化声音信号的发音器件,在家电器上,在银行、公安的报警系统以及电子玩具、游戏机中都得到普遍应用。

以下是有源蜂鸣器的参数:

  • 型号:0905
  • 工作电压:3.3~5.5V
  • 电流:<25mA
  • 频率:2300±500
  • 尺寸:10×6Ø2.5mm

有源蜂鸣器原理

利用电磁分为有源蜂鸣器和无源蜂鸣器。这里的“源”不是指电源,而是指震荡源。有源蜂鸣器(Active buzzer)内建了一组固定的频率,只要接通电源,就会发出固定的音调。内部带有多谐振荡器,可以产生1.5kHZ-2.5kHZ的电压信号,由此有源蜂鸣器才能发声。

引脚描述

引脚名称
描述
GND
地线
I/O
控制信号
VCC
电源

硬件连接

使用STM32F103C8T6控制5V蜂鸣器模块完成开关的操作。

硬件连接如下:

  • BEEP:PA0
  • OLED_SCL:PB11
  • OLED_SDA:PB10

程序设计

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "beep.h"

int main(void)
{ 
  SystemInit();//配置系统时钟为72M
  delay_init(72);
  LED_Init();
  LED_On();
  BEEP_Init();
  USART1_Config();//串口初始化
  
  OLED_Init();
  printf("Start \n");
  delay_ms(1000);
  
  OLED_Clear();
  //显示“蜂鸣器:”
  OLED_ShowChinese(0,0,0,16,1);
  OLED_ShowChinese(16,0,1,16,1);
  OLED_ShowChinese(32,0,2,16,1);
  OLED_ShowChar(48,0,':',16,1);
  while (1)
  {
    BEEP_ON;
    LED_On();
    OLED_ShowChinese(56,24,3,16,1);		//开
    delay_ms(1000);
    
    BEEP_OFF;
    LED_Off();
    OLED_ShowChinese(56,24,4,16,1);		//关
    delay_ms(1000);
  }
}  

beep.h文件

#ifndef __BEEP_H
#define __BEEP_H
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"

// 蜂鸣器 GPIO宏定义
#define BEEP_CLK RCC_APB2Periph_GPIOA
#define BEEP_GPIO_PIN GPIO_Pin_0
#define BEEP_GPIO_PROT GPIOA
#define BEEP_ON GPIO_SetBits(BEEP_GPIO_PROT,BEEP_GPIO_PIN)
#define BEEP_OFF GPIO_ResetBits(BEEP_GPIO_PROT,BEEP_GPIO_PIN)

void BEEP_Init(void);
#endif

beep.c文件

#include "beep.h"

void BEEP_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(BEEP_CLK, ENABLE ); //配置时钟
  
  GPIO_InitStructure.GPIO_Pin = BEEP_GPIO_PIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(BEEP_GPIO_PROT,&GPIO_InitStructure);
  BEEP_OFF;
}

实验效果

实验效果:蜂鸣器会每隔1秒开关一次,同时LED灯也会同步开关,OLED显示屏会显示“蜂鸣器:开”或“蜂鸣器:关”的状态。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号