Download presentation
Presentation is loading. Please wait.
Published byDjaja Lie Modified 6年之前
1
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构 常用的显示器结构如图所示: A.共阳极显示器
2
B.共阴极显示器 2.显示器的工作方式: A.静态显示方式 所谓静态显示,是指显示器显示一字符时,相应的 发光二极管恒定地导通或截止。这种显示方式的每 一个数码显示器,需要一个8位输出口控制。所以 硬件较多,但字符较亮。
3
a.采用8位锁存器74LS273作为静态显示器接口
4
b.采用移位寄存器74LS164作为静态显示器接口
5
MCS-51串行口工作于方式0输出 显示段码:F9H 显‘1’ 更新显示器子程序: DIR:MOV R7,#08H MOV R0,#7FH DL0:MOV ADD A,#0BH MOVC MOV SBUF,A DL1:JNB T1,DL CLR T DEC R DJNZ R7,DL RET TAB: DB C0H,F9H,A4H,B0H,99H
6
B.动态显示方式 所谓动态显示是指一位一位地轮流点亮各位显示器。 对于每一位显示器来说,每隔一段时间点亮一次, 通常点亮时间为1mS左右,相隔时间为20mS 6位共阴显示器和8155的接口逻辑如图所示:
7
其中:8155 A口作为段数据口,8155A口扫描输出总 是只有一位为高电平。 对于6位显示器,在MCS-51RAM中,设置了6个单元的显 示缓冲区即79H-7FH,它用来存放显示数据。 更新显示器子程序如下: DIR:MOV R0,#79H MOV R3,#01H MOV A,R LD0:MOV DPTR,#7F01H MOVX @DPTR,A INC DPTR MOV ADD A,#0DH MOVC
8
DIR1:MOVX @DPTR,A ACALL DL1 INC R0 MOV A,R3 JB ACC
DIR1:MOVX @DPTR,A ACALL DL INC R MOV A,R JB ACC.5,LD RL A MOV R3,A SJMP LD LDI:RET DSEG:DB 3FH,06H,5BH, DL1:MOV R7,#02H DL:MOV R6,#FFH DL6:DJNZ R6,DL DJNZ R7,DL RET
9
二、拨码盘接口 1.BCD拨码盘的构造 BCD拨码盘具有0~9十个位置,每个位置都有相应 的指示,一个拨码盘可以输入1个十进制数据。每 个BCD拨码盘后面有5位引出线,其中一位为输入控 制线(编号为A),另外4位是数据线(编号为8,4,2,1)。 拨码被拨到某一个位置时,输入控制线(A)分别与4 位数据线中的某几位接通。如果把接通的位定义为1, 不通的线定义为0,则拨码盘数据线的状态就是拨盘 位置所指示的BCD码。
10
2.接口电路
11
3. 拨码盘数据输入程序 INBCD:MOV R0,#30H MOV A,P1 MOV P1,#7FH XCHD A, @RO
3.拨码盘数据输入程序 INBCD:MOV R0,#30H MOV A,P MOV P1,#7FH XCHD MOV A,P RET SWAP A MOV @R0,A MOV P1,#0BFH MOV A,P XCHD INC R MOV P1,#0DFH MOV A,P XCH MOV P1,#0EFH
12
三、键盘接口 键盘是由若干个按键组成的开关矩阵,它是单片机 最简单的输入设备,操作员可以通过键盘输入数据 或命令,实现人机通信。 1.键盘工作原理 一个4X4的键盘结构如图所示:
13
A.按键与否的判别 我们使所有行为低自列线读入数据,若列线中有一位 为低,则可判为有键按下,否则全为高为无键按下。 B.按键的识别 由于矩阵网络上每一个键都可以由它所在的行与列 来定位。所以,我们可使第一行至第四行逐行为低, 通过读入数据来识别是何键按下。 例如:当使行2为低,读入列值时,其列2值为低, 则可判是键5按下。
14
C.键抖动及消除 键按下和释放时存在着机械抖动,其对应的列线电 压波形如图示,通常抖动时间为5-10mS。
为了保证CPU对键的闭合只作一次处理,必须消除抖 动,消除抖动可采用硬件方法即用R-S触发器隔离, 但为了节省硬件,目前都用软件方法来实现,即增 加一延时程序,在键稳定闭合和断开时才去读取键 的状态。
15
2.键盘接口电路
16
3.键输入程序 A.键输入程序功能 a.判别键盘上有无键闭合 使PA0-7输出为“0”,读PC口,若PC0-3为全“1”, 则无键闭合,否则为有键闭合。 b.消键抖动 当判别到有键闭合时,延时10mS 后再判别键盘状 态,若仍有键闭合,则为有键按下,否则认为是键 的抖动。 c.确定闭合键的键号 设第一列至第四列的列值为00H、08H、10H、18H 则键号 N=行号+列值 d.对键的一次闭合仅作一次处理 等待闭合键释放后进行键处理。
17
e.各按键对应的键值如下:
18
B.程序清单: KEY1:ACALL KS1 KS1:MOV DPTR,#7F01H
B.程序清单: KEY1:ACALL KS KS1:MOV DPTR,#7F01H JNZ LK MOV A,#00H NI:ACALL DIR MOVX @DPTR,A AJMP KEY INC DPTR LK1:ACALL DIR INC DPTR ACALL DIR ACALL KS CPL A JNZ LK ANL A,#0FH ACALL DIR RET AJMP KEY1 LK2:MOV R2,#FEH MOV R4,#00H LK4:MOV DPTR,#7F01H MOV A,R MOVX @DPTR,A
19
INC DPTR LK3: ACALL DIR. INC DPTR. ACALL KS1. MOVX A,@DPTR JNZ LK3
INC DPTR LK3: ACALL DIR INC DPTR ACALL KS1 MOVX JNZ LK JB ACC.0, LONE POP ACC MOV A, #00H RET AJMP LKP NEXT:INC R4 LONE:JB ACC.1, LTW MOV A, R2 MOV A, #08H JNB ACC.7,KND AJMP LKP RL A LTWO: JB ACC.2, LTHR MOV R2, A MOV A, #10H AJMP LK AJMP LKP KND: AJMP KEY1 LTHR:JB ACC.3, NEXT MOV A, #18H LKP:ADD A, R PUSH ACC
20
C.键输入程序的改进 前面程序主要存在以下问题: a.无键按下,程序将进入死循环 b.按键不抬起,程序也将进入死循环,且显示不亮。 c
C.键输入程序的改进 前面程序主要存在以下问题: a.无键按下,程序将进入死循环 b.按键不抬起,程序也将进入死循环,且显示不亮。 c. 键位置不能灵活放置。 键输入程序可作如下更改: ST: MOV DPTR,#7F01H LK0:CLR 00H MOV A,#00H LK1:MOV A,#FFH MOVX @DPTR,A RET INC DPTR INC DPTR MOVX CPL A ANL A,#0FH JNZ LK2
21
LK2:ACALL DIR ACALL DIR MOV R2,#08H MOV R3,#FEH LK3:MOV DPTR,#7F01H MOV A,R MOVX @DPTR,A RL A MOV R3, A INC DPTR INC DPTR MOVX CPL A ANL A,#0FH JNZ LK DJNZ R2,LK3
22
SJMP LK LK4:SWAP A ORL A,R MOV B,A JB 00H,LK MOV DPTR,#TAB MOV R3,#1FH LK5:MOV A,R MOVC CJNE A,B,LK LK6:SETB 00H MOV A,R RET LK7:DJNZ R3,LK SJMP LK TAB:DB 88H,48H,47H,…
23
d.各按键对应的键值与键号如下:
Similar presentations