《键盘显示接口扩展.pptx》由会员分享,可在线阅读,更多相关《键盘显示接口扩展.pptx(85页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、键盘电路分为独立式按键和行列式键盘两种。独立式按键:是直接用I/O口线构成的单个按键电路,每个独立式按键单独占有一根I/O口线,每一根I/O口线上按键的工作状态不会影响其它I/O口线的工作状态。这种方式电路简单,软件也简单,但占用I/O资源多。行列式键盘:是将按键排成“行”和“列”的矩阵形式,配合软件编程,产生按键的编码。这种形式电路极为简单,占用I/O资源少,因此被广泛的应用于微机、单片机的硬件系统中。第1页/共85页独立式按键上学期的实验:利用中断引脚监测按键操作。由于每一个按键对应一个中断,所以通过不同的中断服务成程序完成不同的按键的处理。MPUINT0INT1T0K1K2K3VCC第2
2、页/共85页1独立式按键接口结构图5.5 独立式按键的接口电路示意图(a)中断方式;(b)查询方式 第3页/共85页 2独立式按键的软件结构下面是查询方式的键盘程序。K0K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0PROM7分别为每个按键的功能程序。设I/O为P1口。START:MOVA,#0FFH;MOVP1,A;置P1口为输入状态MOVA,P1;键状态输入JNBACC.0,K0;检测0号键是否按下,按下转JNBACC.1,K1;检测1号键是否按下,按下转第4页/共85页JNBACC.2,K2;检测2号键是否按下,按下转JNBACC.3,K3;检测3号键是否按下,
3、按下转JNBACC.4,K4;检测4号键是否按下,按下转JNBACC.5,K5;检测5号键是否按下,按下转JNBACC.6,K6;检测6号键是否按下,按下转JNBACC.7,K7;检测7号键是否按下,按下转JMPSTART;无键按下返回,再顺次检测K0:LJMPPROM0K1:LJMPPROM1K7:LJIMPPROM7;入口地址表第5页/共85页PROM0:;0号键功能程序JMPSTART;0号键功能程序执行完返回PROM1:;0号键功能程序JMPSTART;1号键功能程序执行完返回;7号键功能程序PROM7:JMPSTART;7号键功能程序执行完返回第6页/共85页4.1 按键、键盘及其接
4、口键输入过程与软件结构图4.1MCS51单片机键输入过程第7页/共85页键盘接口和键输入软件中应解决的几个问题 1消除键抖动键稳定键按下后沿抖动前沿抖动图4.2键合断时的电压抖动第8页/共85页图4.3消除键抖动电路硬件去抖动电路还可用单稳态触发器实现去抖动功能,P140图4.2-3(b)第9页/共85页软件去抖动方法在检测到有键按下时,先延时一定的时间之后再检测键盘的状态,避开前沿抖动区域,再读取键盘信息,可得到稳定的键信息。不同的键,抖动时间不同,但一般小于10mS。键稳定键按下后沿抖动前沿抖动键合断时的电压抖动波形第10页/共85页2键编码及键值(1)用键盘连接的I/O线的二进制组合表示
5、键码。例如用4行、4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4位口线的二进制数的组合表示16个键的编码,如图5.4(a)所示。各键相应的键值为88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。第11页/共85页图5.4行列式键盘的编码与键值(a)二进制组合编码;(b)顺序排列编码第12页/共85页(2)顺序排列键编码。如图5.4(b)所示。这种方法,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成:键码=行首键码+列号
6、3键盘的监测方法对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。第13页/共85页行列式键盘行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如44的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。1行列式键盘的接口行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比
7、较常用。第14页/共85页图5.68155扩展I/O口组成的行列式键盘第15页/共85页 2键盘工作原理按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被箝位在高电平状态。对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。键扫描方法:列输出全扫描字(00H),读入行的状态,如全为1则没有键按下,如不全为“1”,则有键按下。键的识别方法:逐列输出列扫描字(本列为0,其它列为1)读入行的状态,如全为1则所按的键不在此列中,如不全为“1”,则所按下的键在0所在的列与行的交叉点上。键盘的检测方法:可采用查询工作方式
8、、定时扫描工作方式和中断工作方式。第16页/共85页1)查询工作方式键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出0,置对应的列线为低电平,然后从PC口读入行线状态,如果全为1,则所按下之键不在此列;如果不全为1,则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。为求取键码,在逐列扫描时,可用计数器记录下当前扫描
9、列的列号,然后用行线值为0的行首键码加列号的办法计算。第17页/共85页第18页/共85页8155扩展I/O口组成的行列式键盘例:编一程序读出所按下键的键号第19页/共85页KS1:MOV DPTR,#7F01H;DPTR指向8155PA口 MOV A,#00H ;全扫描字A MOVX DPTR,A ;全扫描字送8155PA口INC DPTR ;DPTR指向8155PC口INC DPTR MOVX A,DPTR;读入PC口行状态CPL A ;变正逻辑,以高电平表示有键按下ANL A,#0FH ;屏蔽高4位,只保留低4位 ;行线值RET ;出口状态:(A)0时有键按下第20页/共85页键盘扫描子
10、程序如下:SCANKEY:ACALLKS1;调用判断有无键按下子程序JZSCANKEY;无键按下返回.LK1:ACALLTM12S;有键按下时,调12ms延时子程序ACALLKS1;查有无键按下,若有则真有键按下JZSCANKEY;不是真有键按下,返回;键(A)0逐列扫描LK2;MOVR2,#0FEH;初始列扫描字(0列)送入R2MOVR4,#00H;初始列(0列)号送入R4第21页/共85页LK4:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,R2;列扫描字送至8155PA口MOVXDPTR,AINCDPTR;DPTR指向8155PC口INCDPTRMOVXA,DPTR;
11、从8155PC口读入行状态JBACC.0,LONE;查第0行无键按下,转查第1行MOVA,#00H;第0行有键按下,行首键码#00HAAJMPLKP;转求键码LONE:JBACC.1,LTWO;查第1行无键按下,转查第2行MOVA,#08H;第1行有键按下,行首键码#08HAAJMPLKP;转求键码第22页/共85页LTWO:JBACC.2,LTHR;查第2行无键按下,转查第3行MOVA,#10H;第2行有键按下,行首键码#10HAAJMPLKP;转求键码LTHR:JBACC.3,NEXT;查第3行无键按下,转该查下一列MOVA,#18H;第3行有键按下,行首键码#18HALKP:ADDA,R
12、4;求键码,键码=行首键码+列号PUSHACC;键码进栈保护LK3:ACALLKS1;等待键释放JNZLK3;键未释放,等待POPACC;键释放,键码ARET;键扫描结束,出口状态(A)=键码第23页/共85页NEXT:INCR4;准备扫描下一列,列号加1MOVA,R2;取列号送累加器AJNBACC.7,KEND;判断8列扫描否?扫描完返回RLA;扫描字左移一位,变为下一列扫描字MOVR2,A;扫描字送入R2AJMPLK4;转下一列扫描KEND:AJMPKEY1TM12ms:MOV R7,#18H;延时12 ms子程序TM1:MOV R6,#0FFHTM6:DJNZ R6,TM6 DJNZ R
13、7,TM1 RET第24页/共85页2)定时扫描工作方式键盘上有键闭合否开始KM=1KP=1返回1 KM0 KM0 KP图5.8定时扫描方式程序框图查询键码1 KPNNNYYY第25页/共85页3)中断工作方式计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图5.5(a)。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参
14、考查询工作方式键盘程序。第26页/共85页4.2 显示及显示器接口显示器结构与原理图5.9 七段显示块管脚与结构图 第27页/共85页表5.1 七段LED的段选码显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82H31HCEH707HF8Hy6EH91H87FH80H8.FFH00H96FH90H“灭”00HFFHA77H88HB7CH83H第28页/共85页显示器与显示方式图5.10N位LED显示器第
15、29页/共85页1LED静态显示方式LED工作在静态显示方式下,共阴极接地或共阳极接+5V;每一位的段选线(ag、dp)与一个8位并行I/O口相连,如图5.10所示。该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。N位静态显示器要求有N8根I/O口线,占用I/O口线较多。故在位数较多时往往采用动态显示方式。第30页/共85页2LED动态显示方式图5.118位LED动态显示器电路第31页/共85页七段译码器BCD码动态扫描时序图返回总电流为5
16、0mADS4DS3DS2DS1DS0DS4DS3DS2DS1DS0第32页/共85页 动态扫描时序图动态扫描时序图00H 01H 02H 03H 04H万位 仟位 佰位 十位 个位位扫描万位仟位佰位十位个位BCD码返回上一次返回第33页/共85页显示器接口1硬件译码显示器接口图5.12 MC14495内部逻辑与引脚图第34页/共85页图5.13使用MC14495的多位LED静态显示接口第35页/共85页MC14499是串行接口的BCD码显示译码器,可驱动四位LED显示器。硬件译码显示器接口(2)第36页/共85页MC14499的数据格式一帧串行数据要20位。第37页/共85页MC14499的串
17、行输入时序要求第38页/共85页MC14499的典型应用-用并行接口驱动MC14499第39页/共85页以30H32H为显示缓冲区,编写显示驱动程序。CLK EQU P1.2ENB EQU P1.0DATA EQU P1.1DIS:CLR ENB CLR CLK MOV R0,#30H DIS2:MOV R2,#08H MOV A,R0 INC R0DIS1:RLC A SETB CLK MOV DATA,C CLR CLK DJNZ R2,DIS1 CJNE R0,#33H,DIS2 RET30H31H32H第40页/共85页用串行接口驱动MC14499第41页/共85页几个问题:串行接口工
18、作于什么方式?为什么?CPU的晶振频率可用到多高?8031串行接口传送数据时,是先发低位还是高位呢?与MC14499的要求是否矛盾?怎么处理?第42页/共85页MAIN:MOV SCON,#00000000B MOV PCON,#00H LCALL DIS .以以30H32H30H32H为显示缓冲区,编写显示驱动程序。为显示缓冲区,编写显示驱动程序。第43页/共85页DIS:MOV R0,#DISBUF MOV R2,#03HDIS2:MOV A,R0 MOV R3,#08HDIS1:RLC A XCH A,B RRC A XCH A,B DJNZ R3,DIS1 MOV SBUF,B JNB
19、 TI,$CLR TI INC R0 DJNZ R2,DIS2 RET第44页/共85页2软件译码显示器接口图5.14 通过扩展8155 I/O口控制的8位LED动态显示接口 第45页/共85页3动态显示程序设计:78H7FH为显示缓冲器MAIN:MOVA,#00000011B;8155初始化MOVDPTR,#7F00H;使DPTR指向8155控制寄存器端口MOVXDPTR,AMA1:LCALLDISPLAYSJMPMA1DISPLAY:MOVR0,#78H;动态显示初始化,使R0指向缓冲区首址MOVR3,#7FH;首位位选字送R3MOVA,R3;LD0:MOVDPTR,#7F01H;使DPT
20、R指向PA口MOVXDPTR,A;选通显示器低位(最右端一位)INCDPTR;使DPTR指向PB口第46页/共85页MOVA,R0;读要显示数ADDA,#DATA;调整距段选码表首的偏移量MOVCA,A+PC;查表取得段选码MOVXDPTR,A;段选码从PB口输出ACALLDL1;调用1ms延时子程序INCR0;指向缓冲区下一单元MOVA,R3;位选码送累加器AJNBACC.0,LD1;判断8位是否显示完毕,显示完返回RRA;未显示完,把位选字变为下一位选字MOVR3,A;修改后的位选字送R3AJMPLD0;循环实现按位序依次显示LD1:RETADD A,#0DH第47页/共85页DSEG:D
21、B3FH,06H,5BH;4FH,66H,6DH,7DH;段码表DB07H,7FH,6FH,77H,7CH,39H,5EH,79HDL1:MOVR7,#02H;延时子程序DL:MOVR6,#0FFHDL0:DJNZR6,DL6DJNZR7,DLRET第48页/共85页键盘、显示器组合接口1)键盘、显示器组合接口电路图5.15是一个采用8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了32个键。如果多使用PC口线,可以增加按键,最多可达88=64个键。可根据需要进行设置。LED显示器采用共阴极。段选码由8155PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,与显示器的位选输入
22、公用,行输入由PC0PC3提供。显然,因为键盘与显示器公用了PA口,比单独接口节省了一个I/O口。1用通用的I/O口扩展键盘、显示接口电路第49页/共85页图5.15 8155扩展I/O口的键盘、显示器组合接口 第50页/共85页第51页/共85页 2)软件设计LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。相应的程序如下:KD1:MOVA,#03H;初始化8155PA、PB口为基本输出,PC口为输入MOVDPTR,#7F00HMOVXDPTR,A第52页/共85页KEY
23、1:ACALLKS1JNZLK1ACALLDISPLAY;调用显示子程序实现延时,防止抖动引起按键拒认AJMPKEY1;延时后再检测键盘LK1:ACALLDISPLAY;调用两次显示实现延时,防止抖动引起误处理ACALLDISPLAYACALLKS1JNZLK2ACALLDISPLAYAJMPKEY1第53页/共85页LK2:MOVR2,#07FHMOVR4,#00HLK4:MOVDPTR,#7F02HMOVA,R2MOVXDPTR,AINCDPTRMOVXA,DPTRJBACC.0,LONEMOVA,#00HAJMPPADD第54页/共85页LONE:JBACC.1,LTWOMOVA,#08
24、HAJMPPADDLTWO:JBACC.2,LTHRMOVA,#10HAJMPPADDLHR:JBACC.3,NEXTMOVA,#18HPADD:ADDA,R4PUSHACC第55页/共85页LK3:ACALLDISPLAYACALLKS1JNZLK3POPACCRETNEXT:INCR4MOVA,R2JNBACC.0,KENDRRAMOVR2,AAJMPLK4KEND:AJMPKEY1第56页/共85页2.用串行接口扩展键盘显示接口用74164串入并出移位芯片扩展键盘显示模块,见P174图4.3-21用74164与MC14499等芯片组合产生键盘显示模块,见P178图4.3-243.用专用的
25、键盘显示芯片扩展,如8279、CH451等。第57页/共85页4.6 8279构成的动态显示电路构成的动态显示电路使用单片机或通过8255/8155构成的动态键盘扫描/数据显示电路缺点是要占用CPU的资源,以保证不断刷新动态扫描信号,这样大大的降低了单片机的使用效率。可编程键盘扫描/动态显示芯片8279是一个内部具有动态键盘扫描/数据显示功能的芯片。实现数据的动态显示:单片机将要显示的数据送到8279的RAM中即可实现动态的数据显示;自动实现键盘扫描,并将发生按键的键值自动的送出。第58页/共85页由8279构成的8位LED动态显示电路 8279 OUTB0OUTB3OUTA0OUTA3/CS
26、 SL0SL1SL2SL3DB0 :DB7 驱动电路3-8译码器由可编程键盘/显示芯片8279 构成的8位LED数码管动态显示电路框图所有的“动态显示和键盘扫描”均有8279 内部自动完成。返回上一次第59页/共85页4.74.7可编程键盘扫描可编程键盘扫描/显示芯片显示芯片8279 8279 内部结构图内部结构图FIFO/传感器RAM状态键盘抖动和控制I/O控制数据缓冲器8*8FIFO/传感器RAM控制和时序寄存器显示地址寄存器16*8显示用RAM回送扫描计数器时序和控制显示寄存器OUTA03、OUTB03/BDSL03RL07移位控制CLKRESETDB07/RD/WR/CSA0IRQ返回
27、前一次返回第60页/共85页4.8:8279内部的主要结构内部的主要结构输入输出数据缓冲器:用来接收CPU 送来得命令或数据,8279与CPU之间的数据通道。控制与时序寄存器:用来寄存显示与键盘的工作方式,并通过译码产生相应的操作。扫描计数器:用于输出动态显示和键盘的扫描信号。在“编码方式”中该电路输出二进制计数器的代码(此时外部必须使用一个译码器对其译码产生真正的扫描信号。此方式的特点:4条线可以产生多达16位扫描信号。在“译码方式”时,电路直接输出4选1的扫描信号(外部不必使用译码器),缺点是只能产生4位扫描线的信号。回复缓冲器、键盘消抖及控制:通过RL0-7用来接收键盘的数据,并自动加入
28、10mS的延时进行防抖。第61页/共85页FIFO/传感器 RAM及状态寄存器:双重功能的8*8位RAM。在键盘或选通方式中:它是FIFO寄存器。进入和读出数据是按FIFO规则进行的。此时FIFO状态字用来存放FIFO RAM的工作状态。每当FIFO不空时(由键盘数据),IRQ=1向CPU发中断申请。在传感器矩阵方式时:它又是传感器RAM。用来存放每一个传感器的状态,如果传感器的状态发生变化,则是IRQ=1向CPU发中断申请。第62页/共85页显示RAM 和显示地址寄存器:由16*8位RAM构成,可以存放16个显示用的数据。8279在动态显示数据时,就是将此RAM单元中的数据轮流从显示RAM中
29、输出。数据的输出分为两组OUTA、OUTB。它们可以单独使用也可以合并为8位。在输出RAM中的数据时,扫描电路同步的发出与位对应的显示驱动位扫描信号,以实现数据的动态显示。显示地址寄存器是寄存CPU 进行读/写的显示RAM地址,它可由命令字中的低4位来设定,也可以按照命令字中的AI的状态自动加一或自动减一。返回第63页/共85页4.9:82794.9:8279引脚说明引脚说明DB0DB7:具有三态的双向数据总线。用于8279与外部 CPU之间传递命令(控制字)和数据。CLK :系统时钟输入。用于8279内部产生工作的时序。RESET:复位信号输入端。当RESET=1时,8279被复位,复位后8
30、279内部状态如下 1,16个字符显示,左入口;2,编码扫描键盘,双键锁定;3,程序时钟编程为31。/CS:片选控制端。低电平有效;A0 :缓冲器选择端。A0=1时:若CPU对8279执行写入操 作时,写入是命令字;若CPU从8279读数据时,读出 的是8279的状态。A0=0时:写入和读出的均为数据。电路图逻辑结构图第64页/共85页/RD、/WR:读写控制线。来自CPU的控制信号,控制外部对 8279的读写操作。IRQ :中断请求信号。输出线,高电平有效。SL0SL3:扫描输出线。作为键盘、显示器的扫描信号,通过编程可定为“编码输出”(外接4-16译码器产 生16选1的扫描信号);也可设定
31、为“译码输出”直接输出选的4位扫描信号。RL0RL7:回复输入线。用来接收扫描键盘的回复信号。SHIFT:移位信号的输入线,高电平有效。该信号是8279 键盘数据的次高位(D6位),通常用来补充键盘 开关的功能,如键盘的上、下挡功能。在传感器方 式和选通方式中,SHIFT无效。电路图逻辑结构图第65页/共85页CNTL/STB:控制/选通输入线,高电平有效。键盘方式时该输入信号是键盘信号的最高位(D7),通常用来扩充键盘开关的控制功能,作为键盘控制功能键用。在传感器方式和选通方式中,CNTL无效。在选通方式中,该信号的上升沿可将来RL0RL7的数据存放到FIFO RAM中。OUTA0OUTA3
32、:A组显示输出线(接LED的eg,dp划)。OUTB0OUTB3:B组显示输出线(接LED的ad划)。上面两组线均为显示用的信息输出线,数据的输出与SL0SL7的数字扫描信号同步,实现数据的动态扫描显示。A组与B组输出线可以单独使用(如输出BCD码经外部的“BCD-七段译码器”与显示器连接);也可以将A、B两组合并使用,直接输出七段的“字形码”供显示器使用。/BD:消隐显示输出线,低电平有效。该输出信号在数字切换显示或使用显示消隐命令时,控制显示器将显示消隐。返回逻辑结构图电路图第66页/共85页4.10:82794.10:8279的命令字和状态字的命令字和状态字8279是可编程接口芯片,其工
33、作方式、工作特点等均是通过CPU向8279发送命令实现的,因此对8279的编程实际上就是向8279写入命令字的过程。8279共有8条控制字,命令字是由每个字节中的D7D5为特征区分。具体的命令字格式如下:D7 D6 D5 D0命令字特征位 000111第67页/共85页(1 1),键盘),键盘/显示方式命令字显示方式命令字D7,D6,D5=000:方式命令字的特征位。D3,D4=DD:显示工作方式设定。0 0:8位字符显示,左入口(打字机方式);0 1:16位字符显示,左入口(打字机方式);1 0:8位字符显示,右入口(计算器方式);1 1:16位字符显示,右入口(计算器方式)。0 00 00
34、 0D DD DK KK KK KD7 D6 D5 D4 D3 D2 D1 D0命令字特征位 显示工作方式 键盘工作方式 第68页/共85页显示方式的左、右入口过程示意图设向8279的显示RAM的00000111单元逐一存放07的字形码。1 12 21 11 12 23 34 45 56 67 78 81 11 12 23 34 45 56 67 78 81 12 2左入口:填入式打字机模式右入口:移位式计算器模式显示RAM地址0000显示RAM地址0000显示RAM地址0000显示RAM地址0000数码管位置写第1个数写第2个数写第8个数写第1个数写第2个数写第8个数数码管数码管第69页/共
35、85页D2,D1,D0=KKK:设定键盘工作方式。0 0 0:编码扫描键盘,双键锁定;0 0 1:译码扫描键盘,双键锁定;0 1 0:编码扫描键盘,N键轮回;0 1 1:译码扫描键盘,N键轮回;1 0 0:编码扫描传感器;1 0 1:译码扫描传感器;1 1 0:选通输入,编码显示扫描;1 1 1:选通输入,译码显示扫描;第70页/共85页【说明】:.“双键锁定”指有2个键按下时,取最后弹起的键;.“N键轮回”指有N个键按下时,根据它们按下的顺序依 次存入FIFO RAM中。.“编码输出”指按二进制计数器规律输出数据;.“译码输出”指按译码器输出的规律输出(如4选1)。第71页/共85页(2 2
36、),程序时钟命令),程序时钟命令8279内部有自己的时序电路,其时钟信号来源于外部输入的CLK,为了使输入的时钟满足内部100KHz的要求,就要对外部输入的CLK进行适当的分频。D4,D3,D2,D1,D0=PPPPP:分频系数范围:231。0 00 01 1P PP PP PP PP PD7 D6 D5 D4 D3 D2 D1 D0命令字特征位 对输入信号CLK的分频系数第72页/共85页(3 3),读),读FIFO RAMFIFO RAM命令命令FIFO RAM为存放扫描键盘时获得的“键值”数据,容量为8*8。CPU 读8279的数据口的数据时,可能有两类数据:,FIFO RAM中扫描键盘
37、时获得的“键值”数据;,显示RAM中的显示数据。所以必须事先通过命令字来选择读两者其一。D4=AI:地址增量控制。若AI=1,在每次读FIFO RAM后,地址自动+1。否则读出后,地址不变。AI的使用简化了编程,不用每读一次数据给出一个地址。0 01 10 0AIAIX XA AA AA AD7 D6 D5 D4 D3 D2 D1 D0命令字特征位 地址自动增量 FIFO RAM地址 第73页/共85页(4),读显示),读显示 RAM命令命令显示RAM用来存放8279动态显示的数据,容量16*8。在显示RAM中,数据的存放顺序与在数码管上显示的数据顺序是相对应得。因此,要显示的数据要按顺序存放
38、到显示RAM中。在8279的显示方式中有8位显示和16位显示两种,对应占用显示RAM8字节或16字节。0 01 11 1AIAIA AA AA AA AD7 D6 D5 D4 D3 D2 D1 D0命令字特征位 地址自动增量 显示 RAM地址 第74页/共85页(5),写显示),写显示RAM命令命令在向8279的数据口写入要显示的数据前,要先向8279的命令/状态口写入一个“写显示RAM”命令。其作用是通过“写显示RAM”命令设定要写入的显示数据到显示RAM中的地址。例如:当8279设定为“8位右入口”工作方式时,要显示的8位数据就要从0000地址依次写入(AI=1),这样命令字的格式为 10
39、010000B 既90H。1 10 00 0AIAIA AA AA AA AD7 D6 D5 D4 D3 D2 D1 D0命令字特征位 地址自动增量 显示 RAM地址 第75页/共85页(6),显示禁止写入显示禁止写入/消隐命令消隐命令此命令用于OUTA,OUTB分为两组4位显示方式时使用。D3,D2=IW/A,IWB:分别屏蔽A或B组的显示。如:IW/A=1时禁止写入A组显示RAM。当CPU 向8279的B组显示RAM送数时,先要把A组屏蔽掉,这样CPU送给B组的数据不会影响到A组的显示。即显示RAM的8位分为独立的高4位和低4位,分别用于OUTA(高4位)和OUTB(低4位)的输出。D1,
40、D0=BL/A,BL/B:显示输出消隐控制。如:BL/A=1时,A组显示被消隐,=0时恢复。1 10 01 1IW/AIW/AIW/BIW/BBL/ABL/ABL/BBL/BD7 D6 D5 D4 D3 D2 D1 D0 命令字特征位 屏蔽显示控制 消隐控制 电路图第76页/共85页8279 OUTB0OUTB3OUTA0OUTA3/CS SL0SL1SL2SL3DB0 :DB7 3-8译码器BCDI七段BCDI七段第77页/共85页(7),清除命令),清除命令 用来清除FIFO RAM和显示RAM,常用在对8279初始化中。D4,D3,D2=Cd,Cd,Cd:清除显示RAM的方式。1 0:全
41、部清除“显示RAM”;1 1 0:将“显示RAM”清为20H(A组0010,B组0000);1 1 1:将“显示RAM”全部清为“1”;0 0 0:不清除(若Ca=1时,D3,D2仍有效)。D1=Cf:Cf=1时,清空FIFO RAM。D0=Ca:总清位,兼有Cd,Cf的功能。Ca=1时,对显示RAM的清除取决于D3,D2 的编码。1 11 10 0CdCdCdCdCdCdCfCfCaCaD7 D6 D5 D4 D3 D2 D1 D0命令字特征位 清除“显示RAM”的方式 清空FIFO 总清 第78页/共85页(8),结束中断),结束中断/错误方式设置命令错误方式设置命令此命令有两种不同的应用
42、:,作为结束中断的命令。8279与CPU之间可以以中断方式进行工作。在传感器(键盘扫描)工作方式中,若传感器(按键)的状态发生变化时,检测电路将其状态(键值)写入FIFO RAM中,并启动中断逻辑使IRQ变高,向CPU法中断申请。如果,在读FIFO RAM数据前,写入8279的“读FIFO RAM”命令中AI=0时,在CPU读出FIFO RAM中的一个数据后,中断请求IRQ自动清除;若中AI=1时,在读出FIFO RAM中的数据后,中断请求时不能自动除,必须使用“结束中断/错误方式”命令来撤掉IRQ。1 11 11 1E ED7 D6 D5 D4 D3 D2 D1 D0 命令字特征位 屏蔽显示
43、控制第79页/共85页,作为特定的“错误方式”设定命令 针对与8279键盘处于“N键轮回”方式时使用。如果E=1就使8279处于此种工作方式。在此种方式中,如果有多个键同时按下时,FIFO的状态字中的S/E位=1并产生中断请求信号和阻止数据写入FIFO RAM中。错误特征位S/E在读出FIFO状态字时被读出,而在执行Cf=1的“清除”命令时被复位。8279的命令字是以D7,D6和D5为特征位的。在通过8279的状态/命令口时会根据其特征位自动分配到相应的控制寄存器中。第80页/共85页(9),),8279的状态字的状态字状态字主要是用于表征键盘和选通方式下,FIFO RAM中的状态,使用与查询
44、是否发生传感器操作(按键)和有无错误发生。DU:显示无效特征位。当8279的显示RAM因清除或全清操作还未完成时,DU=1。S/E:传感器信号结束/错误特征位。8279在传感器方式时,S/E=1表示最后一个信号已经进入传感器RAM中。而8279在特殊的错误方式时,S/E=1表示发生了多键同时按下的错误。DUDUS/ES/EOOU UF FN NN NN ND7 D6 D5 D4 D3 D2 D1 D0返回第81页/共85页O、U:超出和不足错误特征位。当FIFO RAM已满时,若还有键盘数据输入时就发生错误,此时O=1;当FIFO RAM已经置空,CPU 还想读数据则会出现不足错误,U=1。F
45、:若F=1表示FIFO RAM已经满.NNN:表征FIFO RAM中的字符数,最多8个。DUDUS/ES/EOOU UF FN NN NN ND7 D6 D5 D4 D3 D2 D1 D0第82页/共85页8279 OUTB0 :OUTB3OUTA0:OUTA3SL0SL1SL2A0/RD/WR/CSDB0DB1DB2DB3DB4DB5DB6DB7RL0RL1RL2RL3RL4RL5RL6RL7字符驱动电路Ay0By1Cy2y3y4y5y6y7位扫描驱动电路adp74LS07+5VRL0RL1RL2RL3RL4RL5RL6RL71023456789ABCDEFF1F2F3F4F5F6F774LS138 74LS07由8279构成的键盘扫描和动态显示电 路原理图8155第83页/共85页使用使用OCOC门输出的门输出的74LS0774LS07驱动器作字符驱动时,驱动器作字符驱动时,驱动电流驱动电流I I的路径。的路径。字符驱动器位扫描驱动器位扫描驱动器字符驱动器+5V+5V电流I电流ILED字划(亮)LED字划(灭)上拉限流电阻R字符驱动器输出“1”时,输出端开路字符驱动器输出“0”时输出为低上拉限流电阻R返回相关程序参考相关程序参考MCS-51MCS-51单片机实验讲义单片机实验讲义的实验九、实验十。的实验九、实验十。第84页/共85页感谢您的观看。第85页/共85页
限制150内