第五章--键盘及其接口技术ppt课件.ppt
我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物第五章 键盘及其接口技术本章要点1 1按键的抖动干扰及其解决方法。按键的抖动干扰及其解决方法。2 2独立式键盘的结构原理及其接口电路。独立式键盘的结构原理及其接口电路。3 3矩阵式键盘的结构原理及其行扫描法。矩阵式键盘的结构原理及其行扫描法。4 4编码器及其编码键盘接口电路。编码器及其编码键盘接口电路。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物本章主要内容 引言引言5.1 5.1 键盘输入电路键盘输入电路5.2 5.2 非编码独立式键盘非编码独立式键盘5.3 5.3 非编码矩阵式键盘非编码矩阵式键盘5.4 5.4 编码键盘编码键盘 本章小结本章小结 思考题思考题我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物引言 在计算机控制系统中,除了与生产过程进行信息传递的在计算机控制系统中,除了与生产过程进行信息传递的过程输入输出设备以外,还有与过程输入输出设备以外,还有与操作人员进行信息交换的操作人员进行信息交换的常规输入设备和输出设备常规输入设备和输出设备。 键盘是一种最常用的输入设备键盘是一种最常用的输入设备, ,它是一组按键的集合,它是一组按键的集合,从功能上可分为数字键和功能键两种,作用是从功能上可分为数字键和功能键两种,作用是输入数据与输入数据与命令,查询和控制系统的工作状态命令,查询和控制系统的工作状态,实现简单的人机对话。,实现简单的人机对话。 键盘接口电路可分为编码键盘和非编码键盘键盘接口电路可分为编码键盘和非编码键盘两种类型。两种类型。编码键盘采用硬件编码电路来实现键的编码,每按下一个编码键盘采用硬件编码电路来实现键的编码,每按下一个键,键盘便能自动产生按键代码。编码键盘主要有键,键盘便能自动产生按键代码。编码键盘主要有BCDBCD码键码键盘、盘、ASCIIASCII码键盘等类型。非编码键盘仅提供按键的通或断码键盘等类型。非编码键盘仅提供按键的通或断状态状态, , 按键代码的产生与识别由软件完成。按键代码的产生与识别由软件完成。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物引言 编码键盘的特点编码键盘的特点是使用方便,键盘码产生是使用方便,键盘码产生速度快,占用速度快,占用CPUCPU时间少,但对按键的检测与时间少,但对按键的检测与消除抖动干扰是靠硬件电路来完成的,因而硬消除抖动干扰是靠硬件电路来完成的,因而硬件电路复杂、成本高。而件电路复杂、成本高。而非编码键盘非编码键盘硬件电路硬件电路简单,成本低,但占用简单,成本低,但占用CPUCPU的时间较长。的时间较长。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5.1 键盘输入电路主要知识点主要知识点:n5.1.1 5.1.1 键盘的抖动干扰键盘的抖动干扰n5.1.2 5.1.2 抖动干扰的消除抖动干扰的消除我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 5.1.1 键盘的抖动干扰 由于机械触点的弹性振动,由于机械触点的弹性振动,按键按键在按下时不会在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为的抖动,这称为按键的抖动干扰按键的抖动干扰,其产生的波形如,其产生的波形如图图5-15-1所示,当按键按下时会产生前沿抖动,当按所示,当按键按下时会产生前沿抖动,当按键弹起时会产生后沿抖动。这是所有机械触点式按键弹起时会产生后沿抖动。这是所有机械触点式按键在状态输出时的共性问题,抖动的时间长短取决键在状态输出时的共性问题,抖动的时间长短取决于按键的机械特性与操作状态,一般为于按键的机械特性与操作状态,一般为1010100ms100ms,此为键处理设计时要考虑的一个重要参数。此为键处理设计时要考虑的一个重要参数。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物前 沿 抖 动后 沿 抖 动图 6-2 按 键 的 抖 动 干 扰闭 合 稳 定释 放 稳 定键 按 下键 释 放我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 5.1.2 抖动干扰的消除 按键的抖动会造成按一次键产生的开关状态被按键的抖动会造成按一次键产生的开关状态被CPUCPU误读几次。为了使误读几次。为了使CPUCPU能正确地读取按键状态,必须能正确地读取按键状态,必须在按键闭合或断开时,消除产生的前沿或后沿抖动,在按键闭合或断开时,消除产生的前沿或后沿抖动,去抖动的方法有去抖动的方法有硬件方法硬件方法和和软件方法软件方法两种。两种。 1 1硬件方法硬件方法 硬件方法是设计一个滤波延时电路或单稳态电路硬件方法是设计一个滤波延时电路或单稳态电路等硬件电路来避开按键的抖动时间。图等硬件电路来避开按键的抖动时间。图5-25-2是由是由R R2 2和和C C组成的滤波延时消抖电路,设置在按键组成的滤波延时消抖电路,设置在按键S S与与CPUCPU数据线数据线D Di i之间。按键之间。按键S S未按下时,电容两端电压为未按下时,电容两端电压为0 0,即与非,即与非门输入门输入V Vi i为为0 0,输出,输出V Vo o为为1 1。当。当S S按下时,由于按下时,由于C C两端电两端电压不能突变,充电电压压不能突变,充电电压V Vi i在充电时间内未达到与非门在充电时间内未达到与非门的开启电压,门的输出的开启电压,门的输出V Vo o将不会改变,直到充电电压将不会改变,直到充电电压V Vi i大于门的开启电压时,与非门的输出大于门的开启电压时,与非门的输出V Vo o才变为才变为0 0, 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图5-2 5-2 滤波延时消抖电路滤波延时消抖电路2RV5+1R1V2V图 5 - 3 滤波延时消抖电路SiVoV( D i )( D i )我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 这段充电延迟时间取决于这段充电延迟时间取决于R R1 1、R R2 2和和C C值的大小,电路设计时值的大小,电路设计时只要使之大于或等于只要使之大于或等于100ms100ms即可避开按键抖动的影响。同理,按即可避开按键抖动的影响。同理,按键键S S断开时,即使出现抖动,由于断开时,即使出现抖动,由于C C的放电延迟过程,也会消除的放电延迟过程,也会消除按键抖动的影响按键抖动的影响 图中,图中,V V1 1是未施加滤波电路含有前沿抖动、后沿抖动的波是未施加滤波电路含有前沿抖动、后沿抖动的波形,形,V V2 2是施加滤波电路后消除抖动的波形。是施加滤波电路后消除抖动的波形。2 2软件方法软件方法 软件方法是指编制一段时间大于软件方法是指编制一段时间大于100ms100ms的延时程序,在第一的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。为该键已稳定按下,否则无键按下,从而消除了抖动的影响。同理,在检测到按键释放后,也同样要延迟一段时间,以消除同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理。后沿抖动,然后转入对该按键的处理。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 5.2 非编码独立式键盘主要知识点主要知识点: :n5. 2.1 5. 2.1 查询法接口电路查询法接口电路n5. 2.2 5. 2.2 中断法接口电路中断法接口电路我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5. 2.1 查询法接口电路 现以现以3 3个按键为例,图个按键为例,图5-35-3即为即为独立式键盘查询独立式键盘查询法接口电路法接口电路。按键。按键S S0 0、S S1 1、S S2 2分别通过上拉电阻与分别通过上拉电阻与CPUCPU的数据线的数据线D D0 0、D D1 1、D D2 2相连,当按键相连,当按键S Si i闭合时,数据闭合时,数据线直接接地,因而线直接接地,因而CPUCPU读入读入D Di i=0=0;当按键;当按键S Si i断开时,数断开时,数据线通过上拉电阻接到正电源,因而据线通过上拉电阻接到正电源,因而CPUCPU读入读入D Di i=1=1。 该接口电路实现的功能为:查询检测是否有键按该接口电路实现的功能为:查询检测是否有键按下,如有键闭合,则消除抖动,再判断键号,然后转下,如有键闭合,则消除抖动,再判断键号,然后转入相应的键处理。其程序流程如图入相应的键处理。其程序流程如图5-45-4所示。所示。 采用采用查询法查询法时,必须保证时,必须保证CPU每隔一定时间主动每隔一定时间主动地去扫描按键一次,地去扫描按键一次,该扫描时间间隔应小于两次按键该扫描时间间隔应小于两次按键的时间间隔,的时间间隔,否则会有按键不响应的情形。显然这种否则会有按键不响应的情形。显然这种方式占用方式占用CPU时间比较多。时间比较多。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图5-3 5-3 独立式键盘结构原理独立式键盘结构原理图 5-4 独立式键盘结构原理D0V5+D1D2S0S1S2我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图5-45-4独立式键盘查询法程序流程图独立式键盘查询法程序流程图开 始有 键 闭 合 否 ?NY延 时 1 0 0 m s消 除 键 抖 动有 键 闭 合 否 ?NYNYNYNYD0= 0 ?D1= 0 ?D2= 0 ?S0键 功 能 程 序S2键S1键序程能功序程能功图 5 - 5 独 立 式 键 盘 查 询 法 程 序 流 程 图 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 5.2.2中断法接口电路n仍以仍以3 3个按键为例,图个按键为例,图5-55-5是一个炉温控制系统的功能是一个炉温控制系统的功能键分配图,键分配图,S S0 0、S S1 1、S S2 2分别代表自动分别代表自动/ /手动切换、炉温手动切换、炉温参数显示和炉温参数打印功能。参数显示和炉温参数打印功能。n在上述查询法接口电路的基础上,再把按键在上述查询法接口电路的基础上,再把按键S S0 0、S S1 1、S S2 2的数据输出线经过与非门和反相器后与的数据输出线经过与非门和反相器后与8255A8255A的选通输的选通输入信号入信号PC4PC4相连,相连,8255A8255A的的PC3PC3发出中断请求信号经中断发出中断请求信号经中断控制器控制器8259A8259A与与CPUCPU的中断请求引脚相连,这是一种典的中断请求引脚相连,这是一种典型的型的中断法键盘接口电路中断法键盘接口电路。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图5-55-5独立式键盘中断法接口电路独立式键盘中断法接口电路0S1S2SV5+图 5-6 独立式键盘中断法接口电路PA0PA1PC3PA2PC4PA3PA7RDPA5PA4PA6RDCPU80888255AINTRa8259ASTBaIR3INTRINTD7D0D7D0我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物u当当CPUCPU对对8255A8255A初始化(初始化(8255A8255A的的A A口工作于方式口工作于方式1 1 输入)输入)后,后,CPUCPU即执行主程序。即执行主程序。u当按下当按下S S0 0键即表示要进入自动控制状态,此时与之相连键即表示要进入自动控制状态,此时与之相连的的I/OI/O口线呈现为低电平的同时,与非门输出为高电平,口线呈现为低电平的同时,与非门输出为高电平,经反相器变为低电平,使经反相器变为低电平,使8255A8255A端口端口A A的选通输入信号的选通输入信号PC4 PC4 有效,则有效,则PAPA0 0PAPA2 2引脚接收并存入引脚接收并存入3 3个按键的个按键的“0”0”或或“1”1”状态,当恢复成高电平后,经状态,当恢复成高电平后,经T TSITSIT时间,时间,8255A8255A的的PC3PC3发出发出INTRaINTRa中断请求信号,经中断控制器中断请求信号,经中断控制器8259A8259A向向CPUCPU申请中断,申请中断,CPUCPU响应中断后,即转到中断服务程序中。响应中断后,即转到中断服务程序中。u中断服务程序依次查询按键的通断状态,当查询到是自中断服务程序依次查询按键的通断状态,当查询到是自动动/ /手动(即手动(即S S0 0=0=0)时,则转到自动)时,则转到自动/ /手动控制子程序的手动控制子程序的入口地址,从而使系统进入自动控制状态。入口地址,从而使系统进入自动控制状态。u如果没有键按下,则相应的如果没有键按下,则相应的I/OI/O口线均为高电平,也不口线均为高电平,也不会产生中断信号,会产生中断信号,CPUCPU继续运行主程序。继续运行主程序。 工作过程工作过程我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 键盘中断服务子程序,与查询方式相似,在保护现场键盘中断服务子程序,与查询方式相似,在保护现场后,首先调用后,首先调用100mS100mS延时子程序去除抖动,然后依次查键延时子程序去除抖动,然后依次查键号,并转入键功能处理程序,最后恢复现场、中断返回。号,并转入键功能处理程序,最后恢复现场、中断返回。显然,查询顺序代表了按键的排队优先级。显然,查询顺序代表了按键的排队优先级。 采用中断法时,采用中断法时,CPUCPU对按键而言是被动方式,在无键对按键而言是被动方式,在无键按下时不占用按下时不占用CPUCPU时间,因而时间,因而CPUCPU有更多的时间执行其他有更多的时间执行其他程序。程序。 上述分析说明:独立式键盘接口电路简单灵活,软件上述分析说明:独立式键盘接口电路简单灵活,软件结构简单,但每个按键必须占用一根结构简单,但每个按键必须占用一根I/OI/O口线,在按键数口线,在按键数量较多时,需要占用较多的量较多时,需要占用较多的I/OI/O口线。比如口线。比如6464个按键,需个按键,需要有要有6464根线,不仅连线复杂,查询按键的时间也较长。根线,不仅连线复杂,查询按键的时间也较长。故这种键盘电路只适合于按键数量比较少的小型控制系故这种键盘电路只适合于按键数量比较少的小型控制系统或智能控制仪表中。统或智能控制仪表中。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 5.3 非编码矩阵式键盘主要知识点主要知识点: :n5.3.1 5.3.1 矩阵式键盘的结构组成矩阵式键盘的结构组成n5.3.2 5.3.2 矩阵式键盘的程序设计矩阵式键盘的程序设计我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5.3.1 矩阵式键盘的结构组成v 矩阵式键盘又叫行列式键盘,是用矩阵式键盘又叫行列式键盘,是用I/O口线组成的行、列口线组成的行、列矩阵结构,在每根行线与列线的交叉处,二线不直接相通而矩阵结构,在每根行线与列线的交叉处,二线不直接相通而是通过一个按键跨接接通。采用这种矩阵结构只需是通过一个按键跨接接通。采用这种矩阵结构只需M根行输根行输出线和出线和N根列输入线,就可连接根列输入线,就可连接MN个按键。通过键盘扫个按键。通过键盘扫描程序的行输出与列输入就可确认按键的状态,再通过键盘描程序的行输出与列输入就可确认按键的状态,再通过键盘处理程序便可识别键值。处理程序便可识别键值。v 键盘与键盘与CPU的接口可采用并行端口的接口可采用并行端口8255A、锁存器或缓、锁存器或缓冲器一类。图冲器一类。图5-6给出了一种给出了一种88非编码矩阵式键盘的接口非编码矩阵式键盘的接口电路。行输出电路由行扫描锁存器电路。行输出电路由行扫描锁存器74LS273、 反相器与行反相器与行线线X0X7连接组成,列输入电路由三态缓冲器连接组成,列输入电路由三态缓冲器74LS244与与列线列线Y0Y7以及上拉电阻组成。以及上拉电阻组成。X、Y线的每一个交叉处跨线的每一个交叉处跨接一个键,其接一个键,其键值分别是十进制数的键值分别是十进制数的01,02,64。该键盘的接口地址为该键盘的接口地址为PORT1。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物n图图5-6 5-6 矩阵式键盘接口电路矩阵式键盘接口电路V5+4001162432485633091725414957086474LS244D1D2D3D4D5D6D70DD1D2D3D4D5D6D70DCLKPORT174LS 13874LS273IOWIOR1G2GY7Y0YYYYYY124365XXXXXXXX12436507图 5-7 矩阵式键盘接口电路我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物v 当键盘中无任何键按下时,所有的行线和列线被断开且当键盘中无任何键按下时,所有的行线和列线被断开且相互独立,输入线相互独立,输入线Y Y0 0Y Y7 7列都为高电平;当有任意一键按下时,列都为高电平;当有任意一键按下时,则该键所在的行线与列线接通,因此,该列线的电平取决于该则该键所在的行线与列线接通,因此,该列线的电平取决于该键所在的行线。基于此,产生了键所在的行线。基于此,产生了“行扫描法行扫描法”与与“线反转法线反转法”两种识别方法。两种识别方法。v 行扫描法行扫描法又称逐行零扫描查询法,即逐行输出行扫描信号又称逐行零扫描查询法,即逐行输出行扫描信号“0”0”,使各行依次为低电平,然后分别读入列数据,检查此,使各行依次为低电平,然后分别读入列数据,检查此(低电平)行中是否有键按下。如果读得某列线为低电平,则(低电平)行中是否有键按下。如果读得某列线为低电平,则表示此(低电平)行线与此列线的交叉处有键按下,再对该键表示此(低电平)行线与此列线的交叉处有键按下,再对该键进行译码计算出键值,然后转入该键的功能子程序入口地址;进行译码计算出键值,然后转入该键的功能子程序入口地址;如果没有任何一根列线为低电平,则说明此如果没有任何一根列线为低电平,则说明此( (低电平低电平) )行没有键行没有键按下。接着进行下一行的按下。接着进行下一行的“0”0”行扫描与列读入,直到行扫描与列读入,直到8 8行全部行全部查完为止,若无键按下则返回查完为止,若无键按下则返回。v 有时为了快速判断键盘中是否有键按下,也可先将全部行有时为了快速判断键盘中是否有键按下,也可先将全部行线同时置为低电平,然后检测列线的电平状态,若所有列线均线同时置为低电平,然后检测列线的电平状态,若所有列线均为高电平,则说明键盘中无键按下,立即返回;若要有一列的为高电平,则说明键盘中无键按下,立即返回;若要有一列的电平为低,则表示键盘中有键被控下,然后再如上那样进行逐电平为低,则表示键盘中有键被控下,然后再如上那样进行逐行扫描。行扫描。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5.3.2 矩阵式键盘的程序设计n 在计算机控制系统中,键盘扫描只是在计算机控制系统中,键盘扫描只是 CPUCPU工作的一工作的一部分。因此在设计键盘扫描程序时,必须要保证部分。因此在设计键盘扫描程序时,必须要保证键盘键盘操作的实时性操作的实时性,又,又不能占有不能占有CPUCPU太多的时间太多的时间,还要充分,还要充分考虑到考虑到抖动干扰的消除抖动干扰的消除。一般可根据情况选用编程扫。一般可根据情况选用编程扫描、定时扫描或中断扫描中的一种方式。描、定时扫描或中断扫描中的一种方式。n 下面来考虑扫描程序的编写与准备。逐行输出下面来考虑扫描程序的编写与准备。逐行输出行扫行扫描描信号信号“0”0”,即是,即是CPUCPU依次使行线依次使行线X X0 0X X7 7为低电平,其为低电平,其输出数据代码分别为输出数据代码分别为01H01H(X X0 0线)、线)、02H02H(X X1 1线)、线)、04H04H(X X2 2线)、线)、08H08H(X X3 3线)、线)、10H10H(X X4 4线)、线)、20H20H(X X5 5线)、线)、40H40H(X X6 6线)、线)、80H80H(X X7 7线)线)。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物u 为消除按键的抖动干扰,程序中需调用延时为消除按键的抖动干扰,程序中需调用延时100ms100ms的子程的子程序序, , 以便认定确有键按下再识别其以便认定确有键按下再识别其键值键值。u 求十进制键值的方法是分别设一个求十进制键值的方法是分别设一个行值行值寄存器寄存器CLCL和和列值列值寄寄存器存器DLDL。v接口电路中跨接在行列线上的接口电路中跨接在行列线上的6464个键,由于个键,由于同一列相邻行之同一列相邻行之间相隔数间相隔数8 8,所以每进行一次,所以每进行一次“0”0”行扫描后,如果此行无键行扫描后,如果此行无键按下,则行寄存器按下,则行寄存器CLCL应加应加0808再进行下一行的再进行下一行的“0”0”行扫描;行扫描;v若有键按下则不加若有键按下则不加0808而转求列值,由于而转求列值,由于列值列值比比键值键值小小1 1,如第,如第一行第一列的键按下时列值一行第一列的键按下时列值Y Y0 0( (即数据位即数据位D D0 0) )0 0比比0101键值小键值小1 1,所以列值寄存器所以列值寄存器DLDL应先加应先加1 1,然后将读入的列值循环右移,判,然后将读入的列值循环右移,判断进位位断进位位CFCF是否等零即有否键按下,若无键按下,再继续加是否等零即有否键按下,若无键按下,再继续加1 1、右移、判断,重复上述过程直到有键按下。右移、判断,重复上述过程直到有键按下。v最后把行值和列值相加并进行最后把行值和列值相加并进行DAADAA修正,即可得到所求的十进修正,即可得到所求的十进制键值。制键值。( (计算过程中所有数为压缩型计算过程中所有数为压缩型BCDBCD码码) )(0,8,16,24,32,40,48,56)(1,2,3,4,5,6,7,8)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物v 例如跨接在例如跨接在X2X2行与行与Y1Y1列的列的1818键按下,其键值计算键按下,其键值计算方法如下:第一次方法如下:第一次“0”0”行扫描行扫描X0X0行,无键按下,行,无键按下,CL=00+08=08CL=00+08=08,接下来扫,接下来扫X1X1行,仍无键按下,加行,仍无键按下,加0808并进并进行行DAADAA修正,修正,CL=08+08=16CL=08+08=16,再扫,再扫X2X2行,此时读入的列行,此时读入的列值不等于值不等于FFHFFH即表明有键按下,则即表明有键按下,则CL=16CL=16不变。然后转不变。然后转求列值,列值寄存器先加求列值,列值寄存器先加1 1再把读入的列值循环移位,再把读入的列值循环移位,由于按下的键在由于按下的键在Y1Y1列,所以需移位两次才能移出列,所以需移位两次才能移出0 0值,值,因此因此DL=02DL=02,然后将行值寄存器与列值寄存器之值相加,然后将行值寄存器与列值寄存器之值相加,并进行并进行DAADAA修正,得到修正,得到AL=CL+DL=16+02=18AL=CL+DL=16+02=18,即键值为,即键值为1818。v 该键盘扫描及键处理程序流程图如图该键盘扫描及键处理程序流程图如图5-75-7所示,其所示,其程序如下:程序如下:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物n图图 5-7 5-7 矩阵式键盘扫描及键处理程序流程图矩阵式键盘扫描及键处理程序流程图矩阵式键盘扫描及键处理程序流程图5 - 8图有键按下否?NY有键按下吗?YN键值寄存器清0输出所有行为低电平输出所有行为低电平延时1 0 0 m s输出某行为低电平此行有键按下?行键值加0 8求出下一行为低电平各行扫描完?返回YN列键值加1列值右移1 位进位位为0 吗?计算键值Y键值送缓冲单元转功能键入口地址NYN我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物程序设计MOV ALMOV AL,0 0MOV CLMOV CL,AL AL ;行值寄存器;行值寄存器CLCL和列值寄存器和列值寄存器DLDL清零清零MOV DLMOV DL,ALALMOV ALMOV AL,0FFH0FFHOUT PORT1OUT PORT1,AL AL ;使所有行线为低电平;使所有行线为低电平IN ALIN AL,PORT1 PORT1 ; 读列键值读列键值CMP ALCMP AL,0FFH 0FFH ; 检查是否有键按下检查是否有键按下JZ DONE JZ DONE ; 无键按下转返回无键按下转返回CALL DELAY CALL DELAY ; 有键按下调延时有键按下调延时100mA100mA子程序子程序MOV ALMOV AL,0FFH0FFHOUT PORT1OUT PORT1,AL AL IN ALIN AL,PORT1 PORT1 ; 重复上述扫描重复上述扫描, ,再次确认是否有键按下再次确认是否有键按下KEY:我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物n CMP AL CMP AL,0FFH0FFHn JZ DONE JZ DONE ; 无键按下转返回无键按下转返回n MOV AHMOV AH,08 08 ; 行数行数0808送计数器送计数器AHAHn MOV BL MOV BL,01H 01H ;行扫描初值行扫描初值( (即即X0X0线线) )送送BLBLKEY1KEY1:MOV ALMOV AL,BLBLn OUT PORT1 OUT PORT1,AL AL ;输出使某行为低电平;输出使某行为低电平n IN ALIN AL,PORT1 PORT1 ; 读入列值读入列值n CMP ALCMP AL,0FFH 0FFH ; 判断此行是否有键按下判断此行是否有键按下n JNZ KEY2 JNZ KEY2 ; 有键按下转有键按下转KEY2KEY2n MOV AL MOV AL,CLCLn ADD AL ADD AL,08 08 ; 无键按下无键按下, ,行值寄存器加行值寄存器加0808n DAA DAA n MOV CL MOV CL,ALAL我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物nRCL BLRCL BL,1 1 ; 求下一行为低电平的输出代码求下一行为低电平的输出代码 nDEC AH DEC AH ; 判判8 8行全扫描完了吗行全扫描完了吗nJNZ KEY1 JNZ KEY1 ; 若未完转若未完转KEY1KEY1,继续扫描下一行,继续扫描下一行nDONEDONE: IRET IRET ; 若全完则返回若全完则返回nKEY2KEY2: INC DL INC DL ; 列值寄存器加列值寄存器加1(1(与键值对应与键值对应) )nRCR ALRCR AL,1 1 ; 列值循环右移列值循环右移1 1位位nJC KEY2 JC KEY2 ; 判断该列是否为判断该列是否为1 1,为,为1 1则无键按下继查下一列则无键按下继查下一列nMOV ALMOV AL,CL CL ; 为为0 0则有键按下则有键按下, ,获得列值获得列值nADD ALADD AL,DLDLnDAA DAA ;求键值;求键值nMOV BUFFMOV BUFF,AL AL ;键值送缓冲单元暂存;键值送缓冲单元暂存nJMP KEYADR JMP KEYADR ;转查找功能键的入口地址;转查找功能键的入口地址nEND KEY END KEY ;我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物n 对于键盘处理程序来说,求得键值并不是目的。如对于键盘处理程序来说,求得键值并不是目的。如果该按键是果该按键是数字键数字键,就应把该键值直接送到显示缓冲,就应把该键值直接送到显示缓冲区进行键值的数字显示;如果该按键是区进行键值的数字显示;如果该按键是功能键功能键,则应,则应找到该键子程序的入口地址,转而去执行该键的功能找到该键子程序的入口地址,转而去执行该键的功能命令。命令。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物主要内容n编码键盘n电脑键盘原理n电脑鼠标原理我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5.4 编码键盘主要知识点主要知识点: :n5.4.15.4.1 二进制编码器二进制编码器n5.4.2 5.4.2 编码键盘接口电路编码键盘接口电路我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物n图图5-8 5-8 二进制编码键盘接口电路二进制编码键盘接口电路A1G SO2O1O0EiU2E oC D 4 5 3 2 BG SO2O1O0EiU1E oC D 4 5 3 2 BA2A3A4S1 5S8S7S0+ 5 VR2C1EC2B1B2B3FHS T BIGR1D0D1D2D3+ 5 V图 5 -9 二 进 制 编 码 键 盘 接 口 电 路 S T B7I6I5I4I3I2I1I0I7I6I5I4I3I2I1I0I我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5.4.1 二进制编码器具有优先级的二进制具有优先级的二进制8位编码器位编码器CD4532B 的真值表见表的真值表见表5-1。n表示芯片优先级的输入允许端表示芯片优先级的输入允许端Ei为为“0”时,无论编码器的信号输时,无论编码器的信号输入入I7 I0为何状态,编码器输出全为为何状态,编码器输出全为“0”,芯片处于屏蔽状态,芯片处于屏蔽状态,同时同时Eo为为“0”,也屏蔽下一级芯片,也屏蔽下一级芯片,工作状态端工作状态端GS均为均为“0” ;n当输入允许端当输入允许端Ei为为“1”时,且编码器的信号输入时,且编码器的信号输入I7 I0全为全为“0”时,编码输出也为时,编码输出也为“0”,但输出允许端,但输出允许端Eo为为“1”,表明此编码,表明此编码器输入端无键按下,却允许优先级低的相邻编码器处于编码状态;器输入端无键按下,却允许优先级低的相邻编码器处于编码状态;工作状态端工作状态端GS均为均为“0”。n 该芯片的该芯片的8个输入端当中,个输入端当中,I0的优先级最高,的优先级最高,I7的优先级最低。的优先级最低。当有多个键按下时,优先级高的被选中,同时自动屏蔽优先级低当有多个键按下时,优先级高的被选中,同时自动屏蔽优先级低的各输入端和下一级芯片的各输入端和下一级芯片(使使Eo端为端为“0”)。比如处于正常编码状比如处于正常编码状态即态即Ei为为“1”时,当时,当I0端为端为“1”,其余输入端无论为,其余输入端无论为“1”或或“0”,编码输出均为二进制,编码输出均为二进制000,同时,同时GS端为端为“1”,Eo端为端为“0”;而当;而当I0端为端为“0”,当,当I1端为端为“1”时,编码输出则为二进时,编码输出则为二进制制001;以此类推,输入端的键值号与二进制编码输出一一以此类推,输入端的键值号与二进制编码输出一一对应。对应。 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物n表表5-1 二进制二进制8位编码器位编码器CD4532B真值表真值表状状 态态 输输 入入编编 码码 输输 出出EiI7I6I5I4I3I2I1I0GSO2O1 O0 Eo00000010000000000001111000011010010110010100110001011011000011000110000011010110000001110011000000011110我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物5.4.2 编码键盘接口电路n图图5-8是一种采用两片是一种采用两片CD4532B构成的构成的16个按键的二个按键的二进制编码接口电路。进制编码接口电路。n其中由于其中由于U1的的Eo作为作为U2的的Ei,所以按键,所以按键S0的优先级的优先级最高,最高,S15的优先级最低。的优先级最低。nU1和和U2的输出的输出O2 O0经或门经或门A3 A1输出,以形输出,以形成低成低3位编码位编码D2 D0。而最高位而最高位D3则由则由U2的的GS产产生生,当按键当按键S8 S15中有一个闭合时,其输出为中有一个闭合时,其输出为“1”。n从而从而S0 S15中任意一个键被按下,由编码位中任意一个键被按下,由编码位D3 D0均可输出相应的均可输出相应的4位二进制码。位二进制码。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但