一 矩阵式键盘的连接方法和工作原理
什么是矩阵式键盘 当键盘中按键数量较多时 为了减少 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单片机