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

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

3天内不再提示

打破思维定式——两种键盘扫描方法比较分析

聚丰开发 2018-10-24 11:24 次阅读

注:本文是作者以前发表在其个人博客,现在发布到“聚丰开发”专栏


说到键盘扫描,相信大多数人第一反应就是行列矩阵扫描,这样我们可以用相对有限的IO口得到尽可能多的按键。键盘扫描是单片机技术的一种基本处理方法,学校单片机课程都会有相应章节进行阐述,只要按照课本上讲述的方法,一般都能设计出比较可靠的键盘扫描电路与程序。


课本上的键盘扫描方法(见下图接法二)不能说是尽善尽美,从易懂性、成本、程序难易程度等方面综合看应该是不错的方法,给人感觉是已经没有太多的改善空间,至少我是这么认为的。


然而前段时间一位***朋友画给我的键盘扫描矩阵电路(见下图接法二),让我又一次看到到自己的思维还有许多地方被自己的所谓“经验”束缚着。



单纯的从硬件接法看,两种接法并没有明显区别,接法一甚至要复杂一些,但如果结合到键盘扫描的程序来看,就会发现接法一确实更好。



两种接法我都没有把上拉电阻包含进来,来让我们看一下两种接法到底有什么不同:


接法二:


我们熟悉的传统扫键处理电路,假定键盘行列IO口标号分别为H1/H2/H3和V1/V2/V3,扫键流程通常如下。


2.1. H1设置为输出,H2/H3和V1/V2/V3设置为输入


2.2. H1分别输出1和0,读V1/V2/V3状态,如果Vy状态与H1一致,则认为H1与Vy交叉位置的键按下


2.3. H2设置为输出,H1/H3和V1/V2/V3设置为输入


2.4. H2分别输出1和0,读V1/V2/V3状态,如果Vy状态与H2一致,则认为H2与Vy交叉位置的键按下


2.5. H3设置为输出,H1/H2和V1/V2/V3设置为输入


2.6. H3分别输出1和0,读V1/V2/V3状态,如果Vy状态与H3一致,则认为H3与Vy交叉位置的键按下


接法一:



新扫键处理电路,假定键盘行列IO口标号分别为H1/H2/H3和V1/V2/V3,扫键流程通常如下。


1.1. H1/H2/H3和V1/V2/V3都设置为输入


1.2. 读H1/H2/H3和V1/V2/V3状态,如果Hx和Vy读到的状态均为0,则认为Hx与Vy交叉位置的键按下


从上面流程可以看出接法一的程序代码要简单不少,既能减少扫键的代码量,又能加快扫键处理的时间,站在软件的角度看确实要比接法二要好。后来我反思了一下为什么我们教材上的传统处理方法没有采用接法一,虽然接法一软件上要简单一些,但硬件布局要复杂,传统的按键只有两条接线,接法一需要三条接线,所以用传统的按键是无法实现的,但现在许多电子产品的按键都用导电橡胶或锅仔片来实现,所以接法一变得可行。

注:这两种电路对于同时按键达到3个的情况都有可能形成错误的按键逻辑。


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

    关注

    6032

    文章

    44513

    浏览量

    632739
  • 键盘
    +关注

    关注

    4

    文章

    858

    浏览量

    39575
