最高3位100是本命令的特征码。在将数据写入显示RAM之前,CPU必须先输出这条命令。命令中的地址码A3A2A1A0决定8279芯片接收来自CPU的数据存放在显示RAM的哪个单元。AI是地址自动增“1”标志。
(6)清除命令
编码格式为:
D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 CD2 CD1 CD0 CF CA
最高3位110是本命令的特征码。CD2、CD1、CD0用来设定清除显示RAM的方式。
CF=1,清除FIFO状态标志,FIFO被置成空状态(无数据),并复位中断输出IRQ。
CA是总清除的特征位,CA=1,清除FIFO状态和显示RAM(方式仍由CD1、CD0确定)。
清除显示RAM大约需160μs,在此其间,CPU不能向显示RAM写入数据。
4.状态字
8279的状态字用于数据输入方式,指出堆栈FIFO中的字符个数以及是否出错。
状态字格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
DU S/E O U F N2 N1 N0
N2N1N0表示FIFO中数据的个数。
F=1时,表示FIFO已满(存有8个键入数据)。
在FIFO中没有输入字符时,CPU读FIFO,则置U为“1”。
当FIFO已满而又输入一个字符时发生溢出,置O为“1”。
S/E用于传感器扫描方式,几个传感器同时闭合时置“1”。
在清除命今执行期DU为“1”,此时对显示RAM写操作无效。
3.3.4.2键盘/显示器和8279的接口
8279同键盘、显示器接口时,能实现对显示器的自动扫描、对键号的自动识别、自动去键抖动等功能,可大大简化软件程序设计,提高CPU的工作效率。
1.硬件接口电路
该电路设有8位显示器,4×8个键,其中键盘的行线接8279的RL0~RL3。8279选用外部译码方式,SL0~SL2经74LS138(1)译码输出Y0~Y7接键盘的列线,SL0~SL2又由74LS138(2)译码输出Y′0~Y′2,经驱动后输出到各位显示器的公共阴极,输出线OUTB0~3和OUTA0~3作为8位段数据输出口,其中OUTB0为最低位,OUTA3为最高位,BD控制74LS138(2)的译码,使显示器在位切换时全为暗码。当有键被按下时,键输入数据自动进入8279的FIFORAM存储器中,并向89C51请求中断,89C51响应中断后读取8279堆栈中的输入键值,据此转移到相应键的处理程序中。
更新显示器输出时,只需改变8279中显示数据存储器中的内容,8279即可自动完成显示任务。
2.软件框图设计
(1)初始化:在主程序中必须对8279进行初始化,其初始化的内容主要包括以下几个方面:
设置清除命令,其特征位为110;
设置键盘/显示器工作方式,其特征位为000;
设置分频系数,其特征位为001,以取得100kHz的内部定时脉冲信号;
开放键盘中断。
(2)键盘中断服务程序:在键盘中断服务程序中,首先必须设置读FIFORAM命令,然后才能有效地读入键值。对键值的处理有两种方式:一种是在中断程序中处理,即各键功能地址入口表设在中断程序中,读入键值后,可据散转指令转移到相应各键的服务程序中,该键功能处理完后再中断返回;另一种是在主程序中处理,即各键功能地址入口表设在主程序中,读入键值后,立即返回中断,在主程序中再根据中断时得到的键值进行处理,转移到该键的功能程序中。
(3)显示子程序框图:在送显示数据之前,必须设置写显示RAM命令。该系统中设置89C51内RAM的78H~7FH为显示缓冲区。
3.程序清单及说明
初始化程序:
MAIN:SETB EX1;允许外部中断1 中断
MOV DPTR,#7FFFH;指向8279 命令口
MOV A,#0D1H;置清除命令
MOVX @DPTR,A;
LP:MOVX A,@DPTR;读8279 状态
JB ACC.7,LP;等待清除结束
MOV A,#00HI;置键盘、显示器工作方式
MOVX @DPTR,A;左入外译码,键扫描,双键互锁方式
MOV A,#2AH;置分频系数,晶振6 MHz
MOVX @DPTR,A;则ALE 为1 MHz,需10 分频
SETB EA;开放中断
?
INTI:PUSH PSW;入栈保护现场
PUSH DPH;
PUSH DPL;
PUSH ACC;
MOV DPTR,#7FFFH;指向8279 命令口
MOV A,#40H;置读FIFO RAM 命令
MOVX @DPTR,A;
MOV DPTR,7FFEH;指向8279 数据口
MOVX A,@DPTR;读键输入值
CJNE A,#3BH,RET;判输入停机命令
SETB 00H;置停机标志
RET:MOV 70H,A;存键入值→70H
POP ACC;出栈
POP DPL;出栈
POP DPH;
POP PSW;
RET1;中断返回
显示子程序:
DIR:MOV DPTR,#7FFFH;置写显示RAM 命令
MOV A,#90H;
MOVX @DPTR,A;
MOV R0,#78H;显缓反指针初值
MOV R7,#08H;显示位数指针初值
MOV DPTR,#7FFFH;指向8279 数据口
DL0:MOV A,@R0;取显示数据
ADD A,#05H;加偏移量
MOVC A,@A+PC;查段码表,转为段数据
MOVX @DPTR,A;写入显示RAM
INC R0;指向下一显缓单元
DJNZ R7,DL0;8 位显示完否
RET;返回
TABD:DB 3FH,06H,5BH;“0”,“1”,“2”
DB 4FH,66H,6DH;“3”,“4”,“5”
DB 7DH,07H,7FH;“6”,“7”,“8”
DB 6FH,77H,7CH;“9”,“A”,“b”
DB 39H,51H,79H;“C”,“d”,“E”
DB 71H,00H;“F”暗-段码表
3.4打印机及其接口
行式打印机是微机系统的一种常用输出设备。在智能仪器应用系统中较为流行的是带有微处理器控制装置的微型点阵式打印机。
3.4.1打印原理
点阵式打印机是靠垂直排列的钢针,在电磁铁的驱动下进行打印的。当钢针向前移动时,就把色带上的油墨打印到纸上,形成一个色点。当打印完1列后,打印头随着台架平移一格,然后打印第2列,再平移一格……,如此打印用若干点阵表示的一个字符。安装有打印头的台架是在导轨上由伺服马达牵行的钢丝拖动的,它能作往返的准确定位运动,并以均匀的速度在水平方向上移动台架。
此外,每打印完一行后,在步进马达的拖动下,凭借有棘齿的履带式机构,再配合打印纸上定位孔,使打印纸进给一定的尺寸。为了提高打印清晰度,延长色带寿命,要不断地改变色带被钢针击打的位置。所以打印机工作时,色带作往复不停的卷取运动,而卷取方向由行程终止定位开关控制。
3.4.2GP16微型打印机接口
3.4.2.1GP16接口信号
GP-16的机芯为model150Ⅱ16行微型针打。
其中IO.0~IO.7为双向三态数据总线,这是CPU和GP16之间命令、状态和数据信息传输线;CS为设备选择线;RD、WR为读、写控制线;BUSY为状态输出线,高电平时表示GP16处于忙状态,不能接受CPU的命令或数据。BUSY可作为中断请求线,也可以供CPU查询。
3.4.2.2命令字
字符行本身占7个点行,命令字中的点行数n是选择字符行之间行距的参数,若n=10,则行距为3。命令字的第二字节为本条命令打印(或空走纸)的字符行行数。