第10章 MCS-51与键盘、显示器、

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2)用软件来消除按键抖动的影响。如有键按下,则 进行下一步。 (3)求按下键的键号。 (4)等待按键释放后,再进行按键功能的处理操作。 2. 定时扫描工作方式
利用单片机内的定时器,产生10ms的定时中断,对 键盘进行扫描。
3.中断工作方式 只有在键盘有键按下时,才执行键盘扫描程序,如
无键按下,单片机将不理睬键盘。
ACALL DIR
;调用显示子程序延迟6ms
AJMP KEYI
;抖动引起,跳KEYI
LK2: MOV R2,#0FEH ;列选码→R2
动态显示接口
000 001
此时同时向6位LED灯管输出相同的字符,如何 能实现显示多个不同字符?
扫描显示方式(Scan Display Mode):
某一时刻只选通一盏灯(其他5位是熄灭的),同时, 段选线上输出相应要显示的字符的段码。
下一时刻,位选信号选通下一位LED,同时,段选线 上输出相应要显示的字符的段码。
段码 37E03H09HHH 字无符显CPU示
位控 信号
1
1
1
1
1
1
图10-5为8位LED动态显示2019.10.10的过程。
MOV DPTR,#TAB;表首地址
MOVC A,A+DPTR;查表段码
MOV DPTR, #A口地址
MOVX DPTR,A;输出段码
MOV A,R4; 取位码
MOVX DPTR, #C口地址
键盘:一组按键开关的集合。 行线电压信号通过键盘开关机械触点的断开、闭合, 输出波形如图10-6。
2. 按键的确认
检测行线电平 高电平:断开;低电平:。
基本思想:检测到有键按下,键对应的行线为低,软 件延时10ms后,行线如仍为低,则确认该行有键按下。
当键松开时,行线变高,软件延时10ms后,行线仍为 高,说明按键已松开。
采取以上措施,躲开了两个抖动期t1和t3的影响。
10.2.2 键盘接口的工作原理
独立式按键接口和行列式键盘接口。 1.独立式键盘接口
各键相互独立,每个按键各接一根输入线,通过检 测输入线的电平状态可很容易判断那个键被按下。
此种接口适于键数较少或操作速度较高的场合。 图10-7(a)为中断方式的独立式键盘工作电路
DL1ms: DL: DL6:
MOV R7,#02H MOV R6,#0FFH DJNZ R6,DL6
;延时1ms子程序
DJNZ R7,DL
RET
2.键盘程序设计
(1)判别键盘上有无键闭合
(2)去除键的机械抖动
(3)判别闭合键的键号
(4)使CPU对键的一次闭合仅作一次处理
(1)判别键盘上有无键闭合
; 右边的下一位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
DB 31H,6EH,1CH,23H,40H,03H DB 18H,00H
2. 行列式(矩阵式)键盘接口
用于按键数目较多的场合,由行线和列线组成, 按键位于行、列的交叉点上。如图10-10所示。
无键按下,该行线为高电平。 当有键按下时,行线电平由列线的电平来决定
无键按下
1
10
行输入
1
1
•逐列置低电平,其余各列置为高
0
0 0 0 电平
0
1 1 1 •检查各行电平变化
1
0 1 1 •如检查出在某行线电平为低,对
通常,键盘工作方式有3种,即编程扫描、定时扫 描和中断扫描。
1. 编程扫描方式 只有当单片机空闲时,才调用键盘扫描子程序, 扫描键盘。
工作过程:
(1)在键盘扫描子程序中,先判断有无键按下。
方法:PA口8位输出全0,读PC口低4位状态,若PC0~ PC3为全1,则说明键盘无键按下;若不全为1,则说明 键盘可能有键按下。
MOVC A,A+PC ;根据显示数据来查表取段码
DIR1:
MOVX DPTR,A ACALL DL1ms INC R0
MOV A,R3 JB Acc.5,LD1
RL A
;段码→8155HPB口 ;该位显示1ms ;指针指向下一个数据单元 ;位选码送入A中 ;判断是否扫描到最右边的
; LED,如到最右边则返回 ;位选码向左移一位,准备让
LJMP PKEY1
;是K1键按下,转K1键处理 ;子程序PKEY1
KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3
LJMP PKEY2
;S2键按下,转PKEY2处理
KEY3: CJNE A,#1BH,KEY4 ;S3未按下,转KEY4
LJMP PKEY3
;S3按下,转PKEY3处理
显示字符一确定,相应锁存器的段码输出将维持 不变,直到送入另一个段码为止。显示的亮度高。
2. 动态显示方式
所有位的段码线相应段并在一起,由一个8位I/O 口控制,形成段码线的多路复用,各位的公共端分别由 相应的I/O线控制.
图10-4:4位8段LED动态显示电路。其中段码 线占用一个8位I/O口,而位选线占用一个4位 I/O口。
MOVX A,DPTR
;读键盘状态
ANL A,#1FH MOV R3,A LCALL DELAY10
;屏蔽高三位 ;保存键盘状态值 ;延时10ms去键盘抖动
MOVX A,DPTR
;再读键盘状态
ANL A,#1FH
;屏蔽高三位
CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN
CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2
第10章 MCS-51与 键盘、显示器、拨
盘、打印机的接 口设计
信息技术教研室 温川雪
输入外设:键盘、BCD码拨盘等; 输出外设:LED显示器、LCD显示器、打印机等。
10.1 LED显示器接口原理
LED(Light Emitting Diode):发光二极管的缩写。 显示器前面冠以“LED”。
10.1.1 LED显示器的结构 常用的LED显示器为8段(或7段,8段比7段多了一 个小数点“dp”段)。
为使LED显示不同的符号或数字,要为LED提供段码 (或称字型码)。
提供给LED显示器的段码(字型码)正好是一个字 节(8段)。各段与字节中各位对应关系如下:
按上述格式,8段LED的段码如表10-1所示。
表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
5
6DH
92H
U
3EH
C1H
6
7DH
82H
T
31H
CEH
7
07H
F8H
y
6EH
91H
8
7FH
80H
H
76H
89H
9
6FH
90H
L
38H
C7H
A
77FH
放要显示的6位数据。 8155H的PB口输出相应位的段码,依次改变PA口
输出为高的位使某一位显示某一字符,其它位为暗。 动态地显示出由缓冲区中显示数据所确定的字符。程 序流程如图10-15 。
位码→PA口 查表取段码 段码→PB口 位码左移 移完一遍?
结束
参考程序:
DIR: MOV R0,#79H ;置缓冲器指针初值
段码 Segment Code333747F9EF03HHHHH 字字 字 字字符符符符符8C0-PU
位选 信号
Digit Select Signal
1
1
1
1
1
1
位选信号轮流选中每位LED灯,同时段码输出对应显示器
要显示的字符。
只要实现间隔足够短,由于LED显示器的余辉和人眼视觉 残留作用,造成多位同时点亮的假象。
88H
“灭”
00H
FFH
b
7CH
83H



