第八章
80C51单片微机的系统扩展
原理及接口技术
8.1 系统扩展原理
系统扩展是指单片微机内部各功能部件不能满足应用系
统要求时,在片外连接相应的外围芯片以满足应用系统要求。
80C51有很强的外部扩展能力,扩展电路及扩展方法较典型、
规范。 80C51 主要有程序存储器( ROM)的扩展、数据存储
器( RAM)的扩展,I/O口的扩展、中断系统扩展以及其它特
殊功能接口的扩展等。
对于单片微机系统扩展的方法有并行扩展法和串行扩展
法两种 。 并行扩展法是指利用单片微机本身具备的三组总线 (
AB,DB,CB) 进行的系统扩展 。 近几年, 由于集成电路设计
,工艺和结构的发展, 串行扩展法得到了很快发展, 它利用
SPI三线总线和 I2C双线总线进行串行系统扩展 。 有的单片微机
应用系统可能同时采用并行扩展法和串行扩展法 。
单片微机是通过芯片的引脚进行系统扩展的。
80C51系列带总线的芯片引脚可以构成 图 8- 1所示的三总
线结构, 即地址总线 ( AB) 数据总线 ( DB) 和控制总线 ( CB)
。 具有总线的外部芯片都通过这三组总线进行扩展 。
( 1) 地址总线 ( AB)
由单片微机 P0口提供低 8位地址 A0~ A7,P2口提供高 8位
地址 A8~ A15。 P0口是地址总线低 8位和 8位数据总线复用口, 只
能分时用作地址线 。 故 P0口输出的低 8位地址 A0~ A7必须用锁存
器锁存 。
锁存器的锁存控制信号为单片微机 ALE引脚输出的控制信
号 。 在 ALE的下降沿将 P0口输出的地址 A0~ A7锁存 。 P0,P2口
在系统扩展中用做地址线后便不能作为一般 I/O口使用 。
由于地址总线宽度为 16位, 故可寻址范围为 64 KB。
8.1.1外部并行扩展原理
( 2) 数据总线 ( DB)
由 P0口提供, 用 D0~ D7表示 。 P0口为三态双向口, 是应
用系统中使用最为频繁的通道 。 所有单片微机与外部交换的数据
,指令, 信息, 除少数可直接通过 P1口外, 全部通过 P0口传送 。
数据总线是并连到多个连接的外围芯片的数据线上,而在
同一时间里只能够有一个是有效的数据传送通道。哪个芯片的数
据通道有效,则由地址线控制各个芯片的片选线来选择。
(3)控制总线( CB)
包括片外系统扩展用控制线和片外信号对单片微机的控制线。
系统扩展用控制线有 ALE、
·ALE:输出 P0 口上地址与数据隔离信号, 用于锁存 P0口输出的
低 8位地址的控制线 。 通常, ALE信号的下降沿控制锁存器来锁
存地址数据, 通常选择下降沿选通的锁存器做低 8位地址锁存器

PSEN
EA WR RD
·,输出, 用于读片外程序存储器 ( EPROM) 中的数据 。,
读, 取 EPROM中数据 ( 指令 ) 时, 不能用,, 信号, 而只用
信号 。
:输入, 用于选择片内或片外程序存储器 。
当 = 0时, 只访问外部程序存储器 。 当 = 1时, 先访问内部
程序存储器, 内部程序存储器全部访问完之后, 再访问外部程序
存储器 。
PSEN
PSEN
RD
EA
EA
EA
,:输出,用于片外数据存储器( RAM)的读、写控
制。当执行片外数据存储器操作指令 MOVX时,自动生成,
控制信号。
常用地址锁存器管脚见 图 8–2。
8D透明锁存器 74LS373的锁存允许信号 G是电平锁存。当 G
从高电平转为低电平时,将其输入端的数据锁存在输出端。当
ALE为高电平时,8D锁存器 74LS373的输入和输出是透明的。当
ALE出现下降沿后,8D锁存器 74LS373的输出即为 A0~ A7,这时
P0口上出现的是数据,实现了地址低 8位和数据线的分离。
在单片微机应用系统中, 为了唯一地选择片外某一存储单元
或 I/O端口, 需要进行二次选择 。 一是必须先找到该存储单元或 I/O
端口所在的芯片, 一般称为, 片选,, 二是通过对芯片本身所具
有的地址线进行译码, 然后确定唯一的存储单元或 I/O端口, 称为
,字
选, 。
WR RD
RD WR
―片选” 保证每次读或写时,只选中某一片存储器芯片
或 I/O接口芯片。常用的方法有四种:“线选法”,“地址译码
法”,应用,可编程器件 PAL/GAL‖ 或,I/O口线” 。
(1) 线选法:。线选法常一般是利用单片微机的最高几位
空余的地址线中一根 (如 P2.7) 作为某一片存储器芯片或 I/O接口
芯片的“片选” 控制线 。 用于应用系统中扩展芯片较少的场合

