矩阵键盘检测

合集下载

简述扫描法识别矩阵式键盘上闭合键的方法

简述扫描法识别矩阵式键盘上闭合键的方法

简述扫描法识别矩阵式键盘上闭合键的方法扫描法是一种常见的识别矩阵式键盘上闭合键的方法。矩阵式键盘是指将键排列成矩阵形式的键盘,其中每个键都有一个唯一的行列坐标。扫描法通过依次扫描矩阵中的每个键,并检测按下的键是否闭合来实现键盘输入的识别。

以下是利用扫描法识别矩阵式键盘上闭合键的一般步骤:

1.确定矩阵的行数和列数:首先确定键盘的行数和列数,通常可以通过读取键盘的配置文件或者手动测量来获取。

2.设置输入输出引脚:将矩阵的行和列分别与输入输出引脚相连,通常使用数字输入输出引脚来实现。根据具体的硬件平台和编程语言,设置引脚可以使用GPIO库或者其他相关库函数。

3. 循环扫描键盘:使用一个循环结构不断扫描键盘的状态。一般的循环结构可以使用while或者for语句实现。

4.逐行扫描:在每次循环中,按照从上到下的顺序逐行扫描键盘。可以使用一个循环结构来实现逐行扫描。

5.逐列检测:对于每行键盘键,按照从左到右的顺序逐列检测。通过将当前的行输入高电平,然后逐一检测列的输入状态,以确定是否有键闭合。如果检测到闭合键,可以记录下当前的行列坐标。

6.处理按键操作:在检测到闭合键后,根据该键的行列坐标来进行相应的键盘输入处理。可以通过根据行列坐标查找键对应的ASCII码或者其他键值来实现。

7.更新循环:在完成当前一次循环后,更新循环计数器,继续循环扫

描键盘。

需要注意的是,扫描法是一种实时性较强的识别方法,需要以较高的

频率(例如每秒数十次)循环扫描键盘,以确保能够准确地检测到闭合键。此外,具体的实现方法可能会因硬件平台和编程语言的不同而有所差异,

实验一 矩阵键盘检测

实验一  矩阵键盘检测

实验一矩阵键盘检测

一、实验目的:

1、学习非编码键盘的工作原理和键盘的扫描方式。

2、学习键盘的去抖方法和键盘应用程序的设计。

二、实验设备:

51/AVR实验板、USB连接线、电脑

三、实验原理:

键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。我们可以通过键盘输入数据或命令来实现简单的人机通信。

1、按键的分类

一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。

按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别。

全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成。由于其经济实用,

较多地应用于单片机系统中(本学习板也采用非编码键盘)。

2、按键的输入原理

在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,计算机应

C51矩阵键盘的检测

C51矩阵键盘的检测
为了防止双键或多键同时按下,往往从第0行一直扫 描到最后1行,若只发现1个闭合键,则为有效键,否 则全部作废。
找到闭合键后,读入相应的键值,再转至相应的键处 理程序。
键号 = 行首键号(0、4、8、12)+列号(0、1、2、 7/21 3)
A Pera Global Company © PERA China
矩阵键盘的检测方法
U1
P10 P11 P12 P13 P14 P15 P16 P17
1 2 3 4 5 6 7 8
P10 P11 P12 P13 P14 P15 P16 P17
P00 P01 P02 P03 P04 P05 P06 P07
39 38 37 36 35 34 33 32
K0
P10
K4
参考程序见“矩阵键盘-线反转法”
15/21
A Pera Global Company © PERA China
9/21
A Pera Global Company © PERA China
矩阵键盘的检测方法
以4*4矩阵键盘接P3口为例 先列扫描置P3=0xf0,当有键按下得列值,再行 扫描置P3=0x0f,当有键按下得行值,最后合并 行列值得键值。
10/21
A Pera Global Company © PERA China
矩阵键盘检测的控制方式

实验6 矩阵键盘的检测

实验6 矩阵键盘的检测

实验6 矩阵键盘的检测

一、实验目的

1、掌握七段数码管显示的软件译码方法;

