登陆注册
13028600000008

第8章 人机接口技术(3)

“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.4编码式键盘接口电路

上面都是采用软件方法实现对键盘和显示器的扫描,不但程序比较复杂,而且实时性差。若要简化键盘编码所需的软件和减少占用CPU的时间,可以选用供键盘编码用的LSI接口电路来构成编码式键盘。电路矩阵发现有键按下后,提供相应的消除抖动和串键措施,以正确识别按下的键,同时提供一个内部ROM查阅表,用以产生与按下的键相应的代码。

集成芯片8279就是如上所述的一种功能较完善的键盘接口电路,它还具备显示接口的功能。8279芯片作为通用接口电路,一方面接收来自键盘的输入数据并进行预处理,另一方面实现对显示数据的管理和对数码显示器的控制。

3.3.4.1键盘、显示接口芯片8279

它的读写信号RD、WR,片选信号CS,复位信号RESET,同步时钟信号CLK以及数据总线D0~D7均能与CPU相应的管脚直接相连。C/D(A0)端用于区别数据总线上所传递的信息是数据或者是命令字。IRQ为中断请求端,通常在键盘有数据输入或传感器(通断)状态改变时产生中断请求信号。SL0~SL3是扫描信号输出线,RL0~RL7是回馈信号线。OUTB0~B3、OUTA0~A3是显示数据的输出线。BD为消隐端,在更换数据时,其输出信号可使显示器熄灭。

1.数据输入

数据输入有三种方式可供选用:键扫描方式、传感器扫描方式和选通输入方式。

采用键扫描方式时,扫描线为SL0~SL3,回馈线为RL0~RL7。每按下一键,便由8279自动编码,并送入先进先出堆栈FIFO,同时产生中断请求信号IRQ。

如果芯片的控制端CNTL和换挡端SHIFT接地,则编码的最高两位均取“0”。例如被按下键的位置在第2行(扫描行序号为010),且与第4列回馈线(列序号为100)相交,则该键所对应的代码为00010100,即为14H。

8279的扫描输出有两种方式:译码扫描和编码扫描。所谓译码扫描。即4条扫描线在同一时刻只有一条是低电平,并且以一定的频率轮流更换。如果用户键盘的扫描线多于4时,则可采用编码输出方式。此时SL0~SL3输出的是从0000至1111的二进制计数代码。

在编码扫描时,扫描输出线不能直接用于键盘扫描,而必须经过低电平有效输出的译码器。

例如将SL0~SL2输入到通用的38译码器(74LS138)即可得到直接可用的扫描线(由8279内部逻辑所决定,不能直接用416译码器对SL0~SL3进行译码,即在编码扫描时SL3仅用于显示器,而不能用于键扫描)。

暂存于FIFO中的按键代码,在CPU执行中断处理子程序时取出,数据从FIFO取走后,中断请求信号IRQ将自动撤销。在中断子程序读取数据前,下一个键被按下,则该键代码自动进入FIFO,FIFO堆栈由8个8位的存储单元组成,它允许依次暂存8个键的代码。这个栈的特点是先进先出。因此由中断子程序读取的代码顺序与键被按下的次序相一致。在FIFO中的暂存数多于一个时,只有在读完(每读一个数据则它从栈顶自动弹出)所有数据时,IRQ信号才会撤销。虽然键的代码暂存于8279的内部堆栈,但CPU从栈内读取数据时只能用“输入”或“取数”指令而不能用“弹出”指令,因为8279芯片在微机系统中是作为I/O接口电路而设置的。

在传感器扫描方式工作时,将对开关阵列中每一个结点的通、断状态(传感器状、态)进行扫描,并且当阵列(最多是8×8位)中的任何一位发生状态变化时,便自动产生中断信号IRQ。此时,FIFO的8个存储单元用于寄存传感器的现时状态,称状态存储器。其中存储器的地址编号与扫描线的顺序一致。中断处理子程序将状态存储器的内容读入CPU,并与原有的状态比较后,便可由软件判断哪一个传感器的状态发生了变化。所以8279用来检测开关(传感器)的通断状态是非常方便的。如采用PIO接口芯片对64点的通断状态监测,将占用8个并行通道,即需要多片PIO接口电路。

键盘扫描方式和传感器扫描方式的主要区别在于前者每按一次产生一个中断,而后者则会产生两次中断。

在选通输入方式工作时,RL0~RL7与8255的选通并行输入端口的功能完全一样。此时,CNTL端作为选通信号STB的输入端,STB为高电平有效。

此外,在使用8279时,不必考虑按键的抖动和串键问题。因在芯片内部已设置了消除触头抖动和串键逻辑电路,这给使用带来了很大方便。

2.显示输出

8279内部设置了16×8显示数据存储器(RAM),每个单元寄存一个字符的8位显示代码。8个输出端与存储单元各位的对应关系为:

D7 D6 D5 D4 D3 D2 D1 D0

A3 A2 A1 A0 B3 B2 B1 B0

A3~A0、B3~B0分别送出16个(或8个)单元存储的数据,并在16个显示器上显示出来。

