7第三章 微机化医学仪器的人机接口.docx

上传人:b****6 文档编号:6984488 上传时间:2023-01-14 格式:DOCX 页数:32 大小:953.11KB
下载 相关 举报
7第三章 微机化医学仪器的人机接口.docx_第1页
第1页 / 共32页
7第三章 微机化医学仪器的人机接口.docx_第2页
第2页 / 共32页
7第三章 微机化医学仪器的人机接口.docx_第3页
第3页 / 共32页
7第三章 微机化医学仪器的人机接口.docx_第4页
第4页 / 共32页
7第三章 微机化医学仪器的人机接口.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

7第三章 微机化医学仪器的人机接口.docx

《7第三章 微机化医学仪器的人机接口.docx》由会员分享,可在线阅读,更多相关《7第三章 微机化医学仪器的人机接口.docx(32页珍藏版)》请在冰豆网上搜索。

7第三章 微机化医学仪器的人机接口.docx

7第三章微机化医学仪器的人机接口

第三章智能仪器人-机接口

智能仪器通常要有人-机交互功能,即用户与仪器交换信息的功能。

这个功能有两方面的含义:

一是用户对智能仪器进行状态干预和数据输入;二是智能仪器向用户报告运行状态与处理结果。

实现智能仪器人-机交互功能的部件有键盘、显示器和打印机等,这些部件同智能仪器主体电路的连接是由人-机接口电路来完成的,因此人-机接口技术是智能仪器设计的关键技术之一。

3.1键盘与接口

键盘与微处理器的接口包括硬件与软件两部分。

硬件是指键盘的组织,即键盘结构及其与主机的连接方式。

软件是指对按键操作的识别与分析,称为键盘管理程序。

虽然对不同的键盘组织其键盘管理程序存在很大的差异,但任务大体分为下列几项:

(1)识键:

判断是否有键按下。

若有,则进行译码;若无,则等待或转做别的工作。

(2)译键:

识别出哪一个键被按下并求出被按下键的键值。

(3)键值分析:

根据键值,找出对应处理程序的入口并执行之。

本节侧重讨论键盘的组织以及键盘软件任务中的

(1)和

(2)两项工作,下一节侧重讨论键值分析方法。

键盘软件任务中的

(1)和

(2)两项工作通常合称为扫描。

3.1.1键盘输入基础知识

1.键盘的组织

智能仪器普遍使用由多个按键在一起而构成的按键式键盘,键盘中的每一个按键都表示一个或多个特定的意义(功能或数字)。

键盘按其工作原理可分为编码式键盘和非编码式键盘。

编码式键盘是由按键键盘和专用键盘编码器两部分组成的。

当键盘中某一个按键被按下时,键盘编码器会自动产生相对应的按键代码,并输出一选通脉冲信号与CPU进行信息联络。

编码式键盘使用很方便,目前已有数种大规模集成电路键盘编码器出售,例MM5740AA芯片就是一种专用于64键电传打字机的键盘编码器,其输出为ASCII码。

非编码键盘不含编码器,当某键被按下时,键盘只能送出一个简单的闭合信号,对应的按键代码的确定必须借助于软件完成。

显然,非编码键盘的软件是比较复杂的,而且要占用较多的CPU时间,这是非编码键盘的不足之处。

但非编码键盘可以任意组合、成本低、使用灵活,因而智能仪器大多采用非编码式键盘。

非编码式键盘按照与主机联系方式的不同,有独立式键盘、矩阵式键盘和交互式键盘之分。

独立式键盘结构的特点是一键一线,即每一个按键单独占用一根检测线与主机相连,如图3-1(a)所示。

图中的上拉电阻保证按键断开时检测线上有稳定的高电平,当某一按键被按下时,对应的检测线就便成了的电平,而与其他键相对应的检测线仍为高电平,从而很容易地识别出被按下的键。

这种连接方式的优点是键盘结构简单,各测试线独立,所以按键识别容易。

缺点是占用较多的检测线,不便于组成大型键盘。

图3-1非编码键盘的种类

