8-键盘接口技术课件_第1页
8-键盘接口技术课件_第2页
8-键盘接口技术课件_第3页
8-键盘接口技术课件_第4页
8-键盘接口技术课件_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章键盘接口技术

按键

简单键盘接口矩阵式键盘接口可编程键盘接口第2章键盘接口技术

按键1按键的分类按键输入原理按键开关的抖动问题键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件,也就是说键盘是一组规则排列的开关。单片机使用的按键是一种常开型的开关,平时按键的两个触点处于断开状态,按下键时它们才闭合。按键按键的分类键盘由一组规则排列的按键组成,一个按键2按键的分类按键按照结构原理可分为两类:1.触点式开关按键,如机械式开关、导电橡胶式开关等;2.无触点开关按键,如电气式按键,磁感应按键等。.按键按照接口原理可分为:1.编码键盘2.非编码键盘两类,编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。前者造价低,后者寿命长。目前,单片机系统中最常见的是触点式开关按键。按键的分类按键按照结构原理可分为两类:按键按照接口原理可分3按键输入原理在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,单片机系统应完成该按键所设定的功能,按键信息输入是与软件结构密切相关的过程。对于一个键盘或一组按键,单片机系统中总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无按键输入并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。按键输入原理在单片机应用系统中,除4按键开关的抖动问题单片机系统中应用的一般是由机械触点构成的按键。当机械触点断开、闭合时,会有抖动,如下图所示。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。常用的去抖动的方法有两种:1.硬件方法2.软件方法按键开关的抖动问题单片机系统中应5硬件方法在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路,如图所示。电路工作过程

硬件方法在硬件上可采用在键输出端加R6电路工作过程按键未按下时,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保持不变,消除了后沿的抖动波形。当开关稳定到达a端时,因a=0,b=1,使Q=1,双稳态电路状态发生翻转,输出Q重新返回原状态。由此可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。电路工作过程按键未按下时,a=7软件方法软件方法其实很简单,就是在单片机获得P1.0口为低电平的信息后,不是立即认定S已被按下,而是延时10ms或更长一些时间后再次检测P1.0口,如果仍为低电平,说明S的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高电平)再延时5~10ms,消除后沿的抖动,然后再对键值处理。不过一般情况下,通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,在实际应用中,对按键的要求也是千差万别的,要根据不同的需要来编制处理程序,但以上是消除按键抖动的原则。软件方法软件方法其实很简单,就是在8简单键盘接口简单键盘的工作原理简单键盘的接口电路与编程