2、掌握矩阵键盘的使用。

二、实验内容

矩阵键盘来控制数码管显示:实验板上电时,数码管不显示,顺序按下4*4矩阵键盘后,在数码管上依次显示0-F,6个数码管同时静态显示即可。

三、实验方法和手段

多媒体教学、演示、讲练结合、软件仿真、实物焊接

四、实验条件

实验指导书、计算机、Proteus软件、Keil C51软件、耗材、电烙铁

五、实验学时

2学时

六、实验步骤

1、Proteus设计电路原理图

(1)按照图6-1,在Proteus软件中绘制好电路原理图。

图6-1 电路原理图

说明:矩阵键盘行线接P3口低4位(第一行P3.0),列线接P3口高4位(第一列接P3.4)。

(2)电路原理图中所需要的元件见表6-1。

表6-1 元件列表

元件名称型号数量Proteus中的名称单片机芯片AT89C51 1个AT89C51 晶振12MHz 1个CRYSTAL

电容22PF 2个CAP

电解电容22uF/16V 1个CAP-ELEC

电阻1K 1个RES

排阻1K 1个RESPACK_8 六位一体共阴极数码管1个7SEG-MPX6_CC 锁存芯片74HC573 2个74HC573

按键开关16个BUTTON 2、编程控制

在Keil软件中进行程序编制,完成目标:顺序按下4*4矩阵键盘后,6个数码管同时静态依次显示0-F。

将下面的参考程序补充完整,也可自行编写新程序。

参考程序代码如下:

3、仿真调试

将生成的HEX文件加载到Proteus中,进行软件仿真,查看效果。

矩阵式键盘的按键识别方法

矩阵式键盘的按键识别方法

矩阵式键盘的按键识别方法

确定矩阵式键盘上何键被按下介绍一种“行扫描法”。

行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。

1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。

2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

下面给出一个具体的例子:

图仍如上所示。8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1. 4-P.17设置为输出线。4根行线和4根列线形成16个相交点。

1、检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3

为全“1”,则无键闭合,否则有键闭合。

2、去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。

3、若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出:

键盘检测原理及应用实现

键盘检测原理及应用实现

键盘检测原理及应用实现

键盘是计算机输入设备的一种,用于将人们的按键操作转换为电信号,并传输给计算机进行处理。键盘检测原理及应用实现主要涉及到键盘的工

作原理、扫描码的生成与传输、按键检测与处理以及键盘应用的实现等方面。

一、键盘的工作原理

键盘的工作原理是基于矩阵按键组的结构。矩阵按键是指将按键组织

成矩阵形式,通过行列扫描的方式检测按键是否被按下。键盘包括行线、

列线和按键三部分。行线和列线都连接到键盘电路板上,按键与行线和列

线交叉连接。

二、扫描码的生成与传输

在键盘扫描中,要生成按键的扫描码,并将其传输给计算机。扫描码

是由控制器产生的,控制器通过扫描按键矩阵,依次扫描每个按键,根据

按键的位置信息生成相应的扫描码。然后通过键盘电路板的数据线将扫描

码传输给计算机。

三、按键检测与处理

计算机通过键盘控制器接收到扫描码后,对其进行解析并进行相应的

按键检测与处理。按键的检测是通过比对当前的扫描码与之前的扫描码的

变化来确定按键的动作。例如,如果之前的扫描码为空,而当前的扫描码

不为空,则表示一些按键被按下;如果之前的扫描码不为空,而当前的扫

描码为空,则表示一些按键被松开。按键的处理是根据按下或松开的动作

执行相应的操作,例如输出字符、执行快捷键等。

四、键盘应用的实现

键盘应用的实现可以基于键盘检测的原理,并结合具体的需求进行相应的程序开发。一种常见的键盘应用是输入法,通过键盘输入各种不同的按键组合来输入文字。另一种键盘应用是游戏控制,通过键盘输入不同的按键来控制游戏角色的移动与操作。此外,键盘应用还可以扩展到其他领域,例如安全验证中的虚拟键盘、音乐制作中的MIDI键盘等。

