【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,👉戳此立抢👈

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

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

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

在项目中原理图如下:

如果不能保证I/O的输出性能可以根据情况增加上拉或者下拉电阻。

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

当然,如果单片机没有很好的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,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

使用嵌入式AVR单片机进行核子秤配料自动控制系统的设计

重点讨论了基于一种新型单片机一AVR高速嵌人式单片机交流变频调速在核子秤配料自动控制系统中的应用,并....
发表于 01-18 17:01 12次 阅读
使用嵌入式AVR单片机进行核子秤配料自动控制系统的设计

单片机与DA转换接口电路应用实例数控直流稳压电源的说明

D/A转换是将数字量转换为模拟量的过程,在计算机实时控制系统中这-技术应用得十分广泛,掌握这方面的技....
发表于 01-18 16:25 14次 阅读
单片机与DA转换接口电路应用实例数控直流稳压电源的说明

单片机的有什么发展,学习单片机可以做什么

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、体积小、容量大、性能高、价格低和外围电路内装...
发表于 01-18 10:28 58次 阅读
单片机的有什么发展,学习单片机可以做什么

应用C8051F单片机总结出来的九个经验要点说明

1. C8051F单片机速度快,时钟频率可达到25,50甚至100Mhz!内部资源丰富!推荐用C80....
发表于 01-18 08:00 30次 阅读
应用C8051F单片机总结出来的九个经验要点说明

智能手环的系统设计

本文主要研究了智能手表的硬件结构和软件结构的设计,并研究了安卓手机APP设计。手环需要从功能出发来定义其硬件和软件功能。...
发表于 01-17 21:57 79次 阅读
智能手环的系统设计

单片机最小系统

芯片STC15F2K60S2 闲着的时候看到国外一个好像是是叫lipyPad的电路板。设计挺有创意   所以模仿下来 &nb...
发表于 01-17 17:58 131次 阅读
单片机最小系统

家居环境辐射量无线检测仪的设计设计资料说明

家居辐射无线检测仪由辐射监测子系统、数据处理子系统、无线传送子系统、监控中心子系统、报警子系统组成,....
发表于 01-17 17:24 19次 阅读
家居环境辐射量无线检测仪的设计设计资料说明

如何使用Proteus软件进行单片机仿真教学

本文分析了传统的单片机教学中存在的诸多问题,提出了用Proteus 软件来进行单片机仿真教学的观点。....
发表于 01-17 17:24 33次 阅读
如何使用Proteus软件进行单片机仿真教学

如何使用Arduino进行网络互动产品创新设计

Arduino 是一款电子互动产品开发的软硬件平台, 有时也叫做“电子积木”。由于其有丰富的外围硬件....
发表于 01-17 17:24 24次 阅读
如何使用Arduino进行网络互动产品创新设计

【硬见小百科】单片机串行口介绍

串行口是单片机与外界进行信息交换的工具。 ■ 8051单片机的通信方式有两种: 并行通信:数据的各位....
的头像 云创硬见 发表于 01-17 17:20 110次 阅读
【硬见小百科】单片机串行口介绍

如何使用STC单片机进行SPWM步进电机的细分控制研究与实现

步进电动机控制方法多种多样,其驱动方式与运行性能关系极大。本文突破目前通用的D/A转换细分电路方式,....
发表于 01-17 16:58 19次 阅读
如何使用STC单片机进行SPWM步进电机的细分控制研究与实现

单片机原理及应用技术李全利PDF第二版免费下载

本书系统地介绍了80C51 系列单片机的原理及应用技术。全书共9 章:第1 章绪论,第2 章80C5....
发表于 01-17 15:12 16次 阅读
单片机原理及应用技术李全利PDF第二版免费下载

MCS-51单片机智能反编译器应用程序免费下载

本文档的主要内容详细介绍的是MCS-51单片机智能反编译器应用程序免费下载。
发表于 01-17 14:32 11次 阅读
MCS-51单片机智能反编译器应用程序免费下载

用梯形图为单片机编程的应用程序免费下载

本文档的主要内容详细介绍的是用梯形图为单片机编程的应用程序免费下载。
发表于 01-17 11:52 16次 阅读
用梯形图为单片机编程的应用程序免费下载