实践与思考简单键盘接口9简单键盘的工作原理如果系统只需几个按键,可直接采用I/O线构成单个按键电路,各个按键之间相互独立,一根线上的按键状态不会影响其他输入线上的工作状态,又称独立式键盘接口电路。这种电路每个按键需要占用一根I/O线,在按键数量较多时,输入口浪费大且电路结构很烦琐,因此这种键盘接口电路只适用于按键较少或要求较高操作速度的场合。简单键盘的工作原理如果系统只需几个按键,可直10简单键盘的接口电路与编程(1)程序实现的功能(2)程序采用的方法(3)程序中用到的变量和常量的定义(4)程序中调用的子程序(5)程序清单(6)程序分析与思考下面以图(a)为例进行编程。简单键盘的接口电路与编程(1)程序实现的功能下面以图(11程序实现的功能检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的按键处理。程序实现的功能检测是否有键闭合,如有键12程序采用的方法P3.2:开始,按此键则灯开始流动(由上而下)P3.3:停止,按此键则停止流动,所有灯为暗P3.4:上,按此键则灯由上向下流动P3.5:下,按此键则灯由下向上流动程序采用查询的方法,P1口接8个发光二极管,4个按键分别接到P3.2、P3.3、P3.4和P3.5,且定义如下。程序采用的方法P3.2:开始,按此键则灯开始流动(由上而下13程序中用到的变量和常量的定义UpDown ;上下行标志StartEnd ;启动及停止标志LAMPCODE;存放流动的数据代码程序中用到的变量和常量的定义UpDown 14程序中调用的子程序KEY;键盘程序KEYPROC;键盘处理程序LAMP;灯显示程序DELAY;延时程序,键盘处理中调用程序中调用的子程序KEY15程序分析与思考

这里介绍的键盘处理程序比较简单,实际上,键盘的处理是很复杂的,但这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。程序分析与思考16实践与思考

1.设计一个简单3个按键的键盘来控制一组发光二极管,使这组发光二极管可以以6种不同的花色循环点亮。2.改用单键实现题1所示功能。实践与思考

1.设计一个简单3个按键的键盘来控制一组发光17矩阵式键盘接口矩阵式键盘的结构与工作原理矩阵式键盘按键的识别键盘的编码键盘的工作方式矩阵键盘的接口实例实践与思考矩阵式键盘接口矩阵式键盘的结构与工作原理18矩阵式键盘的结构与工作原理矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这一点是识别矩阵按键是否被按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。矩阵式键盘的结构与工作原理矩阵式19矩阵式键盘按键的识别1.扫描法2.线反转法矩阵式键盘按键的识别20扫描法按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平,显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线处在低电平,只有这样,当有键按下时,该键所在的行电平才会由高电平变为低电平。CPU根据行平电的变化,便能判定相应的行有键按下。8号键按下时,第2行一定为低电平,然而,第2行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下同样使第2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依次循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。扫描法按键按下时,与此键相连的行线21线反转法第1步:将列线P1.4~P1.7作为输入线,行线P1.3~P1.0作为输出线,并将输出线输出全为低电平,读列线状态,则列线中电平为低的是按键所在的列。第2步:将行线作为输入线,列线作为输出线,并将输出线输出为低电平,读行线状态,则行线中电平为低的是按键所在的行。综合第1、2两步结果,可确定按键所在的行和列,从而识别出所按下的键。线反转法第1步:将列线P1.4~P1.7作为输入线,行线22键盘的编码1.独立式键盘按键数量少,可根据实际需要灵活编码。2.矩阵式键盘按键的位置由行号和列号唯一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。问题:不同行的键离散性较大,不利于散转指令对按键进行处理。采用依次排列键号的方式对安排进行编码。无论以何种方式编码,均应以处理问题方便为原则,而最基本的就是键所处的物理位置即行号和列号,它是各种编码之间相互转换的基础,编码相互转换可通过计算或查表的方法实现。总结:键盘的编码1.独立式键盘按键数量少,可根据实际需23键盘的工作方式编程扫描方式定时扫描方式中断扫描方式键盘的工作方式24编程扫描方式

编程扫描方式是利用CPU完成其他工作的空余调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。

键盘扫描程序一般应包括以下内容:

(1)判别有无键按下。(2)键盘扫描取得闭合键的行、列值。(3)用计算法或查表法得到键值。(4)判断闭合键是否释放,如没释放则继续等待。(5)将闭合键键号保存,同时转去执行该闭合键的功能。

编程扫描方式编程扫描方25定时扫描方式定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。定时扫描方式定时扫描方式就是每隔一段26定时扫描方式程序流程图定时扫描方式程序流程图27中断扫描方式当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。中断扫描方式可以提高CPU工作效率。图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5V电源,输出端接至8051的外部中断输入端。具体工作如下:当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。中断扫描方式当无键按下时,CPU处理28矩阵键盘的接口实例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个相交点。矩阵键盘的接口实例8051单片机的P1口作为29(1)程序功能。若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。(2)检测当前是否有键被按下。检测的方法是P1.4~P1.7输出全“0”,读取P1.0~P1.3的状态,若P1.0~P1.3为全“1”,则无键闭合,否则有键闭合。(3)去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。(4)P1.4~P1.7按下述4种组合依次输出:

P1.71110P1.61101P1.51011P1.40111矩阵键盘的接口实例在每组行输出时读取P1.0~P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。(1)程序功能。若有键被按下,应识别出是哪一个键闭合。方法是30矩阵键盘的接口实例(5)为了保证键每闭合一次CPU仅做一次处理,必须去除键释放时的抖动。(6)扫描程序的流程图(7)键盘扫描程序矩阵键盘的接口实例(5)为了保证键每闭合一次CPU仅做一次31实践与思考

设计一个简易计算器,有键盘锁定功能。具体要求如下:(1)键盘锁定密码为8888,用户输入“锁定”“8888”后再按“锁定”键解锁。用户连续按两次“锁定”键,可以锁定键盘。(2)简易计算器共有16个按键,0~9十个数字键,加、减、等于、乘、除共5个功能键,还有一锁定键。(3)设定一个指示锁定状态的指示位,该位为“0”表示解锁状态,为“1”表示锁定状态。(4)编程实现键盘功能部分。实践与思考

设计一个简易计算器,有键盘锁定功能。具体要求如下32可编程键盘接口Intel8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除键盘抖动并能对多键同时按下提供保护。显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8或16位LED数码管显示。可编程键盘接口Intel8279是一种可编338279的基本功能8279的控制8279与单片机、键盘/显示器的接口实践与思考可编程键盘接口8279的基本功能可编程键盘接口348279的基本功能8279的内部结构和工作原理8279的引脚和功能

8279的工作方式8279的基本功能358279的内部结构8279的内部结构框图

8279的内部结构8279的内部结构框图368279的工作原理(1)I/O控制及数据缓冲器(2)控制与定时寄存器及定时控制(3)扫描计数器(4)回复缓冲器、键盘去抖及控制(5)FIFO/传感器及其状态寄存器(6)显示RAM和显示寄存器。8279的工作原理(1)I/O控制及数据缓冲器37I/O控制及数据缓冲器数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和8279之间的命令或数据,对应的引脚为数据总线D0~D7。I/O控制线是CPU对8279进行控制的引线,对应的引脚为数据选择线A0;片选线;读、写信号线和。I/O控制及数据缓冲器数据缓冲器是双向38控制与定时寄存器及定时控制控制与定时寄存器用来寄存键盘及显示工作方式控制字,同时还用来寄存其他操作方式控制字。这些寄存器接收并锁存各种命令,再通过译码电路产生相应的信号,从而完成相应的控制功能。与其对应的引脚为时钟输入端CLK,复位端RESET。定时控制电路由N个基本计数器组成,其中,第一个计数器是一个可编程的N级计数器,N=2~31之间的数,由软件编程,将外部时钟输入端CLK分频得到内部所需的100kHz时钟,为键盘提供适当的扫描频率和显示扫描时间。与其相关的引脚是显示熄灭控制端。控制与定时寄存器及定时控制控制与定时39扫描计数器键盘和显示器共用,提供键盘和显示器的扫描信号。扫描计数器有两种工作方式:编码方式和译码方式。按编码方式工作时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描信号。按译码方式工作时,扫描计数器的最低二位被译码后,从SL0~SL3输出,提供了4中选1的扫描译码。与其相关的引脚是扫描线SL0~SL3。扫描计数器键盘和显示器共用,提供键40回复缓冲器、键盘去抖及控制回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号,由回复缓冲器缓冲并锁存。在逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖电路被置位,延时等待10ms后,再检查该键是否仍处在闭合状态,如不是闭合,则当做干扰信号不予理睬;如是闭合,则将该键的地址和附加的移位、控制状态一起形成键盘数据被送入8279内部的FIFO(先进先出)存储器。键盘数据格式如下:控制移位扫描回复控制、移位、扫描、回复控制和移位(D7、D6)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)和回复(D2、D1、D0)则是被按键置位的数据。D5、D4、D3来自扫描计数器,它们是根据回复信号而确定的行/列编码。1.键盘工作方式D7D6D5D4D3D2D1D0回复缓冲器、键盘去抖及控制回复线412.传感器开关状态矩阵方式回复缓冲器、键盘去抖及控制回复线的内容直接被送往相应的传感器RAM(即FIFO)存储器。在选通输入方式工作时,回复线的内容在CNTL/STB线的脉冲上升沿被送入FIFO存储器。与其相关的引脚是回复线RL0~RL7,控制/选通线CNTL/STB。2.传感器开关状态矩阵方式回复缓冲器、键盘去抖及控制42FIFO/传感器及其状态寄存器FIFO/传感器RAM是一个双重功能的8×8RAM。在键盘选通工作方式时,它是FIFO存储器,其输入/输出遵循先入先出的原则,此时,FIFO状态寄存器用来存放FIFO的工作状态。例如:RAM是满还是空,其中存有多少数据,操作是否出错等。当FIFO存储器中有数据时,状态逻辑将产生IRQ=1信号,向CPU申请中断。在传感器矩阵方式工作时,这个存储器用做传感器存储器,它存放着传感器矩阵中的每一个传感器状态。在此方式时,若检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断。与其相关的引脚是中断请求线IRQ。FIFO/传感器及其状态寄存器FIFO/传43显示RAM和显示寄存器显示RAM用来存储显示数据,容量为16×8位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分位A、B两组,OUTA0~OUTA3和OUTB0~OUTB3,它们既可单独送数,也可组成一个8位(A组为高4位,B组为低4位)的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时,轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈稳定显示状态。与其相关的引脚是数据显示线OUTA0~OUTA3和OUTB0~OUTB3。显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读出或写入后自动递增。显示RAM和显示寄存器显示RAM用来存储显示448279的引脚和功能8279的引脚和功能458279的引脚和功能D0~D7:数据总线,双向三态总线。CLK:系统时钟输入端。RESET:系统复位输入端,高电平有效,复位状态为:16个字符显示;编码扫描键盘——双键锁定;程序时钟编程为31。:片选输入端,低电平有效。A0:数据选择输入端,A0=1时,CPU写入数据为命令字,读出状态字为状态字;A0=0时,CPU读、写均为数据。、:读、写信号输入端,低电平有效。IRQ:中断请求输出端,高电平有效。SL0~SL3:扫描输出端,用于扫描键盘和显示器。可编程设定为编码(4中选1)或译码输出(16选1)。

8279的引脚和功能D0~D7:数据总线,双向三态总线。468279的引脚和功能RL0~RL7:回复线,它们是键盘或传感器的列信号输入端。SHIFT:移位信号输入端,高电平有效。它是8279键盘数据的次高位(D6),通常用做键盘上、下挡功能键。在传感器和选通方式中,SHIFT无效。CNTL/STB:控制/选通输入端,高电平有效。在键盘工作方式时,它是键盘数据的最高位,通常用做控制键。在选通输入方式时,它的上升沿可把来自RL0~RL7的数据存入FIFO/传感器RAM中。在传感器方式时,无效。OUTA0~OUTA3:A组显示信号输出端。OUTB0~OUTB3:B组显示信号输出端。:显示熄灭输出端,低电平有效。它在数字切换显示或使用熄灭命令时关显示。8279的引脚和功能RL0~RL7:回复线,它们是键盘或传478279的工作方式(1)键盘的工作方式(2)显示器工作方式通过对键盘/显示方式命令字和写显示RAM命令字的设置,显示数据写入显示缓冲器时可置为左端送入和右端送入两种方式。左端送入为依次填入方式,右端送入为移位方式。(3)传感器矩阵方式通过对读FIFO/传感器RAM命令字的设置可将8279设置成传感器矩阵工作方式,此时,传感器的开关状态直接送到传感器RAM。CPU对传感器阵列扫描时,如果检测到某个传感器状态发生变化时,则中断申请信号IRQ变为高电平。

8279的工作方式(1)键盘的工作方式48键盘的工作方式

通过对键盘/显示方式命令字的设置,可置为双键互锁方式和N键巡回方式。双键互锁:双键锁定是为两键同时按下提供的保护方法。若有两键或多个键同时按下,则无论这些键是以什么次序按下的,它只识别最后一个释放的键,并把该键值送入FIFO/传感器RAM中。N键巡回:N键巡回是为N个键同时按下时提供的保护方法。若有多个键同时按下时,键盘扫描能以按键先后顺序依次将键值送入FIFO/传感器RAM中。键盘的工作方式通过对键盘/显示方式命令字的498279的控制8279的命令格式和命令字8279状态格式与状态字8279的数据输入/输出8279的内部译码与外部译码8279的控制8279的命令格式和命令字508279与单片机、键盘/显示器的接口8051与8279的一般接口框图图中8279外接8×8键盘,16位显示器,由SL0~SL2译出键扫描线,由4~16译码器对SL0~SL3译出显示器的位扫描线。8279与单片机、键盘/显示器的接口8051与8279的一518279与单片机、键盘/显示器的接口8279应用实例(1)程序功能。对8279初始化,并使实验板上4只按键完成如下功能:K1键(加1键)按一次数码管上数字加1。K2键(减1键)按一次数码管上数字减1。K3键(左移键)按一次两数码管内容交换。K4键(右移键)按一次两数码管内容交换。8279与单片机、键盘/显示器的接口8279应用实例(1528279应用实例(2)8279外接4个按键作为输入设备,外接2位数码管作为输出设备,LED数码管采用双位共阴数码管。8279RL0作为按键输入线,SL0~SL2外接LS138译码器,对键盘和显示器扫描,8279OUTA~OUTB作为显示器的段数据输出口。(3)8279的IRQ通过74LS04反相后作为8051外部中断输入。(4)如图中可以看出8051P2.4作为8279选片端,8051P2.0作为8279A0选择线,根据线选法原理8279命令/状态口地址:DFFFH,数据口地址:DEFFH。(5)程序参考流程图(6)程序清单8279应用实例(2)8279外接4个按键作为输入设备,外53程序参考流程图程序参考流程图54实践与思考

设计一个电子号码锁,具体要求如下:1.键盘由8279来控制,开机时,显示器显示“00000000”。2.按0~9为数字键,采用右边进入显示在8个七段显示器中。3.其他键为功能键,设置如下:(1)*为开锁键,输入8个密码后按“*”,与存放在TAB“123456789”的内定密码进行比较,若密码正确则使电锁动作,否则清除显示器为“00000000”。(2)#为清除键,清除显示器为“00000000”。4.试编写按键部分的程序。实践与思考

设计一个电子号码锁,具体要求如下:55第2章键盘接口技术

按键

简单键盘接口矩阵式键盘接口可编程键盘接口第2章键盘接口技术

按键56按键的分类按键输入原理按键开关的抖动问题键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件,也就是说键盘是一组规则排列的开关。单片机使用的按键是一种常开型的开关,平时按键的两个触点处于断开状态,按下键时它们才闭合。按键按键的分类键盘由一组规则排列的按键组成,一个按键57按键的分类按键按照结构原理可分为两类:1.触点式开关按键,如机械式开关、导电橡胶式开关等;2.无触点开关按键,如电气式按键,磁感应按键等。.按键按照接口原理可分为:1.编码键盘2.非编码键盘两类,编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。前者造价低,后者寿命长。目前,单片机系统中最常见的是触点式开关按键。按键的分类按键按照结构原理可分为两类:按键按照接口原理可分58按键输入原理在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,单片机系统应完成该按键所设定的功能,按键信息输入是与软件结构密切相关的过程。对于一个键盘或一组按键,单片机系统中总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无按键输入并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。按键输入原理在单片机应用系统中,除59按键开关的抖动问题单片机系统中应用的一般是由机械触点构成的按键。当机械触点断开、闭合时,会有抖动,如下图所示。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。常用的去抖动的方法有两种:1.硬件方法2.软件方法按键开关的抖动问题单片机系统中应60硬件方法在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路,如图所示。电路工作过程

硬件方法在硬件上可采用在键输出端加R61电路工作过程按键未按下时,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保持不变,消除了后沿的抖动波形。当开关稳定到达a端时,因a=0,b=1,使Q=1,双稳态电路状态发生翻转,输出Q重新返回原状态。由此可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。电路工作过程按键未按下时,a=62软件方法软件方法其实很简单,就是在单片机获得P1.0口为低电平的信息后,不是立即认定S已被按下,而是延时10ms或更长一些时间后再次检测P1.0口,如果仍为低电平,说明S的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高电平)再延时5~10ms,消除后沿的抖动,然后再对键值处理。不过一般情况下,通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,在实际应用中,对按键的要求也是千差万别的,要根据不同的需要来编制处理程序,但以上是消除按键抖动的原则。软件方法软件方法其实很简单,就是在63简单键盘接口简单键盘的工作原理简单键盘的接口电路与编程

实践与思考简单键盘接口64简单键盘的工作原理如果系统只需几个按键,可直接采用I/O线构成单个按键电路,各个按键之间相互独立,一根线上的按键状态不会影响其他输入线上的工作状态,又称独立式键盘接口电路。这种电路每个按键需要占用一根I/O线,在按键数量较多时,输入口浪费大且电路结构很烦琐,因此这种键盘接口电路只适用于按键较少或要求较高操作速度的场合。简单键盘的工作原理如果系统只需几个按键,可直65简单键盘的接口电路与编程(1)程序实现的功能(2)程序采用的方法(3)程序中用到的变量和常量的定义(4)程序中调用的子程序(5)程序清单(6)程序分析与思考下面以图(a)为例进行编程。简单键盘的接口电路与编程(1)程序实现的功能下面以图(66程序实现的功能检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的按键处理。程序实现的功能检测是否有键闭合,如有键67程序采用的方法P3.2:开始,按此键则灯开始流动(由上而下)P3.3:停止,按此键则停止流动,所有灯为暗P3.4:上,按此键则灯由上向下流动P3.5:下,按此键则灯由下向上流动程序采用查询的方法,P1口接8个发光二极管,4个按键分别接到P3.2、P3.3、P3.4和P3.5,且定义如下。程序采用的方法P3.2:开始,按此键则灯开始流动(由上而下68程序中用到的变量和常量的定义UpDown ;上下行标志StartEnd ;启动及停止标志LAMPCODE;存放流动的数据代码程序中用到的变量和常量的定义UpDown 69程序中调用的子程序KEY;键盘程序KEYPROC;键盘处理程序LAMP;灯显示程序DELAY;延时程序,键盘处理中调用程序中调用的子程序KEY70程序分析与思考

这里介绍的键盘处理程序比较简单,实际上,键盘的处理是很复杂的,但这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。程序分析与思考71实践与思考

1.设计一个简单3个按键的键盘来控制一组发光二极管,使这组发光二极管可以以6种不同的花色循环点亮。2.改用单键实现题1所示功能。实践与思考

1.设计一个简单3个按键的键盘来控制一组发光72矩阵式键盘接口矩阵式键盘的结构与工作原理矩阵式键盘按键的识别键盘的编码键盘的工作方式矩阵键盘的接口实例实践与思考矩阵式键盘接口矩阵式键盘的结构与工作原理73矩阵式键盘的结构与工作原理矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这一点是识别矩阵按键是否被按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。矩阵式键盘的结构与工作原理矩阵式74矩阵式键盘按键的识别1.扫描法2.线反转法矩阵式键盘按键的识别75扫描法按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平,显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线处在低电平,只有这样,当有键按下时,该键所在的行电平才会由高电平变为低电平。CPU根据行平电的变化,便能判定相应的行有键按下。8号键按下时,第2行一定为低电平,然而,第2行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下同样使第2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依次循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。扫描法按键按下时,与此键相连的行线76线反转法第1步:将列线P1.4~P1.7作为输入线,行线P1.3~P1.0作为输出线,并将输出线输出全为低电平,读列线状态,则列线中电平为低的是按键所在的列。第2步:将行线作为输入线,列线作为输出线,并将输出线输出为低电平,读行线状态,则行线中电平为低的是按键所在的行。综合第1、2两步结果,可确定按键所在的行和列,从而识别出所按下的键。线反转法第1步:将列线P1.4~P1.7作为输入线,行线77键盘的编码1.独立式键盘按键数量少,可根据实际需要灵活编码。2.矩阵式键盘按键的位置由行号和列号唯一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号。问题:不同行的键离散性较大,不利于散转指令对按键进行处理。采用依次排列键号的方式对安排进行编码。无论以何种方式编码,均应以处理问题方便为原则,而最基本的就是键所处的物理位置即行号和列号,它是各种编码之间相互转换的基础,编码相互转换可通过计算或查表的方法实现。总结:键盘的编码1.独立式键盘按键数量少,可根据实际需78键盘的工作方式编程扫描方式定时扫描方式中断扫描方式键盘的工作方式79编程扫描方式

编程扫描方式是利用CPU完成其他工作的空余调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。

键盘扫描程序一般应包括以下内容:

(1)判别有无键按下。(2)键盘扫描取得闭合键的行、列值。(3)用计算法或查表法得到键值。(4)判断闭合键是否释放,如没释放则继续等待。(5)将闭合键键号保存,同时转去执行该闭合键的功能。

编程扫描方式编程扫描方80定时扫描方式定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。定时扫描方式定时扫描方式就是每隔一段81定时扫描方式程序流程图定时扫描方式程序流程图82中断扫描方式当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。中断扫描方式可以提高CPU工作效率。图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5V电源,输出端接至8051的外部中断输入端。具体工作如下:当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。中断扫描方式当无键按下时,CPU处理83矩阵键盘的接口实例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个相交点。矩阵键盘的接口实例8051单片机的P1口作为84(1)程序功能。若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。(2)检测当前是否有键被按下。检测的方法是P1.4~P1.7输出全“0”,读取P1.0~P1.3的状态,若P1.0~P1.3为全“1”,则无键闭合,否则有键闭合。(3)去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。(4)P1.4~P1.7按下述4种组合依次输出:

P1.71110P1.61101P1.51011P1.40111矩阵键盘的接口实例在每组行输出时读取P1.0~P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。(1)程序功能。若有键被按下,应识别出是哪一个键闭合。方法是85矩阵键盘的接口实例(5)为了保证键每闭合一次CPU仅做一次处理,必须去除键释放时的抖动。(6)扫描程序的流程图(7)键盘扫描程序矩阵键盘的接口实例(5)为了保证键每闭合一次CPU仅做一次86实践与思考

设计一个简易计算器,有键盘锁定功能。具体要求如下:(1)键盘锁定密码为8888,用户输入“锁定”“8888”后再按“锁定”键解锁。用户连续按两次“锁定”键,可以锁定键盘。(2)简易计算器共有16个按键,0~9十个数字键,加、减、等于、乘、除共5个功能键,还有一锁定键。(3)设定一个指示锁定状态的指示位,该位为“0”表示解锁状态,为“1”表示锁定状态。(4)编程实现键盘功能部分。实践与思考

设计一个简易计算器,有键盘锁定功能。具体要求如下87可编程键盘接口Intel8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除键盘抖动并能对多键同时按下提供保护。显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8或16位LED数码管显示。可编程键盘接口Intel8279是一种可编888279的基本功能8279的控制8279与单片机、键盘/显示器的接口实践与思考可编程键盘接口8279的基本功能可编程键盘接口898279的基本功能8279的内部结构和工作原理8279的引脚和功能

8279的工作方式8279的基本功能908279的内部结构8279的内部结构框图

8279的内部结构8279的内部结构框图918279的工作原理(1)I/O控制及数据缓冲器(2)控制与定时寄存器及定时控制(3)扫描计数器(4)回复缓冲器、键盘去抖及控制(5)FIFO/传感器及其状态寄存器(6)显示RAM和显示寄存器。8279的工作原理(1)I/O控制及数据缓冲器92I/O控制及数据缓冲器数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和8279之间的命令或数据,对应的引脚为数据总线D0~D7。I/O控制线是CPU对8279进行控制的引线,对应的引脚为数据选择线A0;片选线;读、写信号线和。I/O控制及数据缓冲器数据缓冲器是双向93控制与定时寄存器及定时控制控制与定时寄存器用来寄存键盘及显示工作方式控制字,同时还用来寄存其他操作方式控制字。这些寄存器接收并锁存各种命令,再通过译码电路产生相应的信号,从而完成相应的控制功能。与其对应的引脚为时钟输入端CLK,复位端RESET。定时控制电路由N个基本计数器组成,其中,第一个计数器是一个可编程的N级计数器,N=2~31之间的数,由软件编程,将外部时钟输入端CLK分频得到内部所需的100kHz时钟,为键盘提供适当的扫描频率和显示扫描时间。与其相关的引脚是显示熄灭控制端。控制与定时寄存器及定时控制控制与定时94扫描计数器键盘和显示器共用,提供键盘和显示器的扫描信号。扫描计数器有两种工作方式:编码方式和译码方式。按编码方式工作时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描信号。按译码方式工作时,扫描计数器的最低二位被译码后,从SL0~SL3输出,提供了4中选1的扫描译码。与其相关的引脚是扫描线SL0~SL3。扫描计数器键盘和显示器共用,提供键95回复缓冲器、键盘去抖及控制回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号,由回复缓冲器缓冲并锁存。在逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖电路被置位,延时等待10ms后,再检查该键是否仍处在闭合状态,如不是闭合,则当做干扰信号不予理睬;如是闭合,则将该键的地址和附加的移位、控制状态一起形成键盘数据被送入8279内部的FIFO(先进先出)存储器。键盘数据格式如下:控制移位扫描回复控制、移位、扫描、回复控制和移位(D7、D6)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)和回复(D2、D1、D0)则是被按键置位的数据。D5、D4、D3来自扫描计数器,它们是根据回复信号而确定的行/列编码。1.键盘工作方式D7D6D5D4D3D2D1D0回复缓冲器、键盘去抖及控制回复线962.传感器开关状态矩阵方式回复缓冲器、键盘去抖及控制回复线的内容直接被送往相应的传感器RAM(即FIFO)存储器。在选通输入方式工作时,回复线的内容在CNTL/STB线的脉冲上升沿被送入FIFO存储器。与其相关的引脚是回复线RL0~RL7,控制/选通线CNTL/STB。2.传感器开关状态矩阵方式回复缓冲器、键盘去抖及控制97FIFO/传感器及其状态寄存器FIFO/传感器RAM是一个双重功能的8×8RAM。在键盘选通工作方式时,它是FIFO存储器,其输入/输出遵循先入先出的原则,此时,FIFO状态寄存器用来存放FIFO的工作状态。例如:RAM是满还是空,其中存有多少数据,操作是否出错等。当FIFO存储器中有数据时,状态逻辑将产生IRQ=1信号,向CPU申请中断。在传感器矩阵方式工作时,这个存储器用做传感器存储器,它存放着传感器矩阵中的每一个传感器状态。在此方式时,若检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断。与其相关的引脚是中断请求线IRQ。FIFO/传感器及其状态寄存器FIFO/传98显示RAM和显示寄存器显示RAM用来存储显示数据,容量为16×8位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分位A、B两组,OUTA0~OUTA3和OUTB0~OUTB3,它们既可单独送数,也可组成一个8位(A组为高4位,B组为低4位)的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时,轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈稳定显示状态。与其相关的引脚是数据显示线OUTA0~OUTA3和OUTB0~OUTB3。显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读出或写入后自动递增。显示RAM和显示寄存器显示RAM用来存储显示998279的引脚和功能8279的引脚和功能1008279的引脚和功能D0~D7:数据总线,双向三态总线。CLK:系统时钟输入端。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论