张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

如何有效编程单片机有源蜂鸣器驱动

玩转单片机 2019-01-11 15:04 次阅读

蜂鸣器是很常见的设备,分为无源和有源两种。根据项目需求选择不同类型的蜂鸣器。最近的项目里有用到有源蜂鸣器对有源蜂鸣器。还是老一套,把电路板画完,接着编程。

在项目中原理图如下:

切入正题:在程序里面这个蜂鸣器的驱动就是个高低电平驱动。高电平三极管导通、蜂鸣器发声,低电平三极管关断、蜂鸣器不发声。这的确很简单,程序上最开始我是这样写的:

当然,如果单片机没有很好的I/O跳变函数也可以这样修改:

这里稍作解释:

1)

函数功能:蜂鸣器发声驱动

传入参数:蜂鸣器发声的次数

2)

传入的次数cnt需要再函数内翻倍。这是因为传入的参数是想让蜂鸣器连续的发cnt声。但是蜂鸣器除了发声还有不发声的时候。也就是说蜂鸣器每响一次都需要关闭一次,如果没有关闭操作肯定就不会出现响几声而是连续的响一声,这个也很容易推理。

3)

在while循环完之后需要加一个蜂鸣器关闭操作。

这里假如传进的参数是2,目的是让蜂鸣器响两声。根据程序的执行步骤:

cnt2变成4。

第1次while(4) 蜂鸣器开 cnt自减到3

第2次while(3) 蜂鸣器关 cnt自减到2

第3次while(2) 蜂鸣器开 cnt自减到1

第4次while(1) 蜂鸣器关 cnt自减到0

第5次while(0) 跳出while

可以看出其实在while之后蜂鸣器状态已经是关闭的了,但是保险起见,确保函数调用完之后蜂鸣器是关闭的状态。比如第一个函数I/O跳变的就更需要保障了,因为代码上只能看出跳变,看不到跳变之后的状态。

至此,一个简单的蜂鸣器电路和驱动程序就都温习完了,接下来上干货:

在写程序的时候很多时候讲究程序的效率,比如这个蜂鸣器驱动,驱动过程中会降低效率,厉害的人很快能看出来,就是这个Delay延时的问题。但是上面也说了,不延时也是不行的。所以趋于效率我尝试着换了一种方法驱动蜂鸣器。

代码如下:

实现起来也很简单,简单说下原理:

1)首先是提供蜂鸣器驱动的I/O配置,

2)其次是定时器的配置

3)最后是定时器中断函数实现

我选用的定时器是项目单片机中最简单的一个定时器,配制成1ms中断,能够提供溢出中断。其实这个定时器我常用做计系统运行时间Systick_ms。但是该项目对这个系统时间没有用到,那就用这个定时器做文章把。

实现方法:

1、同样函数在调用蜂鸣器驱动的时候接口是一样的,传入的参数还是蜂鸣器的响声次数。

2、函数体变了,这里改成了两个变量的赋值,第一个BELL_CNT同普通方法中的cnt2,这里不再赘述。第二个是FLAG_BELL是用来保存蜂鸣器是否需要驱动的状态变量。所以既然是调用驱动函数,那肯定这个变量要为真。

3、定时器中断函数里面加上了一个静态变量NOW,他的作用就是和Systic_ms产生一个50ms的时间片,干嘛用?肯定是给蜂鸣器开关之间的延时用咯。模拟软件延时嘛。然后再来分析下这段代码:

1)首先这个NOW和Systic_ms是无条件需要赋值保证50ms时间片的。对应的代码为NOW=Systick_ms+50;

2)判断蜂鸣器驱动状态变量是不是真,如果不为真就关闭蜂鸣器,这个也是无条件的。

3)如果状态变量为真:蜂鸣器先跳变Bell_Tog();当然如果没有这个跳变函数也可以用上述的判断cnt的方法,就不多写了都是一样的。同时次数自减BELL_CNT--;同时判断是不是减到0了,减到0了说明响完了啊,那就把状态变量赋值为假。再次进来不管蜂鸣器是开着的还是关着的都会执行关闭操作,这个跟上面说的保险一样。

4)最后,这两个变量用的是全局变量,这里是以结构体的形式呈现的,因为很多情况这两个函数不在一个C里面。如果硬要写在一个C可以忽略本条。

原文标题:单片机有源蜂鸣器驱动之效率编程

文章出处:【微信号:mcu168,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

玩单片机到千万身家,“技术型老总”需要哪些神技能?

