8.1 单片机系统总线结构
在单片机系统中,为了实现对外部设备的有效控制与数据交换,通常采用三总线架构。该结构主要包括地址总线、数据总线和控制总线,它们共同构成了系统扩展的基础。
8.1.1 三总线体系
三总线设计将功能分离,使得系统具备良好的可扩展性:
- 地址总线:用于指定外设或存储单元的地址,决定访问目标。
- 数据总线:负责在单片机与外部设备之间传输实际的数据信息。
- 控制总线:提供读写信号(RD、WR)、片选信号等,协调操作时序。
这种结构广泛应用于多种扩展场景,尤其适合需要连接多个外围芯片的系统设计。
8.1.2 地址锁存机制及其实现
在使用如P0口这类复用总线的单片机中,地址与数据共用同一组引脚,因此必须通过地址锁存器将地址信号暂时保存下来,以确保地址稳定。
虽然本节涉及74HC373锁存器的应用原理,但相关内容暂作省略,重点聚焦于后续I/O扩展方法。
8.2 并行I/O端口的扩展技术
当单片机自身I/O资源不足时,可通过外部电路进行并行端口扩展。主要分为两类:简单并行扩展和可编程并行扩展。
8.2.1 扩展端口的软件访问方式
无论是输入还是输出设备,其扩展端口均可视为一种“外部存储单元”来处理。单片机通过特定地址对其执行读/写操作,从而完成数据交互。
简单并行I/O扩展
此方法依赖通用数字逻辑器件(如锁存器、缓冲器)来增加可用I/O数量。其特点是硬件结构固定,不具备软件配置能力,适用于功能明确且无需频繁变更的场合。
1. 输出端口扩展 —— 使用锁存器
典型芯片:74HC573(8位透明锁存器)
作用:接收来自单片机的数据,并在其控制下保持输出状态不变,为外设提供稳定的驱动信号。
工作过程:
- P0口连接至74HC573的数据输入端(D0-D7),用于传输待输出的数据。
- 单片机某一I/O引脚(例如P2.0)连接到LE(锁存使能)引脚。
- 当LE为高电平时,输出Q跟随输入D变化;当数据稳定后,将LE置低,即可锁定当前值。
连接示意图:
单片机P0口 <---> 74HC573 D0-D7
单片机P2.0 ---> 74HC573 LE
74HC573 Q0-Q7 ---> 外设(如LED、继电器)
主要特点:
- 电路简洁、成本低廉、响应速度快。
- 仅支持输出功能,不可编程。
- 需占用数据总线及额外控制线,多路扩展时建议配合地址译码使用。
2. 输入端口扩展 —— 使用缓冲器(三态门)
典型芯片:74HC244(八路三态缓冲器)
作用:将外部输入信号安全地传送到数据总线上,同时在非工作状态下呈现高阻态,避免总线冲突。
工作原理:
- 外部设备(如按键阵列)连接至74HC244的A1-A8端口。
- Y1-Y8端接至单片机P0口,构成数据通路。
- OE(输出使能)由单片机控制(如P2.1),低电平有效。
- 当OE为低时,允许信号通过;为高时,输出断开,释放总线资源。
连接方式:
外设(按键/开关) ---> 74HC244 A1-A8
单片机P0口 <---> 74HC244 Y1-Y8
单片机P2.1 ---> 74HC244 OE(低电平有效)
核心优势:
- 实现总线分时复用,多个输入设备可共享同一数据通道。
- 仅用于输入,功能单一但可靠性高。
简单并行扩展小结(考试重点)
核心思想:利用74HC573、74HC244等标准逻辑芯片实现I/O扩展。
优点:成本低、电路简单、响应迅速。
缺点:功能固定、无法编程、多端口扩展需较多控制线,常需搭配地址译码器使用。
可编程并行I/O扩展
相较于简单扩展,此方案采用专用接口芯片,可通过软件指令灵活设定工作模式,极大提升了系统的适应性和控制能力。
典型代表芯片:Intel 8255A(可编程外设接口,PPI)
该芯片是考试中的高频考点,需熟练掌握其内部结构、端口寻址与控制字设置。
1. 内部组成结构
8255A主要由以下四部分构成:
- 数据总线缓冲器:连接单片机数据总线(D0-D7),承担数据与命令的双向传输任务。
- 读/写控制逻辑模块:接收地址线A0、A1以及控制信号RD、WR、RESET,解析操作类型。
- A组与B组控制电路:根据写入的控制字,配置各端口的工作方式。
- 三个8位I/O端口:
- PA口:具有较强功能,包含8位输出锁存和输入锁存能力。
- PB口:支持输入/输出锁存,另配输入缓冲。
- PC口:可整体使用,也可拆分为两个4位口;还可作为PA/PB口的控制或状态信号线。
2. 端口寻址与基本操作
通过A1和A0两条地址线选择不同的寄存器或端口:
| A1 |
A0 |
选中对象 |
| 0 |
0 |
PA口 |
| 0 |
1 |
PB口 |
| 1 |
0 |
PC口 |
| 1 |
1 |
控制寄存器 |
操作说明:
- 对PA、PB、PC执行“写”操作 → 向外部输出数据。
- 对PA、PB、PC执行“读”操作 → 从外部读取输入数据。
- 向控制寄存器“写”操作 → 写入控制字,设定芯片工作模式。
3. 工作方式与控制字设置
这是8255A的核心功能,也是考核的重点内容。
主要工作方式:
方式0 —— 基本输入/输出模式
- PA、PB、PC均可独立配置为输入或输出。
- 输出端带有锁存功能,输入端在方式0下不锁存(PC口例外)。
- 适用于无条件传送或查询方式通信。
方式1 —— 选通输入/输出模式
- PA和PB作为数据端口使用。
- PC的部分引脚被强制定义为PA和PB的握手信号线(如STB、IBF、ACK等)。
- 支持中断请求,提高数据传输效率。
两种方式通过写入“方式选择控制字”来设定,具体格式需结合实际应用掌握。
适用于中断传输或查询方式传输,能够便捷地连接打印机等需采用握手协议的外部设备。
方式选择控制字格式(必须掌握):
该控制字为一个8位命令字,其结构如下:
D7 D6 D5 D4 D3 D2 D1 D0
- D7:特征位,固定为1,用于标识此为工作方式设置控制字。
- D6、D5:设定A组(包括PA口及PC口高4位)的工作模式:
- 00 —— 方式0
- 01 —— 方式1
- 1x —— 方式2(双向总线方式,使用较少)
- D4:设定PA口(属于A组)的数据方向。1表示输入,0表示输出。
- D3:设定PC口高4位(PC7~PC4)的方向。1为输入,0为输出。
- D2:设定B组(包含PB口和PC口低4位)的工作方式。0代表方式0,1代表方式1。
- D1:设定PB口(B组)的方向。1表示输入,0表示输出。
- D0:设定PC口低4位(PC3~PC0)的方向。1为输入,0为输出。
示例(考试常见题型):
设要求8255A工作于方式0,其中:
- PA口作为输出
- PB口作为输入
- PC口高4位为输出
- PC口低4位为输入
则控制字各位取值如下:
- D7 = 1(特征位)
- A组工作在方式0 → D6D5 = 00
- PA输出 → D4 = 0
- PC高4位输出 → D3 = 0
- B组方式0 → D2 = 0
- PB输入 → D1 = 1
- PC低4位输入 → D0 = 1
因此,得到的二进制控制字为:1000 0011B,对应十六进制为83H。
可编程并行扩展总结(考试重点)
核心思想:利用如8255A之类的可编程接口芯片,通过软件写入控制字来动态配置各端口的功能,实现灵活的I/O扩展。
优点:
- 功能强大且灵活,支持输入、输出及中断等多种模式
- 单芯片可完成多路端口扩展
- 节省单片机本身的I/O资源,借助系统总线进行连接
缺点:
- 硬件成本较高
- 电路设计相对复杂
- 需要编写初始化程序,软件开发难度较大
两种扩展方式对比(考试简答/论述必背)
| 对比项 |
简单并行扩展 |
可编程并行扩展(以8255A为例) |
| 核心芯片 |
74HC573、74HC244等通用逻辑器件 |
8255A等专用可编程接口芯片 |
| 编程性 |
不可编程,功能由硬件决定 |
可编程,功能由软件配置 |
| 灵活性 |
较差,电路确定后I/O方向即固定 |
强,可通过程序随时更改端口工作模式 |
| 功能 |
仅支持基本的数据锁存或缓冲 |
支持基本I/O、选通I/O、中断等功能 |
| 成本与复杂度 |
低成本、电路简单 |
高成本、电路较复杂 |
| 连接方式 |
通常直接连接至单片机I/O口 |
连接至单片机的系统总线(数据、地址、控制线) |
| 适用场景 |
适用于功能简单、固定的少量扩展需求 |
适用于功能复杂、需灵活配置的多功能扩展应用 |
记忆技巧:
- 简单扩展 类似“固定开关”,安装后状态无法更改,开就是开,关就是关。
- 可编程扩展 类似“智能插座”,可通过软件(如手机App)随时设定为开关、定时器或传感器模式,具备高度灵活性。