对键盘显示器的自动扫描

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,并具有显示稳定、程序简单、不会出现误动作等特点。

本实验系统中8279的状态/命令口地址位8701H;数据口地址位8700H。

示例程序运行将显示"8279 --",并等待按键输入,将键值显示在数码管上(只响应0-F按键)。

Z8279 EQU 08701H ;8279 状态/命令口地址
D8279 EQU 08700H ;8279 数据口地址
LEDMOD EQU 10H ;右端输入八位字符显示
;外部译码键扫描方式,双键互锁LEDFEQ EQU 38H ;扫描速率
LEDCLS EQU 0D1H ;清除
LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址
ORG 0000H
AJMP START
ORG 0040H
START:
MOV SP,#60H
LCALL INIT8279 ;初始化8279
WAIT: MOV DPTR,#Z8279
MOVX A,@DPTR
ANL A,#0FH
JZ WAIT
MOV A,#40H
MOVX @DPTR,A
MOV DPTR,#D8279
MOVX A,@DPTR
ANL A,#3FH
MOV R4,#00H
MOV R5,A
LCALL DISLED
SJMP WAIT
INIT8279: ;8279初始化子程序 PUSH DPH ;保存现场
PUSH DPL
PUSH ACC
LCALL DELAY ;延时
MOV DPTR ,#Z8279
MOV A,#LEDMOD ;置8279工作方式 MOVX @DPTR,A
MOV A,#LEDFEQ ;置键盘扫描速率 MOVX @DPTR,A
MOV A,#LEDCLS ;清除 LED 显示 MOVX @DPTR,A
LCALL DELAY ;延时
MOV DPTR,#Z8279
MOV A,#90H
MOV DPTR,#D8279
MOV A,#40H
MOVX @DPTR,A
MOV A,#40H
MOVX @DPTR,A
MOV A,#0H
MOVX @DPTR,A
MOV A,#0H
MOVX @DPTR,A
MOV A,#0EFH
MOVX @DPTR,A
MOV A,#27H
MOVX @DPTR,A
MOV A,#5BH
MOVX @DPTR,A
MOV A,#7FH
MOVX @DPTR,A
POP ACC ;恢复现场
POP DPL
POP DPH
RET
;显示字符子程序
;输入: R4,位置 R5,值
DISLED: PUSH DPH ;保存现场
PUSH DPL
PUSH ACC
MOV A,#LEDWR0 ;置显示起始地址
ADD A,R4 ;加位置偏移量
MOV DPTR,#Z8279
MOVX @DPTR,A ;设定显示位置
MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R5
MOVC A,@A+DPTR ;查表
MOV DPTR,#D8279
MOVX @DPTR,A ;显示数据
POP ACC ;恢复现场
POP DPL
POP DPH
RET
DELAY: ;延时子程序
PUSH 0 ;保存现场
PUSH 1
MOV 0,#0H
DELAY1: MOV 1,#0H
DJNZ 1,$
DJNZ 0,DELAY1
POP 1 ;恢复现场
POP 0
RET
LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4, 5,6,7'
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C, D,E,F'
DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I, O,P, '
END
单片机系统中有两种 LED显示方式,即静态显示和动态显示,静态显示的优点是显示效果好,编程简单,但由于输出的每一位都需要锁存,使用的硬件较多;动态显示方式中,各位数码管的a–h端并连在一起,每一时刻只有一位数码管被点亮,各位依次轮流被点亮,硬件电路简单,但由于需要不停地进行刷新显示,降低了CPU的效率,而且编程的工作量很大。

为了解决动态显示中存在的问题,Intel 公司研制出了专用的键盘、显示器接口电路芯片8279,该芯片能自动完成对显示的刷新,同时还可以对键盘自动扫描,识别闭合键的键号,使用非常方便。

8279用A0来区分信息特征,当A0为0时,CPU从8279读出的是状态,写入的是命令,且每个命令也有自己的特征;当A0=1时读出和写入的都是数据。

8279内部有两个缓冲区,即一个8字节的FIFO(First In First Out)键盘RAM和一个16字节的显示RAM,显示数据时只要将待显示数据的段码写入显示RAM即可;当有键闭合时,8279会自动执行去抖、得到键值、等待按键释放等操作,最后,将键值存入FIFO RAM中,程序只需从FIFO中读取键值即可,编程十分简单,具体实验线路图17所示。

8279键盘、显示器接口器件是实现人机对话的主要部件,它已为广大用户欢迎和广泛应用。

然而在有些应用场合,既要键盘具有普通的数据输入和控制功能,又要键盘具备按钮功能。

例如,微机控制的注塑机,在手动控制时需要有点动功能:按钮按下进行调模运动,按钮松开,调模运动停止。

本文介绍使8279构成的键盘具有以上功能的实现方法,供读者参考使用。

为了使8279具有合适的键盘、显示功能,首先要对芯片初始化。

可适当地挑选8279的控制字,例如:使8279具有8位显示、右端输入、编码键盘、双键锁定时可选控制字10H.这时每次按键都将产生
键特征码,并且存放在FIFOROM中,同时使8279的IRQ引脚变为高电平,可作为向CPU申请中断信号,如果CPU是中断开放的,则转向中断服务程序,可在中断服务程序中读取特征码。

每当CPU读取FIFOROM中的数据后,8279自动撤消IRQ信号,IRQ引脚变为低电平。

CPU返回主程序后,可由键特征码来决定程序的流向。

问题是,当CPU 从8279的FIFOROM中读取键特征码后,IRQ虽然恢复底电平,但FIFOROM中的数据并没有消失,仍保存在里面,这时即使使用对改8279清除的指令D3H,也不能将FIFOROM中的数改变,只有按其它键才能改变FIFOROM中的数据,因这样是无法实现按钮功能的。

为了使键盘具有按钮功能,应该利用8279的传感方式功能,在传感器方式中,8279每当检测到传感状态变化时,IRQ就变为高电平,图1是以8031CPU构成的系统为例,说明IRQ引脚电平的翻新过程。

8279的IRQ端经反相器接到8031的INT1端(即P3.3引脚)。

先将8279设置成编码键盘,允许INT1中断,当键按下时,反相
器输出低电平,CPU进入中断服务程序,读取键特征码后,又为
高电平。

返回主程序后,转向功能程序(例如调模进)。

输出控
制信号(例如P1.0为“1”时调模进电磁阀得电)后,将8279设
置为传感器方式,并且不允许INT1中断,然后调试P3.3是否为
低电平。

如果按键松开,8279将测出传感器状态发生变化,而使IRQ由低电平转为高电平。

也就是说P3.3脚为低电平时,按键已
经松开,程序重新设置8279为编码键盘,INT1中断开放,以便使键盘脱离按钮功能。

相关文档
最新文档