收藏 人收藏

    评论

    相关推荐

    比较分析两种不同的可提高栅极驱动电流的方法

    电子发烧友网站提供《比较分析两种不同的可提高栅极驱动电流的方法.pdf》资料免费下载
    发表于 09-23 11:13 0次下载
    <b class='flag-5'>比较</b><b class='flag-5'>分析</b><b class='flag-5'>两种</b>不同的可提高栅极驱动电流的<b class='flag-5'>方法</b>

    放大电路的基本分析方法有哪两种

    放大电路是电子学中的基础组成部分,用于增强信号的幅度而不改变其基本特性。在电子工程中,放大电路的设计和分析是至关重要的。放大电路的基本分析方法主要有两种:直流
    的头像 发表于 09-23 10:40 298次阅读

    红石比较两种模式的作用

    红石比较器是Minecraft中的一非常重要的红石元件,它用于比较个红石信号的强度,并根据比较结果输出不同的信号强度。
    的头像 发表于 09-05 09:17 377次阅读

    晶闸管的阻断状态有两种是什么

    晶闸管(Thyristor)是一半导体器件,具有单向导电性,广泛应用于电力电子领域。晶闸管的阻断状态有两种:正向阻断状态和反向阻断状态。以下是对这两种阻断状态的分析。 正向阻断状态
    的头像 发表于 08-14 16:49 561次阅读

    新大陆扫描枪和固定式扫码器哪种更适合制造业

    新大陆扫描枪和固定式扫码器在制造业的应用对比新大陆是中国知名的自动识别设备提供商,其产品线涵盖了手持式扫描器、固定式扫描器等多个种类。在制造
    的头像 发表于 08-13 15:03 185次阅读
    新大陆<b class='flag-5'>扫描</b>枪和固<b class='flag-5'>定式</b>扫码器哪种更适合制造业

    地物光谱仪的两种天空光测量方法比较

    地物光谱仪的两种天空光测量方法比较天空光是指太阳光经过大气分子及大气气溶胶散射后经任意方向到达地面的辐射。
    的头像 发表于 07-29 14:40 345次阅读
    地物光谱仪的<b class='flag-5'>两种</b>天空光测量<b class='flag-5'>方法</b><b class='flag-5'>比较</b>

    什么是固定式条码扫描器?固定式扫描器怎么选?

    1.产品特性固定式条码扫描器以其高度的可靠性而闻名。这种设备的设计旨在提供无与伦比的性能,无论是在高速扫描还是长时间持续工作的环境下。其多种扫描模式使其能够适应各种不同的应用环境,无论
    的头像 发表于 05-23 14:47 486次阅读
    什么是固<b class='flag-5'>定式</b>条码<b class='flag-5'>扫描</b>器?固<b class='flag-5'>定式</b><b class='flag-5'>扫描</b>器怎么选?

    两种简单、精确、灵活的热电偶温度测量方法

    电子发烧友网站提供《两种简单、精确、灵活的热电偶温度测量方法.pdf》资料免费下载
    发表于 02-28 14:41 1次下载

    OpenCV两种不同方法实现粘连大米分割计数

    测试图如下,图中有个别米粒相互粘连,本文主要演示如何使用OpenCV用两种不同方法将其分割并计数。
    的头像 发表于 01-22 14:55 1534次阅读
    OpenCV<b class='flag-5'>两种</b>不同<b class='flag-5'>方法</b>实现粘连大米分割计数

    高频电流探头的两种测量方法的过程与特点分析

    高频电流探头的两种测量方法的过程与特点分析  高频电流探头是一用于测量高频电流的仪器,常用于电力系统、通信系统和电子设备中。它具有非接触式测量、高精度、宽频带等特点,广泛应用于各个领
    的头像 发表于 01-05 16:12 748次阅读

    分享两种简单的平衡电桥设备设计

    本文给出了两种简单的平衡电桥设备设计,借此即可对个电感进行高精度的比较。LED指示器或高阻抗电话耳机用作不平衡指示器。
    的头像 发表于 01-05 09:31 793次阅读
    分享<b class='flag-5'>两种</b>简单的平衡电桥设备设计

    两种timing分析模式—GBA与PBA简单梳理

    今天想来聊一聊STA相关的内容。GBA和PBA是在做STA分析的时候的两种分析模式
    的头像 发表于 12-06 15:00 1136次阅读

    利用SPICE进行放大器稳定性分析两种方法

    利用SPICE进行放大器稳定性分析两种方法
    的头像 发表于 12-05 15:38 4811次阅读
    利用SPICE进行放大器稳定性<b class='flag-5'>分析</b>的<b class='flag-5'>两种方法</b>

    LED这两种 PWM 调光方法 哪种更好?

    Q A 问: 两种常见的 LED PWM 调光方法 脉宽调节(Pulse Width Modulation, PWM) 技术,是指利用 PWM 控制信号,其原理是通过改变 LED 正向工作电流
    的头像 发表于 11-29 20:15 6370次阅读
    LED这<b class='flag-5'>两种</b> PWM 调光<b class='flag-5'>方法</b> 哪种更好?

    电阻最大电压如何计算?告诉你两种方法

    电阻最大电压如何计算?告诉你两种方法
    的头像 发表于 11-23 09:08 1801次阅读
    电阻最大电压如何计算?告诉你<b class='flag-5'>两种</b>好<b class='flag-5'>方法</b>