书城工业技术智能仪器设计基础
19100400000007

第7章 人机接口技术(2)

POP DPH

POP DPL

RET

读显示数据子程序:

PR5:PUSH DPL

PUSH DPH

MOV DPTR,CRADD2;设置读状态字地址

PR51:MOVX A,@DPTR;读状态字

JB ACC.7,PR51;判“忙”标志为“0”否,否再读

MOV DPTR,#ADD2;设置读显示数据地址

MOVX A,@DPTR;读数据

MOV DAT,A;存数据

POP DPH

POP DPL

RET

2. 间接控制方式接口电路及驱动程序

间接控制方式驱动程序清单如下。

A0 EQU P3.0;寄存器选择信号

R/W EQU P3.1;读/写选择信号

El EQU P3.2;使能信号E1

E2 EQU P3.3;使能信号E2、

写指令代码子程序:

PRO:CLR A0;A0=0

SETB R/W;R/W=1

PRO1:MOV P1,#0FFH;P1 口置“1”

SET EI;El=l

MOV A,P1;读状态字

CLR E1;E1=0

JB ACC.7,PRO1;判“忙”标志为“0”否,否再读

CLR R/W;R/W=0

MOV P1,COM;写指令代码

SETB El;E1=1

CLR El;E1=0

RET

写显示数据子程序:

PR1:CLR A0;A0=0

SETB R/B;R/W=1

PR11:MOV P1,#0FFH;P1 口置“1”

SETB E1;El=1

MOV A,P1;读状态字

CLR El;E1=0

JB ACC.7,PR11;判“忙”标志为“0”否,否再读

SETB A0;A0=l

CLR R/W;R/W=0

MOV P1,DAT;写数据

SETB E1;E1=1

CLR El;E1=0

RET

读显示数据子程序:

PR2:CLR A0;A0=0

SETB R/W;R/W =1

PR21:MOV P1,#0FFH;P1 口置“1”

SETB E1;E1=1

MOV A,P1;读状态字

CLR E1;E1=0

JB ACC.7,PR21;判“忙”标志为“0”否,否再读

SETB A0;A0=1

MOV P1,#0FFH;P1 口置“1”

SETB E1;E1=1

MOV DAT,P1;读数据

CLR E1;E1=0

RET

写指令代码子程序:

PR3:CLR A0;A0=0

SETB R/W;R/W=1

PR31:MOV P1,#0FFH;P1 口置“1”

SETB E2;E2=1

MOV A,P1;读状态字

CLR E2;E2=0

JB ACC.7,PR31;判“忙”标志为“0”否,否再读

CLR R/W;R/W=0

MOV P1,COM;写指令代码

SETB E2;E2=1

CLR E2;E2=0

RET

写显示数据子程序:

PR4:CLR A0;A0=0

SETB R/W;R/W=1

PR41:MOV P1,#0FFH;P1 口置“1”

SETB E2;E2=1

MOV A,P1;读状态字

CLR E2;E2=0

JB ACC.7,PR51;判“忙”标志为“0”否,否再读

SETB A0;A0=l

CLR R/W;R/W=0

MOV P1,DAT;写数据

SETS E2;E2=l、

CLR E2;E2=0

RET

读显示数据子程序:

PR5:CLR A0;A0=0

SETB R/W;R/W=1

PR51:MOV P1,#0FFH;P1 口置“1”

SETB E2;E2=1

MOV A,P1;读状态字

CLR E2;E2=0

JB ACC.7,PR41;判“忙”标志为“0”否,否再读

SETB A0;A0=l

MOV P1,#0FFH;P1 口置“0”

SETB E2;E2=l

MOV P1,DAT;读数据

CLR E2;E2=0

RET

3. 应用子程序

本程序使用89C51汇编语言,接口电路为上面提供的实用电路,使用的模块样机是HY12232C,提供的程序同样可以应用于其他模块,程序中提供参数PD1为不同型号模块所选择。

【例3.1】 初始化子程序

对模块的初始化实际上是对SED1520的初始化。程序如下:

INT:MOV COM,#0E2H;复位

LCALL PRO

LCALL PR3

MOV COM,#0A4H;关闭等待状态

LCALL PRO

LCALL PR3

MOV COM,#0A9H;设置1/32 占空比

LCALL PRO

LCALL PR3

MOV COM,#0A0H;正向排序设置

LCALL PRO

LCALL PR3

MOV COM,#0C0H;设置显示起始行为第一行

LCALL PRO

LCALL PR3

