登录站点

用户名

密码

第二十一课 键盘接口与编程

1已有 681 次阅读  2010-06-17 22:35   标签接口  键盘 
键盘接口和数码管接口是构成单片机人机界面的主要方法 对于一个初学者来说 这部分的内容


也是较难的 我们将用四节课的时间来学习这方面的知识 这一课先来讨论键盘的接口原理与编程方法

键盘是单片机应用系统不可缺少的重要输入设备 主要负责向计算机传递信息 我们可以通过键 盘向计算机输入各种指令 地址和数据 它一般由若干个按键组合成开关矩阵 按照其接线方式的不同

可分为两种 一种是独立式接法 一种是矩阵式接法如下面的图这一课先来讲解独立式键盘的工 作原理和编程方法

一 独立式键盘的工作原理和编程方法

独立式键盘具有结构简单 使用灵活等特点 因此被广泛应用于单片机系统中 那么它是如何来 工作的呢 我们慢慢往下看

1 独立式键盘的接线原理

独立式键盘是由若干个机械触点开关构成的 把它与单片机的 I/O 口线连起来 通过读 I/O 口的 电平状态 即可识别出相应的按键是否被按下 下面的左图就是我们实验板的按键连接图

如果按键不被按下 其端口就为高电平 如果相应的按键被按下 则端口就变为低电平 在这种

键盘的连接方法中 我们通常采用下拉电平接法 即各按键开关一端接低电平 另一端接单片机 I/O

口线 如上左图所示 这是为了保证在按键断开时 各 I/O 口线有确定的高电平

通常我们用来做键盘的按键有触点式和非触点式两种 单片机中应用的一般是由机械触点构成的 触点式微动开关 这种开关具有结构简单 使用可靠的优点 但当我们按下按键或释放按键的时候它有 一个特点 就是会产生抖动 看上图的按键脉冲波形 这种抖动对于人来说是感觉不到的 但对单片机 来说 则是完全可以感应到的 因为单片机处理的速度是在微秒级的 而机械抖动的时间至少是毫秒级

对计算机而言 这已是一个很 漫长 的过程了 下面我们通过一个实验来验证一下 实验程序如下

ORG 0000H ; AJMP START ; ORG 0030H ; START:MOV SP,5FH ;

81

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

MOV

P1,#0FFH

;

MOV

P3,#0FFH

;

L1:JNB P3.4,L2 ;按下按键开关 取反一次 P1.0灯亮再按一下灯灭

JNB P3.5,L3 ;按下按键开关 取反一次 P1.1灯亮再按一下灯灭

LJMP

L1

;

L2:CPL

P1.0

;

LJMP

L1

;

L3:CPL

P1.1

;

LJMP

L1

;

END

把这个程序下载到单片机 我们会发现 当按下相应的按键时 灯并不是想象中的按一下亮 再 按一下就灭 而是有时灵 有时不灵 为什么会这样呢 原来 当你按了一次按键 可是单片机却早已 执行了好多次 如果执行的次数正好是奇数次 那么结果正如你所料 如果执行的次数是偶数次 那结 果就不对了 为了使 CPU 能正确地读出端口的状态 对每一次按键只作一次响应 就必须考虑如何去除 按键的抖动

2 按键的去抖动原则和方法

常用的去抖动的方法有两种 硬件方法和软件方法 硬件去抖动的方法很多 好多书都有介绍

这不在我们的讨论范围 单片机中常用软件去抖动法 软件法其实也很简单 就是在单片机获得端口为 低电平的信息后 不是立即认定按键已被按下 而是延时 10 毫秒或更长一些时间后再次检测该端口

如果仍为低 说明此键的确被按下了 这实际上是避开了按键按下时的抖动时间 而在检测到按键释放

后端口为高电平时再延时 5-10 毫秒 消除后沿的抖动 然后再对按键进行处理 不过一般情况下

我们通常不对按键释放的后沿进行处理 实践证明 也能满足通常的要求 下面我们把前面的程序改一

下 看看按键的去抖动是如何实现的 看下面的程序

ORG 0000H ; AJMP START ; ORG 0030H ; START:MOV SP,#5FH ; MOV P1,#0FFH ; MOV P3,#0FFH ;

L1:JB P3.4,L2 ;P3.4 为 1不做处理 转 P3.5 否则说明有键按下

LCALL D10mS ; 调用延时程序 去除抖动

JB P3.4,L1 ; P3.4 为 0说明此键确实被按下了

CPL P1.0 ;取反 P1.0

L3:JNB P3.4,L3 ;直到 P3.4 释放后转去判断第二个键

L2:JB P3.5,L1 ;P3.5 为 1返回去继续处理 P3.4 否则说明有键按下

LCALL D10mS ; 调用延时程序 去除抖动

JB P3.5,L2 ; P3.5 为 0说明此键确实被按下了

CPL P1.1 ; 取反 P1.1

L4:JNB

P3.5,L4

;直到 P3.5 释放为止

LJMP

L1

;返回

D10mS:MOV R7,#50 ;延时的时间一般为 5-20mS

D1:MOV R6,#100 ; D2:DJNZ R6,D2 ; DJNZ R7,D1 ;

82

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

RET ; END

把这段程序写入单片机 试试看 是不是行了 这就是独立式按键去抖动的基本方法 不过这个

程序在实际应用中并没有多大的意义 因为如果按键数量比较多的话 程序就会变得很长 为什么会这 样呢 因为这里我们采用了直接寻址的方式 如果我们把键值放入一个表格中 再通过查表程序来判断 到底是哪个按键被按下了 再去处理相应的程序就会很简单 想想看 该怎么做


本站提供IC网资料信息,IC采购资讯,IC交易网资讯动态等相关信息,本文转自:中国广东IC网

上一篇: 微型数控车床操作 下一篇: 单片机交通灯设计ic技术

分享 举报

发表评论 评论 (1 个评论)

涂鸦板