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

第10章 人机接口技术(5)

1.字符串打印3.4.2.2

GP16接收到字符串打印命令后,等待主机写入字符。当接收完16个字符(1行)后,转入打印。打印1行需1秒左右时间。若接收到非法字符则作空格处理,若接收到换行符,(0AH)作停机处理,打印完本行则停止打印。当规定的行数打印完后,GP16停机转入空闲状态。

2.十六进制数据打印

GP16接收到数据打印命令后,把主机写入的数据字节分两次打印,先打印高4位,后打印低4位,1行打印4个字节的数据,行首为相对地址,其格式如下:

00:×× ×× ×× ××

04:×× ×× ×× ××

08:×× ×× ×× ××

0C:×× ×× ×× ××

10:×× ×× ×× ××

3.图形打印

GP16接收到主机的图形打印命令后,接收到一行图形信息(96个字节)便转入打印,把这些数据所表示的图形直接打印出来,然后再接收打印下一行的图形信息,直至规定的行数打印完毕。打印的点为1,空白点为0。设正弦波分两次打印。先打印正半周,后打印负半周。

第一行:80H,20H,04H,02H,01H,01H,02H,04H,20H,80H,

00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,

……

第二行:00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,

00H,04H,20H,40H,80H,80H,40H,20H,04H,01H,

……

3.4.2.3状态字

D0为忙位。主机写入的命令或数据在没有处理完时置“1”;GP16处于自检状态时,忙位也为1。空闲时忙位为0。

D7为错误位。GP16接收到非法命令时置“1”,接收到正确命令后复位。

3.4.2.4GP16与单片机的接口

GP16可与单片机方便地接口。

读取GP16状态字,并将命令或数据写入GP16的程序如下:

与89C51接口时

MOV DPTR,#7FFFH

LP:MOVX A,@DPTR

ANL A,#81H

JNZ LP;判GP 16 忙否

MOV A,#XXH

MOVX @DPTR,A;命令或数据写入GP 16

3.5拨盘及其接口

在智能仪器中有时需要输入少量控制参数,而且这些控制参数一经设定后一般不需再改变,这时使用拨盘输入更为方便可靠。若在使用过程中参数需要变换,则更改拨盘数据也极为方便。拨盘的种类很多,作为使用最方便的人机接口拨盘是十进制输入、BCD码输出,本节主要讨论该种拨盘及其接口方法。

3.5.1BCD码拨盘

一组BCD码拨盘,是由四片拨盘组成的四位十进制输入拨盘组,每片拨盘只有0~9十个位置,每个位置都有相应的数字显示,代表拨盘输入的十进制数,因此,每片拨盘可代表一位十进制数。

实际应用中需要几位十进制数,就选择几片BCD码拨盘拼接。

从中可以看到:BCD码拨盘后面有5个接点,其中A为输入控制端,另外4端是BCD码输出信号端。当拨盘拨到不同位置时,输入控制线A分别与4根BCD码输出线中的某根或某几根接通,其接通的BCD码输出线状态正好与拨盘指示的十进制数相一致。

输出状态为1时,表示该输出线与A端相通。若拨到9,则A与8、1接通。

3.5.2BCD码拨盘与89C51的接口

3.5.2.1BCD码拨盘的连接方法

BCD码拨盘根据其接法的不同,输出的BCD码有正逻辑和负逻辑之分。

若控制端A接+5V,则当拨盘拨至某输入十进制数时,相应的8、4、2、1有效端输出高电平,而无效端为低电平,这时拨盘输出的BCD码为正逻辑,即原码。如拨至“5”时,4、1端输出高电平,为有效端,8、2端输出低电平,为无效端。

若控制端A接地,8、4、2、1输出端通过电阻上拉至高电平时拨盘拨至某输入十进制数,相应8、4、2、1有效端输出低电平,无效端为高电平,此时拨盘输出的BCD码为负逻辑,即反码。如拨至“5”时,4、1端输出低电平,为有效端,8、2端输出高电平,为无效端。

3.5.2.2单片BCD码拨盘与89C51的接口

单片BCD码拨盘可以与任何一个4位I/O口或扩展I/O口相连,以输入四位BCD码。实际应用中,往往由若干片BCD码拨盘拼接成一个N位的拨盘组,用以输入控制参数。

3.5.2.3多片BCD码拨盘与89C51的接口

在智能仪器应用系统中,通常要输入多位十进制数,则N位10进制拨盘需要占用4×N根I/O口线。为了减少I/O口线的使用数量,可将拨盘的输出线分别通过4个与非门与89C51的I/O口或扩展I/O口相连,此时每片拨盘的控制端A不再接+5V或地,而是分别与I/O口线相连,用来控制选择多片拨盘中的任意一片。因此,N位十进制拨盘用N片BCD码拨盘拼成时,只需占用4+N根I/O口线。

4片拨盘的BCD码输出的相同端接入同一个4输入与非门,而四个与非门输出的8、4、2、1端分别接入89C51的P1.3、P1.2、P1.1、P1.0,P1口的其余四位P1.7、P1.6、P1.5、P1.4分别与千、百、十、个位BCD码拨盘的控制端A相连。

若选中千位,则P1.7置0,P1.4~1.6置1,此时四个与非门所有与其他位相连、的输入端均为1状态,因此四个与非门输出的状态完全取决于千位数BCD码拨盘的输出状态。BCD码拨盘的输出为负逻辑,即反码,但通过与非门后输出的为BCD原码,因此在程序中读入BCD码后不需再取反处理。

多片BCD码拨盘在连接时,而是去掉与非门,在每片BCD码拨盘的每个输出端(8、4、2、1端)通过一个二极管再与外电路相连。由于二极管的存在,未选通位的BCD码就不会影响到被选通位的BCD值。这种连接方法的硬件电路也十分简单,读者可自己画出。

3.5.2.4BCD码拨盘输入程序设计

在采用BCD码拨盘输入系统控制参数时,通常都在仪器开始正常工作之前,将要输入的控制参数在拨盘上拨好。例如:拨入的数据为1983,这时每位BCD码拨盘的输出端上都有相应的数字端与A接通。若将读取BCD码拨盘的数据存放到89C51内部RAM的40H~44H中(40H为千位,43H为个位),则读拨盘子程序清单如下:

BCDK:MOVR0,#40H;初始化,存放单元首址→R0

MOVR2,#70H;P1口控制字→R2

MOVR3,#04H;四位BCD拨盘

LOP:MOVA,R2;P1口送控制字及低四位置为输入方式

MOVP1,A;读入BCD码

ANLA,#0FH;屏蔽高4位

MOV @ R0,A;千位l存40H中;

INCR0;百位9存41H中;

MOVA,R2;十位8存42H中:

;个位存43H中;

RRA;准备读下一片拨盘

MOVA;高四位状态及低四位输入→R2

DJNZR3,LOP;四位读完否

RET;读完,子程序返回

BCD码拨盘输入程序的编制十分简单,只需选通某片后读入其BCD值即可,若为负逻辑接法,则需将读入的BCD值取反后再存放。

思考与练习题3

1.试比较七段LED显示器静态与动态多位数字显示系统的特点。

2.设计一个软件译码采用6位共阳极的七段LED显示器的动态扫描接口电路,并编写显示控制程序。

3.LCD显示有几种驱动方式?

4.编码键盘和非编码键盘各有什么特点?

5.简述键盘、显示器接口芯片8279各个组成模块的功能。

6.试述点阵打印机工作原理。GP16微型打印机打印命令有几条?

7.试述拨盘工作原理及其特点。