40个经典单片机实验资料合集免费下载

本文档的主要内容详细介绍的是40个经典单片机实验资料合集免费下载主要内容包括了:1. 闪烁灯,2. ....
发表于 01-17 11:19 50次 阅读
40个经典单片机实验资料合集免费下载

使用STC89C52单片机设计无线温度控制系统的资料免费下载

本文档的主要内容详细介绍的是使用STC89C52单片机设计无线温度控制系统的资料和提高变电运行供电可....
发表于 01-17 11:18 22次 阅读
使用STC89C52单片机设计无线温度控制系统的资料免费下载

AFIO时钟何时开启【自己的理解】

首先为什么要开启时钟?答:因为要对寄存器进行读写!而在STM32中对寄存器的读写都是要打开寄存器对应的时钟才可以的【就像人...
发表于 01-17 10:23 242次 阅读
AFIO时钟何时开启【自己的理解】

基于STM32F103超声波测距功能的实现

在日常生活中离不开对距离的测量,就测量的手段来讲主要有两种测量方式,一种是直接测量法,另一种则为间接测量法。基于超声波的...
发表于 01-17 10:19 203次 阅读
基于STM32F103超声波测距功能的实现

单片机控制光藕(moc3063)驱动双向可控硅调温时不能得到有效控制

这几天搞电烙铁分档调温项目,在使用单片机控制光藕(moc3063)驱动双向可控硅调温时一直不能有效控制,如果用moc3022光藕驱动是没...
发表于 01-17 09:00 119次 阅读
单片机控制光藕(moc3063)驱动双向可控硅调温时不能得到有效控制

浅谈STC单片机特殊IO的用法

在正常情况下,51单片机在上电复位后,所有IO口默认都为高电平,都工作在准双向IO模式,但是STC1....
的头像 单片机技术宅 发表于 01-17 08:59 144次 阅读
浅谈STC单片机特殊IO的用法

如何使用单片机进行电子时钟的设计

系统采用AT89C51单片机,以汇编语言为基础,目的是设计一个可以用四位的数码显示管能够显示时、分的....
发表于 01-17 08:00 18次 阅读
如何使用单片机进行电子时钟的设计

MPC5554和5553微处理器揭秘实用单片机教材免费下载

本书向读者介绍MPC5554和MPC5553这两个基于Power架构的处理 器“详细讲过解内核结构、....
发表于 01-17 08:00 7次 阅读
MPC5554和5553微处理器揭秘实用单片机教材免费下载

STC8系列单片机技术参考手册免费下载

STC8系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速低功耗为目标的80....
发表于 01-17 08:00 9次 阅读
STC8系列单片机技术参考手册免费下载

请问如何通过外网给WIFI模块发送命令控制单片机

我手里有个WIFI模块,能够通过USART与单片机通信 WIFI模块还能设置成STA或者AP模式 电脑已经可以Ping通了模...
发表于 01-17 04:58 33次 阅读
请问如何通过外网给WIFI模块发送命令控制单片机

单片机开盖后没有型号,哪位高手能告诉一下这个标号具体是什么,万分感谢

单片机外面型号查不到,开盖后标号如图,哪位高手能给个是什么型号的,万分感谢...
发表于 01-16 18:45 97次 阅读
单片机开盖后没有型号,哪位高手能告诉一下这个标号具体是什么,万分感谢

如何使用STC89C52单片机进行智能电风扇设计

基于STC89C52 单片机设计电风扇的控制系统, 首先进行总体设计, 然后进行硬件电路设计与软件设....
发表于 01-16 17:18 52次 阅读
如何使用STC89C52单片机进行智能电风扇设计

51单片机串行口及存储器工作原理分析

MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外....
的头像 玩转单片机 发表于 01-16 17:00 211次 阅读
51单片机串行口及存储器工作原理分析

STC51单片机的IO配置问题解决方案

单片机IO的种种问题,你说的单片机IO被烧了,也许只是你妹用对而已,进来看完再下定论。
的头像 单片机技术宅 发表于 01-16 15:31 144次 阅读
STC51单片机的IO配置问题解决方案

如何使用单片机模拟读写24C01EEPROM数据

