- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
而形成的, “0”的段码为3FH(共阴)。反之, 如 将格式改为下列格式:
则 “0”的段码为7EH(共阴)。 字型及段码由设计者自行设定,习惯上还是以“a” 段应段码的最低位。
6
10.1.2 LED显示器工作原理 图10-2是4位 LED显示器的结构原理图。
段码线控制显示的字型, 位选线控制该显示位的亮或暗。
LJY第10章 MCS-51与键盘、显示器76318
单击此处添加副标题内容
第10章 MCS-51与键盘、显示器、拨盘、打印机的接口设 计
输入外设:键盘、BCD码拨盘等; 输出外设:LED显示器、LCD显示器、打印机等。
10.1 LED显示器接口原理 LED(Light Emitting Diode):发光二极管的缩写。
LK4:MOV DPTR,#7F01H ;列选码→8155H的PA
MOV A,R2
MOVX DPTR,A
INC DPTR
;数据指针增2,指向PC口
INC DPTR
MOVX A,DPTR;读8155H PC口
JB Acc.0,LONE;0行线为高,无键闭合,跳 LONE,转判1行
LJMP PKEY3 ;S3按下,转PKEY3处理
KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5
LJMP PKEY4 ;S4按下,转PKEY4处理
KEY5: CJNE A,#0FH,PASS ;S5未按下,转
RETURN
LJMP PKEY5 ;S5按下,转PKEY5处理
RETURN:RET
23
(2)按键的识别方法 b. 线反转法 第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。
第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。
结合上述两步,可确定按键所在行和列。
24
(3)键盘的编码 根据实际需要灵活编码。
25
10.2.3 键盘的工作方式 单片机在忙于各项工作任务时,如何兼顾键盘的输
第2层:确定具体按键的键号。体现在按键的识别方 法上就是:①扫描法;②线反转法。
第3层:执行键处理程序。
30
10.3 键盘/显示器接口设计实例 一般把键盘和显示器放在一起考虑。
10.3.1 利用并行I/O芯片实现键盘/显示器接口 图10-14:8031用扩展I/O接口芯片8155H实现的
6位LED显示和32键的键盘/显示器接口电路。图中 8155H也可用8255A来替代。
27
2. 定时扫描工作方式 利用单片机内的定时器,产生10ms的定时中断,
对键盘进行扫描。 3.中断工作方式
只有在键盘有键按下时,才执行键盘扫描程序, 如无键按下,单片机将不理睬键盘。
28
键盘所做的工作分为三个层次
29
第1层:单片机如何来监视键盘的输入。三种工作方 式:①编程扫描②定时扫描③中断扫描。
31
32
8031外扩一片8155H。 RAM地址:7E00H~7EFFH。 I/O口地址:7F00H~7F05H。
PA口为输出口,控制键盘列线的扫描,同时又是6 位共阴极显示器的位扫描口。
PB口作为显示器段码输出口,PC口作为键盘的行 线状态的输入口。
75452:反相驱动器,7407:同相驱动器。
MOVX DPTR,A
INC DPTR
;数据指针指向PB口
MOV A,R0 ;显示数据→A
ADD A,#0DH ;加偏移量(到表首间 ;所有指令占的单元数)
MOVC A,A+PC ;根据显示数据查表段码
37
DIR1: MOVX DPTR,A ;段码→8155HPB口
ACALL DL1ms ;该位显示1ms
33
1.动态显示程序设计
8031内部RAM 6个显示缓冲单元: 79H~7EH,存放要显示的6位数据。
①8155H的PB口输出相应位的段码, ②依次改变PA口输出为高的位使某一 位显示某一字符,其它位为暗。动态地显示 出由缓冲区中显示数据所确定的字符。
34
硬件资源: A口:位选线(输出) B口:段码线(输出) 8155地址分配 7F00:命令、状态 7F01:A 7F02:B 7F03:C 7F04:定时初值 7F05:定时初值
此种接口适于键数较少或操作速度较高的场合。
图10-7(a)为中断方式的独立式键盘工作电路
图10-7(b)为查询方式的独立式键盘工作电路。
14
15
图10-8为8255A扩展I/O口的独立式按键接口电路。
16
图10-9用三态缓冲器扩展的I/O口的按键接口电
路。
17
对图10-9独立式键盘编程,软件消抖,查询方式检测 键的状态。仅有一键按下时才有效才处理。
40
硬件资源: A口:列线(输出) C口:行线(输入) 8155地址分配 7F00:命令、状态 7F01:A 7F02:B 7F03:C
软件变量、资源: 列选码 R2→A口 列计数 R4
41
键盘子程序如下: KEYI:ACALL KS1;调用判有无键闭合子程序
JNZ LK1 ;有键闭合,跳LK1 NI: ACALL DIR;无键闭合,调用显示子程序,延
按上述格式,8段LED的段码如表10-1所示。
4
表10-1 LED段码(8段)
显示字符 共阴极 共阳极 显示字符 共阴极 共阳极
段码 段码
段码 段码
0
3FH C0H
c
39H C6H
1
06H F9H
d
5EH A1H
2
5BH A4H
E
79H 86H
3
4FH B0H
F
71H 8EH
4
66H 99H
P
73H 8CH
;迟6ms后,跳KEYI AJMP KEYI LK1:ACALL DIR;可能有键闭合,软件延迟12ms去抖 ACALL DIR ACALL KS1 ;调用判有无键闭合子程序 JNZ LK2;经去抖,判键确实闭合,跳LK2 ACALL DIR;调用显示子程序延迟6ms AJMP KEYI;抖动引起,跳KEYI LK2:MOV R2,#0FEH ;列选码→R2 MOV R4,#00H ;R4为列号计数器 42
当键松开时, ①行线变高,软件延时10ms后, ②行 线仍为高,说明按键已松开。
采取以上措施,躲开了两个抖动期t1和t3的影响1。3
10.2.2 键盘接口的工作原理
独立式按键接口和行列式键盘接口。
1.独立式键盘接口 各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下。
9
图10-4:4位8段LED动态显示电路。其中段码线占用 一个8位I/O口,而位选线占用一个4位I/O口。
10
图10-5为8位LED动态显示2019.10.10的过程。 图(a)是显示过程,某一时刻,只有一位LED被选通 显示,其余位则是熄灭的; 图(b)是实际显示结果,人眼看到的是8位稳定的同 时显示的字符。
入,取决于键盘的工作方式。 原则:即要保证能及时响应按键操作,又不要过多占 用CPU的工作时间。 通常,键盘工作方式有3种: 编程扫描、定时扫描和中断扫描。
26
1. 编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序,
扫描键盘。 工作过程: (1)在键盘扫描子程序中,先判断有无键按下。
(2)用软件来消除按键抖动的影响。如有键按下, 则进行下一步。 (3)求按下键的键号。 (4)等待按键释放后,再进行按键功能的处理操作。
35
软件变量、资源: 显示段码数据R0→B口 段码表 显示位选数据R3→A口 软件延时程序
36
参考程序:
DIR: MOV R0,#79H ;置缓冲器指针初值
MOV R3,#01H ;位选码的初值送R3
MOV A,R3
LD0: MOV DPTR,#7F01H;位选码→PA口(PA.0位 ;最左边LED亮
DB 7DH,07H,7FH,6FH,77H,7CH
38
DB 31H,6EH,1CH,23H,40H,03H
DB 18H,00H
DL1ms: MOV R7,#02H ;延时1ms子程序
DL:
MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
39
2.键盘程序设计 (1)判别键盘上有无键闭合 (2)去除键的机械抖动 (3)判别闭合键的键号 (4)使CPU对键的一次闭合仅作一次处理
KEYIN:MOV DPTR,#0BFFFH;键盘端口地
址
MOVX A,DPTR;读键盘状态
ANL A,#1FH ;屏蔽高三位
MOV R3,A
;保存键盘状态值
LCALL DELAY10 ;延时10ms去键盘
抖动
AMNOLVXA,A#,1DFPHTR;;屏再蔽读高键三盘位状态
CJNE A,R3,RETURN ;两次不同,抖动
;重键或无键按下,从子程序返回
识别和编程简单,用在按键数较少的场合。 19
2. 行列式(矩阵式)键盘接口 用于按键数目较多的场合,由行线和列线组成,
按键位于行、列的交叉点上。如图10-10所示。
按键数目较多的场合,行列式键盘与独立式键盘 相比,要节省很多的I/O口线。
20
(1)行列式键盘工作原理 无键按下,该行线为高电平,当有键按下时,行
11
10.2 键盘接口原理 1. 键盘输入的特点
键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合, 输出波形如图10-6。
12
2. 按键的确认
检测行线电平 高电平:断开;低电平:闭合
3.如何消除按键的抖动 常用软件来消除按键抖动。
基本思想:①检测到有键按下,键对应的行线为低, 软件延时10ms后,②行线如仍为低,则确认该行有键 按下。