一种用 N+1 个 110 口实现的 . X N矩阵式锥盘
. 北京航空航天大学 张雪峰 李荣源 袁海文
引 言
随着微机系统应用领域的扩大 , 操作人员与微机
系统需要交流的信息越来越多 , 用来交流的手段和途
径也更为灵活多样 ; 而键盘输入作为最常用的输入设
备仍有其不可替代的作用 。 因此 , 探讨一些键盘的
特殊结构 , 用尽可能少的输入输出端 口实现较多数量
的按键数仍具有重要的应用价值 。
有些特殊情况下 , 在组成一个最小的单片机系统
的过程中 , 由于通用的 1/ 0 口有限 , 而又需要大量的
按键输入 , 这就要求一种新的键盘结构 , 即用尽量
少的 1/ 0 口实现尽可能多的键盘输入 。
本文将从硬件和软件两个方面介绍一种用 N + 1 个
1/ 0 口实现 N x N 矩阵式键盘的方法 ( 为了与传统键
盘区 分 , 以下 简称新型键盘 ) 。 首先 , 对传统键盘
作一个简单的介绍 。
少与微机接 口的连线数 , 简化结构 , 是一般微机常
用的键盘结构 。 根据矩阵键盘的识键和译键方法的不
同 , 矩阵键盘又可 以分为非编码键盘和编码键盘两
不中 。
令 非编码键盘
非编码键盘主要用软件的方法识键和译键 。 根据
扫描方法的不同 , 可以分为行扫描法 、 列扫描法和
反转法三种 。
令 编码键盘
编码键盘主要用硬件来实现键的扫描和识别 , 通
常使用 8 2 7 9 专用接 口 芯片 , 在硬件上要求较高 。
二 、 新型键盘的硬件和软件实现原理
一 、 传统键盘的介绍川
经过分析 , 实际上用 N +l 个 1/ 0 口 , 辅以适当的
接 口电路 , 是可 以实现 N x N 个按键的 。 现以 6 个
端 口实现 5 x s 的按键为例来叙述 。
1
. 硬件实现
图 1 所示为用 6 个 1/ 0 口来实现 2 5 个按键的示意
键盘的结构通常有两种形式 : 线性键盘和矩阵键
盘 。 在不同的场合下 , 这两种键盘均得到 了广泛的
应用 。
线性键盘由若干个独立的按键组成 , 每个按键的
一端与微机的一个 1/ 0 口相连 。 有多少个键就要有多
少根连线与微机的 1/ 0 口相连 , 因此 , 只适用于按键
少的场合 。
矩阵键盘的按键按 N 行 M 列排列 , 每个按键占
据行列的一个交点 , 需要的 1/ 0 口数目是 N + M , 容
许的最大按键数是 N x M 。 显然 , 矩阵键盘可以减
lllllllllllllllllll
回回口回 口囚囚囚囚囚囚囚囚 p o r t 6 (中断 )))
国国国口国口口 , 月 口,,, P o r t sss
囚囚国回 回国国 洲d 、‘‘‘ P o r t4 M C UUU
口口回囚口口口口口口口口口 P o r t 333
,,, 呀 户,,, p o r t ZZZ
~~~~~ d 、‘‘‘ p o r t lll,,, 阅 户尸尸尸尸
曰曰曰‘ 加‘‘‘‘
,,,,,,,, 阅 户尸尸尸尸
国国国囚囚回回 ‘d 、‘‘‘‘
黯黯黯
图 1 6个 l / O口实现的 5 X 5按键矩阵的示意图
国口. . M i c r。。。一 & Emb e dd e d Sy s t e m s 3 1
~
旦旦。l歹歹’ 杯杯找找’ 仁仁 (仃仃入入月_ S ‘‘ ’甲甲 !??? ’??? ’甲甲’’???????????冈冈初初初初初 : 拣拣___ DZ I川 1 ’丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫丫 ’???置置置J歹歹’ (勺勺’ 林林{挤挤挤,,,亨666 ’??? ’???????闪闪布布布 ’ JJJ ... {郭郭DDD3 1川 l ’丫丫丫丫丫丫丫丫丫丫丫 .....登登登{郭郭{郭郭{不不’ {织织织闪闪骊骊骊 (纤纤’ (箕箕{事事___ D4 )川 l ’丫丫丫丫丫丫丫 ’??? ’?????翼翼翼 J厂厂’ (氮氮氮氮氮玉玉玉畔畔 ’?????????
2 ) 共需要 1 0 只 二极管 、 12 只
电阻和 1 只三极管 。 10 只二极管
按其在电路中所起的作用可分为
两组 : 第一组包括 D 6 、 D 7 、
D S 、 D g 和 D 10 , 用于保证按键
信息的单一流向 ; 第二组包括
D I 、 D Z 、 D 3 、 D 4 和 D S , 它
们在电路上对 N P N 三极管的基
极构成 “或 ” 的逻辑关系 , 对
单 片 机 进 行 初 始 化 。 除 了
P O R T 6 (其要求具有 中断功
能 ) 以外 , 其余的 1/ 0 口均被
置 成高电平 , 这样当有键按下
时 , 三极管的基极 由低变高 ,
三极管导通 ; 集电极由高电平
跳变成低电平 , 向单片机发出
中断信号 , 从而启动键盘扫描
程 序 。
2
. 软件实现
图 2 用 6 个 1/ 0 口实现 5 x s 键盘矩阵的原理图
按键的识别主要靠软件来实
现 , 需要编写键盘扫描程序 。
( 1 ) 键盘扫描原理
为了更好地
键盘扫描的
过程 , 假设编号为 51 2 的键 (见
图 2 ) 被按下 , 扫描程序 己经
启动 , 扫描的具体过程如
l 所
列 。
图 。 具体的物理实现电路如 图 2 所示 。
由图 1 和图 2 可见 , 硬件部分分为两块 : 一块是
普通键盘矩阵 , 另外一块是中断和接 口电路 , 主要
由相应数目的二极管和 电阻组成 。 具体对 6 个 1/ 0 口
的情况 , 实现 5 x s 的按键矩阵的中断和接 口电路 ( 图
( 2 ) 键盘扫描程序的
在启动键盘扫描程序以前首先要对 C P U 进行初始
化 ( 主要是对所使用的中断进行初始化 ) 。 假设 已
经有键按下 , 并引发了相应的中断服务程序 ( 即键
盘扫描程序 ) , 其流程图如图 3 所示 。
PPP lll P 222 P 333 P444 P 555 P 666 说 明明
OOO HHH III III III III III PO RT I 被置成高电平输出 , 其他端 口作为输入入
HHHHH LLL LLL LLL LLL HHH 读入各端口 的值 , 为 10 (XM) 1 , 与编码表进行比较 , 经判断没有有
键键键键键键键键按下 , 继续下一步步
IIIII OHHH III III III III PO RT Z 被置成高电平输出 , 其他端口作为输入入
LLLLL HHH HHH LLL LLL LLL PORT Z 和 PO RT 3 与 51 2 市市目连 , 此时均为高电平 , 读入各端口 的的值值值值值值值值为 01 100 0 , 与编码表比{{{佼 , 可以判断有键按下并且键值唯一一
P 一 PO RT O一输出 1一输入 H 一高电平 L 一低电平
3 2 牟寸‘J 畏入石垂悦未 . 画画. . .
技技术综述述
扫描程序启动
令 该方法还 可以用 于需要大 量开关量测量的场
合 。 鹅 :
将PO R T I 一 6设置成 I/ 0 口 参考文献
M O T O R OL A I n e
.
M i n im u m l / 0 t o M a t r i x K e y
将P OR TI 设置成输出 , 其余端 口 作为输入 b o a r d w it h D r a g o n B a l lTM E z 3 2 s . 19 96
读入各端 口状态 2 刘乐善
, 叶济忠 , 叶永坚 . 微型计算机接 口 技
术原理及应用 . 湖北 : 华中理工大学出版社 , 1 9 9 6
丽薰瘫蒸牙 到肠 领先 的 嵌人式网绪系统 供应商
读入各端 口状态
是否为第二行按键
土N
记录键值
将P OR T3 设置成输出 , 其余端口作为输入 撼摺软硬 件 研 发 工 程 师
读入各端 口状态
有责任感 , 有 良好的
是否为第三行按键
I N
记录键值
卜 工作踏实认真 ,
工作习惯 , 善于交流 , 有合作精神
将P O RT4 设置成输出 , 其余端 口作为输入
读入各端 口状态
卜 计算机 、 电子 、 通信专业本科以上学历 ,
研究生优先 ; 英语读写流利 , 有项 目开发经
验者优先
是否为第四行按键 记录键值
将P ORTS 设置成输出 , 其余端 口作为输入
读入各端 口状态
卜 硬件工程师要求 : 精通逻辑
, 至少
熟悉一种 p CB 布线工具 , 具有 8 位 , 16 位或
3 2 位单片机开发经验 , 对一种 3 2 位处理器
有较深入的了解 ; 精通一种汇编语言 , 能熟
练使用 C语言编程
是否为第五行按键
l N
记录键值
将PO R T 6置 为中断 口 , 其余为高电平输出
卜 软件工程师要求 : 熟悉操作系统原理 ,
计算机原理 , 有一定的硬件知识 , 精通 W i n 一
d o w s 编程技术 , 能熟练使用 C 语言编程 , 熟
悉 W i n C E 者优先
重新设乱 PU的中断 , 等待键盘中断}
图3 键盘扫描程序流程图 落犀岁何 成必乎台
结束语
令 在 1/ 0 口数量有限的情况下 , 用该方法可以实
多的按键输入 ;现尽可 能
倒哑. . . M , c r o c o n t r o x.e 「s & E m b e dd e d Sy s t e m 、 3 3