显示器的扫描信号与键盘输入扫描信号是公用的,当实际数码显示器多于4个时,必须采用编码扫描输出,经过译码器后,方能用于显示器的扫描。

显示数据经过数据总线D7~D0及写信号WR(同时CS=0,C/D=0),可以分别写入显示存储器的任何一个单元。一旦数据写入后,8279的硬件便自动管理显示存储器的输出及同步扫描信号。因此,对操作者仅要求完成向显示存储器写入信息的操作。

8279的显示管理电路亦可在多种方式下工作,如:左端输入、右端输入、8字符显示、16字符显示等。各种方式的设置下面加以说明。

3.命令字格式及含义

8279的工作方式是由各种控制命令决定的。CPU通过数据总线向芯片传送命令时,应使WR=0、CS=0及C/D=1。

(1)键盘、显示器工作模式设置命令编码格式为:

D7 D6 D5 D4 D3 D2 D1 D0

0 0 0 D1 D0 K2 K1 K0

命令字节的最高3位000是本命令的特征码(操作码)。

8279可外接8位或16位的LED显示器,每一位显示器对应一个8位的显示RAM单元。显示RAM中的字符代码与扫描信号同步地依次送上输出线A3~A0,B3~B0。当实际的数码显示器少于8位时,也必须设置8字符或16字符显示模式之一。如果设置16字符显示,显示RAM中从“0”单元到“15”单元的内容同样依次轮流输出,而不管扫描线上是否有数码显示器存在。

左端输入方式是一种简单的显示模式,显示器的位置(最左边由SL0驱动的显示器为零号位置)编号与显示RAM的地址一一对应,即显示RAM中的“0”地址的内容在“0”(最左端)位置显示。CPU依次从“0”地址或某一地址开始将字符代码写入显示RAM。地址大于15时,再从0地址开始写入。写入过程如下:

0 1 14 15 ←显示RAM 地址

第1次写入X1 X1 ………

0 1 14 15

第2次写入X2 X1 X2 ………

……

0 1 14 15

第16次写入X16 X1 X2 ……… X15 X16

0 1 14 15

第17次写入X17 X17 X2 ……… X15 X16

右端输入方式也是一种常用的显示方式,一般的电子计算器都采用这种方式。从右端输入信息与前者比较,一个重要的特点是显示RAM的地址与显示器的位置不是一一对应的,而是每写入一个字符,左移一位,显示器最左端的内容被移出丢失。写入过程如下:

1 2 14 15 0 ←显示RAM 地址

第1次写入X1 ……… X1

2 3 15 0 1

第2次写入X2 ……… X1 X2

0 1 …… 13 14 15

第16次写入X16 X1 X2 ……… X14 X15 X16

0 1 15 16 17

第17次写入X17 X2 X3 ……… X15 X16 X17

键盘扫描方式中,两键互锁是指当被按下键未释放而第二键又被按下时,FIFO堆栈仅接收第一键的代码,第二键作为无效键处理。如果两个键同时按下,则后释放的键为有效键,而先释放键作为无效键处理。多键有效方式是指当多个键同时按下,则所有键依扫描顺序被识别,其代码依次写入FIFO堆栈。虽然8279具有两种处理串键的方式,但通常选用两键互锁方式,以消除多余的被按下键所带来的错误输入信息。

RESET信号自动设置编码扫描,键盘输入(两键互锁)左端输入的16字符显示,该信号的作用等效于编码为08H的命令。

(2)扫描频率设置命令

编码格式为:

D7 D6 D5 D4 D3 D2 D1 D0

0 0 1 P4 P3 P2 P1 P0

最高3位001是本命令的特征码。P4P3P2P1P0取值为2到31,它是外接时钟的分频系数,经分频后得到内部时钟频率。在接到RESET信号后,如果不发送本命令,分频系数取值31。

(3)读FIFO堆栈的命令

编码格式为:

D7 D6 D5 D4 D3 D2 D1 D0

0 1 0 AI × A2 A1 A0

最高3位010是本命令的特征码。在读FIFO之前,CPU必须先输出这条命令。8279接收到本命令后,CPU执行输入指令,从FIFO中读取数据。地址由A2A1A0决定,例如A2A1A0=0H,则输入指令执行的结果是将FIFO堆栈顶(或传感器列阵状态存储器)的数据读入CPU的累加器。AI是自动增1标志,当AI=1时,每执行一次输入指令,地址A2A1A0自动加1。显然,键盘输入数据时,每次只需从栈顶读取数据,故AI应取“0”。如果数据输入方式为检测传感器阵列的状态,则AI取1,扫描8次输入指令,依次把FIFO的内容读入CPU。利用AI标志位可省去每次读取数据前都要设置读取地址的操作。

(4)读显示RAM的命令

编码格式为:

D7 D6 D5 D4 D3 D2 D1 D0

0 1 1 AI A3 A2 A1 A0

最高3位011是本命令的特征码。在读显示RAM之前,CPU必须先输出这条命令。

8279接收到本命令后,CPU执行输入指令,从显示RAM读取数据。A3A2A1A0是用于区别该RAM的16个地址,AI是地址自动增“1”标志。

(5)写显示RAM的命令

