1、键盘显示接口扩展 MPUINT0INT1T0K1K2K3VCC1独立式按键接口结构独立式按键接口结构图图5.5 独立式按键的接口电路示意图独立式按键的接口电路示意图(a) 中断方式;中断方式;(b) 查询方式查询方式 2独立式按键的软件结构独立式按键的软件结构 下面是查询方式的键盘程序。K0K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0PROM7分别为每个按键的功能程序。设I/O为P1口。START:MOV A,#0FFH ; MOV P1,A ;置P1口为输入状态 MOV A,P1 ;键状态输入 JNB ACC.0,K0 ;检测0号键是否按下,按下转 JNB ACC
2、.1,K1 ;检测1号键是否按下,按下转 JNB ACC.2,K2 ;检测2号键是否按下,按下转 JNB ACC.3,K3 ;检测3号键是否按下,按下转 JNB ACC.4,K4 ;检测4号键是否按下,按下转 JNB ACC.5,K5 ;检测5号键是否按下,按下转 JNB ACC.6,K6 ;检测6号键是否按下,按下转 JNB ACC.7,K7 ;检测7号键是否按下,按下转 JMP START ;无键按下返回,再顺次检测K0:LJMP PROM0K1:LJMP PROM1 K7:LJIMP PROM7;入口地址表 PROM0: ;0号键功能程序 JMP START ;0号键功能程序执行完返回P
3、ROM1: ;0号键功能程序 JMP START ;1号键功能程序执行完返回 ;7号键功能程序PROM7: JMP START ;7号键功能程序执行完返回4.1 按键、键盘及其接口按键、键盘及其接口4.1.1 键输入过程与软件结构键输入过程与软件结构图4.1 MCS51单片机键输入过程 4.1.2 键盘接口和键输入软件中应解决的几个问题键盘接口和键输入软件中应解决的几个问题 1消除键抖动消除键抖动键稳定键按下后沿抖动前沿抖动图4.2 键合断时的电压抖动图4.3 消除键抖动电路 硬件去抖动电路还可用单稳态触发器实现去抖动功能,P140图4.2-3 (b)键稳定键按下后沿抖动前沿抖动键合断时的电压
4、抖动波形2键编码及键值键编码及键值 (1) 用键盘连接的I/O线的二进制组合表示键码。例如用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。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。图5.4 行列式键盘的编码与键值 (a) 二进制组合编码;(b) 顺序排列编码 (2) 顺序排列键编码。如图5.4(b)所示。这种方法,键值的形成要根据I/O线的
5、状态作相应处理。键码可按下式形成:键码=行首键码+列号 3键盘的监测方法键盘的监测方法 对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。4.1.4 行列式键盘行列式键盘 行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如44的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。 1行列式键盘的接口行列式键盘的接口 行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘
6、、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用。图5.6 8155扩展I/O口组成的行列式键盘 2键盘工作原理键盘工作原理 按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5 V,被箝位在高电平状态。 对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。 键扫描方法:列输出全扫描字(00H),读入行的状态,如全为1则没有键按下,如不全为“1”,则有键按下。 键的识别方法:逐列输出列扫描字(本列为0,其它列为1)读入行的状态,如全为1则所按的键不在此列中,如不
7、全为“1”,则所按下的键在0所在的列与行的交叉点上。 键盘的检测方法:可采用查询工作方式、定时扫描工作方式和中断工作方式。 1) 查询工作方式 键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。 键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出0,置对应的列线为低电平,然后从PC口读入行线状态,如果全为1,则所按下之键不在此列;如果不全为1,则所按下的键必在此列,而且是与0电

