单片机人机交互接口技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章 人机交互接口技术
3. 按键防抖动技术
多数键盘的按键均采用机械弹性开关。一个电信号通过机械 触点的断开、闭合过程,完成高、低电平的切换。由于机械 触点的弹性作用,一个按键开关在闭合及断开的瞬间必然伴 随有一连串的抖动。其波形如图3.1所示。抖动过程的长短由 按键的机械特性决定,一般为10~20 ms。
KYAD1: RRC A; JNC KYAD2; PA0=0,转向KYAD2 INC R4;计数器加1 AJMP MAIN ;上电后自动转向主程序 DJNZ R3,KYAD1 ORG 0003H ;外部中断0入口地址 RETI KYAD2: MOVDPTR,#JMPTABL;转 AJMP KEYJMP ;指向键处理中断服务程序 到响应功能键入口地址表指针 ORG 0100H MAIN: SETB IT0;选择边沿触发方式 MOV A,R4; SETB EX0 ;允许外部中断0 RL A; JMP @A+ DPTR;
Hale Waihona Puke Baidu
3. 中断扫描法 无论是程控扫描法还是定时扫描法,都占用CPU的大量 时间。不管有没有键入操作,CPU总要在一定的时间内进 行扫描,这对于单片机控制系统和智能仪表都是很不利的。 为进一步节省机时,还可以采用中断扫描法。这种办法的 实质是,当没有键入操作时,CPU不对键盘进行扫描,以 节省出大量时间对系统进行监控和数据处理。一旦键盘输 入,即刻向CPU申请中断。CPU响应中断后,立刻转到响 应的中断服务程序,对键盘进行扫描,判别键盘上闭合键 的键号,并做相应的处理。
第3章 人机交互接口技术
(1)硬件防抖技术 通过硬件电路消除按键过程中抖动的影响是一种广为采用的措 施。这种做法,工作可靠,且节省机时。下面介绍两种硬件防 抖电路。 ① 滤波防抖电路 利用RC积分电路对干扰脉冲的吸收作用,
由图可知,当键K未按下时,电容C两端电 压均为0,非门输出为1。当K按下时, 由于C两端电压不可能产生突变。尽管在触 点接触过程中可能出现抖动,只要适当选取 R1,R2 和C值,即可保证电容C两端的充 电电压波动不超过非门的开启电压(TTL为 0.8V),非门的输出将维持高电平。同理, 当触点K断开时,由于电容C经过电阻R2 放 电,C两端的放电电压波动不会超过门的关 闭电压,因此,门的输出也不会改变。总之, 只要R1,R2和C的时间常数选取得当,确 保电容C由稳态电压充电到开启电压,或放 电到关闭电压的延迟时间等于或大于10 ms, 该电路就能消除抖动的影响。
2. 定时扫描法 定时扫描法方式是CPU每隔一定的时间(如10ms)对键盘扫 描一遍。当发现有键被按下时,便进行读入键盘操作,以求出 键值,并分别进行处理。定时时间间隔由单片机内部定时/计数 器产生。这样可以减少计算机扫描键盘的时间,以减少CPU开 销。具体做法是,当定时时间到期时,定时器自动输出一脉冲 信号,使CPU转去执行扫描程序。这种方法扫描和求键值,以 及区别功能键与数字键的方法与程序扫描法类似。但有一点需 指出,即采用定时扫描法时,必须在其初始化程序中,对定时 器写入相应的命令,使之能定时产生中断,从而定时完成扫描 任务。为简化设计,在比较大的系统中,也可以每隔一定长度 的程序设置一次键盘查询程序。
第3章 人机交互接口技术
2. 重键与连击的处理 实际按键操作中,若无意中同时或先后按下两个以上的键, 系统确认哪个键操作是有效的,完全由设计者的意志决定。 如视按下时间最长者为有效键,或认为最先按下的键为当前 按键,也可以将最后释放的键看成是输入键。不过微型计算 机控制系统毕竟资源有限,交互能力不强,通常总是采用单 键按下有效,多键同时按下无效的原则(若系统设有复合键, 当然应该另当别论)。 有时,由于操作人员按键动作不够熟练,会使一次按键产生 多次击键的效果,即重键的情形。为排除重键的影响,编制 程序时,可以将键的释放作为按键的结束。等键释放电平后 再转去执行相应的功能程序,以防止一次击键多次执行的错 误发生。
如图3.9中所示,没有键按下时,所有列线均为1,经8输入与 非门及反相器,输出一高电平到8031的 INT引脚,此时不申 请中断。一旦有键按下,则高电平通过键加到该行的二极管 正端,使二极管导通。同时,该列线输出低电平,从而使 INT0有效,向8031申请中断。8031响应后,即刻转至中断服 务程序,查出键号,进一步做相应处理。扫描方法与程控扫 描法相同。不同之处仅在于,此法仅在有键入操作时才对键 盘扫描。若无键按下,CPU执行主程序或处理其他事务。这 样可节省大量的空扫描时间,进而提高了计算机的工作效率。
第3章 人机交互接口技术
当我们按下某按键时.对应的功能便会通过键盘分 析程序得以执行.如果在操作者释放按键之前,对 应的功能得以多次执行,如同操作者在连续不断操 作该键一样.这种现象就称为连击。连击现象可用 日(a)所示流程图的软件方法来解决,当某按键被 按下时,首先进行软件去抖处理,确认按键被按下 后,厦执行对应的功能,执行完后不是立即返回, 而是等待按键释放之后再返回.从而使一次按键只 彼响应一次,避免连击现象。 例如在某些简易仪器中.因设汁的按键很少,没有安排0~9数字按键.这时R能设 置一只调整按键,采用加回(或减1)的方法来调整有关参数,但当调整量比较大时 就需要按多次按键,使操作很不方便.如果这时允许凋整按键存在连击现象,我们 只要按往调整键不放.参数就会不停地加1(或减 1),这就给操作者带来根大方 便.具体实现软件流程图如图所示,程序中加入的延时环节是为了控制连击的速度。 例如.延时取250rns。则连击速度为4次/s。
(1)首先判断是否有键按下。其方法是使所有的行输出均为低电平,然后从端口A 读入列值。如果没有键按下,则读入值为FFH,如果有键按下,则不为FFH。
(2)去除键抖动。若有键按下,则延时10~20ms,再一次判断有无键按下。如 果此时仍有键按下,则认为键盘上有一个键处于稳定闭合期。 (3)若有键闭合,则求出闭合键的键值。求键值的方法是对键盘逐行扫描。
第3章 人机交互接口技术
(2)软件防抖方法 如前所述,若采用硬件防抖电路,则N个键就必须配有N个 防抖电路。因此,当键的个数比较多时,硬件防抖将无法胜 任。在这种情况下,可以采用软件的方法进行防抖。当第一 次检测到有键按下时,先用软件延时(10ms~20ms),而 后再确认该键电平是否仍维持闭合状态电平。若保持闭合状 态电平,则确认此键确已按下,从而消除了抖动的影响。
第3章 人机交互接口技术
② 双稳态防抖电路 用两个与非门构成一个RS触发器,即可构成双稳态防抖电路。 其原理电路,如图3.3所示。
设按键K未按下时,键K与A端(ON)接通。 此时,RS触发器的Q端为高电平1, 致使Q反端为低电平0。此信号引至1# 与非 门的输入端,将其锁住,使其固定输出为1。 每当开关K被按动时,由于机械开关具有弹 性,在A端将形成一连串的抖动波形。而Q 端在K到达B端之前始终为0。这时,无论A 处出现怎样的电压(0或1),Q端恒为1。只有 当K到达B端,使B端为0,RS触发器产生翻 转,Q反变为高电平,导致Q降低为0,并锁 住门2,使其输出恒为1。此时,即使B处出 现抖动波形,也不会影响Q端的输出,从而 保证Q端恒为0。同理,在释放键的过程中, 只要一接通A,Q端就升至为1。只要开关K 不再与B端接触,双稳态电路的输出将维持 不变。
1.程控扫描法
图3.6所示为4×8矩阵组成的32键盘与单片机的接口电路。
在图3.6中,8255A端口C为行扫描口,工作于输出方式。端口A工作于输 入方式,用来读入列值。图中I/O口地址必须满足CS=0,才能选中相应的 寄存器。由此可知,8255控制寄存器、端口A、端口B、端口C的地址分别 为8300H,8000H,8100H和8200H。
4. 串行接口非编码键盘 除了并行接口扫描键盘外,还可以设计成串行接口扫描键盘。其原理如 图3.10所示。 它由移位寄存器74LS164和24键(3×8)矩阵组成,0~F为16个数字键, 10H~17H为8个功能键,各键的功能由用户定义。74LS164是一个14脚的 移位寄存器集成电路芯片。由8031串行接口的RxD端输出列扫描信号到 74LS164的1,2引脚,由QA~QH 输出至键盘。键闭合信号从端口P3.3, P3.4,P3.5输入到8031芯片。由8031的TXD引脚输出移位时钟脉冲到 74LS164的时钟输入端(CLK)。
第3章 人机交互接口技术
本章要点: 键盘接口技术 LED显示接口技术 LCD显示接口技术 所谓人机交互接口,是指人与计算机之间建立联系、交换信息的 输入/输出设备的接口。 这些输入/输出设备主要有键盘、显示器和打印机等。 3.1 键盘接口技术 3.1.1 键盘设计需解决的几个问题 编码键盘和非编码键盘
二、矩阵式键盘接口电路及程序
当采用矩阵式键盘时,为了编程方便,应将矩阵键盘中的 每一个键按一定的顺序编号,这种按顺序排列的编号叫顺序码, 也称键值.为了求得短阵式键盘中被按下健的键值,常用的方 法有行扫描法和线路反转祛。 线路反转法识别键值的道度较快,但必须借助于可编程的 通用接口芯片。 本节介绍几种键盘接口电路及控制软件,一种是采用编程扫描 工作方式的行扫描来识别键值,另一种是采用中断工作方式的 线路反转法来识别键值。
编码键盘 自动识别按下的键并产生相应代码,以并行或串行方式发送给CPU。 它使用方便,接口简单,响应速度快,但需要专用的硬件电路。
第3章 人机交互接口技术
非编码键盘
通过软件来确定按键并计算键值。这种方法虽然没有编码键 盘速度快,但它不需要专用的硬件支持,因此得到了广泛的应用。 1. 按键的确认 键盘实际上是一组按键开关的集合,其中每一个按键就是 一个开关量输入装置。键的闭合与否,取决于机械弹性开 关的通、断状态。反应在电压上就是呈现出高电平或低电 平,若高电平表示断开,则低电平表明键闭合。所以,通 过电平状态(高或低)的检测,便可确定相应按键是否已 被按下。
3.1.2 少量功能键的接口技术1. 独立式按键接口
第3章 人机交互接口技术
在上工作方式下,CPU经常处于空扫猫状 态.为进一步提高CPU效率,可采用中断工 作方式,即只有当键盘中有键被接下时,才 执行扫描工作.
第3章 人机交互接口技术
3.1.2 少量功能键的接口技术 1. 独立式按键接口
主程序: ORG 0000H
PC0=0,然后读入列值,看其是否等于FFH。若等于FFH,说明该行无键按下。 再对下一行进行扫描(即令PC1=0),如果列值不等于FFH,则说明该行有键按下,求 出其键值。 求键值时,要采用行值、列值两个寄存器(或存储器)。每扫描一行后,如无键按下, 则行值寄存器加08H;若有键按下,行值寄存器保持原值,并转至求相应的列值。 此时,首先将列值读数右移,每移位一次列值寄存器加1,直到有键按下(低电平)为 止。最后将行值和列值相加,即得到键值(十六进制数)。例如,X2 行Y3 列键被按下, 求其键值。第一次扫描X0 行(PC0=0),无键按下,行值寄存器=00H+08H;再扫描Xl 行,仍无键按下,再加08H,即行值寄存器=08H+08H=10H;第三次扫描X2 行,此时 发现有键按下(列值不等FFH), 则行值寄存器=10H不变,转向求列值。具体做法是,将列值读数逐位右移,则行值寄 存器=10H不变,转向求列值。具体做法是,将列值读数逐位右移,第一次移位,无键 按下,列值寄存器=00H+01H=01H;第二次移位,无键按下;第三次移位仍无键按下, 列值寄存器=01H+01H+01H=03H;当第四次移位时,发现有键按下(低电平),列值 寄存器=03H,不变。将行值与列值相加,即行值寄存器的值加上列值寄存器 =10H+03H=13H,故该键值为13H。
SETB EA ;允许CPU中断 MOV DPTR,#0EF00H ;指向8155命令口 JMPTABL: MOV A,#02H;控制字写入命令寄存器 AJMP SB0 MOVX @DPTR,A; AJMP SB1 HERE:AJMP HERE;模拟主程序 AJMP SB2 中断服务程序: AJMP SB3 ORG 0200 ;设循环次数 AJMP SB4 KEYJMP:MOV R3,#08H; AJMP SB5 MOV DPTR,#0EF01H ;指向8155A口 AJMP SB6 MOV R4,#00H ;计数寄存器清零 AJMP SB7 MOVX A,@DPTR;读入状态字
相关文档
最新文档