中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不
发表于 05-16 00:00 585次 阅读
玩单片机到千万身家,“技术型老总”需要哪些神技能?

玩单片机到千万身家,“技术型老总”需要哪些神技能?

中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不
发表于 05-16 00:00 585次 阅读
玩单片机到千万身家,“技术型老总”需要哪些神技能?

你有这些嵌入式硬件电路设计的基本功吗?

我走的电子开发道路其实和大多数人说的一样,基本的路线为模拟电子(熟练)→数字电路设计(掌握)→单片机....
的头像 玩转单片机 发表于 06-16 11:52 320次 阅读
你有这些嵌入式硬件电路设计的基本功吗?

关于while的问题

while(W25QXX_ReadID()!=W25Q128) {printf(“W25Q128 ERROR”);} while中无论是==还是!=,,串口都...
发表于 06-14 14:43 179次 阅读
关于while的问题

如何用单片机控制伺服电缸

有两组伺服电缸,且知道电缸的上下运动的参数,如何实现用单片机来控制电缸进行运动。类似于vr蛋椅的运动。可以有偿解决。qq:90...
发表于 06-14 14:08 164次 阅读
如何用单片机控制伺服电缸

ADC0808/0809与8031单片机接口设计

ADC0808/0809与8031单片机接口设计 有没有大神会编写 ADC0809与8031接口的10位转换 最好是汇编语言 C语言或者其他的也...
发表于 06-14 10:49 205次 阅读
ADC0808/0809与8031单片机接口设计

求解ds18b20跟ds1302同时使用时时钟可以正常显示,温度显示会乱码的原因?

ds18b20和ds1302分别单独在1602上显示都能够显示出来,当我将两个程序结合起来时就会出现温度显示乱码的情况,这是一个什么问题...
发表于 06-14 10:20 342次 阅读
求解ds18b20跟ds1302同时使用时时钟可以正常显示,温度显示会乱码的原因?

请问我给VDRV提供3.3的电压,是不是数字口就输出3.3v电压的数字电平?

因为我是用430的单片机连接,我给VDRV提供3.3的电压,是不是数字口就输出3.3v电压的数字电平?...
发表于 06-14 09:27 101次 阅读
请问我给VDRV提供3.3的电压,是不是数字口就输出3.3v电压的数字电平?

基于PC控制和单兵运行实现无人车控制系统

该方案基于Atmega128单片机和无线通信技术设计,其创新点是采用了PC控制模式和单兵运行模式两种方式对无人车进行控制,极大地...
发表于 06-14 05:00 30次 阅读
基于PC控制和单兵运行实现无人车控制系统

C8051F020型单片机与SJA1000型控制器接口电路

图为C8051F020型单片机与SJA1000型控制器的硬件连接电路原理。SJA1000占用了0x8000-0x80FF的外部RAM空间。当单片...
发表于 06-14 05:00 29次 阅读
C8051F020型单片机与SJA1000型控制器接口电路

请问单片机控制银燕电调pwm频率是多少?

我使用的电调是:  银燕SimonK/BLHeli程序 12A无刷电调 我在网上看  有人说50HZ   还有...
发表于 06-14 04:35 17次 阅读
请问单片机控制银燕电调pwm频率是多少?

51硬件debug不能进入主函数?

    很久没有用keil编写51程序了,最近做一个项目,用的51,可是用keil硬件debug时,老是进入不了主函数,也进不了sta...
发表于 06-14 04:35 117次 阅读
51硬件debug不能进入主函数?

AT89S52+ad0804+max232数码管显示出错

我做的这个是一个用于检测电流的模块,电流互感器,送出0-5V的模拟信号, 我这个板子是先是24V-5V降压模块,然后是模拟信号送...
发表于 06-14 04:35 100次 阅读
AT89S52+ad0804+max232数码管显示出错

使用单片机设计超声波测距1602显示的程序和接线图免费下载

本文档的主要内容详细介绍的是使用单片机设计超声波测距1602显示的程序和接线图免费下载
发表于 06-13 17:40 45次 阅读
使用单片机设计超声波测距1602显示的程序和接线图免费下载

如何提高单片机的抗干扰性

搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意....
发表于 06-13 17:40 50次 阅读
如何提高单片机的抗干扰性

使用单片机设计MP3的电路图免费下载

本文档的主要内容详细介绍的是使用单片机设计具有能显示歌名,电子书,闹钟,随音乐播放流水灯功能的MP3....
发表于 06-13 17:40 61次 阅读
使用单片机设计MP3的电路图免费下载

