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

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

3天内不再提示

单片机按键设计的方法,这几个方案不错

4bDk_HOLTEK_MCU 来源:互联网 作者:佚名 2018-01-06 07:05 次阅读

单片机按键设计的四个方案详解

在单片机系统里,按键是常见的输入设备,在本文江介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设计上,一般有四种方案:

一是GPIO口直接检测单个按键,如图1.1所示;

二是按键较多则使用矩阵键盘,如图1.2所示;

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

四是利用单片机ADC,在不同的按键按下后,能够使得ADC接口上的电压不同,根据电压的不同,则可以识别按键,如图1.4所示。图1.1方案一

图1.2方案二

图1.3方案三

图1.4方案四

在以上四种设计上,各有优点和不足。

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

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

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

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

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

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

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

改进三:因为按键不可避免的有抖动,因此按键消抖可以通过硬件消痘和软件消抖。现在分享一个十分简单且有效的硬件消痘方法:给按键并联一个104左右的电容。软件上基本不用处理即可避免抖动。

改进四:在按键扫描检测的方案下,如果主循环中有某个函数占用时间较长,则按键会发生或长或短的“失灵”,现分享我的一个解决方案。将按键扫描放到定时器中断里面,这样就可周期性地检测按键按下情况,不受主循环的影响。并且,能解析出按键的不同状态,即按下、按住、弹起、为按下这四种状态,用以实现更丰富的功能。

但需注意两点,一是定时器的定时时间,不可过长也不可过短,过长容易检测不到按下,过短会占用大量时间资源。二是中断服务程序需简单明了,只做检测用,通过全局变量传递,在主循环内完成按键响应,中断服务函数内尽量不要占用太多时间。

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

    关注

    6044

    文章

    44632

    浏览量

    639390
  • GPIO
    +关注

    关注

    16

    文章

    1217

    浏览量

    52485
  • 按键设计
    +关注

    关注

    0

    文章

    2

    浏览量

    1809

原文标题:单片机按键设计的四个方案详解

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

收藏 人收藏

    评论

    相关推荐

    32位单片机相关资料和解决方案参考指南

    电子发烧友网站提供《32位单片机相关资料和解决方案参考指南.pdf》资料免费下载
    发表于 01-21 14:00 0次下载
    32位<b class='flag-5'>单片机</b>相关资料和解决<b class='flag-5'>方案</b>参考指南

    单片机调试常见问题与解决方法

    烧录到单片机时,烧录软件显示无法与单片机通信。 解决方法: 检查单片机的电源是否正常,确保电源电压在规定的范围内。 检查烧录线的连接是否正确,包括数据线和地线。 确认烧录软件是否选择了
    的头像 发表于 11-01 14:11 1281次阅读

    单片机按键中断配置教程

    一些小伙伴觉得单片机入门太难了,又要懂原理图、又要懂寄存器、还要学编程语言。
    的头像 发表于 10-23 16:30 792次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>按键</b>中断配置教程

    基于51单片机的手动数字时钟

    具体实现功能由51单片机+8位共阴数码管+独立按键构成。具体功能:(1)利用数码管显示时分秒,显示格式为“时-分-秒”;(2)利用6个按键控制时、分、秒,设定好后自动开始时钟显示;(3)设置秒复位
    的头像 发表于 10-22 14:12 308次阅读
    基于51<b class='flag-5'>单片机</b>的手动数字时钟

    单片机怎么写入程序

    程序通常涉及以下几个步骤: 选择单片机和开发环境 : 确定项目需求,选择合适的单片机型号。 安装相应的开发环境,如Keil、IAR、MPLAB等。 硬件连接 : 将单片机连接到开发板或
    的头像 发表于 10-21 11:21 1016次阅读

    单片机烧录程序的线比单片机上的少还能烧录吗

    的存储器通常分为两类:ROM(只读存储器)和RAM(随机存取存储器)。ROM用于存储程序代码,而RAM用于存储程序运行过程中的数据。烧录过程就是将程序代码写入ROM中。 单片机烧录方法 单片机烧录的
    的头像 发表于 09-02 09:54 638次阅读

    单片机烧录程序的基本步骤是什么

    单片机烧录程序的基础,它包含了单片机芯片、电源、接口等基本元件。在选择单片机开发板时,需要考虑以下几个方面: (1)单片机型号:根据项目需
    的头像 发表于 09-02 09:47 1552次阅读

    单片机boot0和boot1怎么设置

    单片机的启动模式通常包括从内部ROM启动、从外部ROM启动、从外部Flash启动等。 不同的启动模式对应不同的Boot0和Boot1设置。 Boot0和Boot1的设置方法 Boot0和Boot1通常通过
    的头像 发表于 08-22 09:50 3211次阅读

    蓝牙模块如何实现单片机和手机端数据互传

    蓝牙模块实现单片机和手机端数据互传的过程可以分为以下几个步骤: 硬件准备 : 确保你有一个支持蓝牙通信的单片机开发板,如Arduino、Raspberry Pi等。 准备一个兼容的蓝牙模块,如
    的头像 发表于 07-24 17:59 2994次阅读
    蓝牙模块如何实现<b class='flag-5'>单片机</b>和手机端数据互传

    基于STM32单片机的简易波形发生器设计

    系统内使用STM32单片机进行主控,proteus内部集成示波器,使用按键可以调节波形的输出方式,在示波器上可以实时观察波形的变化。
    的头像 发表于 06-27 10:18 2227次阅读
    基于STM32<b class='flag-5'>单片机</b>的简易波形发生器设计

    基于51单片机的电子钟【调时,DS1302,数码管,独立按键】(仿真)

    基于51单片机的电子钟【调时,DS1302,数码管,独立按键】(仿真)
    的头像 发表于 04-10 00:41 2629次阅读
    基于51<b class='flag-5'>单片机</b>的电子钟【调时,DS1302,数码管,独立<b class='flag-5'>按键</b>】(仿真)

    基于51单片机的电子钟【整点报时,6数码管,独立按键】(仿真)

    基于51单片机的电子钟【整点报时,6数码管,独立按键】(仿真)
    的头像 发表于 04-10 00:37 1065次阅读
    基于51<b class='flag-5'>单片机</b>的电子钟【整点报时,6数码管,独立<b class='flag-5'>按键</b>】(仿真)

    如何系统、科学地自学单片机

    的自学单片机呢?自学单片机需要一定的计划和方法,以下是具体的步骤和建议。如何系统、科学地自学单片机?学习电子基础知识:理解电路原理、数字电子技术、模拟电子技术等基础
    的头像 发表于 03-28 08:03 1228次阅读
    如何系统、科学地自学<b class='flag-5'>单片机</b>?

    fpga编程与单片机编程的区别

    FPGA编程与单片机编程的主要区别体现在以下几个方面。
    的头像 发表于 03-14 17:16 1144次阅读

    8-Bit 触控式 Flash 单片机中文资料

    而又有效的实现方法。 触摸按键功能完全集成于单片机内,使用较少的外部元件便可实现触摸按键的 应用。该系列单片机除了 Flash 程序存储器,
    发表于 02-28 10:01 4次下载