当前位置: 首页 > news >正文

STM32之蜂鸣器和按键

一、蜂鸣器的原理与应用

  • 基本概念

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

  • 工作原理

蜂鸣器一般分为两类:有源蜂鸣器 or 无源蜂鸣器,有源或者无源指的是蜂鸣器内部是否具有振荡电路,无源蜂鸣器内部没有振荡器,所以通电之后是不会鸣叫,必须提供一个驱动信号。

三极管在电路中一般有截止、放大、饱和三种工作状态,不同状态下作用不同,如下所示:

截止状态:此时三极管的发射结反偏,集电结也反偏(以 NPN 型三极管为例,即基极电压低于发射极电压 ,且集电极电压高于基极电压),基极电压低于一定阈值,集电极和发射极之间几乎没有电流流动,各电极电流几乎为 0 ,相当于电路中的断路,主要用于电路的关断控制,如在开关电路中,截止状态下三极管可切断电路通路,使相关电路不工作。

放大状态:发射结正偏,集电结反偏(NPN 型三极管基极电压高于发射极电压,且集电极电压高于基极电压),基极电流的微小变化能引起集电极电流较大的变化,常用于信号放大电路,如在音频放大器中,可将微弱的音频电信号进行放大,以便驱动扬声器等负载设备。

饱和状态:发射结和集电结均处于正偏(NPN 型三极管基极电压高于发射极电压,且集电极电压低于基极电压),当基极电流增大到一定程度后,集电极电流不再随基极电流的增加而增大,三极管相当于一个闭合的开关,此时集电极和发射极之间的电压降很小,可用于实现电路的导通,如在数字电路中,作为开关使用来控制电路的通断,实现逻辑功能。

  • 程序设计

注意:如果用户不想计算寄存器的物理地址,则可以选择使用ST公司提供的寄存器地址,这些地址都定义在stm32f4xx.h头文件中

提示:如果想要提高程序的开发效率,则可以选择使用库函数实现对硬件寄存器的配置,但是不同的外设会提供不同的函数接口,如果想要知道外设的具体的库函数的使用流程,则可以阅读每个外设源文件(stm32f4xx_xxx.c)的开头注释

  1. 输出高电平

  1. 输出低电平

二、按键检测的原理与应用

  • 基本概念

在单片机系统中,按键是最基础的人机交互元件,它通过简单的机械或电容触控方式,将用户的操作指令转化为电信号,为单片机提供精准的输入控制。按键的种类是比较丰富的,包含机械按键(实体按压)、薄膜按键(轻触式)、电容式按键(非接触感应)等,适配不同场景需求。

轻触按键由于微动开关的特性以及体积小、质量轻的优势在家用电器方面得到了广泛的应用,比如电视机按键、电脑按键、光驱按键、键盘按键、显示器按键、照明按键等,按键属于最常用的人机交互方式。

  • 工作原理

轻触按键只要轻轻的按下按键就可以开关接通,松开时就断开连接,实现原理主要是通过轻触按键内部的金属弹片受力弹动来实现接通和断开的。

按键通过内部金属弹片实现通断,按下时触点闭合,松开后断开。机械触点动作会伴随5ms-20ms的抖动,单片机可以通过扫描或中断方式检测按键状态,实现“按下→检测→响应”的闭环逻辑。

  • 电路分析

  • 程序设计

  • 消抖处理

按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

消抖处理的方案可以分为硬件消抖软件消抖,硬件消抖可以使用RS触发器或者RC积分电路,如果采用方案,则会导致硬件电路的设计变得复杂。

软件消抖指的是利用程序进行消抖处理,最常用的一种方案就是延时消抖,当用户按下按键时,先让CPU进行延时,当延时时间到达后,机械弹片已经稳定,此时再让CPU读取IO口的电平状态,可以提高程序的可靠性。

一般软件的延时时间选择在5ms~10ms左右时比较合理的,如果延时太长时间,会导致程序的实时性下降。

  1. 软件模拟

软件延时的一种方案是利用循环实现,比如在循环中让变量的值不断递减,达到一个时间差,这种方案有一个弊端:很难把握时间,所以利用逻辑分析仪可以进行程序调试。

  1. 用定时器

利用MCU的定时器资源实现,但是该方案也有弊端:写代码较为复杂,并且需要使用MCU的定时器外设。

相关文章:

  • 支持同步观看的媒体服务器GhostHub
  • SpringCloud微服务开发与实战
  • 初识计算机网络。计算机网络基本概念,分类,性能指标
  • 代码随想录60期day38
  • “分布形态“
  • Java 常用的Arrays函数
  • 初识仓颉编程语言:高效、简洁与创新的编程选择
  • C++:字符串操作函数
  • uniapp-商城-60-后台 新增商品(属性的选中和页面显示,数组join 的使用)
  • NexBot AI 1.9.3 | 专业AI写作助手,高自由度定制内容,支持中文设置
  • foxmail - foxmail 启用超大附件提示密码与帐号不匹配
  • ESP32 PWM开发对比:底层驱动 VS Arduino封装,谁更适合你?
  • 4.3/Q1,Charls最新文章解读
  • XML介绍及常用c及c++库
  • Transformer 模型与注意力机制
  • LlamaIndex 第九篇 Indexing索引
  • 2025第三届盘古石杯初赛(计算机部分)
  • 系统线程nt!CcPfBootWorker里面的nt!MmPrefetchPages函数分析
  • 接触感知 钳位电路分析
  • 锚点跳转跟踪#
  • 老字号“逆生长”,上海制造的出海“蜜”钥
  • 证监会强化上市公司募资监管七要点:超募资金不得补流、还贷
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 党建评:对违规宴饮等问题要坚决露头就打
  • 日本前卫艺术先驱群展上海:当具体派相遇古树古宅
  • 俄官员说将适时宣布与乌克兰谈判代表