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

贸泽电子设计圈 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左右的电容,这样软件上基本不用处理即可消除抖动。

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

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

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

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

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

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

收藏 人收藏
分享:

评论

相关推荐

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

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

STC12C5A60S单片机实现直流电子负载控制的设计方案

本方案通过两个自锁开关来控制电路的工作状态,在恒压、横流、恒阻之间进行切换,通过stc12c5a60....
发表于 10-16 17:19 23次 阅读
STC12C5A60S单片机实现直流电子负载控制的设计方案

PC机与单片机之间的双工通信设计

单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接....
发表于 10-16 16:56 22次 阅读
PC机与单片机之间的双工通信设计

请问DS18B20获得的温度如何传递给4块8*8点阵

DS18B20获得的温度如何传递给4块8*8点阵
发表于 10-16 15:37 80次 阅读
请问DS18B20获得的温度如何传递给4块8*8点阵

请问一下有什么三串口的单片机或者开发板

请问一下大家有什么好一点的 三串口的单片机或者开发板的,目前淘宝上的好多都是2串口的 三串口的没啥资料 谢谢 ...
发表于 10-16 14:56 97次 阅读
请问一下有什么三串口的单片机或者开发板

上位机操控单片机流水灯

#include                           ...
发表于 10-16 14:40 105次 阅读
上位机操控单片机流水灯

单片机系统按键硬件检测的几种方法介绍

在单片机系统里,按键是常见的输入设备,在本文将介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设....
发表于 10-16 14:23 32次 阅读
单片机系统按键硬件检测的几种方法介绍

51单片机串口模式3使用波特率9600单片机串口不工作

我用单片机的串口模式3通讯,但是想使用波特率9600,单片机串口不工作,为什么?...
发表于 10-16 09:11 26次 阅读
51单片机串口模式3使用波特率9600单片机串口不工作

单片机为什么会发热?

单片机空闲IO引脚的内部有上拉电阻不小心把引脚接地了,为什么会发热?...
发表于 10-16 09:02 14次 阅读
单片机为什么会发热?

请问怎么实现3路电源的隔离?

为防干扰,我想把系统的单片机部分、A/D、D/A 三部分通过光耦完全隔开,但是三部分的供电怎么解决好呢?    &nbs...
发表于 10-16 08:35 28次 阅读
请问怎么实现3路电源的隔离?

请问RS485通讯中单次发送多少字节可靠性最好?

一直在思考一个问题:上位机采用高级语言编程,下位机采用单片机,点对多通讯。在通讯测试中,发现随着单次发送(含下位机发送)...
发表于 10-16 03:47 72次 阅读
请问RS485通讯中单次发送多少字节可靠性最好?

单片机干扰如何排除?

C8051F340单片机,IO口要外接一个旋转编码器的AB相的电平信号。 当不接上编码器的时候,系统正常。 接上编码器,并不转动...
发表于 10-16 03:33 63次 阅读
单片机干扰如何排除?

请问谁有stm32初学者练习题目吗?

我是单片机初学者,最近正在学习stm32f103系列单片机,我觉得只学理论是不够的,我特希望哪位高手能给我出点儿设计上的题目,不管...
发表于 10-16 03:08 12次 阅读
请问谁有stm32初学者练习题目吗?

51单片机I/O口不能检测到光敏三极管信号

电路图如下!~想用光敏三极管的信号来使用单片机的外部中断,但是单片机I/O口一直保持初始值高电平,不能被光敏三极管的信号改...
发表于 10-15 21:57 36次 阅读
51单片机I/O口不能检测到光敏三极管信号

SH88F2051A和SH88F4051A单片机的数据手册免费下载

SH88F2051A/4051A是一种高速高效率8051可兼容单片机。在同样振荡频率下,较之传统的8....
发表于 10-15 17:01 31次 阅读
SH88F2051A和SH88F4051A单片机的数据手册免费下载

单片机中的三大内部资源的功能介绍

RAM 是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,跟电脑的内存是相似的概念,....
发表于 10-15 16:10 90次 阅读
单片机中的三大内部资源的功能介绍

PIC16F87X系列单片机引起内部复位的条件和原因分析

