历史上的今天
返回首页

历史上的今天

今天是:2024年12月31日(星期二)

正在发生

2021年12月31日 | STM32F103单片机驱动蜂鸣器

2021-12-31 来源:eefocus

蜂鸣器在电子产品中很常见,几乎现在的家电中都有,主要用来做声音提示。


蜂鸣器从材料上分可以分为压电式蜂鸣器和电磁式蜂鸣器。


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


电磁式蜂鸣器:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。


蜂鸣器从驱动方式上可以分为有源蜂鸣器和无源蜂鸣器。


有源蜂鸣器:内部自己带有驱动电路,只要在外部供上点之后,内部电路就会工作,驱动蜂鸣器内部分线圈进行振动,从而发出声音。


无源蜂鸣器:内部没有振荡电路,直接给蜂鸣器供直流电时,蜂鸣器不会响,只有外部给蜂鸣器提供一个方波,蜂鸣器才能发出声音。


驱动方式:


无源蜂鸣器驱动比较简单,直接用单片机IO口给蜂鸣器发送方波信号就行。

image.png?imageView2/2/w/550

有源蜂鸣器驱动时,外部需要驱动电路。

image.png?imageView2/2/w/550

常用的驱动方式就是直接通过三极管来驱动,三极管主要是用来放大电流,因为蜂鸣器响的时候需要的电流比较大,一般单片机口直接提供不了那么大的电流,给蜂鸣器反向并联一个二极管用来延长蜂鸣器的使用寿命。由于蜂鸣器内部有线圈,相当于一个电感,当蜂鸣器关闭的时候,会在线圈上产生一个反向电动势,这个二极管在蜂鸣器关闭的时候可以给线圈进行放电。


用这个驱动电路驱动蜂鸣器的时候,在上电的一瞬间,有时候会听见蜂鸣器嘀的响一声,这时因为在单片机上电时,IO口未初始化之前,有的IO口默认会是高电平,这样当单片机上电的一瞬间,三极管基极就会瞬间又一个高电平,这时候蜂鸣器就会响一声,当IO口初始化完成之后,IO口设置为低电平,这时候三极管不导通,蜂鸣器就不响了,为了避免这种情况发生,一般都会给基极加一个比较大的下拉电阻。

image.png?imageView2/2/w/550

给基极加一10K的下拉电阻这样在上电的瞬间,这个下拉电阻就会将三极管基极的电平拉为0,在上电的一瞬间蜂鸣器就不会响了。


这里驱动蜂鸣器使用的是有源蜂鸣器,虽然驱动电路复杂了一点,但是程序控制比较简单,只需要给IO口高低电平,就可以控制蜂鸣器响或者不响。蜂鸣器初始化代码如下:


#define BEEP PBout(8) //BEEP 蜂鸣器接口


void BEEP_Init(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);


    GPIO_ResetBits(GPIOB, GPIO_Pin_8);

}


将驱动蜂鸣器的口PB8设置为普通IO口,推挽输出就可以了。要蜂鸣器响的时候,直接给PB8口给高电平就行了。


int main(void)

{

    delay_init();       //延时函数初始化

    LED_Init();         //初始化与LED连接的硬件接口

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

    while(1)

    {    

        BEEP = 1;

        delay_ms(200);   //延时300ms      

        BEEP = 0;

        delay_ms(200);  //延时300ms      

    }

}


在主程序中循环的让蜂鸣器一开一关,这样就可以听到蜂鸣器发出的嘀嘀嘀嘀的声音了。

推荐阅读

史海拾趣

Federal Custom Cable公司的发展小趣事

随着电子行业的快速发展,电缆产品的技术要求也越来越高。Federal Custom Cable不断引进先进的生产设备和技术,提升电缆产品的性能和质量。公司注重研发创新,投入大量资金用于新产品开发和工艺改进。这些努力使得Federal Custom Cable的电缆产品逐渐在行业内树立了高品质、高性能的形象。

DETCO公司的发展小趣事

为了进一步拓展全球市场,ElectronicsCorp制定了国际化战略。公司先后在北美、欧洲和南美等地设立了研发中心和生产基地。这些海外机构不仅为ElectronicsCorp提供了更广阔的市场空间,还使其能够更深入地了解不同地区的消费者需求和文化背景。通过本土化战略的实施,ElectronicsCorp逐渐在海外市场取得了成功。

HANBIT Electronics公司的发展小趣事

