键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘。

在一般嵌入式应用中,用的最多的是非编码键盘,也有用到编码键盘的。非编码键盘又分为独立键盘和行列式(又称为矩阵式)键盘。所谓独立式键盘,即嵌入式CPU(或称MCU)的一个GPIO口对应一个按键输入,这个输入值的高低状态就是键值。矩阵键盘用于采集键值的GPIO是复用的,一般分为行和列采集,例如4*4矩阵键盘就只需要行列各4个按键就可以了,矩阵键盘的控制较独立键盘要复杂得多,本实验未涉及,所以对其原理不做详细介绍。

独立按键一般有2组管脚,虽然市面上我们常常看到有4个管脚的按键,但它们一般是两两导通的,这2组管脚在按键未被按下时是断开的,在按键被按下时则是导通的。基于此原理,我们一般会把按键的一个管脚接地,另一个管脚上拉到VCC,并且也连接到GPIO。这样,在按键未被按下时,GPIO的连接状态为上拉到VCC,则键值为1;按键被按下时,GPIO虽然还是上拉到VCC,但同时被导通的另一个管脚拉到地了,所以它的键值实际上是0。

我们的SF-CY4开发板上有一组4*4矩阵键盘。通过P12的PIN1-2短接时,其实S1/S2/S3/S4可以作为独立按键使用,它的一端接地,另一端在上拉的同时连接到FPGA的I/O口。当I/O口的电平为高(1)时,说明按键没有被按下,当I/O口的电平为低(0)时,说明按键被按下了。这是8.4节中我们的使用方法。在本实例中,我们不再只局限于独立按键这么low的应用了,这里我们将要把所有16个按键都使用起来,实现我们真正的矩阵按键功能。要做矩阵按键,那么大家首先要确认把自己的SF-CY4开发板上插座P12的PIN2-3用跳线帽短接。矩阵按键的原理图如图8.85所示。

图8.85 矩阵按键原理图

接续上面的原理图,我们来看看矩阵按键的键值如何获得。

通常,我们将这个矩阵按键分为两组信号,即列信号(包括BUT0/BUT1/BUT2/BUT3)和行信号(BUT4/BUT5/BUT6/BUT7)。列信号作为FPGA的输入信号,行信号作为FPGA的输出信号。

若FPGA输出的行信号为高电平时,无论是否有按键被按下,列信号输入到FPGA的电平始终为高电平,这是无法实现任何的矩阵按键值采集的;若FPGA输出的行信号为低电平时,没有按键按下,那么列信号会保持高电平(因为有上拉),有键按下时,则由于按键将行、列信号短接,那么列信号的电平会由于行信号而被拉低,通过这种方式,我们就可以达到键值的检测。

但是,可能大家还有疑惑,4个行信号若同时拉低,那么任意一个4X4按键被按下,所有的列信号也都会拉低啊,这只能判断是否有按键被按下,具体哪一个按键被按下就不得而知了。确实如此,解决办法也很简单,我们在同一时刻只能拉低4个行信号中的一个,那么它就将按键状态定位到具体的行,这样就如同独立按键一样可以直接定位到这一行按键中的哪个按键被按下了。在实现上,我们会让4个行信号循环的拉低,同一时刻有且只有一个行信号输出为低电平,这就是我们所说的“键盘扫描”原理。

本实例实现矩阵按键值的采集(即判断16个按键的哪个被按下了),然后通过数码管显示按键值(显示值为16进制的0-F),数码管最低位显示最后一次的键值,高3位显示之前的值,即每按下一次按键,数码管的键值右移一位。

如图8.86所示,用8个信号检测16个按键值,有点难度,不过原理上一节我们已经讲过。从功能上,我们首先对4个作为输入的列信号进行按键消抖处理,然后依次输出不同的行信号值,以此找到有键按下时的特殊列信号值,这样便能采集键值,送往数码管显示。

图8.86 矩阵按键扫描实例功能框图

工程结构如图8.87所示,cy4.v为顶层模块,不做逻辑,只做信号接口定义和连接。anykeyscan.v模块实现行信号输出;sigkeyscan.v实现列信号的按键消抖和键值采集;seg7.v为数码管驱动模块。

图8.87 矩阵按键扫描实例模块层次

