0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

四种单片机按键软硬件设计方案介绍

贸泽电子设计圈 来源:YXQ 作者:电子发烧友 2019-08-05 16:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单片机系统里,按键是常见的输入设备。本文将介绍四种按键硬件设计上的方案和一些软件设计方面的技巧。

一、直接检测GPIO口单个按键,如图1所示。

图1:方案一

二、在按键较多的情况下,则使用矩阵键盘,如图2所示。

图2:方案二

三、将按键接到外部中断引脚上,利用按键按下产生的边沿信号进行按键检测,如图3所示。

图3:方案三

四、利用单片机的数字转换器ADC - Analog-to-digital converter),设定按键按下前后经过ADC接口电压的不同,根据电压的差別来识别按键,如图4所示。

图4:方案四

以上四种设计分別各有优点和不足。

第一种设计是最简单、最基础的做法,对于单片机初学者很容易理解和使用,但缺点是需要在主循环中不断检测按键是否按下,并且需要做消抖处理。若主循环中某个函数任务占用时间较长,则按键会有不同程度的“失灵”。

第二种设计的优点是能够在GPIO数量有限的情况下,扩展尽可能多的按键。但缺点同上,需要不停检测按键是否按下。

第三种设计的效率最高,不需要循环检测按键是否按下,但缺点是需要单片机有足够的外部中断接口供使用。

第四种设计的优点是只需要单片机有一个ADC接口、一根线,就能对多个按键进行识别,缺点是按键内部一旦接触不良,则可能导致按键串位,并且按键产生的抖动有可能会造成识别错误。

在以上常见按键设计的基础上,分享一下我学习和工作中总结的按键方案。

改进一:在原方案一的基础上,加上与门电路,使得任何一个按键按下都能产生中断,然后在中断里面识别是哪个按键被按下。这改动令电路不需要循环扫描,大大提高了效率。方案如图5所示。只需要在每个按键对应地增加一个二极管,利用二极管的线与特性,就可以实现按下任何按键都能产生中断信号,同時按键之间互不影响。二极管选用普通整流二极管即可,经过测试,可靠可行。

图5:改进一

改进二:在原有ADC按键的基础上,也可以增加二极管的方式,实现按键中断,并在中断服务程序里进行AD转换,从而识别按键。电路如图6所示。

图6:改进二

改进三:按键时难免会作成抖动,因此必需按键消抖。消抖也可以通过硬件消抖和软件消抖,这里分享一个十分简单且有效的硬件消抖方法:给按键并联一个104左右的电容,这样软件上基本不用处理即可消除抖动。

改进四:在按键扫描检测的方案下,如果主循环中有某个函数占用时间较长,按键或会发生长短不一的“失灵”。对此可以将按键扫描放到定时器中断里面,这样就可周期性地检测按键按下的情况,在不受主循环的影响下解析出按键的不同状态。(按下、按住、弹起和未按下)

如果都設置了以上的改进,仍要注意以下两点:

一、定时器的定时时间不可过长也不可过短。过长容易检测不到按下,过短会占用大量时间资源。

二、中断服务程序需简单明了。只做检测用,通过全局变量传递,在主循环内完成按键响应,尽量不要在中断服务函数内占用太多时间。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675385
  • 软硬件
    +关注

    关注

    1

    文章

    332

    浏览量

    20233
  • 按键
    +关注

    关注

    4

    文章

    230

    浏览量

    58558

原文标题:这些单片机按键设计方案,拿走不谢!