8、平行线相交的交点上的那个键。 为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为0的行首键码加列号的办法计算。8155扩展I/O口组成的行列式键盘 例:编一程序读出所按下键的键号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时有
9、键按下键盘扫描子程序如下:SCANKEY:ACALL KS1 ;调用判断有无键按下子程序 JZ SCANKEY ;无键按下返回.LK1:ACALL TM12S ;有键按下时,调12 ms延时子程序 ACALL KS1 ;查有无键按下,若有则真有键按下 JZ SCANKEY ;不是真有键按下,返回 ;键(A) 0逐列扫描 LK2;MOV R2,#0FEH ;初始列扫描字(0列)送入R2 MOV R4,#00H ;初始列(0列)号送入R4 LK4:MOV DPTR,#7F01H ;DPTR指向8155PA口 MOV A,R2 ;列扫描字送至8155PA口 MOVX DPTR,A INC DPTR
10、;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;从8155 PC口读入行状态 JB ACC.0,LONE ;查第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,行首键码#00HA AJMP LKP ;转求键码LONE:JB ACC.1,LTWO ;查第1行无键按下,转查第2行 MOV A,#08H ;第1行有键按下,行首键码#08HA AJMP LKP ;转求键码LTWO:JB ACC.2,LTHR ;查第2行无键按下,转查第3行 MOV A,#10H ;第2行有键按下,行首键码#10HA AJMP LKP ;转求键码LTHR:JB ACC.3,NE
11、XT ;查第3行无键按下,转该查下一列 MOV A,#18H ;第3行有键按下,行首键码#18HALKP:ADD A,R4 ;求键码,键码=行首键码+列号 PUSH ACC ;键码进栈保护LK3:ACALL KS1 ;等待键释放 JNZ LK3 ;键未释放,等待 POP ACC ;键释放,键码A RET ;键扫描结束,出口状态(A)=键码NEXT:INC R4 ;准备扫描下一列,列号加1 MOV A,R2 ;取列号送累加器A JNB ACC.7,KEND ;判断8列扫描否?扫描完返回 RL A ;扫描字左移一位,变为下一列扫描字 MOV R2,A ;扫描字送入R2 AJMP LK4 ;转下一列
12、扫描KEND:AJMP KEY1 TM12ms:MOV R7,#18H ;延时12 ms子程序TM1: MOV R6,#0FFHTM6 : DJNZ R6,TM6 DJNZ R7,TM1 RET2) 定时扫描工作方式键盘上有键闭合否开 始KM=1KP=1返 回1 KM0 KM0 KP图5.8 定时扫描方式程序框图查询键码1 KPNNNYYY 3) 中断工作方式 计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中
13、断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图5.5(a)。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键盘程序。4.2 显示及显示器接口显示及显示器接口4.2.1 LED显示器结构与原理显示器结构与原理图图5.9 七段显示块管脚与结构图七段显示块管脚与结构图 表表5.1 七段七段LED的段选码的段选码 显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1
14、H67DH82H31HCEH707HF8Hy6EH91H87FH80H8.FFH00H96FH90H“灭”00HFFHA77H88HB7CH83H 4.2.2 LED显示器与显示方式显示器与显示方式图5.10 N位LED显示器 1LED静态显示方式静态显示方式 LED工作在静态显示方式下,共阴极接地或共阳极接+5 V;每一位的段选线(ag、dp)与一个8位并行I/O口相连,如图5.10所示。该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。

15、N位静态显示器要求有N8根I/O口线,占用I/O口线较多。故在位数较多时往往采用动态显示方式。2LED动态显示方式动态显示方式图5.11 8位LED动态显示器电路 七段译码器BCD码动态扫描时序图返回总电流为50mADS4DS3DS2DS1DS0DS4DS3DS2DS1DS000H 01H 02H 03H 04H万位 仟位 佰位 十位 个位位扫描万位仟位佰位十位个位BCD码返回上一次返回4.2.3 LED显示器接口显示器接口1硬件译码显示器接口硬件译码显示器接口地址译码和字段ROM阵列bcdefgh+iaVCR29098434锁存器5A6B9C10D7LE12111314151216VDDVS
16、S11111111111111图图5.12 MC14495内部逻辑与引脚图内部逻辑与引脚图图5.13 使用MC14495的多位LED静态显示接口 硬件译码显示器接口(硬件译码显示器接口(2)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 RET30H31H32HMAIN: MOV SCON,#000
17、00000B MOV PCON,#00H LCALL DIS .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 TI,$ CLR TI INC R0 DJNZ R2,DIS2 RET2软件译码显示器接口软件译码显示器接口图图5.14 通过扩展通过扩展8155 I/O口控制的口控制的8位位LED动态显示接口动态显示接口 3动态显示程序设计:动态显示程序设计:78H7FH为显示缓冲器为显示缓冲器MAIN:MOV
18、 A,#00000011B ;8155初始化 MOV DPTR,#7F00H ;使DPTR指向8155控制寄存器端口 MOVX DPTR,AMA1: LCALL DISPLAY SJMP MA1DISPLAY: MOV R0,#78H ;动态显示初始化,使R0指向缓冲区首址 MOV R3,#7FH ;首位位选字送R3 MOV A,R3 ;LD0:MOV DPTR,#7F01H ;使DPTR指向PA口 MOVX DPTR,A ;选通显示器低位(最右端一位) INC DPTR ;使DPTR指向PB口 MOV A,R0 ;读要显示数 ADD A,#DATA ;调整距段选码表首的偏移量 MOVC A,
19、A+PC ;查表取得段选码 MOVX DPTR,A ;段选码从PB口输出 ACALL DL1 ;调用1 ms延时子程序 INC R0 ;指向缓冲区下一单元 MOV A,R3 ;位选码送累加器A JNB ACC.0,LD1 ;判断8位是否显示完毕,显示完返回 RR A ;未显示完,把位选字变为下一位选字 MOV R3,A ;修改后的位选字送R3 AJMP LD0 ;循环实现按位序依次显示LD1: RETADD A,#0DHDSEG:DB 3FH,06H,5BH;4FH,66H,6DH,7DH ;段码表 DB 07H,7FH,6FH,77H,7CH,39H,5EH,79HDL1:MOV R7,#0
20、2H ;延时子程序DL: MOV R6,#0FFHDL0:DJNZ R6,DL6 DJNZ R7,DL RET4.2.4 键盘、显示器组合接口键盘、显示器组合接口1)键盘、显示器组合接口电路)键盘、显示器组合接口电路 图5.15是一个采用8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了32个键。如果多使用PC口线,可以增加按键,最多可达88=64个键。可根据需要进行设置。 LED显示器采用共阴极。段选码由8155 PB口提供,位选码由PA口提供。键盘的列输入由PA口提供,与显示器的位选输入公用,行输入由PC0PC3提供。显然,因为键盘与显示器公用了PA口,比单独接口节省了一个I/O
21、口。1用通用的用通用的I/O口扩展键盘、显示接口电路口扩展键盘、显示接口电路图图5.15 8155扩展扩展I/O口的键盘、显示器组合接口口的键盘、显示器组合接口 2)软件设计)软件设计 LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。 相应的程序如下:KD1:MOV A,#03H ;初始化8155PA、PB口为基本输出,PC口为输入 MOV DPTR,#7F00H MOVX DPTR,AKEY1:ACALL KS1 JNZ LK1 ACALL DISPLAY ;调用显示子