(2) 译码法:用译码器对空余的高位地址线进行译码,
而译码器的输出作为“片选” 控制线。常用的译码器有 3/8译码
器 74LS138、双 2/4译码器 74LS139,4/16译码器 74LS154等。
3/8译码器 74LS138的管脚见 图 8–3。
·G 1、,,使能端 。 当 G1=1,= =0时,
芯片使能 。
·C, B,A:译码器输入, 高电平有效 。
·,译码器输出, 低电平有效 。
G2A G2B G2A G2B
Y
正常情况下, 只有一根输出是低电平, 其余输出都是高电平 。 这
样, 当译码器输出作为单片微机应用系统中外扩芯片的片选控制
线时, 保证每次读或写时只选中一个芯片 。
部分地址线参加译码时, 称为部分地址译码, 这时芯片的
地址会有重叠 。 16根地址线全部参加译码的, 称为全地址译码 。
图 8–4示意的是通过 3/8译码器 74LS138获得 64K地址 。
图 8–4中 3/8译码器 74LS138已经使能, 其输出由 C,B,A的状态
决定, 作为各个扩展芯片的片选控制信号, 加上芯片本身所具有
的地址线共同决定每一个存储单元或 I/O端口的地址, 全地址译
码的地址是唯一的 。
#0 RAM地址分配为 0000H~ 1FFFH,共 8K。 (A15=A14=A13=0)
#1芯片地址分配为 2000H~ 3FFFH,共 8K。 (A15=0,A14=0,
A13=1)
#2 芯片地址分配为 4000H~ 5FFFH,共 8K。 (A15=0,A14=1,
A13=0)
#3 芯片地址分配为 6000H~ 7FFFH,共 8K。 (A15=0,A14=1,
A13=1)
#4 芯片地址分配为 8000H~ 9FFFH,共 8K。 (A15=1,A14=0,
A13=0)
#5 芯片地址分配为 A000H~ BFFFH,共 8K。 (A15=1,A14=0,
A13=1)
#6 芯片地址分配为 C000H~ DFFFH,共 8K。 (A15=1,A14=1,
A13=0)
#7 I/O地址分配为 E000H~ FFFFH,共 8K。 (A15=1,A14=1,
A13=1)
2,80C51系列单片微机的系统并行扩展能力
由于地址总线宽度为 16位, 在片外可扩展的存储器最大容
量为 64KB,地址为 0000H~ FFFFH。 片外数据存储器与程序存
储器的操作使用不同的指令和控制信号, 允许两者的地址重复,
故片外可扩展的数据存储器与程序存储器分别为 64 KB。
片外数据存储器与片内数据存储器的操作指令不同 ( 片外
RAM只能用 MOVX指令 ) 。 允许两者地址重复, 亦即外部扩展
数据存储器地址可从 0000H开始 。
I/O口扩展与片外数据存储器统一编址, 不再另外提供地
址线 。
80C51的外部串行总线主要包括,SPI( Serial PeriPheral
Interface) 总线和 I2C总线两种 。
⒈ SPI三线总线结构
SPI三线总线结构是一个同步外围接口,允许 MCU与各种
外围设备以串行方式进行通信。一个完整的 SPI系统有如下的特
性:
.全双工、三线同步传送;
.主、从机工作方式;
.可程控的主机位传送频率、时钟极性和相位;
.发送完成中断标志;
.写冲突保护标志。
在大多数场合,使用一个 MCU作为主机,控制数据向一个或多个
从机(外围器件)的传送。
8.1.2 外部串行扩展原理
一般 SPI系统使用四个 I/O引脚:
①串行数据线( MISO,MOSI)
主机输入/从机输出数据线( MISO)和主机输出/从
机输入数据线( MOSI),用于串行数据的发送和接收。数据
发送时.先传送 MSB(高位),后传送 LSB(低位)。
在 SPI设置为主机方式时,MISO线是主机数据输入线,
MOSI是主机数据输出线;在 SPI设置为从机方式时,MISO线
是从机数据输出线,MOSI是从机数据输入线。
② 串行时钟线( SCLK)
串行时钟线( SCLK)用于同步从 MISO和 MOSI引脚输入
和输出数据的传送。在 SPI设置为主机方式时 SCLK为输出;在
SPI设置为从机方式时,SCLK为输入。
在 SPI设置为主机方式时,主机启动一次传送时,自动在
SCLK脚产生 8个时钟周期。主机和从机 SPI器件中.在 SCLK信
号的一个跳变时进行数据移位,数据稳定后的另一个跳变时进行
采样。
对于一个完整的 SPI系统,串行数据和串行时钟之间有四
种极性和相位关系,如 图 8- 5所示,以适应不同的外围器件特
性。主机和从机器件之间的传送定时关系必须相同。
③ 从机选择 ( )
在从机方式时, 脚是输入端, 用于使能 SPI从机进行数据
传送;在主机方式时, 一般由外部置为高电平 。
通过 SPI可以扩展各种 I/O功能, 包括,A/ D,D/ A,实
时时钟, RAM,EEPROM及并行输入/输出接口等 。
SS
SS
在把 SPI与一片或几片串行扩展芯片相连时,只需把 SPI的 SCLK
,MOSI及 MISO三根线同名端相连即可。对于有些 I/O扩展芯片
,它们有 端。这时,这些片选输入端一般有同步串行通信的功
能。无效时,为复位芯片的串行接口;有效时,初始化串行传送
。有些芯片的 端,将其上从低到高的跳变当做把移位数据打
入并行寄存器或操作启动的脉冲信号。因此,对于这些芯片,应
该用一根 I/O口线来控制它们的 片选端。
若 80C51的串行通信口已经被占用,则可以用通用 I/O口来
模拟 SPI串行接口,用软件来模拟仿真 SPI操作
⒉ I2C(Intel IC BUS)公用双总线结构
使用两根信号线( SDA和 SCL)串行的方法进行信息传送
,并允许若干兼容器件共享的双线总线,称为 12C总线。 12C总线
系统的示意图见 图 8- 6。
·SDA:称为串行数据线,用于传输双向的数据。
·SCL:称为串行时钟线, 用于传输时钟信号, 在传输时用
来同步串行数据线上的数据 。
CS
CS
CS
I2C总线上的器件 SDA和 SCL引脚都是开漏结构,都需通
过电阻与电源连接。在 I2C 总线系统中的所有器件的 SDA引脚、
SCL引脚也都同名端连接在一起。
挂接在 I2C 总线上的器件(或 IC),根据其功能可分为两
种:主控器件和从控器件。
主控器件:控制总线存取,产生串行时钟( SCL)信号,
并产生启动传送及结束传送的器件,总线必须由一个主控器件控
制。主控器件一般称主器件。
从控器件:在总线上被主控器件寻址的器件,它们根据主
控器件的命令来接收和发送数据。从控器件一般称从器件。
在由若干器件所组成的 I2C 总线系统中,可能存在多个主
器件。因此,I2C 总线系统是一允许多主的系统。对于系统中的
某一器件来说,有四种可能的工作方式:主发送方式、主接收
式、从发送方式和从接收方式。
据此定义以下总线条件:
①总线不忙
串行时钟线( SCL)和串行数据线( SDA)保持高电平。
②开始数据传送
在串行时钟线( SCL)保持高电平的情况下,串行数据线
( SDA)上发生一个由高电平到低电平的变化作为起始信号(
START),启动 I2C 总线。 I2C总线所有命令必须在起始信号以后
进行。
③停止数据传送
在串行时钟线 ( SCL) 保持高电平的情况下, 串行数据线
( SDA) 上发生一个由低电平到高电平的变化, 称为停止信号 (
STOP) 。 这时将停止 I2C总线上的数据传送 。
④ 数据有效性
在开始信号以后, 串行时钟线 ( SCL) 保持高电平的
周期期间, 当串行数据线 ( SDA) 稳定时, 串行数据线的状
态表示数据线是有效的 。 需要一个时钟脉冲 。
每次数据传送在起始信号 ( START) 下启动, 在停止
信号 ( STOP) 下结束 。
在 I2C总线上数据传送方式有两种, 主发送到从接收和
从发送到主接收 。 它们由起始信号 ( START) 后的第一个字
节的最低位 ( 即方向位 R/ W) 决定 。
I2C总线主要功能有:
·在主控器件和从控器件之间双向传送数据;
·无中央主控器件的多主总线;
·多主传送时,不发生错误;
·可以使用不同的位速率;
·串行时钟作为交接信号;
在有 I2C总线的单片微机 (如飞利浦 80C552)中,可以直接
用 I2C总线来进行系统的串行扩展;对于 80C51系列单片微机,大
多数没有 I2C总线接口功能,而是采用软件模拟双向数据传送协议
的方法,来实现系统的串行扩展。
在单片微机应用系统中,单主结构占绝大多数。在单主系
统中,I2C总线的数据传送状态要简单得多,不存在总线竟争与同
步问题,只有作为主器件的单片微机对 I2C总线器件的读/写操作
,这就简化了模拟软件的设计工作。实际上,已有 I2C总线的软件
包可调用。
SPI和 I2C总线使用时各有所长。
二线产品用于要求 I2C总线、抗噪声性能、微控制器的 I/O
口线受限制的场合,或要求一条指令将多个字节存入写缓冲器的
场合。
三线总线 SPI规程适用于高时钟频率要求,或 × I6位数据
宽度的应用场合。
二种串行通信总线都采用单电源 (2~ 5,5V) 供电,都具有
低电流、低功耗、价格低廉等特点。二种串行通信总线的性能差
异见 表 8- 1。
8.2 程序存储器的扩展
1,程序存储器扩展时的总线功能和操作时序
为片外程序存储器读选择信号。正常运行时,该
引脚不能浮空。
根据连接电平的不同, 单片微机有两种取指过程:
⑴ 当 = l时, 80C51单片微机所有片内程序存储器有效 。
当程序计数器 PC运行于片内程序存储器的寻址范围内 (
对 80C51/ 87C51/ 89C51为 0000H~ 0FFFH,共 4KB;对 80C52
/ 87C52/ 89C52为 0000H~ 1FFFH,共 8KB) 时, P0口, P2 口
及 线没有信号输出;当程序计数器 PC的值超出上述范围
后, P0口, P2口及 PSEN线才有信号输出 。
80C51访问片外程序存储器时, 使用如下的信号:
·P 0口:分时输出程序存储器的低 8位地址和 8位数据 。
·ALE:输出, 在 ALE的下降沿时, P0口上出现稳定的程
序存储器的低 8位地址, 用 ALE信号锁存这低 8位地址 。
EA
EA
PSEN
·P2口:在整个取指周期中,输出稳定的程序存储器的高
8位地址。
· 线:输出,低电平有效。在 ALE的下降沿之后,
由高变为低,此时片外程序存储器的内容(指令字)送
到 P0口,而后在 的上升沿将指令字送入指令寄存器。因
而,信号作为片外程序存储器的“读”选通信号。
( 2)当 = 0时,80C51单片微机所有片内程序存储器
无效,只能访问片外程序存储器。伴随着单片微机复位,P0口
,P2口及 线均有信号输出。
单片微机片外程序存储器取指操作的时序如 图 8- 7所示。
PSEN
PSEN
PSEN
PSEN
PSEN
EA
2.扩展片外程序存储器的硬件电路
80C51的片内程序存储器容量越来越大, 如 89C58/
87C58的片内程序存储器的容量高达 32 K× 8位, 甚至为 64
K× 8位 。 而且价格也大大降低 。 因此, 程序存储器的扩展已
不是必须的了 。 这里, 仅作为一种技术来加以介绍 。
通常只需要扩展一片或两片 EPROM芯片就足够 。 常用
EPROM芯片的管脚见 图 8–8。
例:扩展 16K× 8位片外程序存储器
如 图 8–9所示。在电路中 是接高电平的。 27128A是
16K容量的 EPROM,所以用到了 14根地址线 A0~ A13。系统
中只扩展了一片程序存储器,所以 27128A的片选端可直接接
地,一直有效。
EA
8.3 数据存储器的扩展
常用的数据存储器有动态 RAM和静态 RAM,有并行 RAM
和串行 RAM。
⒈ 片外数据存储器扩展时的总线功能和读、写操作时序
80C51单片微机, 对片外数据存储器读, 写操作的指令有
以下四条:
MOVX A,@ Ri ; 片外 RAM→ ( A), 读 ( ) 操作
MOVX @ Ri,A ;( A) → 片外 RAM,写( )操作
这组指令由于@ Ri只能提供 8位地址, 因此, 仅能扩展 256个字节
的片外 RAM。
MOVX A,@ DPTR;片外 RAM→ ( A), 读操作
MOVX @ DPTR,A ;( A) → 片外 RAM, 写操作
这组指令由于@ DPTR能提供 16位地址, 因此, 可以扩展 64KB的
片外 RAM。
RD
WR
―MOVX A,@ DPTR‖和, MOVX @DPTR,A‖的操作
时序示于 图 8- 10。
从图中可以看出, 执行该组指令时, 机器周期 1为取指周
期, 在取指周期的 S5状态, 当 ALE为下降沿时, 在 P0总线上出
现的是数据存储器的低 8位地址, 即 DPL;在 P2口上出现的是数
据存储器的高 8位地址, 即 DPH。
取指操作之后, 直至机器周期 2的 S3状态之前,
一直维持高电平 。 而在机器周期 2的 S1与 S2状态之间的 ALE不再
出现 。
执行, MOVX A,@ DPTR‖时, 从机器周期 2开始到 S3
状态, 出现低电平 。 此时允许将片外数据存储器的数据送上
P0口, 在 的上升沿将数据读入累加器 A。 数据为输入 。 执行
,MOVX @ DPTR,A‖时, 从机器周期 2开始到 S3状态, 出
现低电平 。 此时 P0口上将送出累加器 A的数据, 在 的上升沿
将数据写入片外数据存储器中 。 数据为输出 。
PSEN
WR
RD
RD
WR
此时 P0口为地址、数据复用总线; P2口在机器周期 1的 S4状态
之后出现锁存的高 8位地址( DPH);用控制线来调动数据总
线上的数据传输方向:而 有效时数据为输入,有效时
数据为输出。
2.扩展片外数据存储器的硬件电路
在 80C51的扩展系统中,片外数据存储器一般由随机存
取存储器组成,最大可扩展 64KB。 图 8–11所示的是用两片
6264扩展 16K*8位片外数据存储器的电路。
在图中,采用线选法寻址。用一根口线 P2.7来寻址:当
P2,7=0时,访问 6264(0),地址范围为 6000H~ 7FFFH;当
P2.7=l时,访问 6264( 1),地址范围为 E000H~ FFFFH。
WRRD
计算机系统中共有两种数据传送操作 。 一类是 CPU和存储器
之间的数据读写操作;另一类则是 CPU和外部设备之间的数据
传输 。
1,单片微机为什么需要 I/O接口电路
由于存储器是半导体电路, 与 CPU具有相同的电路形式,
数据信号也是相同的 ( 电平信号 ), 能相互兼容直接使用, 因
此存储器与 CPU之间采用同步定时工作方式 。 它们之间只要在
时序关系上能相互满足就可以正常工作 。 存储器与 CPU之间的
连接相当简单, 除地址线, 数据线之外, 就是读或写选通信号,
实现起来非常方便 。
8.4 I/O 的扩展及应用
8.4.1 I/O扩展概述
CPU和外部设备之间的数据传送却十分复杂 。
① 高速 CPU与工作速度快慢差异很大的慢速外部设备的矛盾 。
② 外部设备的数据信号是多种多样的 。
③ 外部设备种类繁多 。
④ 外设的数据传送有近距离的, 也有远距离的 。
CPU必须在 CPU和外设之间有一个接口电路, 通过接口
电路对 CPU与外设之间的数据传送进行协调 。
在数据的 I/O传送中, 接口电路主要有如下几项功能:
① 速度协调
由于速度上的差异, 使得数据的 I/O传送只能以异步方式进行,
即只能在确认外设已为数据传送作好准备的前提下才能进行 I/O
操作 。
② 三态缓冲
数据输入时, 输入设备向 CPU传送的数据也要通过数据总线,
为了维护数据总线上数据传送的有秩序, 因此只允许当前时刻正
在进行数据传送的数据源使用数据总线, 其它数据源都必须与数
据总线处于隔离状态 。 为此要求接口电路能为三态缓冲功能 。
③ 数据转换
有些外部设备需要使用接口电路进行数据信号的转换 。 其
中包括:模数转换, 数 模转换, 串并转换和并串转换等 。
⒉ 接口与端口
外设之间在数据传送方面的联系 。 其功能主要是通过电路
实现的 。 因此称之为接口电路 。
在接口电路中应该包含有数据寄存器以保存输入输出数据、
状态寄存器以保存外设的状态信息、命令寄存器以保存来自 CPU
的有关数据传送的控制命令。由于在数据的传送中,CPU需要对
这些寄存器的状态口和保存命令的命令口寻址等,我们通常把接
口电路中这些已编址并能进行读或写操作的寄存器称之为端口
( port),或简称口。因此,一个接口电路就对应着多个端口地
址。对它们像存储单元一样进行编址。
⒊ 数据隔离技术
输入输出的数据都要通过系统的数据总线进行传送, 为
了正确地进行数据的传送, 就必须解决数据总线的隔离问题 。
对于输出设备的接口电路, 要提供锁存器, 当允许接收
输出数据时闩锁打开, 否则关闭 。 而对于输入设备的接口电路,
要使用三态缓冲电路或集电极开路门 。
⑴ 三态缓冲电路
三态缓冲电路就是具有三态输出的门电路, 也称之为三
态门 ( TSL) 。 所谓三态, 就是指低电平状态, 高电平状态和
高阻抗三种状态 。 当三态缓冲器的输出为高或低电平时, 就是
对数据总线的驱动状态;当三态缓冲器的输出为高阻抗时, 就
是对总线的隔离状态 。 三态缓冲器的控制逻辑如 表 8–2所示 。
对三态缓冲电路的主要性能要求有:
·速度快, 信号延迟时间短 。 例如典型三态缓冲器的延迟
时间只有 8-13ns。
·较高的驱动能力 。
·高阻抗时对数据总线不呈现负载, 最多只能拉走不大于
0.04mA电流 。
⑵ 集电极开路门
集电极开路门是从基本的与非门电路演变过来的, 把集
电极回路中的电阻除去, 让集电极开路, 就得到了集电极开路
门电路 。 可以作为集电极开路的电路有反相器, 与非门以及与
或非门等 。
集电极开路器件的输出是低电平起作用, 如果其中一个
为低电平, 则总的输出即为低电平 。 只有当所有连在一起的集
电极开路器件的输出端均为高电平时总的输出才是高电平 。 对
于这种逻辑关系有时也称之为, 线或, 。
⒋ I/O编址技术
接口电路要对其中的端口进行编址 。 对端口编址是为
I/O操作而进行的, 因此也称为 I/O编址 。 常用的 I/O编址有独
立编址方式和统一编址方式 。
⑴ 独立编址方式
优点是 I/O地址空间和存储器地址空间相互独立, 但需
要专门设置一套 I/O指令和控制信号, 从而增加了系统的开销 。
⑵ 统一编址方式
统一编址就是把系统中的 I/O和存储器统一进行编址 。
在这种编址方式中, 把接口中的寄存器 ( 端口 ) 与存储器中的
存储单元同等对待 。 为此也把这种编址称之为存储器映像
( Memory mapped) 编址 。 80C51使用统一编址方式 。 因此
在接口电路中的 I/O编址也采用 16位地址, 和存储单元的地址
长度一样 。
⒌ I/O数据传送的控制方式
有无条件传送方式, 查询方式, 中断方式和直接存储器
存取 ( DMA) 四种方式 。 在单片微机中主要使用前三种方式 。
⑴ 无条件传送方式
无条件传送也称为同步程序传送 。 在进行 I/O操作时,
不需要测试外部设备的状态, 可以根据需要随时进行数据传送
操作 。
⑵ 程序查询方式
查询方式又称之为有条件传送方式, 即数据的传送是有
条件的 。 为了实现查询方式的数据输入输出传送, 需要由接口
电路提供外设状态, 并以软件方法进行状态测试 。 因此这是一
种软硬件方法结合的数据传送方式 。
⑶ 程序中断方式
当外设为数据传送作好准备之后, 就向 CPU发出中断
请求, CPU响应中断请求之后, 转去为外设的数据输入输出
服务 。 待服务完成之后, CPU再继续执行被中断的原程序 。
80C51的四个 8位双向口, 都具有数据 I/O操作功能 。
⒈ 有关 I/O口的指令
由于 80C51采用统一编址方式, 因此没有专门的 I/O
指令 。 四个 I/O口均属于内部的 SFR。
8.4.2 80C51单片微机 I/O口直接应用
⑴ I/O口的数据传送指令
向口输出数据的指令有:
MOV Px,A
MOV Px,Rn
MOV Px,@Ri
MOV Px,direct
从口输入数据的指令有:
MOV A,Px
MOV Rn,Px
MOV @Ri,Px
MOV direct,Px
⑵ I/O口的位操作指令
位传送指令 MOV Px.y C
位清 0指令 CLR Px.y
位置 1指令 SETB Px.y
位取反 CPL Px.y
位为 1转移 JB Px.y rel
位为 0转移 JNB Px.y rel
位为 1转移并清零 JBC Px.y rel
⑶ I/O口其它操作指令
逻辑与指令 ANL Px,A
逻辑和指令 ORL Px,A
逻辑异与指令 XRL Px,A
加 1指令 INC Px
减 1指令 DEC Px
减 1条件转移指令 DJNZ Px,rel
数值比较转移指令 CJNE A,Px,rel
使用单片微机本身的 I/O口, 能完成一些简单的数据 I/O应用 。
例:执行指令,MOV P1,#7FH
执行结果为,P1.7引脚输出为低电平, 其余 7个引脚都输出高电平 。
⒈ 简单输出口的扩展
输出口的主要功能是进行数据保持 (锁存 ), 一般应用锁
存器芯片实现 。 比如常用 74LS377芯片, 该芯片是一个具有
,使能, 控制端的 8D锁存器 。 一个时钟输入端 CK,一个锁存
允许信号 G,当 G=0时, CK的上跳变将把 8位 D输入端的数据
打入 8位锁存器, 这时 Q输出端将保持 D端输入的数据 。 80C51
与 74LS377的接口见 图 8–12。
例:将一个数据字节从 74LS377输出, 则执行下面程序段:
MOV DPTR.#7FFFH ;地址指针指向 74LS377
MOV A,#DATA ;将输出数据送 A
MOVX @DPTR,A ;输出数据
8.4.3 80C51简单 I/O的扩展
⒉ 简单输入口的扩展
对于常态数据的输入, 只需采用 8位三态门控制电路芯片
即可 。 图 8-13是用 74LS244通过 P0口扩展的 8位并行输入口, 图
中, 三态门由 P2.6和 RD相或控制, 其端口地址为 BFFFH。
例:数据输入
MOV DPTR,#0BFFFH ;指向 74LS244口地址
MOVX A,@DPTR ;读入数据
8.4.4 可编程 I/O接口芯片 8255A的扩展及应用
在单片微机 I/O扩展中常用的并行可编程接口芯片有:
8255A可编程通用并行接口芯片
8155 带 RAM和定时器, 计数器的可编程并行接口芯片
8279 可编程键盘 /显示器接口芯片 。
⒈ 8255A的逻辑结构和信号引脚
8255A是一个 40引脚的双列直插式集成电路芯片, 其
逻辑结构如 图 8–14所示 。
按功能可把 8255A分为三个逻辑电路部分, 即:口电路, 总
线接口电路和控制逻辑电路 。
⑴ 口电路
8255A共有三个 8位口, 其中 A口和 B口是单纯的数据
口, 供数据 I/O使用 。 而 C口则既可以作数据口, 又可以作控
制口使用, 用于实现 A口和 B口的控制功能 。
数据传送中 A口所需的控制信号由 C口高位部分
( PC7~ PC4) 提供, 因此把 A口和 C口高位部分合在一起称
之为 A组;同样理由把 B口和 C口低位部分 ( PC3~ PC0) 合
在一起称之为 B组 。
⑵ 总线接口电路
总线接口电路用于实现 8255A和单片微机的信号连接。其中包括:
① 数据总线缓冲器
数据总线缓冲器为 8位双向三态缓冲器, 可直接和 80C51的数据
线相连, 与 I/O操作有关的数据, 控制字和状态信息都是通过该
缓冲器进行传送 。
② 读 /写控制逻辑
与读写有关的控制信号有:
·CS—片选信号 ( 低电平有效 )
·RD—读信号 ( 低电平有效 )
·WR—写信号 ( 低电平有效 )
·A 0,A1—端口选择信号 。 8255A共有四个可寻址的端口 ( 即 A
口, B口, C口和控制寄存器 ), 用二位地址编码即可实现选择 。
参见 表 8–3。
·RESET—复位信号 ( 高电平有效 ) 。 复位之后, 控制寄存器
清除, 各端口被置为输入方式 。
读写控制逻辑用于实现 8255A的硬件管理,其内容包括
芯片的选择,口的寻址以及规定各端口和单片微机之间的数据
传送方向。详见 表 8–3 8255A接口工作状态选择表,
⑶ 控制逻辑电路
控制逻辑电路包括 A组控制和 B组控制, 合在一起构成 8
位控制寄存器 。 用于存放各口的工作方式控制字 。
⒉ 8255A工作方式及数据 I/O操作
⑴ 8255A的工作方式
8255A共有三种工作方式, 即方式 0,方式 1,方式 2.
① 方式 0 基本输入 /输出方式
方式 0下, 可供使用的是两个 8位口 ( A口和 B口 ) 及两个 4位
口 ( C口高 4位部分和低 4位部分 ) 。 四个口可以是输入和输出的任
何组合 。
方式 0适用于无条件数据传送, 也可以把 C口的某一位作为状态位,
实现查询方式的数据传送 。
② 方式 1 选通输入 /输出方式
A口和 B口分别用于数据的输入 /输出 。 而 C口则作为数据
传送的联络信号 。 具体定义见 表 8–4。 可见 A口和 B口的联络信号
都是三个, 如果 A或 B只有一个口按方式 1使用, 则剩下的另外 13
位口线仍然可按方式 0使用 。 如果两个口都按方式 1使用, 则还剩
下 2位口线, 这两位口线仍然可以进行位状态的输入输出 。
方式 1适用于查询或中断方式的数据输入 /输出。
③ 方式 2 双向数据传送方式
只有 A口才能选择这种工作方式, 这时 A口既能输入数据
又能输出数据 。 在这种方式下需使用 C口的五位线作控制线, 信
号定义如 表 8–4所示 。 方式 2适用于查询或中断方式的双向数据传
送 。 如果把 A口置于方式 2下, 则 B口只能工作于方式 0.
⑵ 数据输入操作
用于输入操作的联络信号有:
·STB(StroBe)—选通脉冲, 输入, 低电平有效 。
当外设送来 STB信号时, 输入数据装入 8255A的锁存器 。
·IBF(Input Buffer Full) —输入缓冲器满信号, 输出, 高
电平有效 。
IBF信号有效, 表明数据已装入锁存器, 因此它是一个状
态信号 。
·INTR(INTerrupt Request)—中断请求信号, 高电平有效,
当 IBF为高, 信号由低变高 (后沿 )时, 中断请求信号有效 。 向单
片微机发出中断请求 。
数据输入过程:当外设准备好数据输入后,发出信号,输入的数
据送入缓冲器。然后 IBF信号有效。如使用查询方式,则 IBF即
作为状态信号供查询使用;如使用中断方式,当 信号由低变高时,
产生 INTR信号,向单片微机发出中断。单片微机在响应中断后
执行中断服务程序时读入数据,并使 INTR信号变低,同时也使
IBF信号同时变低。以通知外设准备下一次数据输入。
⑶ 数据输出操作
用于数据输出操作的联络信号有:
·ACK(ACKnowledge)—外设响应信号输入, 低电平有效 。
当外设取走输出数据, 并处理完毕后向单片微机发回的响应信号 。
·OBF( Output Buffer Full) ——输出缓冲器满信号, 输
出, 低电平有效 。
当单片微机把输出数据写入 8255A锁存器后, 该信号有效,
并送去启动外设以接收数据 。
·INTR—中断请求信号, 输出, 高电平有效 。
数据输出过程:外设接收并处理完一组数据后, 发回
ACK信号 。 该信号使 OBF变高, 表明输出缓冲器已空 。 如使用
查询方式, 则 OBF可作为状态信号供查询使用;如使用中断方
式, 则当 ACK信号结束时, INTR有效, 向单片微机发出中断请
求 。 在中断服务过程中, 把下一个输出数据写入 8255A的输出缓
冲器 。 写入后 OBF有效, 表明输出数据已到, 并以此信号启动
外设工作, 取走并处理 8255A中的输出数据 。
⒊ 8255A控制字及初始化编程
8255A是可编程接口芯片, 共有两种控制字, 即 8255A工作
方式控制字和 C口位置位 /复位控制字 。
⑴ 工作方式控制字
工作方式控制字用于确定各口的工作方式及数据传送方向 。
其格式如 图 8-15所示 。
⑵ C口位置位 /复位控制字
C口的每一位都可以进行置位或复位。对 C口各位的置位或
复位是由位置位 /复位控制字进行的。 8255A的位置位 /复位控制字
格式如 图 8–16所示。
D7是该控制字的特征位, 其状态固定为 0。 在使用中, 控制字每次
只能对 C口中的一位进行置位或复位 。
⒋ 8255A与 80C51的接口及应用
8255A与 80C51的接口电路见 图 8–17。
由图分析,PA地址为 7FFCH(A15=0,A1=0,A0=0)
PB地址为 7FFDH(A15=0,A1=0,A0=1)
PC地址为 7FFEH(A15=0,A1=1,A0=0)
控制寄存器地址为 7FFFH(A15=0,A1=1,A0=1)
例:对 8255A各口作如下设置,A口方式 0,B口方式 0,从
A口输入从 B口, C口输出 。
工作方式控制字 10010000,即 90H。 初始化程序段为:
MOV A,#90H ;设 B口, C口输出,; A口输入, A口, B口为方式 0
MOV DPTR,#7FFFH
MOVX @DPTR,A
MOV DPTR,#7FFCH;从 A口输入
MOVX A,@DPTR
INC DPTR ;从 B口输出
MOVX @DPTR,A
INC DPTR ;从 C口输出
MOVX @DPTR,A
例:把 C口的第 6位 PC5置为 1。
MOV DPTR,#7FFFH
MOV A,#00001011 ; PC5置位
MOVX @DPTR,A
8.5 D/A转换器接口的扩展及应用
8.5.1概述
1,D/A转换器及其接口电路的一般特点
数/模转换器是一种将数字信号转换成模拟信号的器
件,为计算机系统的数字信号和模拟环境的连续信号之间提供
了一种接口。
数/模转换器的输出是由数字输入和参考源 Vref组合进
行控制的。大多数常用的数/模转换器的数字输入是二进制或
BCD码形式的,输出可以是电流也可以是电压,而多数是电
流。因而,在多数电路中,数/模转换器的输出需要用运算放
大器组成的电流一电压转换器将电流输出转换成电压输出。
2,数/模转换器接口电路的一般特点
根据数/模转换器输入口是否具有锁存器可将其分为两
类 。
( 1) 内部无锁存器
如 DAC800( 8位 ), AD7520( 10位 ), AD7521( 12
位 ) 。 它们的结构简单, 内部不带锁存器 。 这一类数 /模转换器,
最适合与单片微机 80C51的 P1,P2等具有输出锁存功能的 I/O
口直接接口 。 但是当它们与 P0口相接口时, 则需在其输入端增
加锁存器 。
( 2) 内部带锁存器
目前应用的数/模转换器, 不仅具有数据锁存器, 有的
还提供地址译码电路, 有些包含双重, 甚至多重的数据缓冲结
构, 如 DAC0832,DAC1230,AD7542以及 AD7549等 。 这种类
型的数 /模转换器以高于 8位 (如 12位 )的居多 。 这类数 /模转换器以
与 80C51中的 P0口相接口较为适合 。
⒈ DAC0832的技术特性
输入数字量为 8位, 逻辑电平与 TTL兼容, 参考电压
Vref的工作范围为+ 10~- 10 V,单电源电压 Vcc的范围为+
5V~+ 15V,电流建立时间为 1μs,CMOS工艺, 低功耗 20mW,
20脚双列直插式封装, 具有单缓冲, 双缓冲和直通三种数据输
入工作方式 。
8.5.2 八位 D/A转换器芯片 DAC0832
⒉ DAC0832的内部逻辑结构
数/模转换器 DAC0832的内部逻辑结构如 图 8- 18所示 。
芯片内有一个 8位输入寄存器, 一个 8位 DAC寄存器, 形成两级
缓冲结构 。 这样可使 DAC转换输出前一个数据的同时, 将下一个
数据传送到 8位输入寄存器, 以提高数/模转换的速度 。 在一些场
合 (比如 X-Y绘图仪的单片微机控制 ),能够使多个数模转换器分时
输入数据之后, 同时输出模拟电压 。
⒊ DAC0832的引脚及其功能
DAC0832的引脚如 图 8- 19所示。
CS:片选,低电平有效。与 ILE信号结合,可对 WR1 是否起作用
进行控制。
·ILE,允许数据输入锁存, 高电平有效 。
·WR1:写信号 1,输入, 低电平有效 。 用于将 CPU数据总线送来
的数据锁存于输入寄存器中, WR1有效时, 和 ILE必须同时有效 。
·WR2:写信号 2,输入, 低电平有效, 用于将输入寄存器中的数
据传送到 DAC寄存器中, 并锁存起来 。 当 WR2有效时, XFER也
必须同时有效 。
·XFER:传送控制信号, 低电平有效 。 用来控制 WR2,选通 DAC
寄存器 。
·DI7~ DI0,8位数字输入, DI7为最高位, DI0为最低位 。
Iout1,DAC电流输出 1,当数字量为全 1时,输出电流最大;当
数字量为全 0时输出电流最小。
·Iout2,DAC电流输出 2,其与 Iout1的关系,满足下式,
·Rbf:反馈电阻 (15KΩ),已固化在芯片中。因为 DAC0832是
电流输出型 D/A转换器,为得到电压输出,使用时需在二个电流
输出端接运算放大器。 Rbf作为运算放大器反馈电阻,为 DAC提
供电压输出。
·Vref:参考电压输入, 通过它将外加高精度电压源与内部的电
阻网络相连接 。 Vref可在+ 10~一 10 V范围内选择 。
·VCC:数字电路电源 。
·DGND:数字地 。
·AGND:模拟地 。
8.5.3 DAC0832的扩展与应用
⒈ DAC0832的单缓冲方式的接口电路和应用
使 DAC0832内部的输入寄存器或 DAC寄存器中有一个处
于直通方式, 另一个处于受控的锁存状态, 或者二个寄存器同时
处于受控的锁存状态 。 单缓冲方式的接口电路见 图 8–20。
要使输入寄存器处于直通方式, 应使 ILE=1,CS=0,WR1=0。
要使 DAC寄存器处于直通方式, 应使 XFER=0,WR2=0。
例:产生锯齿波 。
由 图 8–20可知, DAC0832为单缓冲方式, 输入寄存器和
DAC寄存器同时受控锁存 。 DAC0832的地址为 7FFFH(P2.7=0) 。
产生锯齿波的程序清单如下:
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN,MOV DPTR,#7FFFH ;同时输入输入寄存器和; DAC寄存器地址
MOV R0,#0 ;转换初值
LP,MOV A,R0
MOVX @DPTR,A ;送出模拟量
INC R0
SJMP LP
⒉ DAC0832的双缓冲方式的接口电路和应用
DAC0832与 80C51的接口电路见 图 8- 21。 采用双缓冲方
式 。
用口线 P2.5控制第一片 DAC0832的输入锁存器, 地址为 DFFFH;
用口线 P2.6控制第二片 DAC0832的输入锁存器, 地址为 BFFFH;
用口线 P2.7同时控制二片 DAC0832的第二级缓冲, 地址为 7FFFH。
若第一片的数据在 R0中, 第二片的数据在 R1中, 此时送数程序为:
MOV DPTR,#0DFFFH;把数据送第一片; 0832的输入锁存器
MOV A,R0
MOVX @DPTR,A
MOV DPTR,#0BFFFH ;把数据送第二片; 0832的输入锁存器
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#7FFFH;两片 0832同时输出模拟量
MOVX @DPTR,A
8.6 A/D转换器接口的扩展及应用
8.6.1概述
模/数转换器是一种用来将连续的模拟信号转换成适合于
数字处理的二进制数的器件, 是一个将模拟信号值编制成对应的
二进制码的编码器 。 与此对应, 数/模转换器则是一个解码器 。
常用的模/数转换器有:计数式 A/D转换器, 双积分式 A/D转换
器, 逐位比较式 A/D转换器及并行直接比较式 A/D转换器,
∑/△ A/D转换器等几种 。
一个完整的模/数转换器应该包含这样一些输入、输出信号:
.模拟输入信号 Vin和参考电压 Vref;
.数字输出信号;
.启动转换信号;
.转换完成 ( 结束 ) 信号或者, 忙, 信号, 输出;
.数据输出允许信号, 输入 。
单片微机对 A/D转换的控制一般分为三个过程:
① 单片微机通过控制口发出启动转换信号, 命令模/数转换器开
始转换 。
②单片微机通过状态口读入 A/D转换器的状态,判断它是否转换
结束。
③ 一旦转换结束,CPU发出数据输出允许信号,读入转换完成
的数据。
ADC0809是采用 CMOS工艺制成的 8位 8通道逐次逼近式模
数转换器,可实现对 8路模拟信号分时进行 A/D转换,其转换时间
为 100μs左右。可用单一电源供电,此时模拟电压输入范围为 0~
5V,无需调零和满刻度调整。分辨率为 8位。非调整误差为
± 1LSB。三态锁存输出。低功耗为 15mW。采用 28脚 DIP封装,
⒈ ADC0809的内部逻辑结构
ADC0809的内部结构逻辑框图示于 图 8- 22。 从逻辑框图
中可看到, ADC0809芯片包含一个 8路模拟开关, 模拟开关的地
址锁存和译码电路, 比较器, 256R电阻网络, 电子开关逐位比较
寄存器 SAR,三态输出锁存缓冲器以及控制与定时电路等 。
8.6.2 A/D转换器芯片 ADC0809
⒉ ADC0809的引脚及功能
ADC0809的引脚分配如 图 8- 23所示 。
·ADD A,ADD B,ADD C:模拟通道的地址选择线, 输入 。
·ALE:地址锁存允许信号, 输入 。 由低到高的正跳变有效,
此时锁存地址选择线的状态, 从而选通相应的模拟通道, 以便进
行 A/D转换 。
·2–1~ 2–8:数字输出线, 输出 。 2–8为最低位 ( LSB), 2–1为最
高位 ( MSB) 。
·IN0~ IN7:模拟量输入通道,信号为单极性,电压范围 0~
VCC。若信号过小还需加以放大。在 A/D转换过程中模拟量的值
不应变化,对变化速度快的模拟量,在输入前应增加采样保持电
路。
·START:启动信号, 输入, 高电平有效 。 为了启动转换, 在
此端上应加一正脉冲信号 。 脉冲的上升沿将内部寄存器全部清 0,
在其下降沿开始转换 。
·EOC:转换结束信号, 输出, 高电平有效 。 在 START 信
号的上升沿之后 0~ 8个时钟周期内, EOC变为低电平 。 当转换
结束时, EOC变为高电平, 这时转换得到的数据可供读出 。
·OE:输出允许信号, 输入, 高电平有效 。 当 OE有效时, A/D
的输出锁存缓冲器开放, 将其中的数据放到外面的数据线上 。
·CLK:时钟, 输入 。 时钟频率范围为 10K~ 1280KHz。
8路模拟开关的三位地址选通输入端与对应的输入通道的
关系见 表 8–5。
ADC0809的时序如 图 8-24所示 。 其中:
tWS:最小启动脉宽, 典型值为 100ns,最大值为 200ns。
tWE:最小 ALE脉宽, 典型值为 100ns,最大值为 200ns。
tD:模拟开关延时,典型值为 1μs,最大值为 2.5μs。
tC:转换时间,当 fCLK= 640KHz时,典型值为 100μs,最
大值为 116μs。
tEOC:转换结束延时, 最大值为 8个时钟周期+ 2μ s。
⒈ ADC0809与 80C51的接口
ADC0809与 80C51的接口电路如 图 8- 25所示。
P0口直接与 ADC0809的数据线相接, P0口的低三位通过锁
存器 74LS373连到 ADDA,ADD B,ADD C,锁存器的锁存信号
是 80C51的 ALE信号 。 80C51的 ALE信号直接连到 ADC0809的
CLK引脚 。
P2,7口作为读写口的选通地址。
片外 A/D转换通道的地址为 7FF8H~ 7FFFH。
在软件编制时, 令 P2.7(A15)= 0,A0,A1,A2给出被选择
的模拟通道的地址, 执行一条输出指令, 就产生一个正脉冲, 锁
存通道地址和启动 A/D转换;执行一条输入指令, 读取 A/D转换结
果 。
8.6.3 ADC0809的扩展及应用
例:采用延时等待 A/D转换结束方式, 分别对 8路模拟信号轮流采
样一次, 并依次把结果存入数据存储器 。
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN,MOV R1,#20H
MOV DPTR,#7FF8H ;指向通道 0地址
MOV R7,#08H ;共需转换 8个通道
LOOP,MOVX @DPTR,A;启动 A/D转换
LCALL D128μs ;延时等待 A/D转换结束
MOVX A,@DPTR ;读入 A/D转换值, 并存入内存
MOV @R1,A
INC DPTR ;指向下一通道地址
INC R1
DJNZ R7,LOOP ; 8个通道未转换完, 则继续 。