矩阵式键盘结构的特点是把检测线分成两组,一组为行线,另一组为列线,按键放在行线和列线的交叉点上。

图3-1(b)给出一个4×4矩阵结构的键盘接口电路。

图中每一个按键都通过不同的行线和列线与主机相连接。

4×4矩阵键盘一共安置16只按键,但只需八条测试线。

不难看出,m×n矩阵键盘与主机连接需要m+n条线,显然,键盘规模越大,矩阵式键盘的优势愈显著。

当需要的按键数目大于8时,一般都采用矩阵式键盘。

交互式键盘结构的特点是,任意两检测线之间均可以放置一个按键。

很显然,交互式键盘结构所占用的检测线比矩阵式还要少,但是这种键盘所使用的检测线必须是具有位控功能的双向I/O端口线。

图3-1(c)给出了一个典型的交互式键盘接口电路,该电路使用了MCS-51单片机的P1.0~P1.78条I/O端口线,可放置的按键数多达28个。

2、键盘的工作方式

智能仪器中CPU对键盘进行扫描时,要兼顾两方面的问题:

一是要及时,以保证对用户的每一次按键都能作出响应;二是扫描不能占用过多的时间,CPU还有大量的其他任务要去处理。

因此,要根据智能仪器中的CPU忙、闲情况,选择适当的键盘工作方式。

键盘有三种的工作方式、中断工作方式和定时扫描的工作方式。

编程扫描工作方式:

该方式也简称查询方式,它是利用CPU在完成其他工作的空余,调用键盘扫描程序,以响应键输入的要求。

当CPU在运行其他程序时,它就不会再响应键输入要求,因此,采用该方式编程时,应考虑程序是否能对用户的每次按键都会及时的响应。

中断工作方式:

在这种方式下,当键盘中有按键按下时,硬件会产生中断申请信号,CPU响应中断申请后对键盘进行扫描,并在有按键按下时转入相应的功能键处理程序。

该方式的优点是:

由于在无键按下时不进行行扫描,因而能提高CPU的工作效率,同时也能确保对用户的每次按键操作做出迅速的响应。

定时扫描工作方式:

该方式利用一个专门的定时器来产生定时中断申请信号,CPU响应中断申请后便对键盘进行扫描,并在有键按下时转入相应的键功能处理程序。

由于每次按键按下的持续时间一般不小于100ms,所以为了不漏检,定时中断的周期一般应小于100ms。

定时扫描方式本质也属于中断方式。

3、键抖动及消除

键盘按键一般都采用触电式按键开关。

当按键被按下或释放时,按键触点的弹性会产生一种抖动现象。

即当按键按下时,触点不会迅速可靠地接通;当按键释放时,触点也不会立即断开,而是要经过一段时间的抖动才能稳定下来。

抖动时间视按键材料的不同一般在5ms~10ms之间,图3-2是抖动键的波形图。

图3-2抖动键波形图图3-3消除键抖动的硬件电路接法

抖动键可能导致计算机将一次按键操作作识别为多次操作,为克服这种由键抖所致的误判,常采用如下措施:

硬件电路消除法:

可利用RS触发器来吸收按键抖动,其硬件电路接法如图3-3所示。

一旦有键按下时,触发器就立即翻转,触点的抖动便不会再对输出产生影响,按键释放时亦然。

软件延时法:

当判定按键按下时,用软件延时10ms~20ms,等待按键稳定后再重新判一次,以躲过触点抖动期。

4、键连击的处理

当我们按下某按键时,对应的功能便会通过键盘分析程序得以执行,如果在操作者释放按键之前,对应的功能得以多次执行,如同操作者在连续不断操作该键一样,这种现象就称为连击。

连击现象可用图3-4(a)所示流程图的软件方法来解决,当某按键按下时,首先进行软件去抖处理,确认按键被按下后,便执行对应的功能,执行完后不是立即返回,而是等待按键释放之后再返回,从而使一次按键只被响应一次,避免连击现象。

如果把连击现象加以合理利用,有时会给操作者带来方便。