22、程序实现延时,防止抖动引起按键拒认 AJMP KEY1 ;延时后再检测键盘 LK1:ACALL DISPLAY ;调用两次显示实现延时,防止抖动引起误处理 ACALL DISPLAY ACALL KS1 JNZ LK2 ACALL DISPLAY AJMP KEY1LK2:MOV R2,#07FH MOV R4,#00H LK4:MOV DPTR,#7F02H MOV A,R2 MOVX DPTR,A INC DPTR MOVX A,DPTR JB ACC.0,LONE MOV A,#00H AJMP PADDLONE:JB ACC.1,LTWO MOV A,#08H AJMP PADDLTW
23、O:JB ACC.2,LTHR MOV A,#10H AJMP PADDLHR: JB ACC.3,NEXT MOV A,#18HPADD: ADD A,R4 PUSH ACCLK3:ACALL DISPLAY ACALL KS1 JNZ LK3 POP ACC RETNEXT:INC R4 MOV A,R2 JNB ACC.0,KEND RR A MOV R2,A AJMP LK4 KEND:AJMP KEY1 8279 OUTB0OUTB3OUTA0OUTA3 / CS SL0SL1SL2SL3DB0 : DB7 驱动电路3-8译码器由可编程键盘/显示芯片8279 构成的8位LED数码管动
24、态显示电路框图所有的“动态显示和键盘扫描”均有8279 内部自动完成。返回上一次FIFO/传感器RAM状态键盘抖动和控制I/O控制 数据缓冲器8*8FIFO/传感器RAM控制和时序寄存器显示地址寄存器16*8显示用RAM回送扫描计数器时序和控制显示寄存器 OUTA03、OUTB03 /BD SL03 RL07 移位控制 CLK RESET DB07 /RD /WR /CS A0 IRQ返回前一次返回返回电路图逻辑结构图电路图逻辑结构图返回逻辑结构图电路图D7 D6 D5 D0命令字特征位 000111D7 D6 D5 D4 D3 D2 D1 D0命令字特征位 显示工作方式 键盘工作方式 左入口
25、:填入式打字机模式右入口:移位式计算器模式显示RAM地址0000显示RAM地址0000显示RAM地址0000显示RAM地址0000数码管位置写第1个数写第2个数写第8个数写第1个数写第2个数写第8个数数码管数码管D7 D6 D5 D4 D3 D2 D1 D0命令字特征位 对输入信号CLK的分频系数D7 D6 D5 D4 D3 D2 D1 D0命令字特征位 地址自动增量 FIFO RAM地址 D7 D6 D5 D4 D3 D2 D1 D0命令字特征位 地址自动增量 显示 RAM地址 D7 D6 D5 D4 D3 D2 D1 D0命令字特征位 地址自动增量 显示 RAM地址 D7 D6 D5 D4
26、 D3 D2 D1 D0 命令字特征位 屏蔽显示控制 消隐控制 电路图8279 OUTB0OUTB3OUTA0OUTA3 / CS SL0SL1SL2SL3DB0 : DB7 3-8译码器BCDI七段BCDI七段D7 D6 D5 D4 D3 D2 D1 D0命令字特征位 清除“显示RAM”的方式 清空FIFO 总清 D7 D6 D5 D4 D3 D2 D1 D0 命令字特征位 屏蔽显示控制D7 D6 D5 D4 D3 D2 D1 D0返回D7 D6 D5 D4 D3 D2 D1 D08279 OUTB0 : OUTB3OUTA0: OUTA3SL0SL1SL2A0/RD/WR/CSDB0DB1
27、DB2DB3DB4DB5DB6DB7RL0RL1RL2RL3RL4RL5RL6RL7 字符驱动电路A y0B y1C y2 y3y4y5y6y7位扫描驱动电路adp74LS07+5VRL0RL1RL2RL3RL4RL5RL6RL71023456789ABCDEFF1F2F3F4F5F6F774LS138 74LS07由8279构成的键盘扫描和动态显示电 路原理图8155字符驱动器位扫描驱动器位扫描驱动器字符驱动器+5V+5V电流I电流ILED字划(亮)LED字划(灭)上拉限流电阻R字符驱动器输出“1”时,输出端开路 字符驱动器输出“0”时输出为低上拉限流电阻R返回此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢




