您的位置:首页 > 其它

单片机入门学习六 STM32单片机学习三 蜂鸣器

2018-01-12 10:38 302 查看
蜂鸣器的控制仍是GPIO的入门开发,本篇仅罗列下蜂鸣器的相关概念和蜂鸣器开发源码

1、蜂鸣器

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

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

蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。

本篇学习的板子上的蜂鸣器是电磁式的有源蜂鸣器,有源蜂鸣器是指自带震荡电路而不是指自带电源。(无源蜂鸣器没有自带震荡电路,必须外部提供2~5Khz左右的方波驱动才能发声。)

所用板子的蜂鸣器的原理图如下:



从原理图可以看出板子上的蜂鸣器接了一个三极管放大器,使用三极管的原因是stm32 IO的驱动电流不够大驱动蜂鸣器发声很吃劲,所以用一个放大器增大电流来驱动放大器。

看原理图我们会发现在R36旁还接了一个R38电阻,该电阻的作用是分流保证stm32 IO空闲状态下不会驱动蜂鸣器发声,因为stm32 IO空闲状态是浮空状态的,其输出的电压值不确定,所以旁接R38电阻目的是风流掉浮空状态下低电压产生的小电流。

从stm32原理图中,我们可以知道蜂鸣器接的IO口是PB8,如下图:



2、程序

#include "beep.h"

//初始化PB8为输出口.并使能这个口的时钟
//蜂鸣器初始化
void BEEP_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能GPIOB端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;               //BEEP-->PB.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);  //根据参数初始化GPIOB.8

GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出
}


#include "std32f10x.h"
#include "beep.h"

int main(void)
{
delay_init();            //延时函数初始化
BEEP_Init();            //初始化蜂鸣器端口
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
delay_ms(300);//延时300ms
GPIO_SetBits(GPIOB,GPIO_Pin_8);
delay_ms(300);//延时300ms
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32 单片机