例如在某些简易仪器中,因设计的按键很少,没有安排0~9数字按键,这时只能设置一只调整按键,采用加1(或减1)的方法来调整有关参数,但当调整量比较大时就需要按多次按键,使操作很不方便,如果这时允许调整按键存在连击现象,我们只要按住调整键不放,参数就会不停地加1(或减1),这就给操作者带来很大的方便。

具体实现软件流程图如图3-4(b)所示,程序中加入的延时环节是为了控制连击的速度。

例如,若延时取250ms,则连击速度为4次/s。

图3-4键连击现象的克服及合理利用

5、无锁键、自锁键及互锁键

电子仪器需要用到无锁键、自锁键、互锁键等多种类型的按键开关。

无锁键即通常所说的常态为开路的按键开关。

当无锁键被按下时,其按键开关的两个触头接通:

松开时,开关的两个触头又断开,恢复为开路。

智能仪器的按键开关一般都由无锁键组成。

无锁键在逻辑上等效于稳态。

自锁键在逻辑上等效于双稳态。

当第一次按下自锁键时(包括松开后),其按键开关的两个触头接通;第二次按下及松开后,开关的两个触头又断开,不断地按此规律动作。

自锁键通常用在仪器二选一选择开关场合,例如,交/直流耦合选择等。

互锁键是指一组具有互锁关系的按键开关。

当这一组按键开关之一被选择时(即对应的开关接通),与该键有互锁关系的其他键都被断开。

或者说,具有互锁关系的这组按键,某时刻最多只能有一个键被选择。

互锁键在仪器中的应用场合也较多,例如,某仪器具有5挡量程,则对应这5挡量程的按键开关必须是互锁键,因为仪器在某时刻只允许选择一挡量程。

在传统的仪器中,无锁、自锁及互锁的功能都是通过采用不同机械结构的无锁键、自锁键及互锁键来实现的。

在智能仪器中,仪器面板上的按键开关一般只使用机械结构简单的无锁键,自锁及互锁的功能需要借助软件设置特定的标志位,使无锁键也具有自锁及互锁的功能。

3.1.2键盘接口电路及控制程序

非编码键盘按照与主机连接方式的不同,有独立式、矩阵式和交互式之分。

本节将对其接口电路及程序设计分别予以讨论。

1.独立式键盘接口电路及程序设计

独立式键盘的每一个按键占用一根测试线,它们可以直接与单

片机I/O线相接或通过输入口与数据线相接,结构图很简单。

这些测试线相互独立无编码关系,因而键盘软件不存在译码的问题,一旦检测到某测试线上有键闭合,便可直接转入到相应的键功能处理程序进行处理。

一种采用独立式方法处理三个按键的实际接口电路如图3-5所示,其键盘软件的流程图如图3-6所示。

首先判断有无键按下,若检测倒有键按下,就延时10ms避开抖动的影响。

然后再用软件查询等待按键的释放,当判明键释放后,用软件延时10ms后再返回。

第二次延时的作用是:

一方面避开按键释放时抖动的影响;另一方面也具有防连击的功能。

该软件对两个以上的键被同时按下(串键)具有判低序号按键有效的功能。

图3-5独立式键盘接口电路

图3-6独立式接口软件流程图

在上述扫描工作方式下,CPU经常处于空扫描状态。

为进一步提高CPU效率,可采用中断工作方式,即只有当键盘中有键被按下时,才执行扫描工作,图3-7显示出采用中断方式处理8只按键的电路图。

图3-7中断工作方式原理图

当无键按下时,8条测试线均为高电平,经8与非门及反相器后仍为高电平,因而不会产生中断。

当其中任一键按下时,变为低电平,向8031申请中断。

8031响应后便进入中断服务程序,用扫描的方法寻找到申请中断的功能键并执行相应键功能处理程序。

能完成上述工作的程序清单入下:

ORG

0000H

AJMP

MAIN

;上电后转主程序

ORG

0003H

;外部中断0入口

AJMP

KEYJMP

;指向中断服务程序

ORG

0100H

MAIN:

SETB

IT0

;选择边沿触发方式

SETB

EX0

