1 / 11
文档名称:

矩阵键盘-word资料(精).doc

格式:doc   页数:11
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

矩阵键盘-word资料(精).doc

上传人:1259812044 2016/6/8 文件大小:0 KB

下载得到文件列表

矩阵键盘-word资料(精).doc

文档介绍

文档介绍:51 单片机综合学习系统之矩阵键盘篇《电子制作》 2007 年 11月大家好,通过以前的学习,我们已经对 51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了单片机控制数码管显示的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将来一起学习矩阵键盘的基本原理与使用方法。矩阵键盘应用实例本期介绍了独立按键的应用,独立按键具有编程简单但占用 I/O 口资源的特点,不适合在按键较多的场合应用。在实际应用中经常要用到输入数字、字母等功能,如电子密码锁、电话机键盘等一般都至少有 12到 16个按键,在这种情况下如果用独立按键的话显然太浪费 I/O 口资源,为此我们就引入了矩阵键盘的应用。矩阵键盘简介矩阵键盘又称行列键盘,它是用四条 I/O 线作为行线,四条 I/O 线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为 4*4 个。这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。矩阵键盘的工作原理最常见的键盘布局如图 1所示。一般由 16个按键组成,在单片机中正好可以用一个 P口实现 16 个按键功能,这也是在单片机系统中最常用的形式, 4*4 矩阵键盘的内部电路如图 2所示。图1矩阵键盘布局图图2矩阵键盘内部电路图当无按键闭合时, P10~P13 与 P14~P17 之间开路。当有键闭合时,与闭合键相连的两条 I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线 P14~P17 为输入状态,从行线 P10~P13 输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线 P14~P17 读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。矩阵键盘软硬件设计实例本期以 51单片机综合学台,介绍矩阵式键盘的编程方法。实验通过按下相应键后在一位数码管上显示出键值。 0到 16个键分别对应显示 0到F。图3矩阵键盘实验演示图 硬件原理图本实验可以直接在配套开发板上完成,其硬件原理图如图 4所示: 图4硬件原理图根据 4电路原理图,键盘扫描方法是:行线 P10~P13 为输出线,列线 P14~P17 为输入线。一开始单片机将行线( P10~P13 )全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。现在我们以第二行的 S5键为例,若按下 S5后我们应该怎么得到这个键值呢?当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。首先,单片机将 P10 输出为低电平,其它 P11~P13 输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将 P11 输出低电平,其它 P10 、 P12 、 P13 仍为高电平,此时再来读取列线数据,发现列线读到的数据有低电平,数值为 1011 ( 0x0B ),如果我们的键盘布局已经确定,那么 0x0B 就代表 S5的值了。转到 S5键功能处理子程序就可以达到目的。程序流程图 10-5 软件流程图 51单片机综合学习系统资源丰富,可做实验有:8位 LED 数码管、 32路 LED 、 4x4 矩阵键盘、4个直控键盘、蜂鸣器喇叭、继电器试验、 I2C 总线接口、 SPI 总线接口、 160X 液晶、 128X64 液晶、红外接收头接口、支持 PS/2 接口的 104 键标准键盘、步进电机驱动接口、 ADC0832 模/数转换接口、 PC817 光电耦合器、串行时钟芯片 DS1302 、温度传感器 DS18B20 接口、 RS232 串口通讯、外扩展接口以便外接更多的实验资源。软件代码/***************************************************************************/ /*杭州晶控电子有限公司*/ /**/ /*矩阵键盘测试程序*/ /*目标器件: AT89S51*/ /*晶振:*/ /*编译环境: Keil */ /***************************************************************************/ /********************************* 包含头文件************************