⒉ ADC0809与 80C51中断方式的接口
ADC0809与 80C51中断方式连接图 接口电路如 图 8–26所示。
将 ADC0809作为外扩的并行 I/O口,由 P2.7和脉冲同时有效来启
动 A/D转换,通道选择端 A,B,C分别与地址线 A0,A1,A2相
连。其端口地址为 7FF8H~ 7FFFH。 A/D转换结束信号 EOC经反
相后接 80C51的外部中断引脚。
例:采集 8路模拟量,并存入 20H地址开始的内部 RAM中。
ORG 0000H
SJMP MAIN
ORG 0003H ;外部中断 0入口地址
LJMP INTDATA
ORG 0100H ;数据采集子程序
SAMP,MOV R0,# 20H ;数据缓冲区首址
MOV R2,# 8 ; 8通道计数器
MOV DPTR,# 7FF8H;指向 0通道
START,CLR F0 ;清中断发生标志
MOVX @ DPTR,A ;启动 A/D (P2.7=0,=0)
SETB IT0 ;置外部中断 0为边沿触发
SETB EX0 ;允许外部中断 0
SETB EA ;开中断
LOOP,JNB F0,LOOP ;判中断发生标志是否为 0
DJNZ R2,START ; 8个通道转换是否结束
RET
INTDATA,MOVX A,@ DPTR ;读数据 (P2.7=0,=0),硬;件撤销中断
MOV @ R0,A ;存数据
INC R0
INC DPTR ;指向下一通道
SETB F0 ;置中断发生标志
RETI
8.7 键盘接口
8.7.1 键盘接口的工作原理
在过程控制和智能化仪表中, 通常是用单片微机进行实
时控制和数据处理的, 为实现人机对话, 键盘是个必不可少的
功能配置 。 利用按键可以实现向单片微机输入数据, 传送命令,
功能切换等, 是人工干预单片微机系统的主要手段 。
8.7.1 键盘接口的工作原理
1,键盘的工作原理
键盘可分为两类:独立式键盘和矩阵式键盘 。
(1) 独立式键盘
这是最简单的键盘电路, 各个键相互独立, 每个按键独立
地与一根数据输入线相连接, 如 图 8–27所示 。
图 8–27中 (a) 为中断方式, 任何一个按键按下时, 通过门电路都
会向 CPU申请中断, 在中断服务程序中, 读入 P1口的值, 从而
判断是哪一个按键被按下 。 图 8–27中 (b) 为查询方式, 在平时,
所有的数据输入线都通过上拉电阻被连接成高电平;当任何一个
键被压下时, 与之连接的数据输入线将被拉成低电平 。
对按键是否被按下,需采用软件消抖的办法,以消除按键
在闭合和断开瞬间所伴随有一连串抖动所带来的不利影响。
(2) 矩阵式键盘
矩阵式键盘输入电路, 如 图 8–28所示, 若有四根行线, 四
根列线, 则构成 4× 4键盘, 最多可定义 16个按键 。
2,矩阵式键盘的工作过程
?⑴ 键扫描:
?① CPU先通过输出口使所有列线输出为低电平, 然后从输入口
读入所有行线的状态 。 若行线状态都为高电平, 则说明没有键被
按下, 若行线中有低电平, 则表明有键被按下 。
② 判断按键位置 。 CPU通过输出口使列线从低位至高位逐位变低
电平输出, 每次均读入行线的状态, 以确定那条列线为, 0‖状态 。
由行, 列线的状态就可判断是哪一个键被按下 (行, 列交叉处 )
③ 当判断出哪个键压下后, 程序转入相应的键处理程序 。
?⑵ 键扫描的方式:
① 程控扫描方式,CPU的控制一旦进入监控程序, 将反复不断
地扫描键盘, 等待输入命令或数据 。
② 定时扫描方式:在初始化程序中对定时器 /计数器进行编程,
使之产生 10ms的定时中断, CPU响应定时中断, 执行中断服务
程序, 对键盘扫描一遍, 检查键盘的状态, 实现对键盘的定时扫
描 。
③ 中断扫描方式:当键位上有键压下时, 由硬件电路产生中断
请求, CPU响应中断, 执行中断服务程序, 判断压下的键的键
号, 根据键的定义 (数字键或功能键 )作相应的处理 。
80C51的 I/O口具有输出锁存和输入缓冲的功能, 因而用
它们组成键盘电路时, 可以省掉输出锁存器和输入缓冲器, 图
8-–29 所示的是由 80C51本身的 P1口来构成 4× 4矩阵式键盘 。
图中, 键盘的四根列线连到 P1口的高 4位, 而四根行线
连到 P1口的低四位, 并通过, 与, 门连到端 。
没有键压下时, 为高电平;当键位上有任一键压下时端
变为低电平, 向 CPU发中断请求 。 若 CPU开放外部中断 0,则
响应中断, 执行中断服务程序扫描键盘 。
在行输出电路中, 每行都串联一个二极管是为了防止多
键同时压下时, 输出口可能会短路 。
8.7.2 键盘的接口电路
8.8 显示接口
8.8.1 显示接口工作原理
1,LED显示器的工作原理
发光二极管一般为砷化镓半导体二极管, 在发光二极管
两端加上正向电压, 则发光二极管发光 。 而数码管 LED是由若
干发光二极管组合而成的, 一般的, 8‖字型 LED由, a,b,c,
d,e,f,g,dp‖8个发光二极管组成, 如 图 8–30所示, 每个发
光二极管称为一字段 。
七段 LED有共阴极和共阳极两种结构形式。
显示电路一般分为静态显示和动态显示两类 。
? 共阳极接法
把发光二极管的阳极连在一起构成公共阳极。使用时公共
阳极接 VCC,当某阴极端为低电平时,该段发光二极管就导通发
光。
? 共阴极接法
把发光二极管的阴极连在一起构成公共阴极。使用时公共
阴极接 GND,当某阳极端为高电平时,该段发光二极管就导通发
光。
七段 LED包含七段发光二极管和小数位发光二极管,共需
8位 I/O口线控制,其代码为一个字节。七段 LED字型码见 表 8–6所
示。
⒉ LED显示电路
由 N个 LED显示块可构成 N位 LED显示器, 需要 N根位选线
和 8× N根段选线 。 根据显示电路不同, 位选线和段选线的联接方
式不同, 实际所需的位选线和段选线的根数也不一样 。 显示电路
主要有静态显示和动态显示二种 。
(1) 静态显示电路
LED显示器工作在静态显示时, 其公共阳极 (或阴极 ) 接
VCC(或 GND), 一直处于显示有效状态, 所以每一位的显示内容
必须由锁存器加以锁存, 显示各位相互独立 。
(2) 动态显示电路
将所有位的段选线的同名端联在一起,由一个 8位 I/O
口控制,形成段选线的多位复用。而各位的公共阳极或公共
阴极则分别由相应的 I/O口线控制,实现各位的分时选通,即
同一时刻只有被选通位是能显示相应的字符,而其他所有位
都是熄灭的。由于人眼有视觉暂留现象,只要每位显示间隔
足够短,则会造成多位同时点亮的假象。这就需要单片微机
不断地对显示进行控 制,牺牲 CPU时间来换取元件的减少以
及显示功耗的降低。动态显示电路参见 图 8-31。
工作过程:将字形代码送入字形锁存器锁存, 这时所有的
显示块都有可能显示同样的字符;再将需要显示的位置代码送入
字位锁存器锁存 。 为防止闪烁, 每位显示时间在 1~ 2ms,然后显
示另一位, CPU需要不断地进行显示刷新 。
例,通过串行口方式 0扩展的键盘 /显示器接口电路
图 8–32示出的是通过串行口的键盘和显示接口电路 。
74LS164是串行输入并行输出的移位寄存器, 每接一片
74LS164可扩展一个 8位并行输出口, 可以作为键盘的 8根列线或
者作为 LED显示器的 8根段选线 。
图 8–32中扩展了三位 LED显示器,分别用三个 74LS164作
为三个 LED的段选输入,采用静态显示方式。 P3.3=0时,关闭显
示输入。
图 8–32中扩展了 2× 8矩阵式键盘, 由 P3.4,P3.5两个引脚
作为行线, 采用一个 74LS164的并行输出的 8位作为列线 。
例:显示一位 。