MOV COM,#0AFH;开显示设置

LCALL PRO

LCALL PR3

RET

【例3.2】 清显示RAM 区(清屏)子程序

CLEAR:MOV R4,#00H;页面地址暂存器设置

CLEAR1:MOV A,R4;取页地址值

ORL A,#0B8H;“或”页面地址设置代码

MOV COM,A;页面地址设置

LCALL PRO

LCALL PR3

MOV COM,#00H;列地址设置为“0”

LCALL PRO

LCALL PR3

MOV R3,#50H;一页清80 个字节

CLEAR2:MOV DAT,#00H;显示数据为“0”

LCALL PR1

LCALL PR4

DJNZ R3,CLEAR2;页内字节清零循环

INC R4;页地址暂存器加1

CJNE R4,#04H,CLEAR1;RAM 区清零循环

RET

3.3 键盘及其接口

键盘是一组开关(按键)的集合,操作者通过键盘输入数据或命令,实现简单的人机对话。键盘接口必须解决以下一些问题:确定是否有键按下,按了哪一个键;消除抖动问题;按键的处理等等。这些均可由硬件或软件来完成。

3.3.1 键盘结构和类型

目前常用的按键有三种:机械触点式按键、导电橡胶式按键和柔性按键(又称轻触键盘)。

机械触点式按键是利用金属的弹性使按键复位,具有手感明显、接触可靠的特点。导电橡胶按键则是利用橡胶的弹性来复位,通常采用压制方法把面板上所有的按键制成一块,体积小,装配方便。柔性按键是近年来得到迅速发展的一种新型按键,它可分为凸球型和平面型两大类。前者动作行程触感明显,富有立体感,但工艺复杂;后者动作行程极微,触感较弱,但工艺简单,寿命也长,它的最大特点是廉价、形美、防尘、防潮、耐蚀、装嵌简单,而且外形和面板的布局、色彩、键距都可以按照整机的要求来设计,在一定程度上体现了今后仪器仪表键盘的发展方向。

按照键码识别的方法分类,有编码式和非编码式两种键盘。前者每按一次键,键盘自动提供被按键的编码,同时产生一选通脉冲通知主机;后者是靠软件来完成按键识别的。

3.3.2 抖动和串键

键盘输入时,存在触点弹跳与同时按下多个键的问题,即抖动与串键。

3.3.2.1 抖动

从键按下到接触稳定要经过数毫秒的抖动,键松开时也有同样的问题,这会引起一次按键多次读数。解决键的抖动可使用硬件或软件方法。通常在键数较少时,可用R S触发器,或用最简单的RC滤波器来克服抖动。键数较多时,往往采用软件延时的方法,即当检出键闭合(或断开)后,执行一个数毫秒的延时子程序,让抖动消失后,再检验一下键的状态,这样可避免因抖动所造成的多次读数问题。

3.3.2.2 串键

检出串键情况,避免产生错码也是件重要的事,处理串键有三种技术:两键同时按下、n键同时按下和n键锁定技术。

“两键同时按下”技术是在两个键同时按下时产生保护作用。最简单的方法是当只有一个键按下时才读取键盘的输出,最后仍被按下的键是有效的正确按键。当用软件扫描键盘时常采用这种方法。另一种方法是当第一个按键未松开时,按第二个键不产生选通信号。

这种方法常借助硬件来实现。

“n键同时按下”技术或者不理会所有被按下键,直至只剩下一个键按下时为止;或者将按键的信息存入内部缓冲器中,这种方法成本较高。

“n键锁定”技术只处理一个键,任何其他按下又松开的键不产生任何码,通常是第一个被按下或最后一个松开的键产生码。这种方法最简单也最常用。

3.3.3 非编码式键盘接口电路

非编码式键盘目前大都采用行扫描法来识别按键。行扫描法是以步进扫描的方式,每次在键盘的一行发出扫描信号,同时检查列线输入信号。若发现某列输入信号与扫描信号一致,则位于该列和扫描行交点的键被按下。4行4列键盘接口电路,共有16个键,4条行线接到输出口,4条列线接至输入口。两端口的数据端和控制端分别与单片机的数据线和控制线相连。

采用这种方法时,一般先用全“0”[也可用全“1”]测试是否有键按下。如果有,才在各输出线上依次送“0”,这可减少在没有按键时的扫描时间。假设K9键闭合,其余断开。程序在判出有键按下后,再逐行扫描,以确定所按键的号数。

