版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章MCS-51与键盘和显示器的
接口设计10.1LED数码管的显示原理LED(LightEmittingDiode)发光二极管缩写。LED数码管是由发光二极管构成的。10.1.1LED数码管的结构常见的LED数码管为“8”字型的,共计8段。每一段对应一个发光二极管。有共阳极和共阴极两种,如图10-1所示。共阴极发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。同样,共阳极LED数码管的发光二极管的阳极连接在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。图10-18段LED数码管结构及外形
表10-1只列出了部分段码,可以根据实际情况选用,或重新定义。除“8”字型的LED数码管外,市面上还有“±1”型、“米”字型和“点阵”型LED显示器,如图10-2所示。本章均以“8”字型的LED数码管为例。
图10-2
其他各种字型的LED显示器10.1.2LED数码管工作原理图10-3所示为显示4位字符的LED数码管的结构原理图。N位位选线和8
N条段码线。段码线控制显示字型,而位选线控制着该显示位的LED数码管的亮或暗。
图10-34位LED数码管的结构原理图
图10-4为4位LED数码管静态显示器电路,各位可独立显示,静态显示方式接口编程容易,但是占用口线较多。对图10-4电路,若用I/O口线接口,要占用4个8位I/O口。因此在显示位数较多的情况下,所需的电流比较大,对电源的要求也就随之增高,这时一般都采用动态显示方式。2.LED动态显示方式无论在任何时刻只有一个LED数码管处于显示状态,即单片机采用“扫描”方式控制各个数码管轮流显示。图10-44位LED静态显示电路在多位LED显示时,为简化硬件电路,通常将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阳极或共阴极分别由相应的I/O线控制,形成各位的分时选通。
图10-5所示为一个4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。必须采用动态的“扫描”显示方式。即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要有显示的字符的段码。虽然这些字符是在不同时刻出现,而在同一时刻,只有一位显示,其他各位熄灭,由于余辉和人眼的“视觉暂留”作用,只要每位显示间隔足够短,则可以造成“多位同时亮”的假象,达到同时显示的效果。LED不同位显示的时间间隔(扫描间隔)应根据实际情况而定。显示位数多,将占大量的单片机时间,因此动态显示的实质是以牺牲单片机时间来换取I/O端口的减少。
图10-6所示为8位LED动态显示2009.10.10的过程。图10-6(a)所示为显示过程,某一时刻,只有一位LED被选通显示,其余位则是熄灭的;图10-6(b)所示为实际的显示结果,人眼看到的是8位稳定的同时显示的字符。
图10-68位LED动态显示过程和结果动态显示的优点是硬件电路简单,显示器越多,优势越明显。缺点是显示亮度不如静态显示的亮度高。如果“扫描”速率较低,会出现闪烁现象。静态显示示例:动态显示示例: ORG 0000HSTART: MOV DPTR,#TABLE ;DPTR指向段码表首地址 MOV R7,#07FH ;设置动态显示扫描初值S1: MOV A,#00H MOVC A,@A+DPTR ;查表取得段码 CJNE A,#01H,S2 ;判断段码是否为结束符 SJMP STARTS2: MOV B,A ;段码送B保存 MOV A,R7 RL A ;显示位扫描值左移1位 MOV P3,A ;显示位扫描值送P3口 MOV R7,A MOV P0,B ;显示段码送P0显示 LCALL DELAY ;延时 INC DPTR SJMP S1DELAY: MOV R5,#20 ;延时子程序D2: MOV R6,#20D1: NOP DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;段码表 DB 01H ;结束符 END10.2键盘接口原理键盘具有向单片机输入数据、命令等功能,是人与单片机对话的主要手段。10.2.1键盘输入应解决的问题1.键盘的任务任务有三项:(1)判别是否有键按下?若有,进入下一步工作。(2)识别哪一个键被按下,并求出相应的键值。(3)根据键值,找到相应键值的处理程序入口。
图10-7(b)所示的t1和t3分别为键的闭合和断开过程中的抖动期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关,一般为5~10ms,t2为稳定的闭合期,其时间由按键动作确定,一般为十分之几秒到几秒,t0、t4为断开期。3.按键的识别键的闭合与否,行线输出电压上就是呈现高电平或低电平。高电平,表示键断开,低电平则表示键闭合,通过对行线电平的高低状态的检测,可确认按键按下以及按键释放与否。为了确保对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。4.如何消除按键的抖动按键去抖动的方法有两种:一种软件延时,本思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。采取本措施,可消除两个抖动期t1和t3的影响。另一种是采用专用的键盘/显示器接口芯片,这类芯片中都有自动去抖动的硬件电路。10.2.2键盘的工作原理键盘可分为两类:非编码键盘和编码键盘。非编码键盘是利用按键直接与单片机相连接而成,这种键盘通常使用在按键数量较少的场合。使用这种键盘,系统功能通常比较简单,需要处理的任务较少,但是可以降低成本、简化电路设计。按键的信息通过软件来获取。非编码键盘常见的为两种结构:独立式键盘和矩阵式键盘。(1)独立式键盘特点是:一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可容易地判断哪个按键被按下,如图10-8所示。对于图10-8的键盘,图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平。当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。优点:电路简单,各条检测线独立,识别按下按键的软件编写简单。适用于键盘按键数目较少的场合,不适用于键盘按键数目较多的场合,因为将占用较多的I/O口线。识别某一键是否按下的子程序:KEYIN: MOV P1,0FFH;P1口写入1,设置P1口为输入状态 MOV A,P1 ;读入8个按键的状态 CJNE A,#0FFH,QUDOU;有键按下,跳去抖动 LJMP RETURN ;无键按下,返回
QUDOU: MOVR3,A ;8个按键的状态送R3保存 LCALLDELAY10 ;调用延时子程序,软件去键抖动 MOV A,P1 ;再一次读入8个按键的状态 CJNE A,R3,RETURN;两次键值比较,不同, ;是抖动引起,转RETURNKEY0: MOV C,P1.0;有键按下,读P1.0的按键状态 JC KEY1 ;P1.0为高,该键未按下,跳KEY1, ;判下一个键 LJMP PKEY0 ;P1.0的键按下,跳PKEY0处理KEY1: MOV C,P1.1;读P1.1的按键状态 JC KEY2 ;P1.1为高,该键未按下,跳KEY2, ;判下一个键 LJMP PKEY1 ;P1.1的键按下,跳PKEY1处理对应8个按键的键处理程序PKEY0~PKEY7,根据按键功能的要求来编写。注意,在进入键处理程序后,需要先等待按键释放,再执行键处理功能。另外,在键处理程序完成后,一定要跳向RETURN标号处返回。(2)矩阵式键盘矩阵式(也称行列式)键盘用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-9所示,一个44的行、列结构可以构成一个16个按键键盘。在按键数目较多的场合,要节省较多的I/O口线。图10-9矩阵式键盘接口矩阵中无按键按下时,行线为高电平;当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平也为高,这是识别按键是否按下的关键所在。由于矩阵式键盘中行、列线为多键共用,各按键彼此将相互发生影响,所以必须将行、列线信号配合,才能确定闭合键位置。下面讨论矩阵式键盘按键的识别方法。①扫描法。第1步,识别键盘有无键按下;第2步,如有键被按下,识别出具体的键位。下面以图10-9所示的键3被按下为例,说明识别过程。第1步,识别键盘有无键按下。先把所有列线均置为0,然后检查各行线电平是否都为高,如果不全为高,说明有键按下,否则无键被按下。例如,当键3按下时,第1行线为低,还不能确定是键3被按下,因为如果同一行的键2、1或0之一被按下,行线也为低电平。只能得出第1行有键被按下的结论。第2步,识别出哪个按键被按下。采用逐列扫描法,在某一时刻只让1条列线处于低电平,其余所有列线处于高电平。当第1列为低电平,其余各列为高电平时,因为是键3被按下,第1行的行线仍处于高电平;当第2列为低电平,其余各列为高电平时,第1行的行线仍处于高电平;直到让第4列为低电平,其余各列为高电平时,此时第1行的行线电平变为低电平,据此,可判断第1行第4列交叉点处的按键,即键3被按下。综上所述,扫描法的思想是,先把某一列置为低电平,其余各列置为高电平,检查各行线电平的变化,如果某行线电平为低电平,则可确定此行此列交叉点处的按键被按下。②线反转法。扫描法要逐列扫描查询,有时则要多次扫描。而线反转法则很简练,无论被按键是处于第一列或最后一列,均只需经过两步便能获得此按键所在的行列值,下面以图10-10所示的矩阵式键盘为例,介绍线反转法的具体步骤。让行线编程为输入线,列线编程为输出线,并使输出线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。再把行线编程为输出线,列线编程为输入线,并使输出线输出为全低电平,则列线中电平由高变低所在列为按键所在列。两步即可确定按键所在的行和列,从而识别出所按的键。
图10-10
采用线反转法的矩阵式键盘假设键3被按下。第一步,P1.0~P1.3输出全为“0”,然后,读入P1.4~P1.7线的状态,结果P1.4=0,而P1.5~P1.7均为1,因此,第1行出现电平的变化,说明第1行有键按下;第二步,让P1.4~P1.7输出全为“0”,然后,读入P1.0~P1.3位,结果P1.0=0,而P1.1~P1.3均为1,因此第4列出现电平的变化,说明第4列有键按下。综上所述,即第1行、第4列按键被按下,此按键即键3按下。线反转法简单适用,但不要忘记按键去抖动处理。10.2.3键盘的工作方式单片机在忙于其他各项工作任务时,如何兼顾键盘的输入,这取决于键盘的工作方式。工作方式选取原则是,既要保证及时响应按键操作,又不过多占用单片机工作时间。键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。1.编程扫描方式也称查询方式,利用单片机空闲时,调用键盘扫描子程序,反复扫描键盘。如果单片机的查询的频率过高,虽能及时响应键盘的输入,但也会影响其他任务的进行。查询的频率过低,可能会键盘输入漏判。所以要根据单片机系统的繁忙程度和键盘的操作频率,来调整键盘扫描的频率。编程扫描程序框图
消除按键抖动、键闭合一次仅进行一次按键的处理。2.定时扫描方式每隔一定的时间对键盘扫描一次。在这种方式中,通常利用单片机内的定时器产生的定时中断,进入中断子程序来对键盘进行扫描,在有键按下时识别出该键,并执行相应键的处理程序。为了不漏判有效的按键,定时中断的周期一般应小于100ms。F1:去除抖动标志位F2:已识别完按键标志位每10ms定时中断。定时扫描程序框图3.中断扫描方式为提高单片机扫描键盘的工作效率,可采用中断扫描方式,如图10-11所示。图中的键盘只有在键盘有按键按下时,发出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序。如无键按下,单片机将不理睬键盘。此种方式的优点是,只有按键按下时,才进行处理,所以其实时性强,工作效率高。图10-11采用中断扫描方式的矩阵式键盘矩阵式键盘所完成的工作分为3个层次。(1)单片机如何来监视键盘的输入,体现在键盘的工作方式上就是:
①编程扫描;②定时扫描;③中断扫描。(2)确定按下键的键号。体现在按键的识别方法上就是:
①扫描法;②线反转法。(3)根据按下键的键号,实现按键的功能,即跳向对应的键处理程序。ORG0000HSTART:LJMPMAIN ORG0030HMAIN:MOVSP,#60H JNBP1.0,M0 ;查询是否有键按下 JNBP1.1,M1 ;查询K2键是否按下 JNBP1.2,M2 ;查询K3键是否按下 JNBP1.3,M3 ;查询K4键是否按下 JNBP1.4,M4 ;查询K5键是否按下 JNBP1.5,M5 ;查询K6键是否按下 JNBP1.6,M6 ;查询K7键是否按下 JNBP1.7,M7 ;查询K8键是否按下M0: LCALLDELAY ;延时,反弹跳 JNBP1.0,P10 ;K1键压下处理 SJMPMAINM1: LCALLDELAY ;延时,反弹跳 JNBP1.1,P11 ;K2键压下处理 SJMPMAINM2: LCALLDELAY ;延时,反弹跳 JNBP1.2,P12 ;K3键压下处理 SJMPMAINM3: LCALLDELAY ;延时,反弹跳 JNBP1.3,P13 ;K3键压下处理 SJMPMAINM4: LCALLDELAY ;延时,反弹跳 JNBP1.4,P14 ;K5键压下处理 SJMPMAINM5: LCALLDELAY ;延时,反弹跳 JNBP1.5,P15 ;K6键压下处理 SJMPMAINM6: LCALLDELAY ;延时,反弹跳 JNBP1.6,P16 ;K7键压下处理 SJMPMAINM7: LCALLDELAY ;延时,反弹跳 JNBP1.7,P17 ;K8键压下处理 SJMPMAINP10: CPLP0.0 SJMPMAINP11: CPLP0.1 SJMPMAINP12: CPLP0.2 SJMPMAINP13: CPLP0.3 SJMPMAINP14: CPLP0.4 SJMPMAINP15: CPLP0.5 SJMPMAINP16: CPLP0.6 SJMPMAINP17: CPLP0.7 SJMPMAINDELAY: MOV R5,#50H ;延时子程序D2: MOV R6,#0F0HD1: NOP DJNZ R6,D1 DJNZ R5,D2 RET END10.3键盘/显示器接口设计实例在单片机应用系统设计中,一般都是把键盘和显示器放在一起考虑。也有的系统仅单独需要键盘或显示器。10.3.1利用并行I/O芯片8155H或51单片机的串行口实现键盘/显示器接口(略)10.3.2各种专用的键盘/显示器接口芯片简介用专用芯片,可省去编写键盘/显示器动态扫描程序以及键盘去抖动程序编写的繁琐工作。目前各种专用接口芯片种类繁多,各有特点,总体趋势是并行接口芯片逐渐退出,串行接口芯片越来越多的得到应用。早期的较为流行的键盘/显示器芯片8279,目前流行的键盘/显示器接口芯片均采用串行通信方式,占用口线少。常见的芯片有:周立功公司的ZLG7289A、ZLG7290B、MAX7219、南京沁恒公司的CH451、HD7279和BC7281等。这些芯片全采用动态扫描方式,且控制的键盘均为编码键盘。1.专用键盘/显示器接口芯片8279可编程的并行键盘/显示器接口芯片。内部有键盘FIFO(先进先出堆栈)/传感器双重功能的8×8=64位的RAM,键盘控制部分可控制8×8的键盘矩阵,能自动获得按下键的键号。自动去键盘抖动并具有双键锁定保护功能。显示RAM的容量为16×8位,最多可控制16个LED数码管显示。2.专用键盘/显示器芯片ZLG7290B采用I2C串行口总线结构,可实现8位LED显示和64键的键盘管理,需外接晶振,使用按键功能时要接8个二极管,电路稍显复杂,且每次I2C通信间隔稍长(10ms)。功能:闪烁、段点亮、段熄灭、功能键、连击键计数等。其中,功能键实现了组合按键,这在此类芯片中极具特点;连击键计数实现了识别长按键的功能,也是独有的。3.专用显示器芯片MAX7219MAXIM(美信)公司的产品。该芯片采用串行SPI接口,仅是单纯驱动共阴极LED数码管,没有键盘管理功能。4.专用显示器芯片BC7281可驱动16位LED数码管显示和实现64键的键盘管理,可实现闪烁、段点亮、段熄灭等功能。最大特点是通过外接移位寄存器驱动16位LED数码管。但所需外围电路较多,占PCB空间较大,且在驱动16位LED数码管时,由于采用动态扫描方式工作,电流噪声过大。5.专用键盘/显示器芯片HD7279与单片机间采用串行通信,可控制并驱动8位LED数码管和实现64(8×8)键的键盘管理。外围电路简单,价格低廉。由于具有上述优点,目前得到较为广泛的应用。6.专用键盘/显示器芯片CH451可动态驱动8位LED数码管显示,具有BCD码译码、闪烁、移位等功能。内置大电流驱动级,段电流不小于30mA,位电流不小于160mA。内置64(8×8)键键盘控制器,可对8×8矩阵键盘自动扫描,且有去抖动电路,并提供键盘中断和按键释放标志位,可供查询按键按下与释放状态。片内内置上电复位和看门狗定时器。芯片性价比较高,是目前使用较为广泛的专用的键盘/显示器接口芯片之一。但抗干扰能力不是很强,不支持组合键识别。上述各种芯片,CH451和HD7279使用较多。从性价比,首推CH451,主要对LED数码管的驱动功能较完善。10.3.3利用键盘/显示接口芯片8279实现的键盘/显示器接口8279是Intel公司为8位微处理器设计的通用键盘/显示器接口芯片,其功能是:接收来自键盘的输入数据并作预处理;完成数据显示的管理和数据显示器的控制。单片机应用系统采用8279管理键盘和显示器,软件编程极为简单,显示稳定,且减少了主机的负担。
1.8279的引脚定义
DB7~DB0为双向外部数据总线;为片选信号线,低电平有效;和为读和写选通信号线;IRQ为中断请求输出线。RL7~RL0为键盘回送线。SL3~SL0为扫描输出线。OUTB3~OUTB0、OUTA3~OUTA0为显示寄存器数据输出线。RESET为复位输入线。SHIFT为换档键输入线。CNTL/STB为控制/选通输入线。CLK为外部时钟输入线。为显示器消隐控制线。A0为缓冲器选择端。DB0~DB7:具有三态的双向数据总线。用于8279与外部CPU之间传递命令(控制字)和数据。CLK:系统时钟输入。用于8279内部产生工作的时序。RESET:复位信号输入端。当RESET=1时,8279被复位,复位后8279内部状态如下1,16个字符显示,左入口;2,编码扫描键盘,双键锁定;3,程序时钟编程为31。/CS:片选段。低电平有效;A0:缓冲器选择端。A0=1时:若CPU对8279执行写入操作时,写入是命令字;若CPU从8279读数据时,读出的是8279的状态。A0=0时,写入和读出的均为数据。/RD、/WR:读写控制线。来自CPU的控制信号,控制8279的读写操作。IRQ:
中断请求信号。输出线,高电平有效。SL0~SL3:
扫描输出线。作为键盘、显示器的扫描信号,通过编程可定为“编码输出”(外接4-16译码器产生16选1的扫描信号);也可设定为“译码输出”,直接输出4选1的扫描信号。RL0~RL7:回复输入线。用来接收扫描键盘的回复信号。SHIFT:移位信号的输入线,高电平有效。该信号是8279键盘数据的次高位(D6位),通常用来补充键盘开关的功能,如键盘的上、下挡功能。在传感器方式和选通方式中,SHIFT无效。CNTL/STB:控制/选通输入线,高电平有效。键盘方式时该输入信号是键盘信号的最高位(D7),通常用来扩充键盘开关的控制功能,作为键盘控制功能键用。在传感器方式和选通方式中,CNTL无效。在选通方式中,该信号的上升沿可将来RL0~RL7的数据存放到FIFORAM中。OUTA0~OUTA3:
A组显示输出线(接LED的e~g,dp划)。OUTB0~OUTB3:
B组显示输出线(接LED的a~d划)。上面两组线均为显示用的信息输出线,数据的输出与SL0~SL7的数字扫描信号同步,实现数据的动态扫描显示。A组与B组输出线可以单独使用(如输出BCD码经外部的“BCD-七段译码器”与显示器连接);也可以将A、B两组合并使用,直接输出七段的“字形码”供显示器使用。/BD:消隐显示输出线,低电平有效。该输出信号在数字切换显示或使用显示消隐命令时,控制显示器将显示消隐。2.8279的内部结构
数据缓冲器将双向三态8位内部数据总线D0~D7与系统总线相连,用于传送CPU与8279之间的命令和状态。控制和定时寄存器用于寄存键盘和显示器的工作方式,锁存操作命令,通过译码器产生相应的控制信号,使8279的各个部件完成相应的控制功能。定时器包含一些计数器,其中有一个可编程的5位计数器(计数值在2~31间),对CLK输入的时钟信号进行分频,产生100KHz的内部定时信号(此时扫描时间为5.1ms,消抖时间为10.3ms)。外部输入时钟信号周期不小于500ns。
扫描计数器有两种输出方式:一是编码方式,计数器以二进制方式计数,4位计数状态从扫描线SL3~SL0输出,经外部译码器可以产生16位的键盘和显示器扫描信号;另一种是译码方式,扫描计数器的低两位经内部译码后从SL3~SL0输出,直接作为键盘和显示器的扫描信号。回送缓冲器、键盘消抖及控制完成对键盘的自动扫描以搜索闭合键,锁存RL7~RL0的键输入信息,消除键的抖动,将键输入数据写入内部先进先出存储器(FIFORAM)。RL7~RL0为回送信号线作为键盘的检测输入线,由回送缓冲器缓冲并锁存,当某一键闭合时,附加的移位状态SHIFT、控制状态CNTL及扫描码和回送信号拼装成一个字节的“键盘数据”送入8279内部的FIFO(先进先出)RAM。
键盘的数据格式为:在传感器矩阵方式和选通方式时,回送线RL7~RL0的内容被直接送往相应的FIFORAM。输入数据即为RL7~RL0。数据格式为:
FIFO/传感器RAM是具有双功能的8×8RAM在键盘或选通方式时,它作为FIFORAM,依先进先出的规则输入或读出,其状态存放在FIFO/传感器RAM状态寄存器中。只要FIFORAM不空,状态逻辑将置中断请求IRQ=1;在传感器矩阵方式,作为传感器RAM,当检测出传感器矩阵的开关状态发生变化时,中断请求信号IRQ=1。在外部译码扫描方式时,可对8×8矩阵开关的状态进行扫描,在内部译码扫描方式时,可对4×8矩阵开关的状态进行扫描。显示RAM用来存储显示数据,容量是16×8位在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器输出分成两组,即OUTA0~OUTA3和OUTB0~OUTB3,两组可以单独送数,也可以组成一个8位的字节输出,该输出与位选扫描线SL0~SL3配合就可以实现动态扫描显示。显示地址寄存器用来寄存CPU读/写显示RAM的地址,可以设置为每次读出或写入后自动递增。3.8279的命令字和状态字
8279是可编程接口芯片,其工作方式、工作特点等均是通过CPU向8279发送命令实现的,因此对8279的编程实际上就是向8279写入命令字的过程。8279共有8条控制字,命令字是由每个字节中的D7~D5三位为特征区分。具体的命令字格式如下:D7D6D5D4D3D2D1D0命令字特征位(1)键盘/显示方式命令字D7,D6,D5=000:方式命令字的特征位。D3,D4=DD:显示工作方式设定。
00:8位字符显示,左入口(打字机方式);
01:16位字符显示,左入口(打字机方式);
10:8位字符显示,右入口(计算器方式);
11:16位字符显示,右入口(计算器方式)。000DDKKKD7D6D5
D4D3
D2D1D0命令字特征位
显示工作方式
键盘工作方式
D2,D1,D0=KKK:设定键盘工作方式。
000:编码扫描键盘,双键锁定;
001:译码扫描键盘,双键锁定;
010:编码扫描键盘,N键轮回;
011:译码扫描键盘,N键轮回;
100:编码扫描传感器;
101:译码扫描传感器;
110:选通输入,编码显示扫描;
111:选通输入,译码显示扫描;【说明】:1,“双键锁定”指有2个键按下时,取最后弹起的键;2,“N键轮回”指有N个键按下时,根据它们按下的顺序依次存入FIFORAM中。3,“编码输出”指按二进制计数器规律输出数据;4,“译码输出”指按译码器输出的规律输出(如4选1)。(2)程序时钟命令8279内部有自己的时序电路,其时钟信号来源于外部输入的CLK,为了使输入的时钟满足内部100KHz的要求,就要对外部输入的CLK进行适当的分频。D4,D3,D2,D1,D0=PPPPP:分频系数范围:2~31。001PPPPPD7D6D5
D4D3D2D1D0命令字特征位
对输入信号CLK的分频系数(3)读FIFORAM命令FIFORAM为存放扫描键盘时获得的“键值”数据,容量为8*8。CPU读8279的数据口的数据时,可能有两类数据:1,FIFORAM中扫描键盘时获得的“键值”数据;2,显示RAM中的现实数据。所以必须事先通过命令字来选择。D4=AI:地址增量控制。若AI=1,在每次读FIFORAM后,地址自动+1。AI的使用简化了编程,不用每读一次数据给出一个地址。010AIXAAAD7D6D5
D4D3D2D1D0命令字特征位
地址自动增量
FIFORAM地址
(4)读显示RAM命令显示RAM用来存放8279动态显示的数据,容量16*8。在显示RAM中,数据的存放顺序与在数码管上显示的数据顺序是相对应得。因此,要显示的数据要按顺序存放到显示RAM中。在8279的显示方式中有8位显示和16位显示两种,对应占用显示RAM8字节或16字节。011AIAAAAD7D6D5
D4
D3D2D1D0命令字特征位
地址自动增量
显示RAM地址
(5)写显示RAM命令在向8279的数据口写入要显示的数据前,要先向8279的命令/状态口写入一个“写显示RAM”命令。其作用是通过“写显示RAM”命令设定要写入的显示数据到显示RAM中的地址。例如:当8279设定为“8位右入口”工作方式时,要显示的8位数据就要从0000地址依次写入(AI=1),这样命令字的格式为10010000B既90H。100AIAAAAD7D6D5
D4
D3D2D1D0命令字特征位
地址自动增量
显示RAM地址
(6)显示禁止写入/消隐命令此命令用于OUTA,OUTB分为两组4位显示方式时使用。D3,D2=IWA,IWB:分别屏蔽A或B组的显示。如:IWA=1时禁止写入A组显示RAM。当CPU向8279的B组显示RAM送数时,先要把A组屏蔽掉,这样CPU送给B组的数据不会影响到A组的显示。D1,D0=BLA,BLB:显示输出消隐控制。如:BL/A=1时,A组显示被消隐,=0时恢复。101×IWAIWBBLABLBD7D6D5D4D3D2
D1D0
命令字特征位
屏蔽显示控制
消隐控制
(7)清除命令
用来清除FIFORAM和显示RAM,常用在对8279初始化中。D4,D3,D2=Cd,Cd,Cd:清除显示RAM的方式。10×:全部清除“显示RAM”;
110:将“显示RAM”清为20H(A组0010,B组0000);
111:将“显示RAM”全部置为“1”;
000:不清除(若Ca=1时,D3,D2仍有效)。D1=Cf:Cf=1时,清空FIFORAM。D0=Ca:总清位,兼有Cd,Cf的功能。Ca=1时,对显示RAM的清除取决于D3,D2的编码。110CdCdCdCfCaD7D6D5
D4D3D2
D1D0命令字特征位
清除“显示RAM”的方式
清空FIFO
总清
(8)结束中断/错误方式设置命令此命令有两种不同的应用:(a)作为结束中断的命令。8279与CPU之间可以以中断方式进行工作。在传感器(键盘扫描)工作方式中,若传感器(按键)的状态发生变化时,检测电路将其状态(键值)写入FIFORAM中,并启动中断逻辑使IRQ变高,向CPU发中断申请。如果,在读FIFORAM数据前,写入8279的“读FIFORAM”命令中AI=0时,在CPU读出FIFORAM中的一个数据后,中断请求IRQ自动清除;若中AI=1时,在读出FIFORAM中的数据后,中断请求时不能自动除,必须使用“结束中断/错误方式”命令来撤掉IRQ。111E××××D7D6D5
D4D3D2D1D0
命令字特征位
屏蔽显示控制(b)作为特定的“错误方式”设定命令
针对与8279键盘处于“N键轮回”方式时使用。如果E=1就使8279处于此种工作方式。在此种方式中,如果有多个键同时按下时,FIFO的状态字中的S/E位=1并产生中断请求信号和阻止数据写入FIFORAM中。错误特征位S/E在读出FIFO状态字时被读出,而在执行Cf=1的“清除”命令时被复位。8279的命令字是以D7,D6和D5为特征位的。在通过8279的状态/命令口时会根据其特征位自动分配到相应的控制寄存器中。(9)8279的状态字状态字主要是用于表征键盘和选通方式下,FIFORAM中的状态,使用与查询是否发生传感器操作(按键)和有无错误发生。DU:显示无效特征位。当8279的显示RAM因清除或全清操作还未完成时,DU=1。S/E:传感器信号结束/错误特征位。8279在传感器方式时,S/E=1表示最后一个信号已经进入传感器RAM中。而8279在特殊的错误方式时,S/E=1表示发生了多键同时按下的错误。O、U:超出和不足错误特征位。当FIFORAM已满时,若还有键盘数据输入时就发生错误,此时O=1;当FIFORAM已经置空,CPU还想读数据则会出现不足错误,U=1。F:若F=1表示FIFORAM已经满.NNN:表征FIFORAM中的字符数,最多8个。DUS/EOUFNNND7D6
D5D4
D3
D2D1D0返回
ORG0000HSTART: LJMPMAIN ORG0013HLJMPPKEYI ORG0030HMAIN: MOVSP,#60H ;主程序 MOV70H,#00 ;设置显示缓冲区初值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度电线电缆产品生产设备升级改造合同
- 数字化服务效能
- 肝炎康复丸临床试验分析
- 2024年度电子商务平台的汽车行业合作合同
- 解读人工智能在软件开发中的应用
- 2024年度影视制作团队租赁合同
- 2024版林业发展:木屑采集权转让合同
- 2024年度货物买卖合同(含特定产品规格)
- 2024年度消防云平台建设与运营服务合同
- 2024年度销售合同中的销售数量与价格调整机制
- 山东省济宁市-八年级(上)期中数学试卷-(含答案)
- 中小学-珍爱生命 远离毒品-课件
- 金融学期末试卷及答案
- 奢沟小学2024年春季学期法治副校长进校园开展安全、法制知识讲座实施方案
- 道法珍惜师生情谊教学课件 2024-2025学年统编版道德与法治七年级上册
- 奇妙的透镜说课课件-2024-2025学年沪粤版物理八年级上学期
- 农民工欠薪调解协议书模板
- 2024至2030年中国消防行业市场发展规模及投资机会分析报告
- 商铺出售回购协议书范本
- 港口液体危化品装卸管理人员理论考试题库-上(单选题)
- 电玩城消防应急疏散预案
评论
0/150
提交评论