MOV SCON,#00H ;置串行口为同步移位;寄存器方式
SETB P3.3 ;开显示输入
MOV A,#0C0H ;显示, 0‖(C0H为共
阳 ;极, 0‖的段码值 )
MOV SBUF,A
JNB TI,$
CLR TI

END
图 8–1 80C51系列单片微机的三总线结构
图 8–2 地址锁存器
图 8–3 74LS138三 -八译码器
图 8–4 64K全地址译码电路
图 8–5 SPI系统时钟的极性和相位关系
图 8–6 I2C总线系统示意图
图 8–7 无片外数据存储器时的取指操作时序图
图 8-8 EPROM芯片管脚
图 8–9 EPROM的扩展电路
图 8–10 ―MOVX A,@DPTR‖ 和,MOVX @DPTR,A‖ 的操作时序
图 8–11 16K片外数据存储器扩展电路
图 8–12 80C51与 74LS377接口电路图
图 8–13 80C51与 74LS244接口电路图
图 8–14 8255A的逻辑结构图
图 8–15 8255A方式控制字
图 8–16 8255A的 C口按位操作控制字
图 8–17 8255A与 80C51的接口电路
图 8-18 DAC0832逻辑结构图
图 8–19 DAC 0832的引脚
图 8–20 DAC0832单缓冲方式的接口电路
图 8–21 DAC0832双缓冲方式的接口电路
图 8–22 ADC0808 内部逻辑结构
图 8–23 ADC0809的引脚
图 8–24 ADC0809的时序图
图 8–25 ADC0809与 80C51连接图
图 8–26 ADC0809与 80C51中断方式连接图
图 8–27 独立式按键接口电路
图 8–28 矩阵式键盘
图 8–29 通过 I/O口扩展的矩阵式键盘
图 8–30七段 LED结构及外形图
图 8-31 动态显示电路
图 8–32 采用 80C51串行口扩展的键盘、显示器电路
三 线总 线 ( S P I ) 二线 总 线 (I
2
C)
要 求 四 端 ( 除 电 源 和 地 )
工作
要求 二 端 ( 除 电 源和 地 ) 工作
× 8 位和× 16 位 数据 宽

× 8 位数 据 宽度
软件 写 保护 硬件 写 保护
时钟 和 信号 用 边沿 触 发 时钟 和 信号 用 电平 触 发,具 有 高
抗噪 声 输入 浪 涌滤 波 器
时钟 频 率可 达 2 M H z 时钟 包 含 1 0 0 K H z 和 2 0 0 K H z 两
种模 式
规程 较 简单 规程 较 复杂
表 8–1 二种串行通信总线的性能差异
表 8–2 三态缓冲控制逻辑
三态控制信号 工作状态 数据输入 输出端状态
1 高阻抗 0 高阻抗
1 高阻抗
0 驱动 0 0
1 1
表 8–3 8255A接口工作状态选择表
表 8–4 C口联络信号定义
表 8–5 通道选择表
表 8–6 七段 LED字型码