您当前的位置:五五电子网电子知识单片机-工控设备51单片机矩阵式键盘的连接方法和工作原理 正文
矩阵式键盘的连接方法和工作原理

矩阵式键盘的连接方法和工作原理

点击数:7299 次   录入时间:03-04 11:42:13   整理:http://www.55dianzi.com   51单片机
一 矩阵式键盘的连接方法和工作原理

什么是矩阵式键盘 当键盘中按键数量较多时 为了减少 I/O 口线的占用 通常将按键排列成矩 阵形式 如下图所示 在矩阵式键盘中 每条水平线和垂直线在交叉处不直接连通 而是通过一个按键 加以连接 这样做有什么好处呢 大家看下面的电路图 一个并行口可以构成 4*4=16 个按键 比之直 接将端口线用于键盘多出了一倍 而且线数越多 区别就越明显 比如再多加一条线就可以构成 20 键

的键盘 而直接用端口线则只能多出一个键9 键由此可见 在需要的按键数量比较多时 采用矩 阵法来连接键盘是非常合理的





































矩阵式结构的键盘显然比独立式键盘复杂一些 识别也要复杂一些 在上图中 列线通过电阻接

电源 并将行线所接的 单片机  4 个 I/O 口作为输出端 而列线所接的 I/O 口则作为输入端 这样 当按 键没有被按下时 所有的输出端都是高电平 代表无键按下 行线输出是低电平 一旦有键按下 则输 入线就会被拉低 这样 通过读入输入线的状态就可得知是否有键按下了 具体的识别及编程方法如下 所述

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

确定矩阵式键盘上任何一个键被按下通常采用 行扫描法 或者 行反转法 行扫描法又称为 逐行或列扫描查询法 它是一种最常用的多按键识别方法 因此我们就以 行扫描法 为例介绍矩

阵式键盘的工作原理

 

87


---------------- 

 

1 判断键盘中有无键按下

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

2 判断闭合键所在的位置

在确认有键按下后 即可进入确定具体闭合键的过程 其方法是 依次将行线置为低电平即在 置某根行线为低电平时 其它线为高电平当确定某根行线为低电平后 再逐行检测各列线的电平状

态 若某列为低 则该列线与置为低电平的行线交叉处的按键就是闭合的按键

下面给出一个具体的例子

单片机 的 P1 口用作键盘 I/O 口 键盘的列线接到 P1 口的低 4 位 键盘的行线接到 P1 口的高 4

位 也就是把列线 P1.0-P1.3 分别接 4 个上拉电阻到电源 把行线 P1.4-P1.7 设置为输出线 4 根行线

和 4 根列线形成 16 个相交点 如上图所示

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

P1.0-P1.3 为全 1则说明无键闭合 否则有键闭合

去除键抖动 当检测到有键按下后 延时一段时间再做下一次的检测判断 若仍有键按下 应识 别出是哪一个键闭合 方法是对键盘的行线进行扫描 P1.4-P1.7 按下述 4 种组合依次输出 P1.7-1110

P1.6-1101 P1.5-1011 P1.4-0111 在每组行输出时读取 P1.0-P1.3 若全为 1则表示为 0 一 行的没有键闭合 否则就是有键闭合 由此得到闭合键的行值和列值 然后可采用计算法或查表法将闭

合键的行值和列值转换成所定义的键值 为了保证按键每闭合一次 CPU 仅作一次处理 必须去除键释放 时的抖动 看下面的实例

三 矩阵式键盘的实验程序 ORG 0030H ; SCAN  MOV  P1,#0FH ;

MOV
A,P1
;

ANL
A,#0FH
;


CJNE A,#0FH,NEXT1 ; SJMP NEXT3 ; NEXT1:ACALL D20Ms ;  MOV  A,#0EFH ; NEXT2:MOV R1,A ;

MOV
P1,A
;

MOV
A,P1
;

ANL
A,#0FH
;


CJNE A,#0FH,KCODE ;  MOV  A,R1 ; SETB C ; RLC A ;

JC NEXT2 ; NEXT3: MOV  R0,#00H ;

RET ;

KCODE: MOV
B,#0FBH
;

NEXT4:RRC
A
;



 

INC B ;

JC NEXT4 ;  MOV  A,R1 ;

88






---------------- 

 

SWAP A ; NEXT5:RRC A ; INC B ; JC NEXT5 ; NEXT6: MOV  A,P1 ; ANL A,#0FH ; CJNE A,#0FH,NEXT6;

MOV
R0,#0FFH
;

RET

;


END

由于我们的实验设备不能做这个实验 所以上面的程序只能请大家自行分析一下 事实上开发多 键盘的应用系统是非常复杂的 为了不增加大家的学习难度 这里只给大家讲一个基本的概念 您只要 稍微了解一下就可以了 详细的内容我们将留到下册中再来仔细地讨论 如果你确实在实际的应用中碰 到了这样的问题 可以电话或者 E-mail 与我联系 我会尽力的帮助你大家

四 本课总结

事实上 在比较复杂的 单片机 系统中 键盘的的设计只是程序设计的一部分 在这种系统中 还 会有很多的其他程序 设计这种系统也是一项非常复杂的工作 作为初学者我们对此有所了解就已经可 以了 若您想尽快的掌握这方面的知识 请继续学习教程的下册部分

五 第 22 课习题

1 矩阵式键盘采用什么样的扫描方式

2 识别矩阵式键盘包括哪几个步骤







































 

89

---------------- 

 

第二十三课 数码管接口与编程 一




如果说键盘构成的是 单片机 的输入系统 那么数码管就是单片机的输出系统 和学会使用键盘接

口一样 学会数码管的接口与编程对 单片机 的开发同样有着十分重要的意义 这一课我们就来讲解数码 管的接口与编程方法

一 LED 数码显示器的连接与显示方法

在 单片机 系统中 通常用 LED 数码显示器来显示各种数字或符号 由于它具有显示清晰 亮度高

使用电压低 寿命长的特点 因此使用非常广泛 那么数码管是如何工作的呢 我们学习数字电路时讲

过 可能大家都忘得差不多了 这里我再从头给大家讲一遍 您可不要觉得我烦哦

还记得我们小时候玩过的 火柴棒游戏 吗 几根火柴棒组合起来 可以拼成各种各样的图形

LED 显示器实际上就是利用这个原理做成的

八段 LED 显示器由 8 个发光二极管组成 其中 7 个长条形的发光管排列成一个 日 字形 另一 个圆点形的发光管在显示器的右下角作为显示小数点用 它能显示各种数字及部份英文字母 LED 显示

器有两种不同的连接形式 一种是 8 个发光二极管的正极连在一起 称之为共阳极 LED 显示器 另一种

是 8 个发光二极管的负极连在一起 称之为共阴极 LED 显示器 它们的内部电路图如下所示





























勘误 图中有一点点小错误 把 H 端漏了 由于这是用 CAD14 画的 现在改起来不方便 请大

家注意一下由图可以看出 共阳和共阴结构的 LED 显示器各笔划段名的安排位置是相同的 当二极管 导通时 相应的笔划段就发亮 由发亮的笔划段组合而显示出各种字符 八个笔划段 h在许多书中用

dp 来表示 其实是一个意思gFEDcba 对应于一个字节8 位的 D7 D6 D5 D4 D3 D2 D1 D0,于是用 8

位二进制码就可以表示欲显示字符的字形代码 例如 对于共阴 LED 显示器 当公共阴极接地 零电平

[1] [2] [3] [4]  下一页


本文关键字:工作原理  键盘  51单片机单片机-工控设备 - 51单片机