计算机键盘是编码键盘还是非编码键盘,矩阵按键原理图_矩阵按键扫描实例相关推荐

  1. python编程midi键盘按键错乱_电脑键盘按键错乱怎么回事 电脑键盘按键错乱原因【图文】...

    电脑键盘是把文字信息的控制信息输入电脑的通道,从英文打字机键盘演变而来的,当它最早出现在电脑上的时候,是以一种叫做"电传打字机"的部件的形象出现的.在我们使用电脑键盘时不免出现点小 ...

  2. python编程midi键盘按键错乱_电脑键盘按键错乱怎么回事?几步轻松搞定

    电脑键盘是把文字信息的控制信息输入电脑的通道,从英文打字机键盘演变而来的,当它最早出现在电脑上的时候,是以一种叫做"电传打字机"的部件的形象出现的.在我们使用电脑键盘时不免出现点小 ...

  3. 台式电脑键盘按键错乱_电脑键盘按键怕误触怎么办?用这款软件帮你屏蔽指定键盘按键!支持替换按键!...

    点击蓝字即可快速关注我,分享好软件~ 平时在一些情况下,比如在打游戏的时候,如果不小心按到了win键,就会被跳回桌面,非常的麻烦 今天小林君就来分享一个非常好用的小工具,通过它可以实现屏蔽电脑键盘上任 ...

  4. 锁定计算机提示字母k但无用,我的键盘字母GH数字键全按不起

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:我的键盘字母GH数字键全按不起 问题详情:H,M,N,空格,标点符号,字母上方的数字键,我的是无线键盘鼠回答:果然很2.如果是台式的 ...

  5. 计算机编码发展历史和编码方式

    编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码. 用预先规定的方法将文字.数字或其它对象编成数码,或将信息.数据转换成规定的电脉冲信号. 编码在电子计算机.电视. ...

  6. 小学计算机学打字教学教案,小学信息技术《键盘一家》的教学设计

    第1篇:小学信息技术<键盘一家>的教学设计 1.认识键盘. 2.了解键盘*作指法. 3.学会中排键的*作指法. 4.学会写字板的启动和退出. 5.学会正确的打字姿势. 学会基本键指法,学会 ...

  7. 计算机采用的编码机制是什么,编码机制

    编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码.用预先规定的方法将文字.数字或其它对象编成数码,或将信息.数据转换成规定的电脉冲信号,这个方法就是编码机制. 中文 ...

  8. 算法训练营 重编码_编码训练营还教您如何每天被拒绝10次。

    算法训练营 重编码 by Erik Cannon 通过埃里克·坎农 编码训练营还教您如何每天被拒绝10次. (Coding bootcamps also teach you how to get re ...

  9. 小学计算机课教案认识键盘,【键盘的使用方法教案】认识键盘教案

    <[键盘的使用方法教案]认识键盘教案>由会员分享,可在线阅读,更多相关<[键盘的使用方法教案]认识键盘教案(5页珍藏版)>请在人人文库网上搜索. 1.键盘的使用方法教案]认识键 ...

最新文章

  1. 学术-数学:哥德巴赫猜想
  2. PyTorch | (1)初识PyTorch
  3. Springboot项目中的favicon
  4. TC SRM 562 div2 B 题
  5. 用户画像之Spark ML实现
  6. 智能合约从入门到精通:Solidity Assembly
  7. 美图2019年财报发布:“高级订阅”收入亮眼 成为重要商业模式
  8. 若依前后端分离版本如何使用Swagger
  9. 【CCCC】L2-011 玩转二叉树 (25分),二叉树建树与遍历(我讨厌树,@L2-006)
  10. 自我与人际沟通课程复习
  11. 登录业务的演变、单点登录(SSO)的三种解决方案
  12. Linux快速查看OpenCV版本
  13. 模糊C均值聚类算法---图像分割(python)
  14. 13.6 SpringBoot集成Mongodb开发问题@EnableMongoRepositories路径配置
  15. 通过计算机管理看主板型号,电脑主板型号在哪里看? 每日一答
  16. windows10一右击就转圈圈,假死状态解决了
  17. Unity笔记-29-ARPG游戏项目-03-攀爬系统
  18. 把PDF转换成图片,大家都这么做
  19. android ocr 身份证识别
  20. 深夜,想到今天学的linux内容,太值了

热门文章

  1. scrollBarStyle- listview滑动条调整
  2. oracle 10 升级补丁
  3. Aspx页面中直接编写javascript脚本
  4. 弹性地基梁板法计算原理_地基下沉别慌张!沉着冷静用对地基加固法
  5. 小程序promise封装post请求_微信小程序 es6-promise.js封装请求与处理异步进程
  6. java static用法_Java中static关键字的作用和用法详细介绍
  7. 【CoppeliaSim】使用 Lua 语言控制四旋翼无人机运行
  8. 【Arduino】Nano功能引脚 PWM IIC UART 中断
  9. 【Paper】2021_Consensus Control of Leader-Following Multi-Agent Systems in Directed Topology
  10. 【PC工具】windows批处理脚本一键bat脚本编辑器,bat转exe工具使用方法,附helloworld参考例程...