实验目的: 熟悉使用单片机模拟读写24C01EEPROM 1、首先向24C01EEPRO....
发表于 01-16 15:21 59次 阅读
如何使用单片机模拟读写24C01EEPROM数据

PIC微型中档单片机系列参考手册免费下载

本手册介绍了PIC16CXXX 系列单片机的架构和外设模块的操作,但并不涉及每个器件的具体细节。因此....
发表于 01-16 15:02 21次 阅读
PIC微型中档单片机系列参考手册免费下载

【硬见小百科】单片机的特殊功能寄存器

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。 特殊功能寄存....
的头像 云创硬见 发表于 01-16 13:45 97次 阅读
【硬见小百科】单片机的特殊功能寄存器

Keil实例教程之Keil工程文件的建立设置与目标文件的获得

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种....
发表于 01-16 11:43 23次 阅读
Keil实例教程之Keil工程文件的建立设置与目标文件的获得

YL-51单片机开发板电路原理图免费下载

本文档的主要内容详细介绍的是YL-51单片机开发板电路原理图免费下载。
发表于 01-16 11:43 20次 阅读
YL-51单片机开发板电路原理图免费下载

多个单片机的应用实例包括简介电路图和PCB图及程序等资料免费下载

本文档的主要内容详细介绍的是多个单片机的应用实例包括简介电路图和PCB图及程序等资料免费下载包括了:....
发表于 01-16 11:43 25次 阅读
多个单片机的应用实例包括简介电路图和PCB图及程序等资料免费下载

8051系列单片机汇编指令速查表资料合集免费下载

本文档的主要内容详细介绍的是8051系列单片机汇编指令速查表资料合集免费下载。说明: Ri, Rn ....
发表于 01-16 08:00 16次 阅读
8051系列单片机汇编指令速查表资料合集免费下载

23个单片机开发小工具合集免费下载

本文档的主要内容详细介绍的是23个单片机开发小工具合集免费下载主要内容包括了:音乐代码转换,一种实用....
发表于 01-16 08:00 98次 阅读
23个单片机开发小工具合集免费下载

stm32f407外部中断容易触发

我是刚刚学习stm32单片机的,在使用外部中断的时候遇到一个问题,单片机的IO口如果配置为输入模式,中断极其容易触发,手随便摸...
发表于 01-16 06:34 103次 阅读
stm32f407外部中断容易触发

交流BLDC无刷电机控制方案

最近在研究这个东西,开源的很多,而且都是低廉的8位单片机方案,但是做的很吊。不知道论坛里有没有大神搞过?求交流啊。...
发表于 01-16 05:18 50次 阅读
交流BLDC无刷电机控制方案

如何选择合适的单片机常用单片机介绍

单片微型计算机简称单片机,是典型的嵌入式微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系....
发表于 01-15 17:18 69次 阅读
如何选择合适的单片机常用单片机介绍

单片机开发工程案例分析与解析的详细资料概述

设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管....
发表于 01-15 16:48 36次 阅读
单片机开发工程案例分析与解析的详细资料概述

使用单片机在电阻炉温度控制系统中的应用说明

传统的电阻炉温度控制系统在电阻炉启、停状态时,产生很大的冲击电流,对电阻炉设备及电网带来一系列问题并....
发表于 01-15 16:48 22次 阅读
使用单片机在电阻炉温度控制系统中的应用说明

如何使用单片机和串口进行SD卡读取平台的设计

随着现代电子技术的发展,各种存储设备的应用越来越广泛。其中以SD存储卡的应用最为广泛,但是由于在传统....
发表于 01-15 15:44 21次 阅读
如何使用单片机和串口进行SD卡读取平台的设计

单片机对19264液晶屏的驱动

首先说下19264屏 1926屏是由3个64*64 组成 64行 192列 其中192列 是6....
发表于 01-15 15:37 72次 阅读
单片机对19264液晶屏的驱动

单片机攻击的四大主要技术解析

该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的....
发表于 01-15 15:29 85次 阅读
单片机攻击的四大主要技术解析

如何使用C18编译器和MSSP模块进行SPI EEPROM与PIC18单片机的接口设计

Microchip Technology生产的25XXX系列串行EEPROM兼容SPI 通信标准,最....
发表于 01-15 14:45 22次 阅读
如何使用C18编译器和MSSP模块进行SPI EEPROM与PIC18单片机的接口设计