表10-1只列出了部分段码,可根据实际情况选用。 另外,段码是相对的,它由各字段在字节中所处的
位决定。例如表10-1中8段LED段码是按格式:
而形成的, “0”的段码为3FH(共阴)。反之,如 将格式改为下列格式:
则 “0”的段码为7EH(共阴)。 字型及段码由设计者自行设定,习惯上还是以“a”
1 111
11
10
1 111
11
01
1 111
10
…. ….
11
0 111
11
11
PC3 PC2 PC1 PC0
1
111
1
101
1
111
1
111
闭合的键号: N=行首键号+列号=8+1=9 (4)使CPU对键的一次闭合仅作一次处理
处理方法:等待闭合键释放以后再作处理。
键盘子程序如下:
KEYI:ACALL KS1
段对应段码的最低位。
10.1.2 LED显示器工作原理 图10-2是4位 LED显示器的结构原理图。
N个LED显示块有N位位选线和8×N根段码线。
段码线控制显示的字型, 位选线控制该显示位的亮或暗。 静态显示和动态显示两种显示方式。 1. 静态显示方式
各位的公共端连接在一起(接地或+5V)。 每位的段码线(a~dp)分别与一个8位的锁存器 输出相连。
;调用判有无键闭合子程序
JNZ LK1
;有键闭合,跳LK1
NI: ACALL DIR
;无键闭合,调用显示子程序,延
;迟6ms后,跳KEYI
AJMP KEYI
LK1: ACALL DIR
;可能有键闭合,软件延迟12ms去抖
ACALL DIR
ACALL KS1
;调用判有无键闭合子程序
JNZ LK2
;经去抖,判键确实闭合,跳LK2
PA0~7输出全“0”,读PC口的状态,若PC0~PC3为全“1”,则键盘上没有 闭合键,若PC0~3不全为“1”,则有键处于闭合状态。
(2)去除键的机械抖动
延迟一定时间再判别键盘状态,仍有闭合,则处于稳定闭合期,否则是抖动
(3)判别闭合键的键号
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
键盘所做的工作分为三个层次,如图10-13。
第1层:单片机如何来监视键 盘的输入。三种工作方
式:①编程扫描②定 时扫描③中断扫描。
第2层:确定具体按键的键号。 体现在按键的识别方
法上就是:①扫描法; ②线反转法。
第3层:执行键处理程序。
10.3 键盘/显示器接口设计实例 10.3.1 利用8155H芯片实现键盘/显示器接口
TAB: DB 00H,00H,00H,00H,00H
MOVX DPTR,A;输出位码 DB 39H,73H,3EH,40H
DB 7FH,3FH,6DH,06H
……
DB 00H,00H,00H,00H,00H
RL A; 左移位码
MOV R4,A; 保存新位码
……
10.2 键盘接口原理 1. 键盘输入的特点
1
1 0 1 应此时列线低电平出现位置,交
列输出
叉点处为按键按下处
按键数目较多的场合,行列式键盘与独立式键盘 相比,要节省很多的I/O口线。
10.2.3 键盘的工作方式
单片机在忙于各项工作任务时,如何兼顾键盘的输 入,取决于键盘的工作方式。
原则:即要保证能及时响应按键操作,又不要过多占 用CPU的工作时间。
MOV R3,#01H ;位选码的初值送R3
MOV A,R3
LD0: MOV DPTR,#7F01H;位选码→PA口(PA.0位)
;最左边LED亮
MOVX DPTR,A
INC DPTR
;数据指针指向PB口
MOV A,R0 ADD A,#0DH
;显示数据→A
;加偏移量(下条指令到表首间 ;所有指令占的单元数)
KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5
LJMP PKEY4
;S4按下,转PKEY4处理
KEY5: CJNE A,#0FH,PASS ;S5未按下,转RETURN
LJMP PKEY5
;S5按下,转PKEY5处理
RETURN:RET
;重键或无键按下,从子程序返回
识别和编程简单,用在按键数较少的场合。
8031外扩一片8155H。RAM地址:7E00H~7EFFH。 I/O口地址:7F00H~7F05H。
PA口为输出口,控制键盘列线的扫描,同时又是6 位共阴极显示器的位扫描口。
PB口作为显示器段码输出口,PC口作为键盘的行 线状态的输入口。
75452:反相驱动器,7407:同相驱动器。
1.动态显示程序设计 8031内部RAM 6个显示缓冲单元:79H~7EH,存
图10-7(b)为查询方式的独立式键盘工作电路。
图10-8为8255A扩展I/O口的独立式按键接口电路。
图10-9用三态缓冲器扩展的I/O口的按键接 口电路。
对图10-9独立式键盘编程,软件消抖,查询方式检
测键的状态。仅有一键按下时才有效才处理。
KEYIN:MOV DPTR,#0BFFFH;键盘端口地址BFFFH
相关文档
最新文档