每次单片机加电时,上电复位电路都要对电源电压VDD的上升过程进行检测,当VDD值上升到规定值1.6~....
发表于 10-15 16:09 41次 阅读
PIC16F87X系列单片机引起内部复位的条件和原因分析

使用STC89C52单片机设计智能救援小车的论文免费下载

本小组设计制作的一款智能救援小车,能够实现2008年山东省电子设计竞赛G题的基本部分和发挥部分的所有....
发表于 10-15 14:53 36次 阅读
使用STC89C52单片机设计智能救援小车的论文免费下载

智能小车通过黑白线循迹的程序免费下载

1、调整左右传感器之间的距离,两探头距离约等于黑线宽度最合适,一般黑线宽度选择范围为3 – 5 厘米....
发表于 10-15 14:53 42次 阅读
智能小车通过黑白线循迹的程序免费下载

使用STM8S003单片机驱动LCD1602显示屏的程序和工程文件免费下载

本文档的主要内容详细介绍的是使用STM8S003单片机驱动LCD1602显示屏的程序和工程文件免费下....
发表于 10-15 08:00 39次 阅读
使用STM8S003单片机驱动LCD1602显示屏的程序和工程文件免费下载

使用89C51单片机控制开关电源的详细资料说明

文中在简单介绍高频开关电源的工作原理基础上, 以通信用-48 V开关电源为功率转换部分, 89C51....
发表于 10-14 17:46 90次 阅读
使用89C51单片机控制开关电源的详细资料说明

MM32单片机的模板代码合集免费下载

  本文档的主要内容详细介绍的是MM32单片机的模板代码合集免费下载。
发表于 10-14 17:16 25次 阅读
MM32单片机的模板代码合集免费下载

使用AT89C55WD单片机设计集成运放参数测试仪的论文免费下载

本设计采用AT89C55WD 单片机和可编程逻辑器件(FPGA)作为其测试和控制核心,能够测试通用运....
发表于 10-14 17:15 36次 阅读
使用AT89C55WD单片机设计集成运放参数测试仪的论文免费下载

单片机软件复位的两种方法解析

Bdeadloop ; 该死循环保证后面的指令不可能被执行到这种复位的作用范围覆盖了整个CM3 处理....
发表于 10-14 16:18 54次 阅读
单片机软件复位的两种方法解析

如何正确的使用单片机的定时器

写程序之前,我们要先来学会计算如何用定时器定时时间。我们的晶振是 11.0592M,时钟周期就是 1....
发表于 10-14 16:05 55次 阅读
如何正确的使用单片机的定时器

STC89C52单片机的C语言进行文件分裂的工程文件免费下载

本文档的主要内容详细介绍的是STC89C52单片机的C语言进行文件分裂的工程文件免费下载。
发表于 10-14 08:00 27次 阅读
STC89C52单片机的C语言进行文件分裂的工程文件免费下载

使用单片机点亮LED的学习课件免费下载

本文档的主要内容详细介绍的是使用单片机点亮LED的学习课件免费下载
发表于 10-14 08:00 37次 阅读
使用单片机点亮LED的学习课件免费下载

单片机实现模拟输出的方法

想要单片机输出模拟信号,属于数字信号转化为模拟信号,简称数模转换;而单片机内部的ADC模块属于模拟信....
的头像 电子魔法师 发表于 10-13 14:52 139次 阅读
单片机实现模拟输出的方法

如何才能扩展STC89系列单片机P4口的应用

对于PQFP-44和PLCC-44封装的STC89系列单片机增加了4个I/O口P4口,P4口在特殊功....
的头像 Wildesbeast 发表于 10-13 14:19 117次 阅读
如何才能扩展STC89系列单片机P4口的应用

实时时钟的单片机项目需要学习什么知识

实现实时时钟是单片机开发学习过程中,一个里程碑式的综合性项目,如果能独立完成实现实时时钟的相关显示,....
的头像 电子魔法师 发表于 10-13 11:53 153次 阅读
实时时钟的单片机项目需要学习什么知识

STC系列单片机内部AD的应用资料和程序及typedef与define的区别说明

