第10章 可编程外围接口芯片8255A及其应用 10.1 概述 10.2 8255A的工作原理 10.3 8255A的应用举例
10.1 概述 10.1.1 并行通信 并行接口 并行通信: 各位数据都是并行传输的,它以字节(或字)为单位与I/O设备或被控对象进行数据交换。 并行通信由并行接口来完成,并行接口是连接CPU与并行外设的通道。 特点: 传输速度快;硬件开销大;只适合近距离传输。一个并行接口中包括状态信息、控制信息和数据信息。
⑴状态信息 表示外设当前所处的工作状态。 例如:准备好信号表示输入设备已经准备好信息; 忙信号(BUSY)表示输出设备正在输出信息,等于指示CPU要处于等待状态。 ⑵控制信息 控制信息是由CPU发出的,用于控制外设接口的工作方式以及外设的启动和停机信息等。
⑶数据信息 CPU与并行外设数据交换的内容。 状态信息、控制信息和数据信息,通常都是通过数据总线传送,这些信息在外设接口中分别存取在不同的端口中。 对于一个外设接口,常常需要几个端口才能满足和协调外部设备的工作与要求,图10.1是一个典型的并行接口与CPU、外设的连接图。
图10.1 并行接口与CPU、外设的连接 数据总线 输入数据 输出数据准备好 控制寄存器 输 输入数据准备好 输入数据准备好 入 设 中断请求 输入应答 备 状态寄存器 CPU 复位 总线系统 IOR 输入缓冲寄存器 IOW 输出数据 输 出 AEN 输出缓冲寄存器 输出数据准备好 设 地 址 地址总线 CS 备 译码器 输出应答 A A 1 图10.1 并行接口与CPU、外设的连接
2. 并行接口的组成 ⑴状态寄存器 状态寄存器用来存放外设的信息,CPU通过访问这个寄存器来了解某个外设的状态。 ⑵控制寄存器 并行接口中有一个控制寄存器,CPU对外设的操作命令都寄存在控制寄存器中。 ⑶数据缓冲寄存器 在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,缓冲器是用来暂存数据,可以保证输入,输出数据的可靠性。因为外设与CPU交换数据,CPU的速度远远高于外设的速度。
3. 数据输入过程 数据输入过程,指的是外设向CPU输入数据。 4. 数据输出过程 数据输出过程,指的是CPU向外设输出数据。
10.1.2 串行通信 串行通信: 所谓串行通信是通过一位一位地进行数据传输来实现通信。 特点: 具有传输线少,成本低等优点,适合远距离传送;缺点是速度慢。若并行传送n位数据需时间T,则串行传送的时间最少为nT。 在实际传输中,是通过一对导线传送信息。在传输中每一位数据都占据一个固定的时间长度。 1. 串行接口的组成 串行接口是通过系统总线和CPU相连,串行接口部件的典型结构如图10.2所示。主要由控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器4部分组成。
图10.2 串行接口与CPU、外设的连接 控制寄存器 状态寄存器 数据输入寄存器 数据输出寄存器 CPU 总线系统 数据总线 R RDY x RDY 地 址 译码器 复位 地址总线 AEN IOR IOW 串行数据输入 T 串 入 并 出 CS D C/ 接 收 时 钟 串行数据输出 发 送 MODEM控制 图10.2 串行接口与CPU、外设的连接
⑴控制寄存器 控制寄存器用来保存决定接口工作方式的控制信息。 ⑵状态寄存器 状态寄存器中的每一个状态位都可以用来标识传输过程中某一种错误或当前传输状态。 ⑶数据寄存器 ①数据输入寄存器:串行数据一位一位地从传输线进入,经过串入并出(串行输入并行输出)电路的转换,当接收完一个字符之后,数据就从移位寄存器传送到数据输入寄存器,等待CPU读取。
②数据输出寄存器:CPU输出一个数据时,先送到数据输出缓冲寄存器,然后传到移位寄存器,经过并入串出(并行输入串行输出)电路的转换一位一位地通过输出传输线送到对方。
10.2 8255A的工作原理 并行接口电路,在早期的微机中与串行口、软盘接口、硬盘接口等都放在一块多功能接口卡上,插在微机的扩展槽上使用。现在这部分电路已在微机的主板上由与CPU配套的北桥芯片组来实现其功能。 在电路设计时采用专用的接口芯片,可编程的接口芯片8255A是完成并行通信的集成电路芯片。
8255内部结构和引脚图 (a) 8255A内部结构;(b) 8255A外引脚图 数 据 总 线 缓冲器 读写 控制 逻辑 B组 端口 B(8) 端口C 下半部 (4) 上半部 A(8) A组 DB RD WR A 1 RESET CS CPU接口 内部逻辑 外部接口 PA 7 ~PA PC ~PC 4 3 PB ~PB 8255A 2 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 GND D V CC ( a ) b 8位 内部 数据总线 8255内部结构和引脚图 (a) 8255A内部结构;(b) 8255A外引脚图
可编程并行接口芯片应具有的功能: (1) 具有两个以上的输入/输出数据端口(锁存/缓冲); (2) 每个数据端口有与CPU用应答方式交换信息所必须的控制和状态信息;也有与外设交换信息所必须的控制和状态信息; (3) 通常每个数据端口还具有能用中断方式与CPU交换信息所必须的电路; (4) 具有进行片选和读写控制的电路; (5) 可编程(由程序来选择数据端口,数据传送方向,交换信息的方式等)。
一、8255A的结构和功能 A组控制 B组控制 外设接口 CPU接口 内部逻辑 A口 上C口 下C口 B口 PA7~PA0 PC7~PC4 PB7~PB0 内部总线 缓冲器 数据总线 D7~D0 o RD WR A0 A1 RESET CS 读/写 控制逻辑
(一) 数据端口 8255A内部包含3个8位I/O端口A口、B口和C口,通过外部24根I/O线与外设交换数据或进行通信联络。其中C口可分为两个4位口使用。 A口 上C口 下C口 B口 PA7~PA0 PC7~PC4 PC3~PC0 PB7~PB0 内部总线 端口A和端口B可用作8位 数据I/O口,端口C既可作为8位I/O口,又可作为两个4位I/O口,还常用来配合A口和B口工作,作为控制信号输出、或作为状态信号输入。
(二) 控制逻辑 A组控制 B组控制 内部总线 这是两组根据CPU的编程命令控制8255A工作的电路,控制寄存器用来接收CPU送来的命令字,以决定A组、B组的工作方式,或对C口的每一个位执行位操作。
(三) 数据总线缓冲器 是双向三态的8位缓冲器, 用作8255A和系统数据总线的接口。 1)传送系统对8255A的控制字; 2)传送各端口的输入、输出数据。 缓冲器 数据总线 DB o RD WR A0 A1 RESET CS 读/写 控制逻辑 内部总线 至数据端口 至控制寄存器 (四) 读/写控制逻辑 控制总线的开放与关闭;控制信息传送的路径和方向。
(五) 端口寻址 8255A端口选择表
(六) 方式选择 8255 AB CB DB RD WR D7~D0 A0 A1 CS PB PA PC 8 I/O 4 PB7 ~PB0 PA7 ~PA0 PC3 ~PC0 PC7 ~PC4 (六) 方式选择 方式0:基本输入输出 8 I/O PB7 ~PB0 PA7 ~PA0 PB PA PC 控制或 方式1:选通输入输出 8 I/O PB7 ~PB0 PA7 ~PA0 PB PA PC 控制 方式2:双向传送
二、8255A的控制字 1、方式选择控制字 8255A有3种基本的工作方式,在对8255A进行初始化编程时,应向控制寄存器写入方式选择控制字,以规定各端口的工作方式。 方式选择控制字格式 下C口 I/O 1=输入0=输出 特征位 D7=1 A组方式: 00=方式0 01=方式1 1x=方式2 上C口I/O 1=输入0=输出 B组方式 0=方式0 1=方式1 B口I/O 1=输入0=输出 A口I/O 1=输入0=输出
例:在一个8086/8088系统中,有一片8255芯片,其各个端口的地址分别为0F8H~0FBH,现要求各个端口的工作方式为: 端口A 方式0 输入 端口B 方式1 输出 端口C(上半部) PC7 ~PC4 输出 端口C(下半部) Bit3 输入 要求:进行初始化编程 分析:根据8255工作模式可确定方式控制字 1 95H 初始化编程: MOV AL,95H OUT 0FBH,AL
端口C常用作控制或应答信号,通过对8255A的控制口写入按位置位/复位控制字,可使C口的任一个引脚的输出单独置1或置0。 1 置位 0 复位 特征位 D7 = 0 无关位 000 选中PC0 001 选中PC1 111 选中PC7 位选择 例:要使端口C的bit3置位的控制字为:00000111B; MOV AL,00000111B OUT 0FBH,AL 而使端口C的bit3复位的控制字为:00000110B ; MOV AL,00000110B
三、8255A的工作方式 1、方式 0-基本输入输出方式 适用于不需要应答信号的简单I/O场合。 A口和B口可作为8位端口,C口的高4位和低4位可作为两个4位的端口,且每个端口均可作为输入口或输出口用。 数据输出有锁存,输入无锁存。 CS,A0,A1 RD D0~D7 数据有效 输入 方式0的输入时序
CS,A0,A1 WR 输出 数据有效 D0~D7 方式0的输出时序 例如:要求8255A的A口和B口均工作于方式0, A口和下C口作输入口, B口和上C口作输出口,设8255A各端口地址为40H~43H, 可用下列指令来设置这种工作方式: MOV AL,91H ;方式控制字10010001B OUT 43H,AL ;方式控制字送控制寄存器
方式0一般用于无条件传送的场合,不需要应答式联络信号,外设总是处于准备好的状态。 也可以用作查询式传送,查询式传送时,需要有应答信号。可以将A端口、B端口作为数据口使用。C端口则可用来输出一些控制信息,或输入外设的状态。利用C端口配合A端口和B端口完成查询式的I/O操作。
2. 方式1--选通输入/输出方式 当A端口和B端口以方式1进行输入输出时,必须利用C端口提供的固定的选通和应答信号,该方式也称选通输入/输出方式。 方式1的基本定义是: 分成A组和B组,每组包含一个8位的数据端口和1个4位的控制/数据端口。 可作输入,也可作输出,且输入和输出都可以被锁存。
1) 选通的输入方式 规定:PC3~PC5分配给A端口作联络线, PC0~PC2分配给B端口作联络线, C端口剩下的2位PC7、PC6可作为简单的输入/输出线使用。
方式1选通输入下对应的控制信号图 (a) 对A端口;(b) 对B端口 I/O D 7 6 5 4 3 2 A组工作于方式1输入的控制字 A组和B组工作于方式1输入的控制字 B组工作于方式1输入的控制字 方式1 B端口为输入 PC 、PC 1=输入 0=输出 A端口为输入 STB A IBF INTR INTE & ~PC PA ~PA RD 8 B PB ~PB ( a ) b 方式1选通输入下对应的控制信号图 (a) 对A端口;(b) 对B端口
方式1选通输入方式下各控制信号的意义: STB(Strobe):选通输入信号,低电平有效。A组方式控制字中对应PC4;B组方式控制字中对应PC2。 IBF(Input Buffer Full):输入缓冲器满信号,高电平有效。 是8255A送给外设的联络信号,A组方式控制字中对应PC5;B组方式控制字中对应PC1,该信号可供CPU查询。 该信号在选通输入信号STB变低后,300 ns时间内即变为有效的高电平。在RD信号撤消后的300 ns时间内IBF信号才撤消,变为无效的低电平,这样保证了数据传输的可靠性。
INTR(Interrupt Request):中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。当STB信号撤消变为高电平后,并且IBF信号也为高电平,INTR信号变为有效的高电平。 当CPU发出的RD信号有效后,400 ns的时间内INTR信号将撤消,变为低电平。 INTE(Interrupt Enable):中断允许信号,高电平有效。否则屏蔽中断请求。 INTE的状态是用软件通过由C端口置1/置0控制字来控制的,在A组中,使PC4置“1”后INTEA变高;在B组中,使PC2置“1”后INTEB变高,A端口和B端口才允许中断。如果PC4和PC2都置“0”,与之对应的INTE信号为低,则禁止中断。
8255A方式l输入时序图
选通输入方式的工作过程: 当外设数据已送到8255A某个端口的数据线上时,就发出选通输入信号STB,将数据通过A端口或B端口锁存到8255A的数据输入寄存器。STB信号变低将使输入缓冲器满信号IBF变高,如图10.13中表示的箭头①。输入缓冲器满意味着将阻止外设输入新的数据。 输入缓冲器满状态,可供CPU来查询。在选通输入信号结束后向CPU发出中断请求信号,INTR变高(中断允许情况下),如图10.13中表示的箭头②。 在中断服务程序中CPU发出读信号RD,RD的下降沿清除中断请求,如图10.13中表示的箭头③。当读信号结束后,使输入缓冲器满信号IBF变低,如图10.13中表示的箭头④。IBF变低表明输入缓冲器已空,通知外设可以输入新的数据。
8255A方式1输入时序参数说明表 参 数 说 明 8255A 最小时间/ns 最大时间/ns tST 选通脉冲的宽度 500 tSIB 参 数 说 明 8255A 最小时间/ns 最大时间/ns tST 选通脉冲的宽度 500 tSIB 选通脉冲有效到IBF有效之间的时间 300 tSIT =1到中断请求INTR有效之间的时间 tPH 数据保持时间 180 tPS 数据有效到 无效之间的时间 tRIT 有效到中断请求撤除之间的时间 400 tRIB 为1到IBF为0之间的时间
选通的输入方式CPU如何读取数据? 1、采用查询式输入,CPU先查询IBF是否为高? 若IBF为高,8255A的输入缓冲器就为满,则CPU可从8255A读入数据。 2、采用中断方式传送数据,先用C端口置1/置0的控制字使相应的端口允许中断,也就是要使PC4或PC2置1。
2) 选通的输出方式 这种方式的工作过程与选通输入的情况相类似。对应的C端口也是固定分配。 规定:PC3、PC6、PC7分配给A端口; PC2、PC1、PC0分配给B端口, 剩下的2位PC4、PC5可作为简单的输入/输出线使用。 当控制字的D3位为“1”时,PC4、PC5作输入;当控制字的D3位为“0”时,PC4、PC5作输出。
方式l输出时C端口对A、B端口的控制图 (a) 对A端口;(b) 对B端口 1 I/O D 7 6 5 4 3 2 A组工作于方式1输出的控制字 A组和B组工作于方式1输出的控制字 B组工作于方式1输出的控制字 方式1 B端口为输出 PC 、PC 1=输入 0=输出 A端口为输出 ACK A OBF INTR INTE & ~PC PA ~PA WR 8 B PB ~PB ( a ) b 方式l输出时C端口对A、B端口的控制图 (a) 对A端口;(b) 对B端口
方式1选通输出方式各控制信号的意义: OBF(Output Buffer Fu11):输出缓冲器满信号,低电平有效。A组方式控制字中对应PC7;B组方式控制字中对应PC1,由8255A向外设发出低电平的OBF信号。 输出指令写信号WR的上升沿出现后,将OBF信号置成有效低电平,如图10.15中表示的箭头②。当应答信号ACK变为有效低电平后,OBF信号撤消变为高电平,如图10.15中表示的箭头③。 ACK(Acknowledge):数据接收应答信号,低电平有效。A组方式控制字中对应PC6;B组方式控制字中对应PC2,是外设的响应信号。 ACK信号有效后使OBF变成无效的高电平,同时使INTR信号变为有效的高电平。
INTR:中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。由8255A向CPU发出中断请求,要求CPU输出新的数据。 当ACK撤消后为高电平,OBF也为高电平,中断允许信号INTE也为高时,INTR中断请求信号被置位为高电平,如图10.19中表示的箭头④。 中断请求信号是在WR有效的下降沿出现后使它变为无效的低电平,如图10.19中表示的箭头①。 INTE:中断允许信号,高电平有效。当该信号为“1”时,允许中断。INTE是用软件通过对C端口置1/置0的控制字来设置的。当PC6置1时,A端口允许中断;PC2置1,B端口允许中断。反之,不允许中断。
当8255A的输出选通方式采用中断与CPU通信时,CPU响应中断后,就向8255A输出数据, WR信号出现,其上升沿一方面撤消中断请求信号使INTR变低,表示CPU对上一次中断已经响应过。另一方面使OBF信号变为有效的低电平,以通知外设可以接收下一个数据。
8255A方式1输出时序图
8255A方式1输出时序参数说明表 参 数 说 明 8255A 最小时间/ns 最大时间/ns tWIT 从写信号有效到中断请求无效的时间 参 数 说 明 8255A 最小时间/ns 最大时间/ns tWIT 从写信号有效到中断请求无效的时间 850 tWOB 从写信号无效到输出缓冲器清的时间 650 tAOB 有效到无效的时间 350 tAK 脉冲的宽度 300 tAIT 为1到发新的中断请求的时间 tWB 写信号撤除到数据有效的时间
3. 方式2--带选通的双向传输方式 双向方式8255A可以向外设发送数据,同时CPU通过这8位数据线又接收外设的数据。传输过程由C端口对A端口进行控制,所以称为带选通的双向传输方式。 方式2的基本定义: 只能适用于A端口,一个8位的双向端口(A端口)和1个5位的控制端口(C端口)。 A端口的输入和输出都可以被锁存。在这种方式下,C端口中高5位PC7~PC3作为控制信号和状态信息使用,剩下的3位PC2~PC0可作为简单的输入/输出线使用。
方式2时C端口对A端口的控制信号图 PC & ~PC PA ~PA INTE2 INTE1 WR RD INTR 8 OBF ACK STB 3 & 2 ~PC PA 7 ~PA 6 4 5 INTE2 INTE1 ≥1 WR RD INTR A 8 OBF ACK STB IBF I/O 1 D A组工作于方式1输入的控制字 1=输入 0=输出 B端口方式 A端口 方式 B组方式 0=方式0 1=方式1 方式2时C端口对A端口的控制信号图
方式2各控制信号的意义: STB:选通信号,低电平有效。对应于PC4,由外设提供给8255A。该信号负责把外设送到8255A的数据送入输入锁存器。 IBF:输入缓冲器满信号,高电平有效。对应PC5,是8255A送给CPU的状态信息,供CPU查询用。当该信号有效时,表示当前已经有一个新的数据送到了输入锁存器中,CPU可以取走。
OBF:输出缓冲器满信号,低电平有效。对应PC7,由8255A发给外设的选通信号,当OBF有效时,表明CPU已经将一个数据写入8255A的A端口中,通知外设可以取走数据。 ACK:数据接收应答信号,低电平有效。对应PC6,这是外设对信号OBF的响应信号,该信号为低电平时,使A端口的输出缓冲器打开,送出数据到外设。否则,当该信号为高电平时,方式2时输出缓冲器处于高阻状态。
INTR:中断请求信号,高电平有效。对应PC3,不论A端口工作在输入方式还是工作在输出方式,当一个操作完成,并且要进入下一个操作时,8255A都要向CPU发出中断请求信号。 INTEl:输出中断允许信号。为“1”时,允许向CPU发出由A端口输出数据的中断请求信号。反之,即使输出缓冲器空,也不允许8255A向CPU发中断请求信号。INTEl信号的置1或置0,是用软件使C端口的PC6置1或置0来实现的。 INTE2:输入中断允许信号。为“1”时,允许A端口的输入处于中断允许状态,反之,不允许中断。INTE2信号的置1或置0,同样是用软件通过C端口的PC4置1或置0来实现。 * 方式2的工作时序基本相当于方式1的选通输入时序和选通输出的时序的组合。
图10.17 8255A方式2时序
表10-6 8255A方式2时序的参数说明 参 数 说 明 8255A 最小时间/ns 最大时间/ns tST 选通脉冲的宽度 500 参 数 说 明 8255A 最小时间/ns 最大时间/ns tST 选通脉冲的宽度 500 tPH 数据保持时间 180 tSIB 选通脉冲有效到IBFA有效之间的时间 300 tPS 数据有效到 无效之间的时间 tWOD 从写信号无效到, 有效的时间 650 tAOD 有效到 无效的时间 350 tAD 有效到数据输出的时间 tHD 200
总结: 8255A有三种工作方式,用户可以通过编程来设置 方式0:基本输入输出方式 适用于无条件传送和查询方式的接口电路,A、B、C三个端口均可 。 方式1:选通输入输出方式 适用于查询和中断方式的接口电路,A 、B两个端口均可。 方式2:双向选通传送方式 适用于双向传送数据的外设,只有A端口才有。 适用于查询和中断方式的接口电路 初始化编程后: 当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据 当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备
各工作方式的C口情况 A口方式 B口方式 C口空余位 8 1 5 2 3 C口各位使用情况 □□□□□□□□ □□□□□■■■ 8 □□□□□□□□ 1 5 □□□□□■■■ □□■■■□□□ 2 □□■■■■■■A输入 ■■□□■■■■A输出 3 ■■■■■□□□ ■■■■■■■■
4. C口状态字 8255A工作在方式0时,C口各位作输入输出用。当工作在方式1和方式2时,C口产生与外设的联络信号。此时。读入C口各位的内容可检查或测试外设的状态。C口的状态字如下: (1)方式1 I/O IBFA 输入 INTEA INTRA INTEB IBFB INTRB D7 D6 D5 D4 D3 D2 D1 D0 I/O 输出 INTEA INTRA INTEB OBFB INTRB D7 D6 D5 D4 D3 D2 D1 D0 OBFA (2)方式2 * INTE1 INTRA INTE2 IBFA D7 D6 D5 D4 D3 D2 D1 D0 OBFA
10.3 8255A的应用举例 8255A先要初始化,写入控制字,指定它的工作方式,然后才能进行数据的传输。 ⑴ 写控制字设置工作方式等信息, ⑵ 使C口的指定位置位/复位的功能。 注:均写入控制端口
一、基本输入输出应用举例 8255A作为开关K0~K3及七段LED显示器接口。要求开关设置的二进制信息,由PC0~PC3输入,经程序转换为对应的七段LED显示器的字形代码后,由PA口输出显示。 8255A PA7 PA0 ~ 驱动器 +5V +5V K0 K1 K2 K3 PC3 PC2 PC1 PC0 D7~D0 RD WR A1 A2 A B C G2A G2B G1 Y0 Y1 Y2 O O O RD WR A0 A1 CS A0 A3 A4 A7 8086 系统总线 LS138 接口电路 M/IO & A5 A6
LED显示器的字形代码表存放在TABLE单元开始的内存中. 数据段中定义: 由图可知: A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 0 1 0 A B C G2A G2B G1 Y0 Y1 Y2 A0 A3 A4 A7 LS138 M/IO & A5 A6 CS 各端口地址为:E8H~EEH 8255A方式选择控制字: 按题意设置端口A方式0输出,下C口输入. 1 × 81H LED显示器的字形代码表存放在TABLE单元开始的内存中. 数据段中定义: TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H DB 80H, 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH
代码段实现操作的具体程序如下: MOV DX,0EEH ;设置8255A工作方式 MOV AL,81H OUT DX,AL MOV DX,0ECH ;指向端口C,读开关状态 IN AL,DX AND AL,0FH LEA BX,TABLE ;显示代码表首地址送BX XLAT ;查表,取出相应的字形码送AL MOV DX, 0E8H ;指向端口A OUT DX, AL ;输出字形码显示 HLT
二、七段LED显示器接口电路 a b d c e f g dp a b c d e f g dp 共阴极LED显示器的结构 a b c d
1、软件译码法 同 相 驱 动 8 器 2 5 方案1 共阳极LED显示器与同相驱动器接口 a PA0 b PA1 c PA2 d PA3 f g ep PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8 2 5 +5V DB7--DB0 方案1 共阳极LED显示器与同相驱动器接口
反 相 驱 动 8 器 2 5 方案2 共阴极LED显示器与反相驱动器接口 PA0 PA1 a PA2 b PA3 c d PA4 e f g dp PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8 2 5 DB7--DB0 方案2 共阴极LED显示器与反相驱动器接口
D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a (低电平输出点亮) 0(C0H) 1 1 0 0 0 0 0 0 1(F9H) 1 1 1 1 1 0 0 1 a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp a b d c e f g dp 2(A4H) 1 0 1 0 0 1 0 0 3(B0H) 1 0 1 1 0 0 0 0 4(99H) 1 0 0 1 1 0 0 1 5(92H) 1 0 0 1 0 0 1 0 6(82H) 1 0 0 0 0 0 1 0 7(F8H) 1 1 1 1 1 0 0 0 8(80H) 1 0 0 0 0 0 0 0 9(90H) 1 0 0 1 0 0 0 0
D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a (高电平输出点亮) 0(3FH) 0 0 1 1 1 1 1 1 1(05H) 0 0 0 0 0 1 1 0 2(5BH) 0 1 0 1 1 0 1 1 3(4FH) 0 1 0 0 1 1 1 1 4(66H) 0 1 1 0 0 1 1 0 5(6DH) 0 1 1 0 1 1 0 1 6(7DH) 0 1 1 1 1 1 0 1 7(07H) 0 0 0 0 0 1 1 1 8(7FH) 0 1 1 1 1 1 1 1 9(6FH) 0 1 1 0 1 1 1 1
7447 2、利用专用芯片驱动LED显示器 5V 利用接口芯片7447驱动LED显示器 7447为BCD(0~9)七段译码器 a b c d e f g 13 12 11 10 9 15 14 Vcc GND RBI RBO LT A B C D 3 4 5 +5V 7 1 2 6 16 8 5V 利用接口芯片7447驱动LED显示器 7447为BCD(0~9)七段译码器 (1)与单个LED的连接 5V 1. 5V 0. 2V I=20mA R R=(5–1.5 – 0.2)V/ 20mA=168 取限流电阻R=150 BCD输入
(2)7447BCD—七段译码器与多个LED的连接 静态显示器的设计 (器件多时,增加成本,加大功耗) DB0——DB7 7447 a b c d e f g A B C D PB0PB1PB2PB3 PB4 PB5PB6 PB7 DB0——DB7 PA0PA1PA2PA3 PA4 PA5PA6 PA7 7447 a b c d e f g A B C D 7447 a b c d e f g A B C D 5V
动态显示器的设计 8 2 5 7 4 a b c d e f g • A B C D PB0 PB1 PB2 PB3 • • • • • • +5V PA0 PA1 PA2 PA3 PA4 PA5 PA6 8 2 5
显示控制程序 LEA SI,BUFF MOV CX,07H 初始化 MOV DL,0FEH 取显示数据 MOV AL,[SI] 送段码通道口 结束 取显示数据 送段码通道口 延时 位码送位通道口 是否最后一位 修改指针,位码 N Y MOV AL,[SI] OUT POTB,AL MOV AL,DL OUT POTA,AL INC SI ROL DL 显示控制程序
a 小系统常用显示接口电路 8 2 5 PB0 • g PB7 • • • 74LS06 PA0 PA1 PA2 PA3 PA4 PA5
显示控制程序 LEA SI,BUFF MOV CL,40H 初始化 MOV BX,LED-ADD 取显示数据 结束 取显示数据 查表得段码送段通道 延时 位码送位通道 是否最后一位 修改指针,位码 N Y DISI:MOV AL,[SI] XLAT MOV DX, POTB OUT DX,AL MOV AL,CL MOV DX, POTA INC SI SHR CL JNZ DISI 显示控制程序
三、键盘接口 键盘是最常用的一种输入设备。有两种类型: 编码键盘和非编码键盘。 编码键盘能自动提供对应于被按键的编码,如ASCII码,并能同时产生一个脉冲通知CPU。编码键盘还具有处理抖动和多键串键的保护电路。这种键盘的优点是使用方便,但需要较多的硬件,价格昂贵。 非编码键盘有一组开关组成,提供行和列的键盘矩阵,其工作过程:按键的识别;按键代码的产生;防止串键和消除抖动等均由程序来实现。故这种键盘的优点是所需要的硬件较少,价格便宜,宜用微机化仪表的面板的键盘。
按键特性
硬件去抖动和软件去抖动 硬件方法:利用RS触发器,用于键较少的场合。 软件方法: (用于键较多的场合。) 检测有键闭合,延时10ms~20ms左右,再检测,仍保持闭合,则确认为有键按下。
键盘结构: 独立式按键 、矩阵式键盘
4行×4列16个按键的键盘 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 C 9 8 D E 4 F 6 1 5 B 2 F 6 1 5 B 2 7 3 A PA0 PA1 PA2 PA3 8255A +5V 4行×4列16个按键的键盘 工作原理
键盘扫描过程: (1)检测键盘上所有的键是否都松开,反复检测直至全松开。 (2)检测键盘上是否有键按下,反复检测直至有键按下。 (3)若有键按下,则消除键抖动后(硬件消抖动电路,软件延时消抖动下),再确认该键是否按下。 (4)对按下的键进行编码,即将该键所在的行号和列号转换成16进制代码。 (5)检测该键是否松开,反复检测直至松开。 (6)根据代码转相应功能子程序。 注:若在按键时,多个键盘同时按下,可取最后松开的按键作为本次按下的键。
初始化: PORT-A EQU 0FF9H ;8255A口地址 PORT-B EQU 0FFBH ;8255B口地址 PORT-CTL EQU 0FF9H ;8255控制口地址 TABLE DB 77H, 7BH, 7DH,7EH DB 0B7H, 0BBH, 0BDH,0BEH DB 0D7H, 0DBH, 0DDH,0DEH DB 0E7H, 0EBH, 0EDH,0EEH ;程序开始略 8255初始化:方式0,A口输出,B口、C口输入 MOV DX, PORT-CTL ;DX指向控制口 MOV AL, 10001011B ;控制字 OUT DX, AL ;写入控制字
MOV DX, PORT-A ;DX指向A口 MOV AL, 00H OUT DX, AL 读入列值 键松开 有键按下 延时20ms消抖动 键仍按下 逐行逐列查按键 查表得键代码 所有行置“0” N Y WO: MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入B口 AND AL,OFH CMP AL,OFH ;各键均未按下 JNE WO ;否,继续等 WR: IN AL, DX ;输入B口 AND AL,OFH CMP AL,OFH ;是否有键按下 JE WR ;否,等待 MOV CX, 16EAH DELAY: LOOP DELAY WR: IN AL, DX ;输入B口 AND AL,OFH CMP AL,OFH ;是否有键按下 JE WR ;否,等待
MOV AL,0FEH ;置行扫描初值 MOV CL,AL ;暂存于C N-R: MOV DX,PORT-A OUT DX, AL ;输出行扫描值 MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入B口 AND AL, OFH CMP AL, OFH ;有键按下 JNE ENCODE ;是,转编码 ROL CL, 01 ;否,修改扫描初值 MOV AL, CL JMP N-R ;扫描下一行
ENCODE: MOV BX,000FH ;置键代码初值 IN AL,DX ;读入行列号 NEXT-T: CMP AL, TABLE[BX] ;与表中行列号相等吗 JE DONE ;相等转DONE DEC BX ;不相等,修改位置 JNS NEXT-T ;未查完,继续 MOV AH, 01 ;查完,未查到,置出错标志 JMP EXIT ;退出 DONE: MOV AL, BL ;键代码送AL MOV AH, 00 ; 键有效标志00=AL EXIT: RET
四、并行打印机接口 打印机接口信号
2、送数到数据线DATA0~7上,此时数并未进入打印机。 3、再送STROBE(脉宽0.5us),数据送入打印机内部缓冲器。 打印机接口信号 0.5s 5s BUSY ACKNLG DATA STROBE 工作时序: 1、CPU先查Busy,不忙(=0),送数。 2、送数到数据线DATA0~7上,此时数并未进入打印机。 3、再送STROBE(脉宽0.5us),数据送入打印机内部缓冲器。 4、打印机收到数据后,忙(=1)去处理数据。 5、然后打印机送ACK给主机,准备接收下一个数据。
例:用8255实现与打印机的接口,8255的PA口作为数据输出端口,工作在方式1;PC7作为OBF信号输出端;PC6作为ACK信号输入端; PC3作为INTR信号输出端,接8259的IR2,因此中断类型号为0AH。8255的端口地址为0FCH-0FFH。 输出时,先输出一个空字符,以引起中断,在中断服务程序中输出打印字符。打印机接收到打印字符后,发出ACK响应信号,清除OBF标志,使8255产生新的中断请求,再输出下一个打印字符。 PC总线 打印机 IOW RD A0 A1 译码器 DB WR IOR CS PA PC7 PC6 PC3 STB ACK AB 8255 去8259IR2
主程序完成中断的准备工作和设置8255A的工作方式控制字等 中断服务程序完成字符的输出。 PUSH DS LEA DX,ROUT MOV AX,SEG ROUT MOV DS,AX MOV AL,0AH MOV AH,25H INT 21H POP DS ; 设置中断向量 MOV AL,0A0H ;方式字 OUT 0FFH,AL MOV AL,0DH ;PC6置1 OUT 0FFH,AL;中断允许 MOV AL,20H ;输出空格字符 OUT 0FCH,AL LEA BX,FLAG STI ROUT: PUSH AX MOV AL,[BX] ;取字符 OUT 0FCH,AL ;输出 INC BX POP AX IRET
作业 P354 习题 5、6、10