按键扫描原理

按键扫描原理

按键扫描原理

按键扫描原理是指通过扫描矩阵来检测键盘上的按键状态。在常见的键盘中,按键都被布置成一个矩阵的形式,每个按键都被安排在多行多列的位置上。按键扫描原理的实现主要依靠两个主要组成部分,即行扫描和列扫描。

行扫描是指逐行地扫描键盘的每一行,通过向每一行施加电压或地电压来判断该行上是否有按键按下。当扫描到某一行时,如果有按键按下,那么该行和对应按键所在的列之间就会有导通的电路。这样,扫描程序就能够检测到按键的状态。

列扫描是指在行扫描的基础上,进一步扫描每一列,以确定具体按下了哪一个按键。通过给某一列施加电压,并扫描每一行的电平状态,就可以判断被按下的按键所在的具体位置。

基于行列扫描的原理,键盘控制芯片会不断地轮询键盘的每一行和每一列,以实时地检测键盘的按键状态。一旦检测到按键的状态发生变化,键盘控制芯片就会将相应的按键码发送给计算机,以实现对按键的输入响应。

总结起来,按键扫描原理通过对按键布置成的矩阵进行行列扫描,以检测键盘上的按键状态。行扫描用于判断哪一行上有按键按下,列扫描用于确定具体按下了哪一个按键。这种扫描方式能够高效地检测键盘的按键状态,并实现按键输入的响应。

扫描键盘的原理

扫描键盘的原理

扫描键盘的原理

键盘扫描原理是通过一种叫做"矩阵扫描"的技术来实现的。它

主要依靠键盘上方的一组电路来完成输入信号的检测和传递。

具体来说,键盘通常有多行多列的布局。每个按键都与一个特定的行和列相连,形成一个按键矩阵。

当我们按下某个按键时,键盘的控制器会首先激活按键所在的行,然后依次检查每一列。如果有任何一列检测到有电流通过,就说明该按键被按下。

为了实现这个过程,键盘内部的控制器会周期性地激活行,并读取列上的电流状况。它会通过一个循环的方式,每次激活一行并读取所有列的状态,以此来获得所有按键的输入信号。

这种矩阵扫描的方式可以同时检测多个按键的状态,从而实现多键同时按下的功能。

一旦控制器检测到按键被按下,它会将相应的按键码发送给计算机,然后由操作系统或相应的应用程序来处理这个输入。键盘控制器和计算机之间的通信通常是通过USB或PS/2接口完

成的。

总的来说,键盘的扫描原理就是基于矩阵扫描技术,通过激活行和读取列的方式,检测按键的输入信号,并将其传递给计算机进行处理。

矩阵式键盘扫描原理

矩阵式键盘扫描原理

矩阵式键盘扫描原理

矩阵式键盘是我们日常生活中经常接触到的一种输入设备,它广泛应用于计算机、手机、电视遥控器等各种电子产品中。那么,矩阵式键盘是如何实现按键扫描的呢?接下来,我们将深入探讨矩阵式键盘的扫描原理。

矩阵式键盘通常由若干行和若干列的按键组成。当用户按下某个按键时,按键

所在的行和列会产生连接,从而形成一个电路。为了检测用户按下的是哪个按键,系统需要对矩阵式键盘进行扫描。

首先,系统会将所有的列设置为输入状态,而所有的行设置为输出状态。接着,系统会逐一地将每一行的状态设置为高电平,然后读取所有的列的状态。如果某一列的状态为低电平,那么说明用户按下了与该列相对应的按键。通过这种方式,系统可以确定用户按下的是哪个按键。

在实际应用中,为了提高扫描的效率,系统会采用一种称为“轮询”的方法。

轮询是指系统会以一定的时间间隔不断地重复上述的扫描过程,从而实时地检测用户的按键操作。这样一来,即使用户按下按键的时间很短暂,系统也能够准确地捕捉到按键信息。

除了轮询方法,还有一种更高效的扫描方式,即采用中断的方式。在这种方式下,系统会通过硬件中断或者定时器中断来实现按键的扫描。当用户按下按键时,会触发相应的中断,系统会立即停止当前的任务,转而处理按键事件,从而提高了对按键的响应速度。

总的来说,矩阵式键盘的扫描原理是通过设置行和列的输入输出状态,逐一扫

描每一行的状态,并读取所有列的状态,从而确定用户按下的是哪个按键。在实际应用中,系统会采用轮询或中断的方式来实现对按键的实时检测和响应。

通过对矩阵式键盘扫描原理的深入了解,我们不仅能够更好地理解矩阵式键盘的工作原理,还能够为我们设计和开发新的输入设备提供一定的参考和启发。希望本文能够对大家有所帮助,谢谢阅读!

矩阵按键扫描原理

矩阵按键扫描原理

矩阵按键扫描原理

版权所有,禁止任何形式的转载

矩阵按键扫描原理

矩阵按键扫描原理是键盘的常见组合技术,它使用矩阵的形式组织键盘。它可以有效地把多个键盘上的按键形成一个“矩阵”,通过

控制一组行引脚和一组列引脚来“扫描”矩阵,实现按键的识别,从而实现键盘的接口复用,减少接口数量,节省成本。

原理

矩阵按键扫描的原理是:通过把按键排列成一个矩阵,每次激活一行,然后检查该行中哪些按键是按下的,从而实现按键的识别。

举例

下图是一个 6 行 4 列的矩阵按键扫描图,把按键按行依次连接,每行连接 4 个按键,每一行都接上一个上拉电阻 R,这样按键就会

生成一个矩阵。

![Alt](./1.png '参考图1')

每行的上拉电阻连接到一个行引脚上,每列的按键连接到一个列引脚上。同时,针对每一行的行引脚,都连接一个 I/O 引脚,当对

行引脚产生低电平时,其连接的 I/O 引脚也会一并被拉低,导致 I/O 引脚与列引脚产生短接,从而形成了一个“矩阵”,如图2所示:

![Alt](./2.png '参考图2')

每次操作时,首先会把所有的行引脚拉高电平,同时将所有行对应的 I/O 引脚连接到一个空状态,然后分别把每一行的行引脚拉低

电平,检测行对应的 I/O 引脚是否也跟着变低,如果变低,则说明该行所对应的按键被按下,如果不变低,则说明该行对应的按键没有被按下。

实现细节

实现一个矩阵按键扫描,除了要了解原理外,还要考虑一些实现细节。比如:

1.选择正确的上下拉电阻:矩阵按键扫描需要用上拉电阻来保证矩阵中每一行按键与其行引脚之间的电压稳定,因此在实际硬件设计中,我们需要根据每一个按键的电阻值来选择上拉电阻的大小,以保证矩阵中的按键能够正确工作。

矩阵键盘扫描原理

矩阵键盘扫描原理

矩阵键盘扫描原理

矩阵键盘是一种常见的输入设备,广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。它的原理是通过矩阵扫描技术来实现按键的检测和识别。下面我们将详细介绍矩阵键盘的扫描原理。

首先,我们来了解一下矩阵键盘的结构。矩阵键盘由若干行和若干列按键组成,每个按键都与一个行线和一个列线相连接。当按下某个按键时,对应的行线和列线会发生连接,从而形成一个按键闭合的电路。

在正常情况下,行线和列线是断开的,不会导通。为了检测按键的状态,需要

通过矩阵扫描的方式来逐个检测每个按键。扫描的原理是通过逐行逐列地扫描按键,从而确定哪些按键被按下。

具体来说,扫描的过程是这样的,首先,将所有的列线拉低,然后逐行地扫描

每一行,检测每一行上的按键是否被按下。如果某一行上有按键被按下,那么对应的列线和行线就会连接,从而形成一个闭合的电路。通过这种方式,可以逐个检测每一个按键的状态。

在实际应用中,为了提高扫描的效率,通常会采用按键去抖技术和扫描周期的

优化。按键去抖技术是为了解决按键在按下和松开的过程中会产生抖动现象的问题,通过软件或硬件的方式来滤除抖动信号,从而确保按键状态的稳定性。扫描周期的优化则是为了减少扫描的时间,提高系统的响应速度。

