精品文档-单片机原理及应用(李建忠)-第6章

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

第6章 51 单片机的接口与应用
11
(1) 用键盘连接的I/O线的二进制组合表示键码。例如 用4行、4列线构成的16个键的键盘,可使用一个8位I/O口
线的高、低4位口线的二进制数的组合表示16个键的编码,如
图6.4(a)所示。各键相应的键值为88H、84H、82H、81H、48H、
44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。
在单片机应用系统中,为了控制系统的工作状态以及向系 统输入数据,应用系统一般都设有按键或键盘。例如,复位用 的复位键,功能转换用的功能键以及数据输入用的数字键盘等。
第6章 51 单片机的接口与应用
3
6.1.1 键输入过程与软件结构
单片机应用系统中,按键或键盘的每一键都被赋予特定的 功能,它们通过接口电路与单片机相连接,通过软件了解按键 的状态及键信息的输入,并转去执行该键的功能处理程序。键
别为每个按键的功能程序。设I/O为P1口。
第6章 51 单片机的接口与应用
18
START:MOV A,#0FFH MOV P1,A MOV A,P1 JNB ACC.0,K0 JNB ACC.1,K1 JNB ACC.2,K2 JNB ACC.3,K3 JNB ACC.4,K4 JNB ACC.5,K5 JNB ACC.6,K6 JNB ACC.7,K7 JMP START
;DPTR 指向 8155PA 口 ;全扫描字→A ;全扫描字送往 8155PA 口 ;DPTR 指向 8155PC 口
;读入 PC 口行状态 ;变正逻辑,以高电平表示有键按下 ;屏蔽高 4 位,只保留低 4 位行线值 ;出口状态:(A) ? 0 时有键按下 ;延时 12 ms 子程序
第6章 51 单片机的接口与应用
按键的合断都存在一个抖动的暂态过程,如图6.2所示。
这种抖动的暂态过程大约经过5~10 ms的时间,人的肉眼是
觉察不到的,但对高速的CPU是有反应的,可能产生误处理。
为了保证键动作一次,仅作一次处理,必须采取措施以消除抖 动。
第6章 51 单片机的接口与应用
7
图6.2 键合断时的电压抖动
第6章 51 单片机的接口与应用
第6章 51 单片机的接口与应用
9
图6.3 消除抖动电路
第6章 51 单片机的接口与应用
10
2. 键编码及键值
一组按键或键盘都要通过I/O线查询按键的开关状态。根 据键盘结构不同,采用不同的编码方法。但无论有无编码,以 及采用什么编码,最后都要转换成为与累加器中的数值相对应
的键值,以实现按键功能程序的散转。
则所按下的键必在此列,而且是与0电平行线交点上
的那个键。
第6章 51 单片机的接口与应用
26
为求取键码,在逐列扫描时,可用计数器记录下当前扫描
列的列号,然后用列线值为“0”的行首键码加列号的办法计
算。
依此原理可编写出键盘扫描子程序。键盘扫描子程序的流
程框图如图6.7所示。
第6章 51 单片机的接口与应用
27
图6.7 键盘扫描子程序流程图
第6章 51 单片机的接口与应用
28
键盘扫描子程序如下:
KEY1: ACALL KS1 JNZ LK1 AJMP KEY1
LK1: ACALL TM12S ACALL KS1 JNZ LK2 AJMP KEY1
LK2: MOV R2,#0FEH MOV R4,#00H
来判别的。其方法是:PA口输出00H,即所有列线置成低电平,
然后从PC口读取行线值。如果有键按下,总会有一根行线电平
被拉至低电平,从而使行输入不全为“1”。
第6章 51 单片机的接口与应用
25
键盘中哪一个键按下是由列线逐列置低电平后,检查行输
入状态,称为逐列扫描。其方法是:从PA0开始,依次输出 “0”,置对应的列线为低电平,然后从PC口读入行线状态, 如果全为“1”,则所按下之键不在此列;如果不全为“1”,
这种键值编码软件较为简单直观,但离散单片机的接口与应用
12
(2) 顺序排列键编码,如图6.4(b)所示。在这种方法中, 键值的形成要根据I/O线的状态作相应处理。键码可按下式形 成:
键码=行首键码+列号 3.键盘的监测方法 对于计算机应用系统,键盘扫描只是CPU工作的一部分, 键盘处理只是在有键按下时才有意义。对是否有键按下的信息 输入方式有中断方式与查询方式两种。
开关的两端。行线通过上拉电阻接 +5V电源,被箝位在高电
平状态。
键盘的工作过程可分两步:第一步是CPU首先检测键盘上
是否有键按下;第二步识别是哪一键按下。 检测键盘上有无键按下,可采用查询工作方式、定时扫描
工作方式和中断工作方式。
第6章 51 单片机的接口与应用
24
1) 查询工作方式
键盘中有无键按下是由列线送出全扫描字,读入行线状态
第6章 51 单片机的接口与应用
11
第 6 章 51 单片机的接口与应用
6.1 按键、键盘及其接口 6.2 LED显示器及其接口 6.3 LCD显示器及其接口 6.4 A/D转换器接口 6.5 D/A转换器接口 6.6 行程开关、晶闸管、继电器与单片机的接口
第6章 51 单片机的接口与应用
2
6.1 按键、键盘及其接口
;从 8155PC 口读入行状态 ;查第 0 行无键按下,转查第 1 行 ;第 0 行有键按下,行首键码 #00H→A ;转求键码
第6章 51 单片机的接口与应用
30
LONE: LTWO: LTHR: LKP:
JB ACC.1,LTWO MOV A,#08H AJMP LKP JB ACC.2,LTHR MOV A,#10H AJMP LKP JB ACC.3,NEXT MOV A,#18H ADD A,R4 PUSH ACC
第6章 51 单片机的接口与应用
20
6.1.4 行列式键盘 1.行列式键盘的接口 行列式键盘的接口方法有许多。例如:直接接口于单片机
的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O 口接口;利用一种可编程的键盘、显示接口芯片8279进行接 口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片 机应用系统中比较常用。本节针对这种方法介绍行列式键盘的 接口原理。
上的按键的工作状态不会影响其他I/O口线的工作状态。独立
式按键电路如图6.5所示。
第6章 51 单片机的接口与应用
15
图6.5 独立式按键的接口示意图 (a) 中断方式;(b) 查询方式
第6章 51 单片机的接口与应用
16
独立式按键接口电路配置灵活,软件结构简单,但每个按
键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费 较大。故在按键数量不多时,常采用这种按键结构。
8
消除抖动的措施有两种:硬件消抖和软件消抖。 硬件消除抖动可用简单的R-S触发器或单稳电路构成,如 图6.3所示。 从图可知,当键闭合时,R-S触发器输出为“0”,将与 非门1封锁,即使键抖动,不会把抖动状态反应到输出上。 软件消除抖动是用延时来躲过暂态抖动过程,执行一段大 于10 ms的延时程序后,再读取稳定的键状态。
33
调用键盘扫描子程序时,应在调用程序中对8155进行初 始化设置,使PA口为基本输出口,PC口为基本输入口。子程 序的出口状态:(A)=键码。
第6章 51 单片机的接口与应用
13
图6.4 行列式键盘的编码与键值 (a) 二进制组合编码;(b) 顺序排列编码
第6章 51 单片机的接口与应用
14
6.1.3 独立式按键
1.独立式按键接口结构 独立式按键是指直接用一根I/O口线构成的单个按键接口 方式。每个独立式按键单独占用一根I/O口线,每根I/O口线
第6章 51 单片机的接口与应用
32
KS1:
TM12ms: TM: TM6:
MOV DPTR,#7F01H MOV A,#00H MOVX @DPTR,A INC DPTR INC DPTR MOVX A,@DPTR CPL A ANL A,#0FH RET MOV R7,#18H MOV R6,#0FFH DJNZ R6,TM6 DJNZ R7,TM RET
图6.5(a)为中断方式的独立式按键接口电路,图6.5(b)
为查询方式接口电路。通常按键输入都采用低电平有效。上拉
电阻保证了按键断开时,I/O口线上有确定的高电平。
第6章 51 单片机的接口与应用
17
2.独立式按键的软件结构
下面是查询方式的键盘程序。K0~K7为功能程序入口地
址标号,其地址间隔应能容纳JMP指令字节,PROM0~PROM7分
;调用判断有无键按下子程序 ;有键按下时,(A) ? 0 转消抖延时 ;无键按下返回 ;调 12 ms 延时子程序 ;查有无键按下,若有则真有键按下 ;键(A) ? 0 逐列扫描 ;不是真有键按下返回 ;初始列扫描字(0 列)送入 R2 ;初始列(0 列)号送入 R4
第6章 51 单片机的接口与应用
29
LK4:
MOV DPTR,#7F01H MOV A,R2 MOVX @DPTR,A INC DPTR INC DPTR MOVX A,@DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP
;DPTR 指向 8155PA 口 ;列扫描字送至 8155PA 口
;DPTR 指向 8155PC 口
将该键号送入累加器A,然后通过散转指令转入执行该键的功
能程序,最后返回到原始状态。JMP @A+DPTR可以看成是键信
息输入的软件接口。
第6章 51 单片机的接口与应用
5
图6.1 51单片机键输入过程
第6章 51 单片机的接口与应用
6
6.1.2 键盘接口和键输入软件中应解决的几个问题 1. 消除键抖动
第6章 51 单片机的接口与应用
19
K0: AJIMP PROM0 K1: AJIMP PROM1
K7: AJIMP PROM7 PROM0:…