树莓派教程之从零开始学树莓派开发超好玩的智能小硬件制作书PDF

本书以实战开发为出发点,以Raspberry Pi应用开发为主线,通过Python开发简单的树莓派单....
发表于 01-15 10:06 61次 阅读
树莓派教程之从零开始学树莓派开发超好玩的智能小硬件制作书PDF

一个很不错的LED跑马灯程序免费下载

一个使用单片机设计的LED跑马灯程序资料免费下载,很不错。
发表于 01-15 08:00 34次 阅读
一个很不错的LED跑马灯程序免费下载

如何使用AD590设计嵌入式温度采集及显示系统

在本设计中采用TP.AD590为核心 ,与单片机相辅相成,实现温度的数字化显示。本系统的主要功能是对....
发表于 01-15 08:00 34次 阅读
如何使用AD590设计嵌入式温度采集及显示系统

HT45FH23A和HT45FH24A系列ASSP Flash型单片机数据手册免费下载

该系列单片机是具有 A/D 功能及 Holtek 低功耗架构的 8 位高性能精简指令集的 Flash....
发表于 01-15 08:00 19次 阅读
HT45FH23A和HT45FH24A系列ASSP Flash型单片机数据手册免费下载

HT45B0003和HT45B0005两线式高压收发器的数据手册免费下载

主机控制器系统控制多个联网子系统,如烟感器,水表,太阳能系统等。冗长的互连电缆的成本是主要因素。通过....
发表于 01-15 08:00 31次 阅读
HT45B0003和HT45B0005两线式高压收发器的数据手册免费下载

单片机教程之定时器和计数器原理及应用

  本文档的主要内容详细介绍的是单片机教程之定时器和计数器原理及应用主要内容包括了:定时器、计数器原....
发表于 01-14 17:20 45次 阅读
单片机教程之定时器和计数器原理及应用

硬件工程师的未来方向以及硬件设计的流程案例

发表于 01-14 16:34 0次 阅读
硬件工程师的未来方向以及硬件设计的流程案例

verilog教程之分频计数实验的资料说明

这个实验可以说是verilog入门最基础的实验了,我们不做太多的理论分析,实践是硬道理。蜂鸣器与CP....
发表于 01-14 08:00 18次 阅读
verilog教程之分频计数实验的资料说明

如何设计低功耗的单片机便携式系统详细设计方法说明

针对单片机便携式系统功耗要求低的特点,比较仝面的介绍了将单片机便携式系统如何设计成低功耗系统.主要从....
发表于 01-14 08:00 31次 阅读
如何设计低功耗的单片机便携式系统详细设计方法说明

电子钟全套资料合集免费下载

本文档的主要内容详细介绍的是如何设计电子钟 电子钟设计全套资料合集免费下载。
发表于 01-11 17:09 185次 阅读
电子钟全套资料合集免费下载

LY5A-L12单片机学习开发板电路原理图资料免费下载

本文档的主要内容详细介绍的是LY5A-L12单片机学习开发板电路原理图资料免费下载。
发表于 01-11 16:23 108次 阅读
LY5A-L12单片机学习开发板电路原理图资料免费下载

单片机P0口的内部结构及工作原理

当D端和CP/CLK端同时有信号输入后突然撤掉CP/CLK信号时,D的值将会被保存到(“锁”)在器件....
发表于 01-11 15:39 166次 阅读
单片机P0口的内部结构及工作原理

单片机低功耗设计实例合集(50例)

在嵌入式应用中,系统的功耗越来越受到人们的重视,这一点对于需要 电池 供电的便携式系统尤其明显。降低....
发表于 01-11 15:14 103次 阅读
单片机低功耗设计实例合集(50例)

13个单片机初学者必须学会的实验

本文档的主要内容详细介绍的是13个单片机初学者必须学会的实验主要内容包括了:1. 闪烁灯,2. 模拟....
发表于 01-11 14:49 203次 阅读
13个单片机初学者必须学会的实验

YZ200单片机开发板电路原理图免费下载

本文档的主要内容详细介绍的是YZ200单片机开发板电路原理图免费下载。
发表于 01-11 14:14 63次 阅读
YZ200单片机开发板电路原理图免费下载