任务 6 用 8255a 设计矩阵键盘 扫描 接口电路

30
微微微微微微微微微 任任 6 任 8255A 任任任任任任 任任 任任任任

Upload: scarlett-mcmillan

Post on 30-Dec-2015

292 views

Category:

Documents


1 download

DESCRIPTION

任务 6 用 8255A 设计矩阵键盘 扫描 接口电路. 工作任务描述 :. 用实验箱上 8255A 可编程并行接口芯片设计 4X4 矩阵键盘,要求在键盘上每按一个数字键,用发光二极管将代码显示出来。. 学习内容:. 一、可编程 I/O 口 8255A 扩展技术 二、键盘扫描技术. 一、可编程 I/O 口 8255A 扩展技术. (一) 8255A 的概述 (二) 8255A 的内部结构及原理 (三) 8255A 的控制字 (四) 8255A 的工作方式. (一) 8255A 的概述. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

任务 6

用 8255A设计矩阵键盘扫描 接口电路

Page 2: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

工作任务描述 : 用实验箱上 8255A 可编程并行接口芯片设计 4X4 矩阵键盘,要求在键盘上每按一个数字键,用发光二极管将代码显示出来。

Page 3: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

学习内容:一、可编程 I/O 口 8255A 扩展技术二、键盘扫描技术

Page 4: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

一、可编程 I/O口 8255A扩展技术(一) 8255A 的概述(二) 8255A 的内部结构及原理(三) 8255A 的控制字(四) 8255A 的工作方式

Page 5: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(一) 8255A 的概述 Intel8255A 是一种通用的可编程序并行I/O 接口芯片,又称“可编程外设接口芯片”,是为 Intel8080/8085 系列微处理设计的,也可用于其它系列的微机系统。可由程序来改变其功能,通用性强、使用灵活。通过 8255A , CPU 可直接同外设相连接,是应用最广的并行 I/O 接口芯片。含 3个独立的 8位并行输入 /输出端口,各端口均具有数据的控制和锁存能力。可通过编程设置各端口的工作方式和数据传送方向 (入 /出 /双向 )。

Page 6: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(二) 8255A 的内部结构及原理

8255A 的内部结构

Page 7: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(二) 8255A 的内部结构及原理1 、数据总线缓冲器:三态 8 位双向缓冲器,与系统数据总线

连接的缓冲部件;传送数据、控制字、状态字的通道。2 、 3 个 8 位数据端口 (PA 、 PB 、 PC) :通常 PA 口与 PB

口用作输入输出的数据端口, PC 口用作数据传输或提供联络线的端口。在方式字的控制下, PC 口可以分成两个4 位的端口,其中 PC7 ~ PC4 同端口 A 配合使用, PC3 ~ PC0 同端口 B 配合使用。

3 、 A 组、 B 组控制电路:这两组控制电路根据 CPU 发出的方式选择控制字来控制 8255A 的工作方式,每个控制组都接收来自读写控制逻辑的“命令”,接收来自内部数据总线的“控制字”,并向与其相连的端口发出适当的控制信号。 A 组控制电路控制 PA 口和 PC 口高 4 位, B 组控制电路控制 PB 口和 PC 口低 4 位。

4 、读 / 写控制逻辑:用来管理数据、控制字和状态字的传送,接收系统总线发来的有关信号,并向 A 、 B 两组控制部件发送命令。

Page 8: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(二) 8255A 的内部结构及原理DIP封装,共 40个引脚。一、面向 CPU 一侧的引脚信号⑴D7~ D0, 8 位,双向,三态数据线⑵RESET ,复位信号⑶CS*,片选信号⑷RD*,读信号⑸WR* ,写信号⑹A1 、 A0 ,端口选择信号

二、面向外设一侧的引脚信号( 1)端口 A: PA0~ PA7; A组,支持工作方式 0、 1、 2

;( 2)端口 B: PB0~ PB7; B组,支持工作方式 0、 1;( 3)端口 C: PC0~ PC7;仅支持工作方式 0; A组控制高 4位 PC4~ PC7; B组控制低 4位 PC0~ PC3功能:端口 A: PA0~ PA7;常作数据端口,功能最强大。端口 B: PB0~ PB7;常作数据端口。端口 C: PC0~ PC7;可作数据、状态和控制端口;分两个 4位,每位可独立操作;控制最灵活,最难掌握。

Page 9: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(二) 8255A 的内部结构及原理

Page 10: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(三) 8255A 的控制字1 、工作方式控制字

8255A 的工作方式控制字的格式,如下图:

Page 11: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(三) 8255A 的控制字2 、 C 口按位置位 / 复位控制字

C 口按位置位 / 复位控制字的格式如图 10 - 4所示。 ( 1 )仅 C 口可按位置位 / 复位,且只对 C 口的输出

状态进行控制(对输入无作用)。 ( 2 )一次只能设置 C 口 1 位的状态。 ( 3 )这个控制字应写入控制口,而不是 C 口。 如下图:

Page 12: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(四) 8255A 的工作方式方式 0—— 基本输入 / 输出方式( A 、 B 、 C 口)方式 1—— 选通工作方式( A 、 B 口)方式 2—— 双向选通传送方式(仅 A 口)某端口工作于哪一种方式,可通过软件编程来指定。即向 825

5 写入方式控制字来决定其工作方式。8255A 的工作方式——方式 0( 基本输入 / 输出方式 )特点: 8255A 相当于三个独立的 8 位数据口。各端口既可设

置为输入口,也可设置为输出口,但不能同时实现输入及输出。 C 端口即可以是一个 8 位的简单接口,也可以分为两个独立的 4 位端口。设置为输出口时有锁存能力,设置为输入口时无锁存能力。

适用于:无条件输入输出方式。查询输入输出方式:把 A 、 B口作为 8 位数据的输入或输出口, C 口的高 / 低 4 位分别定义为 A 、 B 口的控制位和状态位。

Page 13: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(四) 8255A 的工作方式1 、 8255A 的工作方式——方式 0( 基本输入 / 输出

方式 ) 在方式 0 下, A 、 B 、 C 三个端口均用作输入 / 输出用,

这种输入 / 输出只是简单的输入 / 输出,无联络信号。如下图所示。

Page 14: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(四) 8255A 的工作方式2 、方式 1 :带选通的输入 / 输出 ( 1 )方式 1 的输入 A 口和 B 口都设置为方式 1 输入时的情况,如下图 1 所示。

当 A 口设定为方式 1 输入时, A 口所用三条联络信号线是C 口的 PC3 、 PC4 、 PC5 , B 口则用了 C 口的 PC0 、 PC1 、 PC2 作为联络信号。各联络线的定义如下: STB :外设送来的输入选通信号,低电平有效。 IBF : 8255A 送外设的输入缓冲器满信号,高电平有效。

INTR : 8255A 送到 CPU 或系统总线的中断请求信号,高电平有效。该信号另外受 INTE 控制。 INTE :中断允许信号。

Page 15: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(四 )8255A 的工作方式( 2 )方式 1 的输出

A 口和 B 口都设置为方式 1 输出时的情况如下图 2 所示。当 A 口与 B 口设为方式 1 输出时,也分别指定 C 口的三条线为联络信号, A 口所用三条联络信号线是 C 口的 PC3 、PC6 、 PC7 , B 口则用了 PC0 、 PC1 、 PC2 。各联络线的定义如下:

A 口和 B 口在方式 1 输入时的情况

Page 16: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

( 四 ) 8255A 的工作方式

OBF :送外设的输出缓冲器满信号,低电平有效。、ACK :外设送来的响应信号,低电平有效。INTR :中断请求信号,高电平有效。该信号另受 INTE 控制。INTE: 它功能和输入方式一样。

Page 17: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

( 四 ) 8255A 的工作方式3 、方式 2 :带选通的双向输入 / 输出

方式 2 是一种双向选通输入 / 输出方式,只适用于 A 口,方式 2 下的引脚定义如图 3 所示。在方式 2 下,各联络信号的含义如下: INTR :中断请求信号,高电平有效。 OBF :输出缓冲器满,低电平有效。 ACK :来自外设的响应信号,低电平有效。 INTE1 : A 口输出中断允许。 STB :来自外设的选通输入,低电平有效。 IBF :输入缓冲器满,高电平有效。 INTE2 : A 口输入中断允许。

Page 18: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

( 四 ) 8255A 的工作方式

Page 19: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

( 四 ) 8255A 的工作方式 ☆ 8255A 的举例 【例】如图 4 所示,设 8255 端口地址为 2F80 ~ 2F83H ,

编程设置 8255 A 组、 B 组均工作于方式 0 , A 口输出, B口输出, C 口高 4 位输入,低 4 位输出。然后,读入开关K 的状态,若 K打开,则使发光二极管熄灭;若 K闭合,则使发光二极管点亮。 程序如下:

MOV AL, 88HMOV DX, 2F83HOUT DX, ALMOV DX, 2F82HIN AL, DXMOV DX, 2F81HAND AL, 20HJZ L1 ;条件成立时 PC5=0, K闭合MOV AL, 0 OUT DX, AL JMP END1 L1: MOV AL, 40H OUT DX, AL END

Page 20: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

二、键盘扫描技术(一)引入:(预备知识)(二)独立式按键及其接口电路(三)矩阵式键盘及其接口电路

Page 21: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(一)引入:(预备知识)1. 键盘的作用: 键盘在单片机系统中是个很重要的部件,为了输入数据、

查询和控制系统的工作状态都要用到键盘,键盘是人工干预计算机的手段

2. 键盘接口概述 〔 1〕按键的分类 按键按照结构原理可分为两类,一类是触点式开关按键,

如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。

按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。

Page 22: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(一)引入:(预备知识) 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此

外,一般还具有去抖动和多键、窜键保护电路,这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。

〔 2〕键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。