8155的PA、PB口为输出口,PA 口除输出显示器的扫描控制信号外,又是键盘的行扫描口。8155的PC口为键输入口。7407和75452分别为同相和反相驱动器。下面给出判别按键号的程序,该程序计算键号的方法是先确定列线号,再与键号寄存器内容相加得到按键号。这种方法程序较长,但易于理解。

89C51判键号程序:

KEY:MOVX DPTR,#7F00H;置8155 PA、PB 口为输出方式

MOV A,#03H;PC 口为输入方式

MOVX @DPTR,A

MOV R4,#00H;0→键号寄存器R4

MOV R2,#01H;扫描模式01H→R2

KEY1:MOV DPTR,#7F0lH、MOV A,R2

MOVX @DPTR,A;扫描模式→8155 PA 口

INC DPTR

INC DPTR

MOVX A,@DPTR;读8155 PC 口

JB ACC. 0,KEY2;0 列无键闭合,转判1 列

MOV A,#00H;0 列有键闭合0→A

AJMP KEY5

KEY2:JB ACC.1,KEY3;1 列无键闭合,转判2 列

MOV A,#01H;1 列有键闭合,1→A

AJMP KEY5

KEY3:JB ACC.2,KEY4;2 列无键闭合,转判3 列

MOV A,#02H;2 列有键闭合2→A

AJMP KEY5

KEY4:JB ACC.3,NEXT;3 列无键闭合,转判下一行

MOV A,#03H;3 列有键闭合,3→A

KEY5:ADD A,R4;列线号+(R4)→R4

MOV R4,A

RET

NEXT:MOV A,R4

ADD A,#04H;键号寄存器加4

MOV R4,A

MOV A,R2

JB ACC.3,NEXTI;判是否已扫到最后1 行

RL A;扫描模式左移1 位

MOV R2,A

AJMP KEY1

NEXT1:MOV R4,#0FFH;置无键闭合标志

RET

3.3键盘及其接口

键盘是一组开关(按键)的集合,操作者通过键盘输入数据或命令,实现简单的人机对话。键盘接口必须解决以下一些问题:确定是否有键按下,按了哪一个键;消除抖动问题;按键的处理等等。这些均可由硬件或软件来完成。

3.3.1键盘结构和类型

目前常用的按键有三种:机械触点式按键、导电橡胶式按键和柔性按键(又称轻触键盘)。

机械触点式按键是利用金属的弹性使按键复位,具有手感明显、接触可靠的特点。导电橡胶按键则是利用橡胶的弹性来复位,通常采用压制方法把面板上所有的按键制成一块,体积小,装配方便。柔性按键是近年来得到迅速发展的一种新型按键,它可分为凸球型和平面型两大类。前者动作行程触感明显,富有立体感,但工艺复杂;后者动作行程极微,触感较弱,但工艺简单,寿命也长,它的最大特点是廉价、形美、防尘、防潮、耐蚀、装嵌简单,而且外形和面板的布局、色彩、键距都可以按照整机的要求来设计,在一定程度上体现了今后仪器仪表键盘的发展方向。

按照键码识别的方法分类,有编码式和非编码式两种键盘。前者每按一次键,键盘自动提供被按键的编码,同时产生一选通脉冲通知主机;后者是靠软件来完成按键识别的。

3.3.2抖动和串键

键盘输入时,存在触点弹跳与同时按下多个键的问题,即抖动与串键。

3.3.2.1抖动

从键按下到接触稳定要经过数毫秒的抖动,键松开时也有同样的问题,这会引起一次按键多次读数。解决键的抖动可使用硬件或软件方法。通常在键数较少时,可用RS触发器,或用最简单的RC滤波器来克服抖动。键数较多时,往往采用软件延时的方法,即当检出键闭合(或断开)后,执行一个数毫秒的延时子程序,让抖动消失后,再检验一下键的状态,这样可避免因抖动所造成的多次读数问题。

3.3.2.2串键

检出串键情况,避免产生错码也是件重要的事,处理串键有三种技术:两键同时按下、n键同时按下和n键锁定技术。

“两键同时按下”技术是在两个键同时按下时产生保护作用。最简单的方法是当只有一个键按下时才读取键盘的输出,最后仍被按下的键是有效的正确按键。当用软件扫描键盘时常采用这种方法。另一种方法是当第一个按键未松开时,按第二个键不产生选通信号。

这种方法常借助硬件来实现。

“n键同时按下”技术或者不理会所有被按下键,直至只剩下一个键按下时为止;或者将按键的信息存入内部缓冲器中,这种方法成本较高。