单片机第10章89C51与键盘显示器接口教材课程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/8/6
2020/8/6
图10-7
图10-8为82C55扩展I/O口的独立式按键接口电路。
2020/8/6
图10-8
2. 行列式(矩阵式)键盘接口 用于按键数目较多的场合,由行线和列线组成,按键位于
行、列的交叉点上。如图10-9所示。
图10-9 按键数目较多的场合,行列式键盘与独立式键盘相比, 要节省很多的I/O口线。
2020/8/6
图10-11
89C51外扩一片8155H。RAM地址: 7E00H~7EFFH。 I/O口地址:7F00H~7F05H。
PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极 显示器的位扫描口。
PB口作为显示器段码输出口,PC口作为键盘的行线状态的 输入口。
75452:反相驱动器,7407:同相驱动器。
利用单片机内的定时器,产生10ms的定时中断,对键盘进行 扫描。 3.中断工作方式
只有在键盘有键按下时,才执行键盘扫描程序,如无键按 下,单片机将不理睬键盘。
键盘所做的工作分为三个层次。
2020/8/6
第1层:单片机如何来监视键盘的输入。三种工作方式:①编 程扫描②定时扫描③中断扫描。
第2层:确定具体按键的键号。体现在按键的识别方法上就 是:①扫描法;②线反转法。
1.动态显示程序设计 内部RAM 6个显示缓冲单元:79H~7EH,存放要显示的6位数
据。 81C55的PB口输出相应位的段码,依次改变PA口输出为高的位使
某一位显示某一字符,其它位为暗。动态地显示出由缓冲区 中显示数据所确定的字符。
2020/8/6
参考程序:
DIR: MOV R0,#79H ;置缓冲器指针初值
方法:对键盘的列线进行逐列扫描,扫描口PA0~PA7依次输 出下列编码,即只有一列为低电平,其余各列为高电平:
2020/8/6
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
1
11
1
1
1
1
01111 Nhomakorabea1
1
0
1
1
11
1
1
0
1
1
…… …… ……
1
01
1
1
1
1
1
0
11
1
1
1
1
1
相应地,依次读PC口的状态,若PC0~PC3全为“1”,则列线为 “0”的这一列上没有键闭合。闭合键的键号等于为低电平 的列号加上行线为低电平的行的首键号。例如,PA口输出为
2020/8/6
识别键盘有无键被按下的方法,分两步进行:
第1步:识别键盘有无键按下; 第2步:如有键被按下,识别出具体的按键。
把所有列线置0,检查各行线电平是否有变化,如有变化, 说明有键按下,如无变化,则无键按下。
上述方法称为扫描法,即先把某一列置低电平,其余各列 为高电平,检查各行线电平的变化,如果某行线电平为低,可 确定此行列交叉点处的按键被按下。
;调用判有无键闭合子程序
JNZ LK2
;经去抖,判键确实闭合,跳LK2
ACALL DIR
;调用显示子程序延迟6ms
AJMP KEYI
;抖动引起,跳KEYI
LK2: MOV
R2,#0FEH ;列选码→R2
MOV 2020/8/6
R4,#00H ;R4为列号计数器
LK4: MOV DPTR,#7F01H ;列选码→81C55的PA口
2020/8/6
DB 31H,6EH,1CH,23H,40H,03H DB 18H,00H
DL1ms: MOV
DL:
MOV
DL6:
DJNZ
DJNZ
RET
2.键盘程序设计
R7,#02H R6,#0FFH R6,DL6 R7,DL
;延时1ms子程序
(1)判别键盘上有无键闭合
(2)去除键的机械抖动
(3)判别闭合键的键号
ACALL KS1
JNZ LK3
POP
A
RET 2020/8/6
;调用判有无键闭合子程序,延时 ;6ms ;判键释放否,未释放,则循环 ;键已释放,键号出栈→A
NEXT:INC R4 ;列计数器加1,为下一列扫描作准备 MOV A,R2 ;判是否已扫到最后一列(最右一列) JNB Acc.7,KND ;键扫描已扫到最后一列,跳KND,
表10-1
按上述格式,8段LED的段码如表10-2所示。
2020/8/6
表10-2只列出了部分段码,可根据实际情况选用,也可重 新定义。
2020/8/6
10.1.2 LED显示器工作原理 图10-2是4位 LED显示器的结构原理图。
图10-2 N个LED显示块有N位位选线和8×N根段码线。
2020/8/6
LONE:JB Acc.1,LTW0 ;1行线为高,无键闭合,跳LTW0,
;转判2行
MOV A,#08H
;1行有键闭合,首键号8→A
AJMP LKP
2020/8/6
LTW0:JB A.2,LTHR MOV A,#10H
;2行线为高,无键闭合,跳 ;LTHR,转判3行
;2行有键闭合,首键号10H→A
10.2.3 键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输入,取
决于键盘的工作方式。
2020/8/6
原则:即要保证能及时响应按键操作,又不要过多占用CPU的 工作时间。
通常,键盘工作方式有3种,即编程扫描、定时扫描和中断 扫
描。 1. 编程扫描方式
只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。
常用的LED显示器为8段(或7段,8段比7段多了一个小数点 “dp”段)。
有共阳极和共阴极两种。如图10-1所示。
2020/8/6
2020/8/6
图10-1
为使LED显示不同的符号或数字,要为LED提供段码(或称字 型码)。 提供给LED显示器的段码(字型码)正好是一个字节(8段)。 各段与字节中各位对应关系如表10-1。
2020/8/6
图10-6
2. 按键的确认 检测行线电平
高电平:断开;低电平:闭合, 3.如何消除按键的抖动
常用软件来消除按键抖动。 基本思想:检测到有键按下,键对应的行线为低,软件延时 10ms后,行线如仍为低,则确认该行有键按下。
当键松开时,行线变高,软件延时10ms后,行线仍为高,说 明按键已松开。
2020/8/6
11111101时,读出PC0~PC3为1101,则1行1列相交的键处于闭 合状态,第一列的首键号为8,列号为1。因此,闭合键的键
号N为 N=行首键号+列号=8+1=9
(4)使CPU对键的一次闭合仅作一次处理 键盘程序的流程如图10-12。
2020/8/6
2020/8/6
图10-12
采取以上措施,躲开了两个抖动期t1和t3的影响。
2020/8/6
10.2.2 键盘接口的工作原理 独立式按键接口和行列式键盘接口。 1.独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过检测输入
线的电平状态可很容易判断那个键被按下。 此种接口适于键数较少或操作速度较高的场合。 图10-7(a)为中断方式的独立式键盘工作电路 图10-7(b)为查询方式的独立式键盘工作电路。
2020/8/6
(1)行列式键盘工作原理
无键按下,该行线为高电平,当有键按下时,行线电平 由列线的电平来决定。
由于行、列线为多键共用,各按键彼此将相互发生影响, 必须将行、列线信号配合起来并作适当的处理,才能确定闭合 键的位置。 (2)按键的识别方法
a. 扫描法
图10-9(b)中3号键被按下为例,来说明此键时如何被 识别出来的。
;重新进行整个键盘扫描
RL A
;键扫描未扫到最后一列,,位选码左移 ;一位
工作过程:
(1)在键盘扫描子程序中,先判断有无键按下。
方法:PA口8位输出全0,读PC口低4位状态,若PC0~PC3为全 1,则说明键盘无键按下;若不全为1,则说明键盘可能 有键按下。
2020/8/6
(2)用软件来消除按键抖动的影响。如有键按下,则进行下 一步。
(3)求按下键的键号。 (4)等待按键释放后,再进行按键功能的处理操作。 2. 定时扫描工作方式
图10-3: 4位静态LED显示器电路。该电路各位可独立显 示。
2020/8/6
图10-3
2. LED动态显示方式 所有位的段码线相应段并在一起,由一个8位I/O口控制,
形成段码线的多路复用,各位的公共端分别由相应的I/O线控制, 形成各位的分时选通。
2020/8/6
图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O 口,而位选线占用一个4位I/O口。
第3层:执行键处理程序。 10.3 键盘/显示器接口设计实例
一般把键盘和显示器放在一起考虑。
10.3.1 利用并行I/O芯片实现键盘/显示器接口 图10-11:8031用扩展I/O接口芯片81C55实现的6位LED显
示和32键的键盘/显示器接口电路。图中81C55也可用82C55来 替代。
2020/8/6
第10章 89C51与键盘、显示器、拨盘、打印机的接 口设计
输入外设:键盘、BCD码拨盘等; 输出外设:LED显示器、LCD显示器、打印机等。
10.1 LED显示器接口原理 LED(Light Emitting Diode):发光二极管的缩写。显示器 前面冠以“LED”。
10.1.1 LED显示器的结构
MOVC A,@A+PC ;根据显示数据来查表取段码
2020/8/6
DIR1:
MOVX @DPTR,A ACALL DL1ms INC R0
MOV A,R3 JB Acc.5,LD1
RL A
;段码→8155H PB口 ;该位显示1ms ;指针指向下一个数据单元 ;位选码送入A中 ;判断是否扫描到最右边的
b. 线反转法 只需两步便能获得此按键所在的行列值,线反转法的原
理如图10-10。
2020/8/6
2020/8/6
图10-10
第1步:列线输出为全低电平,则行线中电平由高变低的所在 行为按键所在行。
第2步:行线输出为全低电平,则列线中电平由高变低所在列为 按键所在列。
结合上述两步,可确定按键所在行和列。
AJMP LKP
;跳LKP,计算键号
LTHR:JB Acc.3,NEXT ;3行线为高,无键
;闭合,跳NEXT,准备下一列扫描
MOV A,#18H ;3行有键闭合,首键号18H→A
LKP: ADD A,R4
;计算键号:首键号+列号=键号
PUSH A
;键号进栈保护
LK3: ACALL DIR
;调用显示子程序,延时6ms
; LED,如到最右边则返回 ;位选码向左移一位,准备让
; 右边的下一位LED亮
MOV R3,A
;位选码送R3中保存
AJMP LD0 ;
LD1: RET
;
DSEG: DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表
DB 7DH,07H,7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H,73H,3EH
MOV R3,#01H ;位选码的初值送R3
MOV A,R3
LD0: MOV DPTR,#7F01H MOVX @DPTR,A
;位选码→PA口(PA.0位)
;最左边LED亮
INC DPTR
;数据指针指向PB口
MOV A,@R0 ADD A,#0DH
;显示数据→A
;加偏移量(下条指令到表首间 ;所有指令占的单元数)
MOV A,R2
;
MOVX @DPTR,A
;
INC DPTR
;数据指针增2,指向PC口
INC DPTR
;
MOVX A,@DPTR
;读81C55 PC口
JB Acc.0,LONE ;0行线为高,无键闭合,跳 LONE,转判1行
MOV A,#00H
;0行有键闭合,首键号0→A
AJMP LKP
;跳LKP,计算键号
2020/8/6
图10-4
图10-5为8位LED动态显示2008.10.10的过程。
图(a)是显示过程,某一时刻,只有一位LED被选通显示,其 余位则是熄灭的;
图(b)是实际显示结果,人眼看到的是8位稳定的同时显示 的字符。
2020/8/6
图10-5
10.2 键盘接口原理 1. 键盘输入的特点
键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合,其输出 波形如图10-6。
段码线控制显示的字型,
位选线控制该显示位的亮或暗。 静态显示和动态显示两种显示方式。 1. LED静态显示方式 各位的公共端连接在一起(接地或+5V)。 每位的段码线(a~dp)分别与一个8位的锁存器输出相连。
显示字符一确定,相应锁存器的段码输出将维持不变,直 到送入另一个段码为止。显示的亮度高。
键盘子程序如下:
KEYI:ACALL KS1
;调用判有无键闭合子程序
JNZ LK1
;有键闭合,跳LK1
NI: ACALL DIR
;无键闭合,调用显示子程序,延
;迟6ms后,跳KEYI
AJMP KEYI
LK1: ACALL DIR
;可能有键闭合,软件延迟12ms去抖
ACALL DIR
ACALL KS1
相关文档
最新文档