7第三章 微机化医学仪器的人机接口.docx
- 文档编号:6984488
- 上传时间:2023-01-14
- 格式:DOCX
- 页数:32
- 大小:953.11KB
7第三章 微机化医学仪器的人机接口.docx
《7第三章 微机化医学仪器的人机接口.docx》由会员分享,可在线阅读,更多相关《7第三章 微机化医学仪器的人机接口.docx(32页珍藏版)》请在冰豆网上搜索。
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 7第三章 微机化医学仪器的人机接口 第三 微机 医学 仪器 人机 接口