文章出处:【微信号:Mouser-Community,微信公众号:贸泽电子设计圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    驱动之路#24:Linux设备四种读写模型

    Linux 设备四种读写模型——其实核心就 4 方式:查询、休眠 - 唤醒、poll、异步通知。它们不是中断本身,而是 “应用 - 驱动” 的上层交互逻辑(中断是底层硬件触发机制),但高效交互几乎都依赖中断实现。
    的头像 发表于 05-06 16:26 5043次阅读

    单片机系统设计方法

    的采集通道数,完成数据采集、数据显示、数据传输及数据定时存储等基本功能 单片机系统的性能指标和加密技术 1.抗十扰特性。通常,在各种工业设计环境中遇至不同形式的干扰.单片机数据采集系统是软硬件的结合.因此
    发表于 01-06 06:23

    怎么学好单片机

    单片机,是软硬件的综合体。并不是单单会点汇编或者C语言就说会单片机,这顶多只能说会编程而已。因为大部分单片机系统都是不带操作系统的裸机系统,那么没有所谓的操作系统和应用软件,没有操作系
    发表于 12-04 07:16

    单片机系统硬件的调试方法

    单片机的系统硬件调试,通常有静态调试和动态调试两不同,前者是通过目测、万能表测试、加电检查、联机检查的方法,在加电于样机之前.对样机的型号规格,以及安装要求等进行核对,同时检查 电源 系统.防止
    发表于 12-03 06:10

    利用 NucleiStudio IDE 和 vivado 进行软硬件联合仿真

    本文利用NucleiStudio IDE 和 vivado 对 NICE demo协处理器进行软硬件联合仿真。 1. 下载demo_nice例程:https://github.com
    发表于 11-05 13:56

    软硬件协同技术分享 - 任务划分 + 自定义指令集

    Level , ESL)得到催生,然而ESL设计依赖于复杂的高层次建模以及庞大的数据支持,且其工具链的发展仍不是十分完善。 在现阶段的开发氛围中,软硬件协同开发是一能够缩短开发周期,并提升总体性能的高效
    发表于 10-28 08:03

    兆芯加入基础软硬件产品漏洞生态联盟

    近日,CCS 2025成都网络安全技术交流系列活动——国家漏洞库(CNNVD)基础软硬件产品漏洞治理生态大会在成都成功举办。来自国家关键基础设施单位、基础软硬件企业、高校科研机构的数百名代表齐聚一堂,共商网络安全发展大计。
    的头像 发表于 09-22 13:50 1085次阅读

    经典的软硬件结合+5V一键开关机电路 #MOS管 #电路原理 #半导体 #电子

    软硬件
    微碧半导体VBsemi
    发布于 :2025年09月05日 16:38:40

    电动工具EMC测试整改:软硬件协同方案

    深圳南柯电子|电动工具EMC测试整改:软硬件协同方案
    的头像 发表于 08-12 17:02 1125次阅读
    电动工具EMC测试整改:<b class='flag-5'>软硬件</b>协同<b class='flag-5'>方案</b>

    单片机定制研发流程有哪些?选择专业团队是关键

    单片机定制研发是一项系统性工程,涉及需求分析、方案设计、软硬件开发、测试验证等多个环节,流程的规范性直接影响最终产品的稳定性和开发效率。对于企业而言,选择具备丰富经验和技术实力的合作伙伴,能有效缩短研发周期、降低成本。
    的头像 发表于 07-23 17:58 747次阅读

    MH32F103A系列单片机产品概述

    MH32F103A系列单片机软硬件兼容STM32F103A系列,可以快速替换,同时强化许多功能。性能和价格都非常的有优势。
    的头像 发表于 07-21 15:45 1571次阅读
    MH32F103A系列<b class='flag-5'>单片机</b>产品概述

    嵌入式和单片机,是同一个东西吗?

    的程序控制各种外部设备,完成特定的操作。 总结来说,单片机是嵌入式系统中的一重要硬件组件,而嵌入式系统则是一个更为广泛的概念,它包含了单片机在内的所有
    发表于 07-09 10:20

    RDMA简介3之四种子协议对比

    分别介绍四种子协议。图1RDMA四种子协议网络层级关系图InfiniBand:InfiniBand是一专为RDMA设计的网络,其传输层、网络层及链路层均遵循IB协议规范,没有类似以
    发表于 06-04 16:05

    技术故障率降低20%!关键在于这套IoT软硬件一体化方案

    HAZEMAG携手宏集EXOR部署软硬件IoT融合方案,围绕耐用性、兼容性与可视化效率三个关键目标展开,控制系统标准化统一、增强设备通信能力、优化可视化软件,实现高效稳定运行。
    的头像 发表于 05-27 14:21 734次阅读
    技术故障率降低20%!关键在于这套IoT<b class='flag-5'>软硬件</b>一体化<b class='flag-5'>方案</b>