总的来说,矩阵键盘的扫描原理是通过逐行逐列地扫描按键,从而确定按键的

状态。通过合理的设计和优化,可以实现稳定、高效的按键检测和识别,从而为用户提供良好的输入体验。

总结一下,矩阵键盘扫描原理是通过逐行逐列地扫描按键,从而确定按键的状态。通过合理的设计和优化,可以实现稳定、高效的按键检测和识别,为用户提供良好的输入体验。希望本文能够帮助大家更好地理解矩阵键盘的工作原理。

矩阵键盘实验报告

矩阵键盘实验报告

矩阵键盘实验报告

矩阵键盘实验报告

引言:

矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。本实验旨在通过对

矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中

的潜力。本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。

实验目的:

1. 理解矩阵键盘的工作原理;

2. 掌握矩阵键盘的接线方法;

3. 通过实验验证矩阵键盘的可靠性和稳定性。

实验步骤:

1. 准备实验材料:矩阵键盘、电路板、导线等;

2. 连接电路:将矩阵键盘与电路板通过导线连接;

3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;

4. 烧录程序:将编写好的程序烧录到单片机中;

5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。

实验结果:

经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。

讨论:

1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线

和列线相连。当按下某个按键时,对应的行线和列线会短接,从而使得电流流

过该按键,被检测到。

2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到

单片机的4个输出引脚上。

3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠

性和稳定性。即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。

4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。它具有结构简单、成本低廉、易于集成等优点,因此在电

矩阵键盘的三种扫描方法

矩阵键盘的三种扫描方法

矩阵键盘的三种扫描方法

矩阵键盘是一种常见的输入设备,它由多个按键组成,并通过矩阵扫

描的方式来检测用户的按键输入。矩阵键盘的扫描方法可以分为三种:行

扫描、列扫描和交错扫描。下面将详细介绍这三种扫描方法。

1.行扫描

行扫描是最简单的一种扫描方法。它的原理是将矩阵键盘的每一行连

接到一个IO口,通过轮询检测每一行的电平变化来获取用户的按键输入。行扫描的工作流程如下:

1)将矩阵键盘的每一行连接到一个IO口,并设置为输入模式。

2)逐个地将每一行的IO口设置为高电平,并检测列的电平状态。

3)如果其中一列的电平为低电平,说明该列有按键按下。此时,记录

下这个按键的位置(行号和列号)以及按键的值(键码或字符),然后将

这个按键的位置和值传递给上层应用或处理器。

4)将当前行的IO口设置为低电平,然后继续下一行的检测,重复

2)~3)步骤,直到所有行都被检测完毕。

行扫描的优点是实现简单,只需要一个IO口来检测按键的状态。但

是它的缺点是扫描速度较慢,因为需要逐个地检测每一行。

2.列扫描

列扫描是一种比较常用的扫描方法。它的原理是将矩阵键盘的每一列

连接到一个IO口,通过轮询检测每一列的电平变化来获取用户的按键输入。列扫描的工作流程如下:

1)将矩阵键盘的每一列连接到一个IO口,并设置为输入模式。

2)逐个地将每一列的IO口设置为高电平,并检测行的电平状态。

3)如果其中一行的电平为低电平,说明该行有按键按下。此时,记录

下这个按键的位置(行号和列号)以及按键的值(键码或字符),然后将

这个按键的位置和值传递给上层应用或处理器。

4x4矩阵键盘扫描原理

4x4矩阵键盘扫描原理

4x4矩阵键盘扫描原理

4x4矩阵键盘扫描原理是一种常用的键盘扫描方法,也称为矩阵键盘扫描。它可以将多个按键连接在一起并使用较少的引脚来检测按键的状态。

4x4矩阵键盘由4行和4列组成,共有16个按键。通常使用单片机或电路来进行扫描,以下是简要的原理:

1. 行扫描:首先,将行引脚设置为输出,同时将列引脚设置为输入,并将其上拉或下拉。所有行引脚中只有一个为低电平,其余为高电平。然后逐行检测按键状态。

2. 列检测:对于每一行,将对应的行引脚置为低电平后,检测列引脚的电平状态。如果有按键按下,则相应的列引脚会变为低电平。通过读取列引脚的状态,可以确定按键的位置。

3. 组合键:由于只能一次检测一行,因此当同时按下多个按键时,可能会导致误检。为了解决这个问题,可以在检测到按键按下时,延迟一段时间,并再次检测按键的状态。如果在第二次检测时仍然检测到按键按下,则确认按键有效。

4. 反向扫描:为了检测按键的释放状态,可以将行引脚设置为输入,列引脚设置为输出,并将其置为低电平。然后逐列检测行引脚的电平状态,如果有按键释放,则相应的行引脚会变为高电平。

通过不断地循环扫描所有的行和列,可以实时检测按键的状态,并根据需要进行相应的处理。

矩阵键盘的检测和独立按键的区别

矩阵键盘的检测和独立按键的区别

矩阵键盘的检测和独立按键的区别

 这次我接着上次的说,讲一下复合按键和矩阵键盘。

 先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些。所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了。

 矩阵键盘的检测和独立按键有很大的区别,但是究其本质还是一样的。

 先看一下矩阵键盘的原理图:

 矩阵键盘原理图

 由于矩阵键盘中每一个按键的两个接线口都是接在IO口上的,所以我们就必须在软件里面控制单片机在每个独立按键的两端加上不同的电平。

 【注】:独立按键很简单,直接在一端接地就行了。

第八课_键盘的检测原理及实现

第八课_键盘的检测原理及实现

第八课键盘的检测原理及实现

教学内容:1、独立式键盘检测的原理

2、矩阵式键盘检测的原理

教学重点: 1、独立式键盘检测的原理

2、矩阵式键盘检测的原理

教学难点:矩阵式键盘检测的原理

教学目的:1、掌握独立式键盘检测的原理

2、掌握矩阵式键盘检测的原理

一、键盘检测要注意的两件事情

1、按键消抖(硬件消抖和软件消抖)

2、求键号

二、独立式键盘检测

例:如图所示,P3.4按下点亮第一个发光管,松手时,灭掉,每按一次就加1,加到9,然后返回,并将按键次数显示在数码管上。

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit d1=P1^0;

sbit dula=P2^6;

sbit wela=P2^7;

sbit key1=P3^4;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar num;

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main()

{

wela=1;

P0=0xfe;

wela=0;

P3=0xff;

while(1)

{

if(key1==0)

{

delay(5);

if(key1==0)

{

d1=0;

num++;

if(num==10)

num=0;

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51矩阵键盘的检测

要求:扫描矩阵键盘,并将对应按键的值显示在LED上

方法一(传统检测):

#include

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6;

sbit wela=P2^7;

//sbit key1=P3^4;

uchar code table[]={//共阳极LED数码管显示数字0~F

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e

};

uchar num,temp,num1;

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

uchar keyscan();

void display(uchar aa);

void main()

{

while(1)

{

display(keyscan());

}

}

void display(uchar aa)

{

/*先送数,后选通,延时以后,将所有端口都不选通,这样,拖影就消失了*/ dula=1;

P0=table[aa-1];

dula=0;

wela=1;

P0=0x01;

wela=0;

delay(5);

wela=1;

P0=0x00;

wela=0;

}

uchar keyscan()

{

P3=0xfe;

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xee:num=1;

break;

case0xde:num=2;

break;

case0xbe:num=3;

break;

case0x7e:num=4;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xed:num=5;

break;

case0xdd:num=6;

break;

case0xbd:num=7;

break;

case0x7d:num=8;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfb;

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xeb:num=9;

break;

case0xdb:num=10;

break;

case0xbb:num=11;

break;

case0x7b:num=12;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xf7;

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

delay(5);

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xe7:num=13;

break;

case0xd7:num=14;

break;

case0xb7:num=15;

break;

case0x77:num=16;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

return num;

}

相关文档
最新文档