当5G技术开始在全球范围内推广时,ElectronicsCorp看到了巨大的商机。公司迅速调整战略,将重点转向5G相关产品的研发。通过与全球领先的通信公司合作,ElectronicsCorp推出了一系列5G手机和通信设备。这些产品不仅性能卓越,而且价格合理,赢得了消费者的青睐。随着5G技术的普及,ElectronicsCorp的市场份额不断扩大。

方舟(ARKLED)公司的发展小趣事

方舟公司高度重视产品品质管理,从原材料采购到生产加工,再到成品检验,每一个环节都严格把关。公司引进了先进的生产设备和检测仪器,建立了完善的质量管理体系。通过ISO9001质量管理体系认证,方舟公司的产品质量得到了有效保障,赢得了客户的信赖和支持。

Electro-Films Inc Semi-Films Div公司的发展小趣事

近年来,随着全球环保意识的提高,绿色环保和可持续发展成为各行各业关注的焦点。Semi-Films Division 也积极响应这一趋势,将绿色环保理念融入到公司的生产和经营中。公司采用环保的生产工艺和材料,减少了对环境的污染和破坏。同时,公司还积极参与各种环保活动和项目,推动整个行业的绿色发展和可持续发展。这些努力不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

Bud Industries公司的发展小趣事

在20世纪80年代初,Electro-Films Inc. 的创始人意识到了电子行业中对高性能薄膜材料的需求日益增加。因此,公司决定成立一个专门负责薄膜材料研发的部门,即Semi-Films Division。这个部门在成立之初就面临着巨大的挑战,但团队凭借对技术的执着追求和不懈努力,成功开发出了具有优良电气性能和机械性能的薄膜产品,为公司赢得了首批客户。

问答坊 | AI 解惑

51单片机C语言应该怎样入门

之前我是用汇编的,现在想学一下C语言,不知道从何学起。…

查看全部问答>

HR说让回去看看ARM,配哪个操作系统好呢???

额刚刚签的工作。HR说让回去看看ARM。也是一点都没有接触过啊 。晕死。配哪个操作系统好呢???…

查看全部问答>

求助:Local ROM 和 NOR Flash 是什么意思啊?谢谢!

请教: 我在书上看到 Local ROM NOR Flash 问题1: Local ROM 是不是相当于电脑的 内存条? NOR Flash 是不是相当于电脑的 硬盘? 问题1: Local ROM 是什么? 还有别的 ROM 吗? ROM 的主要作用是什么? 问题2: NOR Flash 是什么 ...…

查看全部问答>

山东省2010电子设计大赛群,速加啊,咱讨论讨论!!!

本帖最后由 paulhyde 于 2014-9-15 08:54 编辑 山东省2010电子设计大赛群,速加啊,咱讨论讨论!!!  116389549 山东省2010电子设计大赛群,速加啊,咱讨论讨论!!!  116389549 山东省2010电子设计大赛群,速加啊,咱讨论讨论!!! &n ...…

查看全部问答>

这个错误是怎么回事

SEED-DEC28335的板子,跑A/D测试的例程时load gel时出现错误,GEL: Error loading file \'F:\\SEED-DEC28335\\03.Example Program\\01. DSP\\DSP2833x_common\\gel\\f28335.gel\': function \'StartUp()\' already defined,这是怎么回事啊,高手帮 ...…

查看全部问答>

launchpad上的430单片机大家是都用来干什么?

想了半天,还是没找到适合的地方…

查看全部问答>

如何用LM3S做FFT和SNR?

最近想用LM3S的片子学习下音频采集和分析的知识,要能够分析音频的SNR,THD,计算频率等 本人之前没有这方面的经验,不知道该如何实现。 望论坛的朋友指点思路,谢谢! [ 本帖最后由 hnustlxj 于 2011-12-24 00:48 编辑 ]…

查看全部问答>

我这个简单程序发送发任何值,收到的都是00

这是代码: #include __CONFIG( FCMEN_OFF & IESO_OFF & CLKOUTEN_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_ON & PWRTE_OFF & WDTE_ON & FOSC_INTOSC); //__CONFIG( FCMEN_OFF & IESO_OFF & CLKOUTEN_OFF & BOREN_ON & CPD_OFF & CP_OFF & M ...…

查看全部问答>

精密电压源+DDS交流信号源PCB(99se)

精密电压源+DDS交流信号源PCB(99se) 延续ADI DIY活动及瑞萨DIY活动…

查看全部问答>

避免自激振荡的两种方法

刚刚发现了两个可以降低自激振荡的方法  :        1.主极点校正法:比较简单而常用的校正措施是在负反馈放大电路的适当位置接入一个电容,接入的电容相当于并联在前一个放大级的负载上。在中频和低频时由于电容的 ...…

查看全部问答>