;允许外部中断0

SETB

EA

;允许CPU中断

MOV

DPTR,#0EF00H

;送8155命令口地址

MOV

A,#02H

MOVX

@DPTR,A

;控制字写入

HERE:

AJMP

HERE

;模拟主程序

ORG

0120H

;中断服务程序

KEYJMP:

MOV

R3,#08H

;设循环次数

MOV

DPTR,#0EF01H

;送A口地址

MOV

R4,#00H

;计数器清零

MOVX

A,@DPTR

;读入按键状态

KEYAD1

RRC

A

;状态字右移一位

JNC

KEYAD2

;C=0,转KEYAD2

INC

R4

;计数器加1

DJNZ

R3,KEYAD1

KEYRET:

RETI

KEYAD2:

MOV

DPTR,#JMPTBL

MOV

A,R4

;转相应功能处理

RL

A

;入口地址表

JMP

@A+DPTR

JMPTBL:

AJMP

SB0

AJMP

SB1

AJMP

SB2

AJMP

SB3

AJMP

SB4

AJMP

SB5

AJMP

SB6

AJMP

SB7

;S0键功能程序

SB0:

;S0键执行完返回

;S1键功能程序

JMP

KEYRET

SB1:

JMP

KEYRET

.

.

.

.

.

.

SB7:

;S7键功能程序

.

.

JMP

KEYRET

2.矩阵式键盘接口电路及程序

当采用矩阵式键盘时,为了编程方便,应将矩阵键盘中的每一个键按一定的顺序编号,这种按顺序排列的编号叫顺序编码,也称键值。

为了求得矩阵式键盘中被按下键的键值,常用的方法有行扫描和线路反转法。

线路反转识别键值速度快,但必须借助于可编程的通用接口芯片。

本节介绍两种键盘接口电路及控制软件,一种是采用编程扫描工作方式的行扫描法来识别键值,另一种是采用中断工作方式的线路反转法来识别键值。

1)行扫描法

图3-84×8矩阵键盘与单片机接口电路

图3-8为4×8矩阵组成的32键键盘与单片机接口电路。

芯片8155的端口C工作于输出方式,用于行扫描。

端口A工作于输入方式,用来读入键值。

由图可知,8155的命令/状态寄存器、端口A、端口B和端口C的地址分别为0100H、0101H、0102H和0103H。

采用编程扫描工作方式的行扫描法步骤如下:

①判是否有键按下。

其实现方法是使端口C所有的行输出均为低电平,然后从端口A读入列值。

如果没有键按下,读入值为FFH,如果有键按下,则不为FFH。

②若有键按下,则延时10ms,再判断是否确实有键按下。

③若确实有键按下,则求出按下键的键值。

其实现方法是对键盘进行逐行扫描。

即先令PC0为0,然后读入列值,若列值等于FFH,说明该行无键按下,再令PC1为0,对下一行进行扫描;若列值不等于FFH,则说明该行有键按下,求出其键值。

求键值时要设置行值寄存器和列值寄存器。

每扫完一行后,若无键按下,则行寄存器加上08H;若有键按下,行值寄存器保持原值,转求相应的列值。

求列值的方法是,将列值右移,每移位一次列值寄存器加1,直至移出位为低电平为止。

最后将行值和列值相加即得十六进制的键值。

若想得到十进制键值,可在每次相加之后进行DDA修正。

④为保证按键每闭合一次CPU只做一次处理,程序需等闭合得键释放后对其做处理。

完成上述任务的控制程序清单如下:

ORG

0200H

KEYPR:

MOV

DPTR,#0100H

;8155初始化

MOV

A,#0CH

MOVX

@DPTR,A

;控制字写入

MOV

R3,#00H

;列寄存器清零

MOV

R4,#00H

;行寄存器清零

ACALL

KEXAM

;检查有无键按下

JZ

KEND

;无键按下返回

ACALL

D10ms

ACALL

KEXAM

;再次检查有无键按下

JZ

KEND

MOV

R2,#0FEH

;使X0为0

KEY1:

MOV

DPTR,#0103H

;送C口地址

MOV

A,R2

MOVX

@DPTR,A

;扫描某一行

MOV

DPTR,#0101H

;送A口地址

MOVX

A,@DPTR

;读列值模型

CPL

A

ANL

A,#0FFH

JNZ

KEY2

;有键按下,求列值

MOV

A,R4

;无在按下,行+8

ADD

A,#08H

MOV

R4,A

MOV

A,R2

;求下列为低电平模型

RL

A

MOV

R2,A

JB

ACC.4,KEY1

;判是否已全扫描

AJMP

KEND

KEY2:

CPL

A

;恢复列模型

KEY3:

INC

R3

RRC

A

JC

KEY3

KEY4:

ACALL

D10ms

ACALL

KEXAM

JNZ

KEY4

;等待键释放

MOV

A,R4

;计算键值

ADD

A,R3

MOV

BUFF,A

;键值存入BUFF

KEDN:

RET

RET

BUFF:

EQU

30H

D10ms:

MOV

R5,#14H

;延时子程序

DL:

MOV

R6,#0FFH

DL0:

DJNZ

R6,DL0

DJNZ

R5,DL

RET

KEXAM:

MOV

DPTR,#0103H

;检查是否有键按下子程序

MOV

A,#00H

MOVX

@DPTR,A

MOV

DPTR,#0101H

MOVX

A,@DPTR

CPL

A

ANL

A,#0FFH

RET

例2:

以下图为例说明行扫描法

采用8155接口芯片构成8×4键盘的接口电路,其中A口为输出,作为行线;C口为输入,作为列线(只用了PC0~PC3四根口线)。

流程图如右图:

首先调用全扫描子程序,检查有无闭合键。

若无键闭合,则对数码显示器扫描显示1遍(即执行其他程序);若有键闭合,则先消抖。

这里采用调用两次扫描循环子程序的方法,每次6ms共12ms。

然后再次检查有无键闭合,若无键闭合,则返回主程序;若有键闭合,则进行逐行扫描,以判别闭合键的具体位置。

本例采用如下计算公式,直接由闭合键的行号和列号求得键值:

键值=行号×4+列号

对于8×4的键盘来说,其具体键值由上式可计算出,见下表。

计算出闭合键的键值后,再判断键释放否?

若键未释放,则等待;若键已释放,则再延时消抖,然后判断是命令键还是数字键。

若是命令键,则转入命令键处理程序,完成命令键的功能;若是数字键,则转入数字键处理程序,进行数字的存储和显示等。

2)线路反转法

这种方法需要采用可编程的输入/输出接口8255、8155等,若采用单片机,也可直接与单片机的I/O口相接。

下面以图3-9所示的4×4键盘电路为例来说明线路反转法的原理。

图3-9线路反转法原理图

整个识别过程分为两步进行。

第一步,先从P1的高四位输出“0”电平,从P1的低四位读取键盘的状态,若图中某键(设F键)被按下,此时从P1的低四位输入的代码为1110,显然其中的“0”对应着被按键所代表的列。

但只找到列的位置还不能识别键位,还必须找到它所在的行。

第二步进行线路反转,即从P1的低四位输出“0”电平,从P1高四位读出键盘的状态,此时从P1高四位输出的结果应为0111,显然,其中的“0”对应着被按下键所代表的行位置。

再将两次读入的数据合成一个代码011111110,此代码完全确定被按键的位置。

通常我们把这种代码称为特征码。

特征码离散性很大,不便于散转处理,这可通过查键码转换表找到对应的键值(顺序码)。

表3-1列出了键码转换表。

其中把FFH定义为空键的特征码和键值。

表3-1键码转换表

键名

特征码

顺序码

键名

特征码

顺序码

S0

E7H

00H

S8

B7H

08H

S1

EBH

01H

S9

BBH

09H

S2

EDH

02H

SA

BDH

0AH

S3

EEH

03H

SB

BEH

0BH

S4

D7H

04H

SC

77H

0CH

S5

DBH

05H

SD

7BH

0DH

S6

DDH

06H

SE

7DH

0EH

S7

DEH

07H

SF

7EH

0FH

空键

FFH

FFH

下面对应图3-9给出采用反转法求取键值的汇编语言程序清单。

KEYI:

MOV

P1,#0FH

;从P1高四位输出零电平

MOV

A,P1

ANL

A,#0FH

MOV

B,A

;取P1低四位送入B

MOV

P1,#0F0H

;从P1低四位输出零电平

MOV

A,P1

ANL

A,#0F0H

;取出P1高四位送入A

ORL

A,B

;合成特征码

CJNE

A,#0FFH,KEYI1

RET

;未按键返回

KEYI1:

MOV

B,A

;取特征码

MOV

DPTR,#KEYCD

MOV

R3,#0FFH

;顺序码初始化

KEYI2:

INC

R3

MOV

A,R3

MOVC

A,@A+DPTR

CJNE

A,B,KEYI3

;未找到,判是否已查完

MOV

A,R3

;找到取顺序码

RET

KEYI3:

CJNE

A,#0FFH,KEYI2

;未完,再查

MOV

A,#0FFH

;无键按下处理

RET

KEYCD:

DB

0E7H,0EBH,0EDH,0EEH

DB

0D7H,0DBH,0DDH,0DEH

DB

0B7H,0BBH,0BDH,0BEH

DB

77H,7BH,7DH,07EH

DB

0FFH

3.交互式键盘接口电路及编程方法

交互式键盘是最节省检测线的一种键盘结构,但是这种键盘要求检测线必须是具有位控功能的双向I/O端口线。

交互式键盘按键的识别也采用了一种类似矩阵键盘分析所采用的逐行扫描的方法,但只能采用查询方式,不能采用中断方式。

下面仍以图3-1(c)给出28键的交互式键盘接口电路为例来说明其按键的识别方法。

为了编程方便,对键盘中的按键进行了编码,每一个按键安排了一个2位数的扫描码,其第一位数代表该键所位于的列线号,第二位数代表该键所位于的行线号。

交互式键盘的控制程序一般都采用查询方式。

具体算法是,轮流使某一I/O端口线为输出,输出低电平,并记录对应的列线号为i;同时让其他I/O端口线为输入,以判别对应列中的按键是否有按下,若有键按下就记录对应的行线号j。

则可根据记录的i,j求出按下键的扫描码,其值为KD=i×10H+j。

具体实现程序略。

3.2LED显示及接口

3.2.1LED显示原理

LED即发光二极管,它是一种由某种半导体材料制作成的PN结,由于参杂浓度很高,当正相偏置时,会产生大量的电子-空穴复合,把多余的能量释放为光能。

LED显示器具有工作电压低、体积小、寿命长(约十万小时)、响应速度快,颜色丰富(红、黄、绿等)等特点,是智能仪器最常使用的显示器。

LED的正向工作压降一般在1.2~2.6V,发光工作电流在5mA~20mA,发光强度基本与正向电流成正比,故电路须串联适当的限流电阻。

LED很适于脉冲工作状态,在平均电流相同的情况下,脉冲状态比直流工作状态产生的亮度增强20%左右。

LED显示器有单个、七段和点阵式等几种类型。

1、单个LED显示器

单个LED显示器常用于显示仪器的状态。

图3-16为单个LED显示器的接口电路。

仪器内微处理器经数据总线D0~D7,输出待显示的代码,送至输出接口,当其输出端Q0为低电平时,LED显示器正向导通并发亮,反之则熄灭。

74LS374作为输出口最多能同时驱动八个LED显示器,表示仪器的八个状态信息。

图3-16单个LED显示器的接口电路

2、七段LED显示器

七段LED显示器由数个LED组成一个阵列,并封装于一个标准外壳中。

为适用于不同的驱动电路,有共阳极和共阴极两种结构,如图3-17所示。

用七段LED显示器可组成0~9数字和多种字母,为了适应各种装置的需要,这种显示中还提供有一个小数点,所以实际共有八段。

图3-17七段LED显示器的两种结构

为了显示某个数或字符

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1