JMP START PROM1:…

JMP START
PROM7:… …
JMP START
;入口地址表
;0 号键功能程序 ;0 号键功能程序执行完返回 ;1 号键功能程序 ;1 号键功能程序执行完返回 ;7 号键功能程序 ;7 号键功能程序执行完返回
;查第 1 行无键按下,转查第 2 行 ;第 1 行有键按下,行首键码 #08H→A ;转求键码 ;查第 2 行无键按下,转查第 3 行 ;第 2 行有键按下,行首键码 #10H→A ;转求键码 ;查第 3 行无键按下,转查下一列 ;第 3 行有键按下,行首键码 #18H→A ;求键码,键码 = 行首键码 + 列号 ;键码进栈保护
第6章 51 单片机的接口与应用
31
LK3: NEXT: KEND:
ACALL KS1 JNZ LK3 POP ACC RET INC R4 MOV A,R2 JNB ACC.7,KEND RL A MOV R2,A AJMP LK4 AJMP KEY1
;等待键释放 ;键未释放,等待 ;键释放,键码→A ;键扫描结束,出口状态(A) = 键码 ;准备扫描下一列,列号加 1 ;取列扫描字送累加器 A ;判断 8 列扫描否?扫描完返回 ;扫描字左移一位,变为下一列扫描字 ;扫描字送入 R2 ;转下一列扫描
;置 P1 口为输入状态 ;键状态输入 ;检测 0 号键是否按下,按下转 ;检测 1 号键是否按下,按下转 ;检测 2 号键是否按下,按下转 ;检测 3 号键是否按下,按下转 ;检测 4 号键是否按下,按下转 ;检测 5 号键是否按下,按下转 ;检测 6 号键是否按下,按下转 ;检测 7 号键是否按下,按下转 ;无键按下返回,再顺次检测
第6章 51 单片机的接口与应用
21
图6.6是在扩展的8155的PA口和PC口上组成4×8键盘的示 例。PA口作为列线,PC0~PC3作为行线。
第6章 51 单片机的接口与应用
22
图6.6 8155扩展I/O口组成的行列式键盘
第6章 51 单片机的接口与应用
23
2. 键盘工作原理 按键设置在行、列线的交点上,行和列线分别连接到按键
盘的接口方法有多种,但键输入过程与软件结构基本是一样的。
所以,在具体介绍键盘接口之前,先介绍键输入过程与软件结
构,这样能更好地理解键盘的接口方法。
第6章 51 单片机的接口与应用
4
图6.1是51单片机应用系统的键输入软件框图。对一组键
或键盘上的每一个键都有一个编号(称为键号),CPU可以采用
中断方式或查询方式了解有无键输入,并检查是哪一个键按下,
相关文档
最新文档