×
单片机 > 单片机程序设计 > 详情

基于STM32-蜂鸣器

发布时间:2020-05-29 发布时间:
|

1.蜂鸣器


蜂鸣器是一种发声设备,被广泛用于计算机、打印机、复印机、报警器、电子玩具等。后面介绍定时器是会给大家说说利用蜂鸣器实现歌曲演奏。蜂鸣器分为有源蜂鸣器和无源蜂鸣器。那么什么是有源,什么是无源呢?这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动才能发声。 


2.硬件介绍


这里使用STM32F103实现无源蜂鸣器的交替发声,下图是硬件设计图。首先,STM32F1 的单个 IO 最大可以提供 25mA 电流(数据手册查看),而蜂鸣器的驱动电流是 30mA 。这里使用一个NPN三极管(S8050)扩流驱动蜂鸣器,R37主要用于防止蜂鸣器的误发声。当 PB.8 输出高电平的时候,蜂鸣器将发声, 当 PB.8 输出低电平的时候,蜂鸣器停止发声。



3.软件介绍


#ifndef _LED_H

#define _LED_H

#include "stm32f10x.h"

#include "sys.h"

 

 

void Led_Init(void);

void Beep_Init(void);

 

#define LED1 PFout(7)

#define LED2 PBout(5)

#define LED3 PAout(8)

#define LED4 PAout(1)

 

#define BEEP PBout(8)

 

#endif

蜂鸣器初始化函数


/*

函数功能:LED初始化;

硬件连接:

BEEP -> PB8;

*/

void Beep_Init(void)

{

//时钟使能

RCC->APB2ENR |=1<<3;

GPIOB->CRH &=0xFFFFFFF0;

GPIOB->CRH |=0x00000003;

}

主函数


#include "led.h"

#include "delay.h"

int main(void)

{

Led_Init();

Delay_Init(72);

Beep_Init();//蜂鸣器初始化

while(1)

{

/*

这里实现蜂鸣器交替发声,后面会介绍定时器

时会通过蜂鸣器实现歌曲演奏。

*/

BEEP=!BEEP;

delay_MS(500);

}

}



关键字:STM32  蜂鸣器  震荡电路

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机的数码管动态扫描方法