STC89LE52AD、54AD、58AD、516AD这几款89系列的STC单片机内部自带有8路8位....
的头像 Wildesbeast 发表于 10-13 11:48 164次 阅读
STC系列单片机内部AD的应用资料和程序及typedef与define的区别说明

单片机C语言数组的详细实例程序应用介绍

 数组是由具有相同类型的数据元素组成的有序集合。数组是由数组名来表示的,数组中的数据由特定的下标来唯....
的头像 Wildesbeast 发表于 10-13 11:48 115次 阅读
单片机C语言数组的详细实例程序应用介绍

单片机系统的硬件如何抗干扰详细方法说明

影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选....
的头像 Wildesbeast 发表于 10-13 11:48 1752次 阅读
单片机系统的硬件如何抗干扰详细方法说明

如何设计两线式AD按键键盘电路

在做单片机项目开发时,经常需要用到键盘,而键盘绝大多时候使用的是单按键或矩阵键盘。矩阵键盘有许多优点....
的头像 Wildesbeast 发表于 10-13 10:33 389次 阅读
如何设计两线式AD按键键盘电路

单片机C51语言的位操作及其应用详细说明

在对单处机进行编程的过程中,对位的操作是经常遇到的。C51对位的操控能力是非常强大的。从这一点上,就....
的头像 Wildesbeast 发表于 10-13 09:33 394次 阅读
单片机C51语言的位操作及其应用详细说明

Internet的远程虚拟仪表设计方案

随着计算机技术和网络技术的发展,利用嵌入式计算机系统和网络技术,组成网络嵌入式虚拟仪表,将处于不同地....
发表于 10-13 09:15 36次 阅读
Internet的远程虚拟仪表设计方案

51单片机中断系统的重要性

你正在追电视剧《神雕侠侣》,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程中,门....
发表于 10-13 08:58 90次 阅读
51单片机中断系统的重要性

使用单片机设计一个按键校时自动打铃器的论文免费下载

文章介绍了一种以8031单片机为核心片外扩展at93c46电擦除可编程只读存储器并带有数码LED显示....
发表于 10-12 17:57 96次 阅读
使用单片机设计一个按键校时自动打铃器的论文免费下载

如何利用单片机实现LED点阵横向动画移动

这里大家是不是有种头顶冒汗的感觉?我们要做好技术,但是不能沉溺于技术。技术是我们的工具,我们在做开发....
发表于 10-12 17:02 121次 阅读
如何利用单片机实现LED点阵横向动画移动

如何用定时器来实现灯的闪烁功能

键入程序,看到了什么?灯在闪烁了,这可是用定时器做的,不再是主程序的循环了。简单地分析一下程序,为什....
发表于 10-12 16:55 101次 阅读
如何用定时器来实现灯的闪烁功能

80C51单片机的定时计数器的详细资料说明