对于一组键或一个键盘,总有一个接口电路与 CPU 相连。CPU 可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键号送入累加器 ACC, 然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。

Page 23: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(一)引入:(预备知识)〔 3〕按键开关去抖动问题 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的 TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。

机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如下图所示,抖动时间的长短与开关的机械特性有关,一般为 510ms 。

Page 24: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(一)引入:(预备知识) 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。  

硬件去抖法:就是在键盘中附加去抖动电路,从根上消除抖动产生的可能性,在硬件上可采用在键输出端加 R-S 触发器 ( 双稳态触发器 ) 或单稳态触发器构成去抖动电路。

软件去抖法:在检测到有按键按下时,执行一个 10 ms 左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。

Page 25: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(一)引入:(预备知识)〔 4〕按键的连接方式 按键与 CPU 的连接方式可分为独立式按键和矩阵式键盘 独立式按键结构:独立式按键是直接用 I/O 口线构成的单个

按键电路,其特点是每个按键单独占用一根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。

矩阵式键盘:矩阵式键盘又称行列式键盘,矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,按键按下时,行线和列线连通。

〔 5〕 键盘扫描控制方式 CPU 对键盘处理控制的工作方式有三种 : 程序控制扫描方式:是 CPU 在工作之余,调用键盘扫描子

程序,响应键输入信号要求。 定时控制扫描方式:是利用定时计数器每隔一段时间产生

定时中断, CPU 响应中断后对键盘进行扫描。 中断控制方式:是利用外部中断源,响应键输入信号。

Page 26: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(二)独立式按键及其接口电路 判断有无按键按下只需根据响应端口电平高低。 如下图 , 为 80C51 与 3 个独立式按键直接连接的电

路,对于图 a ,当按键按下时输入低电平。

K0

K1

K2

+5V

80C51

P1.0

P1.1

P1.2

a

Page 27: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(二)独立式按键及其接口电路图 a 编程如下:KEYA: ORL P1, #07H ;置 P1.0-P1.2 为输入态 MOV A,P1 ;读键值,键闭合相应为 0CPL A ;取反,键闭合相应为 1ANL A,#00000111B ;屏蔽高 5 位,保留有键值信息的低 3 位JZ GRET ;全 0 ,无键闭合,返回LCALL DY10MS ;非全 0 ,有键闭合,延时去抖MOV A,P1 ;重读键值,键闭合相应位为 0CPL A ;取反,键闭合相应为 1ANL A,#0000011B ;屏蔽高 5 位,保留有键值信息的低 3 位JZ GRET ;全 0 ,无键闭合,返回JB ACC.0,KA0 ;转 K0 键功能程序JB ACC.1,KA1 ;转 K1 键功能程序JB ACC.2,KA2 ;转 K2 键功能程序GRET: RETKA0: LCALL WORK0 ;执行 K0 键功能子程序RETKA1: LCALL WORK1 ;执行 K1 键功能子程序RETKA2: LCALL WORK2 ;执行 K2 键功能子程序RET

Page 28: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(三)矩阵式键盘及其接口电路

Page 29: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(三)矩阵式键盘及其接口电路( 1 )键盘扫描子程序   KEY : MOV A , #0F0H    MOV P1 , A    XRL A , P1    JZ KEYR ;无键按下返回    ACALL DELAY ;延时去抖动    MOV 30H , P1 ;读闭合键行位置    MOV P1 , #0FH ;反转    MOV A , P1 ;读闭合键列位置   ORL 30H , A ;合成键盘位置码  LOOP : MOV A , P1 ;等待键释放   XRL A , #0FH    JNZ LOOP    ACALL DELAY ;延时去抖动  KEYR :RET

Page 30: 任务 6 用 8255A 设计矩阵键盘 扫描 接口电路

微型计算机控制技术

(三)矩阵式键盘及其接口电路( 2 )键值转换  键盘矩阵中各键的位置码的特点是:对应该键行、列的位为“ 0 ” ,

其他各位均为“ 1 ” 。例如: S7 键的位置码是: 11010111B = 0D7H ; S12 键的位置码是: 01111110B = 7EH 。将各键的位置码顺序排列成键值表,用查表法进行键值转换。  键值转换子程序   TRAN:MOV DPTR , #KEYTAB ; DPTR 指向键值表  MOV R2 , #0 ;键值初值送 R2   MOV R3 , #10H ;循环次数送 R3  LOOPT:MOV A , R2    MOVC A , @A+DPTR ;读键值表    XRL A , 30H ;与位置码比较    JZ KTR ;相等返回,键值在 R2 中   INC R2 ;键值 +1    DJNZ R3 , LOOPT   KTR:RET ;若返回时 R2=10H 为错  KEYTAB:DB 0EEH , 0EDH , 0EBH , 0E7H ;键值表   DB 0DEH , 0DDH , 0DBH , 0D7H    DB 0BEH , 0BDH , 0BBH , 0B7H   DB 7EH , 7DH , 7BH , 77H