如何使用单片机设计AD和DA转换器详细资料说明

 某些单片机内部巳经集成了AD DA转换器,使其在工控行业、仪器仪表.家电产品的应用与日俱增.但是这....
发表于 06-13 17:17 47次 阅读
如何使用单片机设计AD和DA转换器详细资料说明

PROTEUS仿真软件的基本使用教程免费下载

Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件....
发表于 06-13 17:17 51次 阅读
PROTEUS仿真软件的基本使用教程免费下载

如何进行直流稳压电源的设计详细资料说明

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器R....
发表于 06-13 16:58 61次 阅读
如何进行直流稳压电源的设计详细资料说明

FPGA入门系列实验教程之使用FPGA设计乐曲自动演奏的资料说明

乐曲自动演奏电路和上节实验硬件电子琴的的原理相同。它是在程序中设置了一个状态机,每 250ms 改变....
发表于 06-13 16:24 32次 阅读
FPGA入门系列实验教程之使用FPGA设计乐曲自动演奏的资料说明

基于GPRS技术的单片机开发特点及过程介绍

针对这一问题,提出一种基于GPRS的单片机上网的解决方案,即在单片机中实现PPP协议,并通过驱动GP....
发表于 06-13 15:20 100次 阅读
基于GPRS技术的单片机开发特点及过程介绍

四个单片机原理与应用的实验指导书资料免费下载

本文档的主要内容详细介绍的是四个单片机原理与应用的实验指导书资料免费下载实验项目包括了:实验一 I/....
发表于 06-13 08:00 24次 阅读
四个单片机原理与应用的实验指导书资料免费下载

使用AT89C51单片机设计步进电机控制系统论文资料免费下载

步进电机是现代控制技术中最早出现的执行部件,其特点是将数字脉冲控制信号直接转换为一定数值的机械角位移....
发表于 06-13 08:00 26次 阅读
使用AT89C51单片机设计步进电机控制系统论文资料免费下载

单片机最小系统电路原理图免费下载

本文档的主要内容详细介绍的是单片机最小系统电路原理图免费下载。
发表于 06-13 08:00 100次 阅读
单片机最小系统电路原理图免费下载

使用FPGA实现蜂鸣器发出警车鸣笛的实验教程免费下载

实现开发板上的蜂鸣器发出警车鸣笛声。通过这个实验,掌握采用 VerilogHDL 语言编程实现蜂鸣器....
发表于 06-12 17:07 33次 阅读
使用FPGA实现蜂鸣器发出警车鸣笛的实验教程免费下载

如何设计智能巡线小车的多模式速度控制系统详细设计方案说明

介绍了基于 Freescale HCS12 系列单片机的智能巡线小车多模式速度控制系统的设计方案。该....
发表于 06-12 17:07 35次 阅读
如何设计智能巡线小车的多模式速度控制系统详细设计方案说明

使用FPGA实现蜂鸣器发出救护车鸣笛的实验教程免费下载

开发板板载 50MHZ 的晶振,通过 Verilog HDL 语言编程将此频率分频后驱动一个 I/O....
发表于 06-12 17:07 29次 阅读
使用FPGA实现蜂鸣器发出救护车鸣笛的实验教程免费下载

STM32F1单片机的IO位带操作头文件免费下载

本文档的主要内容详细介绍的是STM32F1单片机的IO位带操作头文件免费下载。
发表于 06-12 16:31 38次 阅读
STM32F1单片机的IO位带操作头文件免费下载

单片机精确延时的方法解析

1、使用循环函数延时: void delay1ms(void) //误差 0us,延时1ms ....
发表于 06-12 15:32 91次 阅读
单片机精确延时的方法解析

使用51单片机设计的计算器的程序和仿真资料免费下载

本文档的主要内容详细介绍的是使用51单片机设计的计算器的程序和仿真资料免费下载,可以计算加减乘除小数....
发表于 06-12 08:00 25次 阅读
使用51单片机设计的计算器的程序和仿真资料免费下载

CC2530 SOC芯片的数据手册免费下载

CC2530是一个真正的系统芯片(SOC)解决方案,适用于IEEE 802.15.4、ZigBee和....
发表于 06-12 08:00 27次 阅读
CC2530 SOC芯片的数据手册免费下载

STC15F408AD系列单片机的总体介绍资料免费下载

