8 键盘接口技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时,当定时时间到就产生定时器溢出中断,CPU响应中
断后对键盘进行扫描,并在有键按下时识别出该键,再执
行该键的功能程序。
定时扫描方式
程序流程图
中断扫描方式
当无键按下时,CPU处理自己的工作,当有键按下时,产 生中断请求,CPU转去执行键盘扫描子程序,并识别键号。中
断扫描方式可以提高CPU工作效率 。
按键开关的抖动问题
单片机系统中应用的一般是由机械触点构成的按键。当机械触点 断开、闭合时,会有抖动,如下图所示。在触点抖动期间检测按键的 通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认
为是多次操作,这种情况是不允许出现的。
常用的去抖动的方法有两种:
1.硬件方法
2.软件方法
硬件方法
在硬件上可采用在键输出端加R-S触发器(双稳态触 发器)或单稳态触发器构成去抖动电路,如图所示 。
(1)程序功能。若有键被按下,应识别出是哪一个键闭合。方法是对键盘的 行线进行扫描。 (2)检测当前是否有键被按下。检测的方法是P1.4~P1.7输出全“0”,读取 P1.0~P1.3的状态,若P1.0~P1.3为全“1”,则无键闭合,否则有键闭合。 (3)去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判 断。 (4)P1.4~P1.7按下述4种组合依次输出: P1.7 1 1 1 0 P1.6 1 1 0 1 P1.5 1 0 1 1 P1.4 0 1 1 1
第2章 键盘接口技术
1. 按键
2. 简单键盘接口
3. 矩阵式键盘接口 4. 可编程键盘接口
按键
键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件, 也就是说键盘是一组规则排列的开关。单片机使用的按键是一种常开型 的开关,平时按键的两个触点处于断开状态,按下键时它们才闭合。
1. 按键的分类
2. 按键输入原理 3. 按键开关的抖动问题
达a端时,因a = 0,b = 1,使Q = 1,双稳态电路状态发生翻转,输出Q
重新返回原状态。由此可见,键盘输出经双稳态电路之后,输出已变为规 范的矩形方波。
软件方法
软件方法其实很简单,就是在单片机获得P1.0口为低电平的信息
后,不是立即认定S已被按下,而是延时10ms或更长一些时间后再次 检测P1.0口,如果仍为低电平,说明S的确按下了,这实际上是避开 了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高电平) 再延时5~10ms,消除后沿的抖动,然后再对键值处理。不过一般情
线和多个键相连,各按键按下与否均影响 该键所在行线和列线的电平,各按键间将 相互影响,因此,必须将行线、列线信号 配合起来作适当处理,才能确定闭合键的 位置。
矩阵式键盘按键的识别
1. 扫描法 2. 线反转法
扫描法
按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平, 显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的 变化,因此,必须使所有列线处在低电平,只有这样,当有键按下时,该键所在的 行电平才会由高电平变为低电平。CPU根据行平电的变化,便能判定相应的行有 键按下。8号键按下时,第2行一定为低电平,然而,第2行为低电平时,能否肯定 是8号键按下呢?回答是否定的,因为9、10、11号键按下同样使第2行为低电平。 为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只 让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,
表示出来,最后再去写代码,这样,才能快速有效地写好
代码。
实践与思考
1. 设计一个简单3个按键的键盘来控制一组发光二极管,使 这组发光二极管可以以6种不同的花色循环点亮。
2. 改用单键实现题1所示功能。
矩阵式键盘接口
• 矩阵式键盘的结构与工作原理
• 矩阵式键盘按键的识别
• 键盘的编码
• 键盘的工作方式
程序实现的功能
检测是否有键闭合,如有键闭合,则去除键 抖动,判断键号并转入相应的按键处理。
程序采用的方法
程序采用查询的方法,P1口接8个发光二极管,4个按键 分别接到P3.2 、P3.3、P3.4和P3.5,且定义如下。 P3.2:开始,按此键则灯开始流动(由上而下) P3.3:停止,按此键则停止流动,所有灯为暗 P3.4:上,按此键则灯由上向下流动 P3.5:下,按此键则灯由下向上流动
按键的分类
按键按照结构原理可分为两类: 1.触点式开关按键,如机械式开关、导电橡胶式开关等; 2.无触点开关按键,如电气式按键,磁感应按键等。.
前者造价低,后者寿命长。目前,单片机系统中最常见的是触点式开 关按键。
按键按照接口原理可分为:
编码键盘主要是用硬件来实现
1.编码键盘
2.非编码键盘两类,
对键的识别,非编码键盘主要是 由软件来实现键盘的定义与识别。
图中的4输入与门用于产生按键中断,其输入端
与各列线相连,再通过上拉电阻接至+5V电源,输出
端接至8051的外部中断输入端。具体工作如下:当 键盘无键按下时,与门各输入端均为高电平,保持
输出端为高电平;当有键按下时,端为低电平,向
CPU申请中断,若CPU开放外部中断,则会响应中 断请求,转去执行键盘扫描子程序。
这种电路每个按键需要
占用一根I/O线,在按
键数量较多时,输入口 浪费大且电路结构很烦
琐,因此这种键盘接口
电路只适用于按键较少 或要求较高操作速度的
场合。
简单键盘的接口电路与编程
下面以图 (a)为例进行编程。 (1)程序实现的功能 (2)程序采用的方法
(3)程序中用到的变量和常量的定义
(4)程序中调用的子程序 (5)程序清单 (6)程序分析与思考
在每组行输出时读取P1.0~P1.3,若全为“1”,则 表示为“0”这一行没有键闭合,否则有键闭合。由此得 到闭合键的行值和列值,然后可采用计算法或查表法将 闭合键的行值和列值转换成所定义的键值。
矩阵键盘的接口实例
(5)为了保证键每闭合一次CPU 仅做一次处理,必须去除键释放时 的抖动。
(6)扫描程序的流程图
8279的内部结构 8279的内部结构框图
8279的工作原理
(1)I/O控制及数据缓冲器
(2)控制与定时寄存器及定时控制
(3)扫描计数器
(4)回复缓冲器、键盘去抖及控制
下提供保护。显示输出时,它有一个16×8位显示RAM,
其内容通过自动扫描,可由8或16 位LED数码管显示。
可编程键盘接口
• 8279的基本功能 • 8279的控制 • 8279与单片机、键盘/显示器的接口
• 实践与思考
8279的基本功能
• 8279的内部结构和工作原理 • 8279的引脚和功能 • • 8279的工作方式
电路工作过程
电路工作过程
按键未按下时,a = 0,b = 1,输出Q = 1,按键按下时,因按键的机 械弹性作用的影响,使按键产生抖动,当开关没有稳定到达b端时,因与 非门2输出为0反馈到与非门1的输入端,封锁了与非门1,双稳态电路的状 态不会改变,输出保持为1,输出Q不会产生抖动的波形。当开关稳定到 达b端时,因a = 1,b = 0,使Q = 0,双稳态电路状态发生翻转。当释放 按键时,在开关未稳定到达a端时,因Q = 0,封锁了与非门2,双稳态电 路的状态不变,输出Q保持不变,消除了后沿的抖动波形。当开关稳定到
(7)键盘扫描程序
实践与思考
设计一个简易计算器,有键盘锁定功能。具体要求如下: (1)键盘锁定密码为8888,用户输入“锁定”“8888”后再按“锁定” 键解锁。用户连续按两次“锁定”键,可以锁定键盘。 (2)简易计算器共有16个按键,0~9十个数字键,加、减、等于、乘、 除共5个功能键,还有一锁定键。
总结:
无论以何种方式编码,均应以处理问题方便为原则,而最基本的就是 键所处的物理位置即行号和列号,它是各种编码之间相互转换的基础,编 码相互转换可通过计算或查表的方法实现。
键盘的工作方式
• 编程扫描方式
• 定时扫描方式 • 中断扫描方式
编程扫描方式
编程扫描方式是利用CPU完成其他工作的空余调用键盘扫描子程 序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入 要求,直到CPU重新扫描键盘为止。
矩阵键盘的接口实例
8051单片机的P1口作为键盘I/O
口,键盘的列线接到P1口的低4位,
键盘的行线接到P1口的高4位。列线 P1.0~P1.3分别接有4个上拉电阻到 正电源+5V,并把列线P1.0~P1.3设 置为输入线,行线P1.4~P.17设置为
输出线。4根行线和4根列线形成16
个相交点。
矩阵键盘的接口实例
(3)设定一个指示锁定状态的指示位,该位为“0”表示解锁状态,为
“1”表示锁定状态。 (4)编程实现键盘功能部分。
可编程键盘接口
Intel8279是一种可编程键盘/显示器接口芯片,它
含有键盘输入和显示器输出两种功能。键盘输入时,它
提供自动扫描,能与按键或传感器组成的矩阵相连,接
收输入信息,它能自动消除键盘抖动并能对多Baidu Nhomakorabea同时按
按键输入原理
在单片机应用系统中,除了复位按键有专门的复位电路及专一的 复位功能外,其他按键都是以开关状态来设置控制功能或输入数据。 当所设置的功能键或数字键按下时,单片机系统应完成该按键所设定
的功能,按键信息输入是与软件结构密切相关的过程。
对于一个键盘或一组按键,单片机系统中总有一个接口电路与 CPU相连。CPU可以采用查询或中断方式了解有无按键输入并检查是 哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执 行该键的功能程序,执行完后再返回主程序。
键盘的编码
1.独立式键盘 2.矩阵式键盘 按键数量少,可根据实际需要灵活编码。 按键的位置由行号和列号唯一确定,因此可分别对行号和列
号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是 列号。
问题: 不同行的键离散性较大,不利于散 转指令对按键进行处理。 采用依次排列键号的方式对安排进行编码。
况下,通常不对按键释放的后沿进行处理,实践证明,也能满足一定
的要求。当然,在实际应用中,对按键的要求也是千差万别的,要根 据不同的需要来编制处理程序,但以上是消除按键抖动的原则。
简单键盘接口
• 简单键盘的工作原理
• 简单键盘的接口电路与编程 • 实践与思考
简单键盘的工作原理
如果系统只需几个按键,可直接采用I/O线构成单个按键电路,各个按 键之间相互独立,一根线上的按键状态不会影响其他输入线上的工作状态, 又称独立式键盘接口电路。
依次循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。
线反转法
• 第1步:将列线P1.4~P1.7 作为输入线,行线P1.3~P1.0
作为输出线,并将输出线输出全为低电平,读列线状态,
则列线中电平为低的是按键所在的列。 • 第2步:将行线作为输入线,列线作为输出线,并将输出 线输出为低电平,读行线状态,则行线中电平为低的是按 键所在的行。 • 综合第1、2两步结果,可确定按键所在的行和列,从而识 别出所按下的键。
程序中用到的变量和常量的定义
UpDown
;上下行标志
StartEnd
LAMPCODE
;启动及停止标志
;存放流动的数据代码
程序中调用的子程序
KEY ;键盘程序
KEYPROC
LAMP DELAY
;键盘处理程序
;灯显示程序 ;延时程序,键盘处理中调用
程序分析与思考
这里介绍的键盘处理程序比较简单,实际上,键盘的 处理是很复杂的,但这种复杂并不来自于单片机的本身, 而是来自于操作者的习惯等问题,因此,在编写键盘处理 程序之前,最好先把它从逻辑上理清,然后用适当的算法
• 矩阵键盘的接口实例
• 实践与思考
矩阵式键盘的结构与工作原理
矩阵式键盘中,行、列线分别连接到 按键开关的两端,行线通过上拉电阻接到 +5V上。当无键按下时,行线处于高电平状 态;当有键按下时,行、列线将导通,此 时,行线电平将由与此行线相连的列线电 平决定。这一点是识别矩阵按键是否被按
下的关键。然而,矩阵键盘中的行线、列
键盘扫描程序一般应包括以下内容:
(1)判别有无键按下。 (2)键盘扫描取得闭合键的行、列值。 (3)用计算法或查表法得到键值。 (4)判断闭合键是否释放,如没释放则继续等待。 (5)将闭合键键号保存,同时转去执行该闭合键的功能。
定时扫描方式
定时扫描方式就是每隔一段时间对键盘扫描一次,它 利用单片机内部的定时器产生一定时间(例如10ms)的