编码格式为:

D7 D6 D5 D4 D3 D2 D1 D0

100AI A3 A2 A1 A0

同类推荐
  • 如何维修音响设备

    如何维修音响设备

    本书以问答形式为您排忧解难,简单解决音响设备故障,内容包括:怎样观察故障现象、检修音响设备的方法有哪些、音响设备有杂声怎么办等等。
  • 上网百事通

    上网百事通

    网络犹如无边无际的海洋,逐渐覆盖了整个地球,海水从美洲漫到欧洲,亚洲,非洲和大洋洲。你看,海洋上水道纵横(网与网紧密相连),大陆横陈(超级计算机时刻运转不停),岛屿星布(大型机与小型机密如繁星),还有大量的小舟漂来荡去(无数个人计算机用户)。这是一个在我们日常习惯了的由物质和能量构成的物理世界之外的,由亿万个比特搭建而成,以光速运行的新的世界。网络来了!不管你喜欢它也好,畏惧它也好。
  • 我是汽车驾驶与维修能手

    我是汽车驾驶与维修能手

    为“金阳光新农村丛书”之一。《我是汽车驾驶与维修能手》主要向你介绍了汽车的基本结构、汽车的正确驾驶、汽车发动机的检查与维修、底盘的维修、汽车电气的维修、常见故障诊断及处理等内容。全书新颖实用,简明易懂。希望农民朋友用书上的知识指导实践,用勤劳的双手发家致富,早日把家乡建成生产发展、生活宽裕、乡风文明、管理民主的社会主义新农村。
  • 汽车养护与急救

    汽车养护与急救

    本书站在专业汽车修理人员的角度,从车主和驾驶员朋友的实际情况出发,用通俗化的语言简要地介绍了汽车在使用和管理过程中,驾驶员朋友自己能够动手或者有必要知道的一些关于汽车养护翻故障应急修理的相关知识。其主要内容主要包括汽车养护、汽车故障诊断基础、常见部件的保养及汽车运行中一些常见故障的应急处理。
  • 征服太空之路丛书:向太空进军

    征服太空之路丛书:向太空进军

    《向太空进军》是“征服太空之路丛书”之一,从人类早期的探索太空的活动开始介绍,一直到如今的探索活动,期间有关的发明发现也一并介绍,另外,还适当地介绍了一些有趣的太空话题,如一些前端构想和探索传奇等。
热门推荐
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 天宝传

    天宝传

    许天宝,一个情伤份子的穿越,一段老土又不一般的修仙。一本大家把自己幻想成主角在小说世界里面闯荡的小说,
  • 这个霍格沃茨物语大有问题

    这个霍格沃茨物语大有问题

    “哑炮也能上霍格沃茨?”这是所有人在霍格沃茨开学典礼上看到阿尔菲诺的第一感觉。阿尔菲诺却道:“哑炮?你们说去吧!我对于那些普通的日常系魔法没有兴趣,我只追求极致的魔法、渴求魔法的根源之所在,男人不该沉迷于那简单的魔法,男人的浪漫便是最强的火力!”“与我同道者,不管你们是什么外星人、未来人、异世界人还是什么巫师、超能力者,尽管来找我吧!”等回到座位后...“完蛋了!我TM装什么逼啊...”这是一个穿越咸鱼在巫师世界混日子,调戏妹妹怒怼基友的轻松娱乐故事.....
  • 孤山侠客传

    孤山侠客传

    受尽生离死别,看破人间冷暖,身怀绝世武功,维护江湖正义,杀尽负心之辈!
  • 器魔之征

    器魔之征

    在强大的敌人面前,我不能倒下,只有变强才能够保护他们。
  • 现代工人

    现代工人

    以李雪梅为代表一群普通工人,他们如何对待工作和生活,也对整个乳品行业的诠释与展望,在这期间他们迷茫过,委屈过,痛苦过,挣扎过,绝望过,但他们仍然没有放弃,一直勇敢向前,在乳品的道路上披荆斩棘,有努力就会有收获,同时也让人们更加清楚认识这个行业所带来的社会价值,和它对社会起的重要作用,他们用辛勤的付出铸就了品质同时也捍卫了自己尊严,他们是普通的,但并不平凡。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 乱古仙尊

    乱古仙尊

    “男人,应有乘风破浪之势!”摸金校尉万尘携带残破的世界画卷穿越到了异界。“扶摇直上九重天,称霸万古苍穹间!”“我的路我来走!”“我怕的不是与你为敌,而是你与我为敌,究竟能支撑多久!”
  • 这才是魔法的世界

    这才是魔法的世界

    上古的魔剑随着最后一场神魔大战流落于世间,辗转到我手中。魔剑对战斗的渴望,对杀戮的呼唤已按捺不住。身负魔剑的期望,我要为它找到一位强大的主人。我看中过很多人,却又一一放弃。又是一位新的候选人。黑发黑眼,这种特征......我蓦然一惊。他不属于我们!风吟·海无涯。
  • 枪之勇者成名录

    枪之勇者成名录

    我一直坚信着,只要握紧心中的枪,便能守护自己想守护的东西——子夜