STC15F408AD系列单片机是STC生产的单时钟/机器周期(1T)的单片机,是高速/高可靠/低功....
发表于 06-12 08:00 31次 阅读
STC15F408AD系列单片机的总体介绍资料免费下载

使用单片机进行电子称的设计资料合集免费下载

本文档的主要内容详细介绍的是使用单片机进行电子称的设计资料合集免费下载包括了:1.设计开发原理说明(....
发表于 06-12 08:00 49次 阅读
使用单片机进行电子称的设计资料合集免费下载

TI高性能单片机和模拟器件在高校中的应用和选型指南PDF电子书

本手册主要着眼于选型,因此一些涉及深入的技术细节的章节在本手册中略去,大家可以参考我们的培训 PPT....
发表于 06-12 08:00 40次 阅读
TI高性能单片机和模拟器件在高校中的应用和选型指南PDF电子书

如何使用51单片机进行智能小车避障电路的实现

随着汽车工业的发展 ,汽车本身的安全 性和智 能性 日益得到重视。 目前 ,国内外 已经有了很多有关....
发表于 06-11 17:20 68次 阅读
如何使用51单片机进行智能小车避障电路的实现

如何实现电动小车的自动循迹和声控行驶资料说明

本系统通过采集光电传感器和驻极体的数据来实现电动小车的自动循迹和声控行驶。控制终端由 C8051F0....
发表于 06-11 17:20 45次 阅读
如何实现电动小车的自动循迹和声控行驶资料说明

使用51单片机进行自动循迹智能小车的程序资料免费下载

本文档的主要内容详细介绍的是使用51单片机进行自动循迹小车的程序资料免费下载
发表于 06-11 16:13 32次 阅读
使用51单片机进行自动循迹智能小车的程序资料免费下载

普中51单片机开发攻略PDF电子书免费下载

本开发攻略配套的实验平台为:普中 51-双核-A6/A7 开发板,前一款开发板采用的是双 CPU 设....
发表于 06-11 08:00 40次 阅读
普中51单片机开发攻略PDF电子书免费下载

如何使用ATmage32L单片机进行自动循迹智能小车的设计

本寻迹小车是以有机玻璃为车架,ATmage32L单片机为控制核心,加以直流电机、光电传感器和电源电路....
发表于 06-10 18:01 40次 阅读
如何使用ATmage32L单片机进行自动循迹智能小车的设计

使用STM32单片机应用LDC1000电感数字转换器的程序和工程文件

本文档的主要内容详细介绍的是使用STM32单片机应用LDC1000电感数字转换器的程序和工程文件资料....
发表于 06-10 17:39 48次 阅读
使用STM32单片机应用LDC1000电感数字转换器的程序和工程文件

如何让小车在路上走进行智能小车寻迹的详细资料说明

多数情况下,车是在路上跑的,我们的圆梦小车也不例外,只是它能认识的“路”与现实世界不同,因为它的眼睛....
发表于 06-10 17:38 57次 阅读
如何让小车在路上走进行智能小车寻迹的详细资料说明

太阳能电池板自动对光控制集成电路的关键技术研究

针对太阳能电池板自动对光控制集成电路的关键技术展开研究,设计一种可以通过太阳光电池板自动对光的集成电....
的头像 集成电路应用杂志 发表于 06-10 17:25 270次 阅读
太阳能电池板自动对光控制集成电路的关键技术研究

使用STM32F030单片机读取温湿度传感器SHT20的C语言源代码免费下载

本文档的主要内容详细介绍的是使用STM32F030单片机读取温湿度传感器SHT20的C语言源代码免费....
发表于 06-10 17:07 58次 阅读
使用STM32F030单片机读取温湿度传感器SHT20的C语言源代码免费下载

单片机晶振电路中22pf或30pf电容的作用

刚学单片机的学长告诉我单片机的晶振电路中就是用22pf或30pf的电容就行,听人劝吃饱饭吧,照着焊电....
的头像 传感器技术 发表于 06-10 16:44 285次 阅读
单片机晶振电路中22pf或30pf电容的作用

使用单片机进行电子音响实验的C语言程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机进行电子音响实验的C语言程序和工程文件免费下载。
发表于 06-10 08:00 45次 阅读
使用单片机进行电子音响实验的C语言程序和工程文件免费下载

如何进行超声波测距仪的设计

电子测距仪要求测量范围在0.10~5.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳....
发表于 06-06 17:52 133次 阅读
如何进行超声波测距仪的设计

KQM2801A空气质量模块的数据手册和使用程序及工程文件免费下载

KQM2801A型空气质量检测模块,是使用半导体空气质量传感器作为检测空气中有机化合物气体的模块,它....
发表于 06-06 17:22 71次 阅读
KQM2801A空气质量模块的数据手册和使用程序及工程文件免费下载

单片机编程学习入门教程之LaunchPad板的实验报告资料说明

名为LaunchPad 的MSP-EXP430G2 低成本试验板是一款适用于TI 最新MSP430G....
发表于 06-06 16:52 61次 阅读
单片机编程学习入门教程之LaunchPad板的实验报告资料说明

使用单片机设计智能台灯的毕业设计资料合集免费下载

本文档的主要内容详细介绍的是使用单片机设计智能台灯的毕业设计资料合集免费下载包括了:基于单片机的智能....
发表于 06-06 08:00 79次 阅读
使用单片机设计智能台灯的毕业设计资料合集免费下载

单片机 | 基础汇编语言编程实例

单片机汇编语言编程
的头像 玩转单片机 发表于 06-05 18:04 516次 阅读
单片机 | 基础汇编语言编程实例

单片机 | 音乐程序设计原理解析

利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能....
的头像 畅学单片机 发表于 06-05 17:18 322次 阅读
单片机 | 音乐程序设计原理解析

单片机 | P0口什么时候使用上拉电阻?

P0口作为I/O口输出的时候时,输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态,也就是....
的头像 单片机精讲吴鉴鹰 发表于 06-05 17:17 439次 阅读
单片机 | P0口什么时候使用上拉电阻?

使用单片机进行自主寻迹电动小车的设计论文程序和电路图合集免费下载

针对小车在行驶过程中的寻迹要求,设计了以AT89C51单片机为核心的控制电路,采用模块化的设计方案,....
发表于 06-05 16:49 65次 阅读
使用单片机进行自主寻迹电动小车的设计论文程序和电路图合集免费下载

51单片机汇编语言教程之矩阵式键盘接口技术及程序设计的详细资料说明

在单片机系统中键盘中按钮数量较多时,为了减少I/O 口的占用,常常将按钮排列成矩阵形式,如图1所示。....
发表于 06-05 16:49 63次 阅读
51单片机汇编语言教程之矩阵式键盘接口技术及程序设计的详细资料说明

51单片机汇编语言教程之音乐程序设计的详细资料说明

 利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈....
发表于 06-05 16:49 50次 阅读
51单片机汇编语言教程之音乐程序设计的详细资料说明

51单片机汇编语言教程之动态扫描显示接口电路的介绍及程序说明

在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8....
发表于 06-05 16:29 42次 阅读
51单片机汇编语言教程之动态扫描显示接口电路的介绍及程序说明

51单片机汇编语言教程之单片机串行口的详细资料介绍

串行通信的方式:异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:在....
发表于 06-05 16:29 51次 阅读
51单片机汇编语言教程之单片机串行口的详细资料介绍

51单片机汇编语言教程之LED数码管静态显示接口与编程的详细资料说明

在单片机系统中,常常用LED 数码数码管显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用....
发表于 06-05 16:29 91次 阅读
51单片机汇编语言教程之LED数码管静态显示接口与编程的详细资料说明

使用51单片机进行温度控制电机转速设计的资料说明

随着人们生活水平的不断提高, 单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的, ....
发表于 06-05 08:00 96次 阅读
使用51单片机进行温度控制电机转速设计的资料说明

YUYS-02A PLC可编程控制及单片机实验开发系统综合实验装置资料说明

一、特点1、装置采用组件多结构 更换实验模块便捷,如需扩展功能或开发新实验,只需添加实验挂箱即可,永....
发表于 06-05 08:00 109次 阅读
YUYS-02A PLC可编程控制及单片机实验开发系统综合实验装置资料说明

YUY-238 单片机应用实训考核装置的详细资料说明

采用模块平放结构,使得视线趋于自然向下,如同平时读书写字。靠近用户侧又略带倾斜,使得操作时更加方便。....
发表于 06-05 08:00 39次 阅读
YUY-238 单片机应用实训考核装置的详细资料说明

YUYP-02单片机开发应用技术综合实验实训装置的详细资料讲解

本单片机开发应用技术综合实验实训装置由控制屏、实验桌组成,通过本实验台可完成单片机的接口扩展、数据采....
发表于 06-05 08:00 36次 阅读
YUYP-02单片机开发应用技术综合实验实训装置的详细资料讲解