1.定时器/计数器的工作方式0 (1)电路逻辑结构 当图6-7中的计数器=13位(TH的8位与T....
发表于 10-12 16:21 80次 阅读
80C51单片机的定时计数器的详细资料说明

PIC16F88X增强型闪存8位CMOS单片机的数据手册免费下载

本数据手册涵盖了PIC16F882/883/884/886/887 器件。PIC16F882/883....
发表于 10-12 15:52 69次 阅读
PIC16F88X增强型闪存8位CMOS单片机的数据手册免费下载

如何使用AT89C51单片机设计与实现对水塔水位控制详细资料说明

 在设计中对水塔水位控制原理进行分析,选用AT89C51 单片机作为控制水塔水位的处理芯片,由AT8....
发表于 10-12 15:30 64次 阅读
如何使用AT89C51单片机设计与实现对水塔水位控制详细资料说明

零死角玩转STM32F103指南者PDF电子书免费下载

 本书着重讲解F103 的外设以及外设的应用,力争全面分析每个外设的功能框图和外设的使用方法,让读者....
发表于 10-12 11:39 90次 阅读
零死角玩转STM32F103指南者PDF电子书免费下载

MLX90640红外阵列传感器的综合读写测试程序和工程文件免费下载

本文档的主要内容详细介绍的是MLX90640红外阵列传感器的底层驱动程序测试演示,是个完整的Keil....
发表于 10-12 08:00 81次 阅读
MLX90640红外阵列传感器的综合读写测试程序和工程文件免费下载

嵌入式技术有什么优缺点

嵌入式系统与普通的PC或者notebook不同,嵌入式系统的外形尺寸、功耗、外部适配器等各种特征必须....
发表于 10-11 15:25 103次 阅读
嵌入式技术有什么优缺点

使用89C51和89C2051单片机实现数据采集与传输系统的论文说明

该数据采集与传输系统以89C51及89C2051为核心,由数据采集模块、调制解调模块、模拟信道、测试....
发表于 10-11 15:09 96次 阅读
使用89C51和89C2051单片机实现数据采集与传输系统的论文说明

设计一个智能小车的方案论文免费下载

由于小车系统是不停运动的,所以传感器一定是非接触式的;小车运行的环境是由比赛组委会设计的,路面的状况....
发表于 10-11 15:09 95次 阅读
设计一个智能小车的方案论文免费下载

设计一个温度监测系统的论文及程序等资料免费下载

随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其....
发表于 10-11 14:27 57次 阅读
设计一个温度监测系统的论文及程序等资料免费下载

单片机和嵌入式存在什么异同

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。
发表于 10-11 14:26 66次 阅读
单片机和嵌入式存在什么异同

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

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

KEIL C51 V8.06完全汉化版应用程序和KEIL教程免费下载

本文档的主要内容详细介绍的是单片机KEIL C51 V8.06完全汉化版应用程序和KEIL教程免费下....
发表于 10-10 16:25 69次 阅读
KEIL C51 V8.06完全汉化版应用程序和KEIL教程免费下载

如何使用AT89C51单片机设计数据采集系统

设计了一个用AT89C51 单片机、串行A/D转换芯片TLC2543等构成的数据采集系统本系统不仅可....
发表于 10-10 16:25 53次 阅读
如何使用AT89C51单片机设计数据采集系统

实现智能小车避障实验的资料和代码免费下载

避障传感器基本原理,和循迹传感器工作原理基本相同,利用物体的反射性质。在一定范围内,如果没有障碍物,....
发表于 10-10 16:08 89次 阅读
实现智能小车避障实验的资料和代码免费下载

LS53C单片机使用说明资料免费下载

LS53C多核单片机是我公司设计、生产的高性能8位系列MCU,其指令系统与MCS-51兼容。
发表于 10-10 16:08 57次 阅读
LS53C单片机使用说明资料免费下载

基于总线驱动芯片和单片机的远程数据采集系统设计

系统采集大坝坝内各个方位的形变,这种形变反映出各个方位的压力值。选用NZS - 25 系列差阻式应变....
发表于 10-10 15:52 66次 阅读
基于总线驱动芯片和单片机的远程数据采集系统设计

使用Proteus仿真软件实现单片机P1、P3口输入输出实验的详细资料说明

进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结....
发表于 10-10 15:46 92次 阅读
使用Proteus仿真软件实现单片机P1、P3口输入输出实验的详细资料说明

实时多任务操作系统在51单片机项目开发中的应用说明

嵌入式技术是21 世纪具有广阔发展前景的技术之一,由于其可靠性高、实时性强、便于开发和维护等诸多特点....
发表于 10-10 15:19 54次 阅读
实时多任务操作系统在51单片机项目开发中的应用说明

郭天祥单片机的实验电路原理图和PCB免费下载

本文档的主要内容详细介绍的是郭天祥单片机的实验电路原理图和PCB免费下载。
发表于 10-10 08:00 78次 阅读
郭天祥单片机的实验电路原理图和PCB免费下载

ARM单片机的学习笔记免费下载

首先、通过RCC_APB2PeriphClockCmd()函数是设置外设时钟。ARM与C51单片机不....
发表于 10-09 17:45 68次 阅读
ARM单片机的学习笔记免费下载

单片机C语言编程的八个基本规则解析

在数字滤波中有一种叫做“去极值平均滤波”技术,就是对采集的数据按照从大到小或者从小到大进行排序,然后....
发表于 10-09 14:24 130次 阅读
单片机C语言编程的八个基本规则解析