第9章 AT89S52单片机的 I/O扩展 1.

Slides:



Advertisements
Similar presentations
第五章 微型计算机和外设的数据传输 5.1 为什么用接口电路? 5.2 CPU和I/O设备之间的信号; 5.3 接口部件的I/O端口;
Advertisements

实验四 利用中规模芯片设计时序电路(二).
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
第六章 MCS-51单片机总线系统与I/O口扩展
第8章 AT89S51单片机 外部存储器的扩展 1.
第一章 绪论.
主要内容 串行口的结构 串行口的工作方式 波特率的计算 简单应用
第三节 CPU与外设间的数据传送方式 CPU与外设的工作速度不一致, 如何使两者高效、可靠地进行数据传送, 是本节讨论的问题。
第 11 章.
第八章 数据通信.
第8章 AT89S52单片机外部 存储器的扩展 1.
简单芯片扩展I/O接口 8255可编程接口芯片及其使用 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
第七章 MCS-51系统扩展 一、程序存储器扩展
第三章 微机基本系统的设计 第一章 8086程序设计 第二章 MCS-51程序设计 第四章 存贮器与接口 第五章 并行接口
第6章 基本输入输出接口技术 【本章提要】 【学习目标】
第 14 章 并行通信及其接口电路.
第七章 MCS-51并行口的扩展 MCS51单片机内部有4个并行口,当内部并行口不够用时可以外扩并行口芯片。可外扩的并行口芯片很多,分成2类:不可编程的并行口芯片(74LS3734和74LS245)和可编程的并行口芯片(8255)。 7.1 不可编程并行口芯片的扩展 7.2 可编程并行口芯片的扩展.
第 9 章 可编程外围接口芯片 8255A 中国科学技术大学 何克东.
第七章 输入和输出 第一节 I/O接口 第三节 可编程DMA控制器8237A 第二节 CPU与外设数据传送的方式.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
第七章 可编程并行接口8255A §7.1并行接口的概述 §7.2 可编程并行接口8255A § A的0方式及其应用
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
课程设计.
实验四 组合逻辑电路的设计与测试 一.实验目的 1.掌握组合逻辑电路的设计 方法 2.学会对组合逻辑电路的测 试方法.
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
逆向工程-汇编语言
CPU结构和功能.
第5章 单片机应用系统的扩展 5.1 单片机扩展的基本概念 5.2 存储器的扩展 5.2 I/O接口扩展电路设计.
第11章 基本I/O接口 罗文坚 中国科大 计算机学院
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
C语言程序设计 主讲教师:陆幼利.
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第五章 MCS-51中断系统 一、中断请求源 MCS-51提供5个中断请求源,即INT0、INT1、TF0、 TF1和串行口发送与接收中断请求源TI或RI。这些 中断请求源分别由TCON与SCON的相应位锁存。
K60入门课程 02 首都师范大学物理系 王甜.
第6章 存储器接口 6.1 存储器概述 6.2 半导体存储器 6.3 MCS-51单片机存储器扩展.
计算机组成原理 课程设计.
(Random Access Memory)
微机原理与接口技术 第6章 并行输入输出接口(8255A)
微机原理及应用 主讲:郑海春.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
第7章 输入输出接口.
第三章 MCS 51的硬件结构.
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
第四讲: AT89C51单片机的结构及引脚功能 一、 AT89C51单片机的结构 二、 AT89C51单片机的引脚功能.
组合逻辑电路 ——中规模组合逻辑集成电路.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
实验六 触发器逻辑功能测试 一、实验目的 二、实验仪器 1、熟悉并掌握RS、D、JK触发器的构成、工作原理和 功能测试方法。
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
实验五 MSI组合逻辑功 能部件的应用与测试
7.1 AT89C51最小应用系统 从本质上讲,单片机本身就是一个最小应用系统。由于晶振、开关等器件无法集成到芯片内部,这些器件又是单片机工作所必需的器件,因此,由单片机与晶振电路及由开关、电阻、电容等构成的复位电路就是单片机的最小应用系统。如图7-1所示,AT89C51片内有Flash程序存储器,由它构成的最小应用系统简单可靠。
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
定时中断与LED MCU起航 QQ:
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
第六章 I/O接口 一、I/O接口的功能 第一节 概 述 一、I/O 接口的功能 二、I/O接口的一般结构 第二节 输入输出寻址方式和指令
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第8章 并行接口芯片 并行接口一般具有两个或两个以上的8位I/O接口。各个口的工作方式可由程序分别确定或改变,使用灵活,便于和各种外部设备连接。因此,又称可编程的外部接口(PPI) 目前各主要微处理器厂商都有自己的PPI产品,但它们的功能基本类似.
第九章 存储器和可编程逻辑器件 本章主要内容 半导体存储器 只读存储器 随机存取存储器 存储器容量的扩展 可编程逻辑器件
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
第二章 集成门电路 2.1 概述 2.2 TTL 门电路 2.3 CMOS 门电路 2.4 各种集成逻辑们的性 能比较 第2章 上页 下页
DSP技术与应用 电子与信息技术系.
9.6.2 互补对称放大电路 1. 无输出变压器(OTL)的互补对称放大电路 +UCC
Presentation transcript:

第9章 AT89S52单片机的 I/O扩展 1

第9章 AT89S52单片机的I/O扩展 9.1 I/O接口扩展概述 9.1.1 扩展的I/O接口功能 9.1.2 I/O端口的编址 9.1.3 I/O数据的传送方式 9.1.4 I/O接口电路 9.2 AT89S52扩展I/O接口芯片82C55的设计 9.2.1 82C55芯片简介 9.2.2 工作方式选择控制字及端口PC置位/复位控制字 9.2.3 82C55的3种工作方式 9.2.4 单片机扩展82C55的接口设计 9.2.5 AT89S52扩展82C55的应用举例 9.3 利用74LSTTL电路扩展并行I/O口

9.4 用AT89S52单片机的串行口扩展并行口 9.4.1 用74LS165扩展并行输入口 9.4.2 用74LS164扩展并行输出口 9.5 用I/O口控制的声音报警接口 9.5.1 蜂鸣音报警接口 9.5.2 音乐报警接口

【内容概要】 AT89S52本身有4个I/O口P0~P3,但是真正用作I/O口线的只有P1口的8位I/O口线和P3口的某些位线。因此,在部分应用系统设计中,AT89S52单片机都需要进行外部I/O接口的扩展。 本章介绍AT89S52单片机与常用的可编程I/O接口芯片82C55的扩展接口设计。此外还介绍了使用廉价的74LSTTL芯片以及使用AT89S52串行口进行扩展并行I/O接口的设计。本章最后介绍使用I/O口控制的声音报警接口设计。

9.1 I/O接口扩展概述 扩展I/O接口与扩展存储器一样,都属于系统扩展的内容。扩展的I/O接口应该具有哪些功能? 9.1.1 扩展的I/O接口功能 扩展的I/O接口电路主要应满足以下功能要求。 1.实现和不同外设的速度匹配 大多数外设的速度很慢,无法和µs量级的单片机速度相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备的前提下才能进行数据传送。外设是否准备好,就需要I/O接口电路与外设之间传送状态信息,以实现单片机与外设之间的速度匹配。

2.输出数据锁存 与外设比,单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。所以在扩展的I/O接口电路中应有输出数据锁存器,以保证输出数据能为慢速的接收设备所接收。 3.输入数据三态缓冲 数据总线上可能“挂”有多个数据源,为使传送数据时不发生冲突,只允许当前时刻正在接收数据的I/O接口使用数据总线,其余的I/O接口应处于隔离状态,为此要求I/O接口电路能为数据输入提供三态缓冲功能。 6

介绍I/O端口编址之前,首先要弄清楚I/O接口和I/O端口的概念。 I/O端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。 每个I/O接口中的端口都要有地址,以便AT89S52通过读写端口来和外设交换信息。常用的I/O端口编址有两种方式,独立编址方式与统一编址方式。 7

1.独立编址 I/O端口地址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。 2.统一编址 把I/O端口与数据存储器单元同等对待。I/O端口和外部数据存储器RAM统一编址。因此外部数据存储器空间也包括I/O端口在内。 优点是不需专门的I/O指令。缺点是需要把数据存储器单元地址与I/O端口的地址划分清楚,避免数据冲突。

为了实现和不同外设的速度匹配,必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。 1.同步传送 同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片机和外部数据存储器之间的数据传送。 2.查询传送 又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但工作效率不高。 9

3.中断传送 为了提高单片机对外设的工作效率,通常采用中断传送方式,即利用AT89S51单片机本身的中断功能和I/O接口的中断功能来实现I/O数据的传送。单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。因此,采用中断方式可以大大提高单片机的工作效率。 9.1.4 I/O接口电路 目前常用的外围I/O接口芯片有: 10

(1)82C55—可编程的通用并行接口电路(3个8位I/O口); (2)81C55—可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256个RAM字节单元,1个14位的减法计数器)。 它们都可以和AT89S52单片机直接连接,且接口逻辑十分简单。本章仅介绍AT89S52单片机扩展I/O接口芯片82C55的设计。

9.2 AT89S51扩展I/O接口芯片82C55的设计 本节首先简要介绍可编程并行I/O接口芯片82C55的应用特性,然后介绍AT89S52单片机与82C55的接口电路设计以及软件设计。 9.2.1 82C55芯片简介 82C55是Intel公司生产的可编程并行I/O接口芯片,它具有3个8位的并行I/O口,3种工作方式,可通过编程改变其功能,因而使用灵活方便,可作为单片机与多种外围设备连接时的中间接口电路。82C55的引脚及内部结构如图9-1和图9-2所示。 12

图9-2 82C55的内部结构 图9-1 82C55的引脚 13

1.引脚说明 由图9-1可知,82C55共有40个引脚,采用双列直插式封装,各引脚功能如下。 D7~D0:三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息。 CS*:片选信号线,低电平有效,表示本芯片被选中。 RD*:读信号线,用来读出82C55端口数据的控制信号。 WR*:写信号线,用来向82C55写入端口数据的控制信号。 Vcc:+5V电源。

PA7~PA0:端口A输入/输出线。 PB7~PB0:端口B输入/输出线。 PC7~PC0:端口C输入/输出线。 A1、A0:地址线,用来选择82C55内部的4个端口。 RESET:复位引脚,高电平有效。 2.内部结构 82C55内部结构见图9-2,包括3个并行数据输入/输出端口,两种工作方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器。图9-2中左侧的引脚与单片机相连,右侧的引脚与外设连接。各部件的功能如下。

(1)端口PA、PB、PC 82C55有3个8位并行口PA、PB和PC,它们都可选为输入/输出工作模式,但在功能和结构上有些差异。 PA口:一个8位数据输出的锁存器和缓冲器;一个8位数据输入的锁存器。 PB口:一个8位数据输出的锁存器和缓冲器;一个8位数据输入的缓冲器。 PC口:一个8位数据输出的锁存器;一个8位数据输入的缓冲器。 通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件的控制下,作为两个4位端口,作为端口PA、PB选通方式操作时的状态控制信号。 16

(2)A组和B组控制电路 这是两组根据AT89S51单片机写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部(PC7~PC4);B组控制PB口和PC口的下半部(PC3~PC0),并可使用“命令字”来对端口PC的每一位实现按位置“1”或清“0”。 (3)数据总线缓冲器 数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。 17

(4)读/写控制逻辑电路 读/写控制逻辑电路接收AT89S52单片机发来的控制信号、、RESET、地址信号A1、A0等,然后根据控制信号的要求,端口数据被AT89S52单片机读出,或者将AT89S52单片机送来的数据写入端口。 各端口的工作状态与控制信号的关系如表9-1所示。 18

19

9.2.2 工作方式选择控制字及端口PC置位/复位控制字 向82C55控制寄存器写入两种不同的控制字。首先来介绍工作方式选择控制字。 1.工作方式选择控制字 82C55的端口有如下3种基本工作方式: (1)方式0—基本输入/输出; (2)方式1—选通输入/输出; (3)方式2—双向传送(仅PA口有此工作方式)。 20

端口的3种工作方式由写入控制寄存器的方式控制字来决定。方式控制字的格式如图9-3所示。最高位D7=1,为本方式控制字的标志,以便与后面介绍的端口PC口置位/复位控制字相区别(端口PC置位/复位控制字的最高位D7 = 0)。 3个端口中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。

图9-3 82C55的方式控制字格式

【例9-1】 AT89S52单片机向82C55的控制寄存器写入工作方式控制字95H,根据图9-3所示,可将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7~PC4)方式0输出,PC口的下半部分(PC3~PC0)方式1输入。 MOV DPTR,#××××H ;控制字寄存器端口地址××××H送DPTR MOV A,#95H ;方式控制字95H送A MOVX @DPTR,A ;控制字95H送控制字寄存器 2.PC口按位置位/复位控制字 单片机控制82C55的另一个控制字为PC口按位置位/复位控

制字。即PC口8位中的任何一位,可用一个写入82C55控制口的置位/复位控制字来对PC口按位置“1”或清“0”,这一功能主要用于位控。PC口按位置位/复位控制字的格式如图9-4所示。 【例9-2】 单片机向82C55的控制字寄存器写入置位/复位控制字07H,则PC3置1;08H写入控制口,则PC4清0。程序段如下: 24

图9-4 PC口按位置位/复位控制字格式 25

9.2.3 82C55的3种工作方式 82C55的3种工作方式介绍如下。 1.方式0 方式0是基本输入/输出方式。方式0下,单片机可对82C55进行I/O数据的无条件传送。例如,单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组LED指示灯的亮、灭。实现这些操作,并不需要任何条件,外设的I/O数据可在82C55的各端口得到锁存和缓冲。因此,82C55的方式0称为基本输入/输出方式。 方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式0基本功能如下: 26

(1)具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分); (2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合。 82C55的PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字(见图9-3),来规定各端口为输入或输出方式。 【例9-3】假设82C55的控制字寄存器端口地址为FF7FH,则令PA口和PC口的高4位工作在方式0输出,PB口和PC口的低4位工作于方式0输入,初始化程序如下:

下面简单介绍方式1输入/输出时的应答联络信号与工作原理。 MOV DPTR,#0FF7FH ;控制寄存器端口地址0FF7F送DPTR MOV A,#83H ; 方式控制字83H送A MOVX @DPTR,A ; 控制字83H送控制寄存器 2.方式1 方式1是采用应答联络的输入/输出工作方式。PA口和PB口皆可独立地设置成这种工作方式。方式1下,PA口和PB口通常用于I/O数据的传送,PC口用作PA口和PB口的应答联络信号线,以实现采用中断方式来传送I/O数据。PC口的PC7~PC0的应答联络线是在设计82C55时规定好的,其各位分配如图9-5和图9-7所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用。 下面简单介绍方式1输入/输出时的应答联络信号与工作原理。 28

(1)方式1输入 当任意端口工作于方式1输入时,各应答联络信号如图9-5所示。其中STB (1)方式1输入 当任意端口工作于方式1输入时,各应答联络信号如图9-5所示。其中STB*与IBF为一对应答联络信号。图9-5中各应答联络信号的功能如下。 ● STB*—是由输入外设发给82C55的选通输入信号,低电平有效。 ● IBF—输入缓冲器满,应答信号。82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高电平有效。 ● INTR—由82C55向单片机发出的中断请求信号,高电平有效。 ● INTEA—控制PA口是否允许中断的控制信号,由PC4的置位/复位来控制。 29

● INTEB—控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。 方式1输入的工作示意图如图9-6所示。下面以PA口的方式1输入为例,介绍方式1输入的工作过程。 ① 当外设向82C55输入一个数据并送到PA7~PA0上时,外设自动在选通输入线STBA*上向82C55发送一个低电平选通信号。 ② 82C55收到选通信号后,首先把PA7~PA0上的输入数据存入PA口的输入数据缓冲/锁存器,然后使输出应答线IBFA变为高电平,以通知输入外设,82C55的PA口已收到它送来的输入数据。

图9-5 方式1输入应答联络信号 31

图9-6 PA口方式1输入工作过程示意图

③ 82C55检测到STBA*由低电平变为高电平、IBFA(PC5)为“1”状态和中断允许INTEA(PC4)= 1时,使INTRA(PC3)变为高电平,向单片机发出中断请求。INTEA的状态可由用户通过指令对PC4的单一置位/复位控制字来控制。 ④ 单片机响应中断后,进入中断服务子程序来读取PA口的外设发来的输入数据。当输入数据被单片机读走后,82C55撤销INTEA上的中断请求,并使IBFA变为低电平,以通知输入外设可传送下一个输入数据。 33

(2)方式1输出 当PA口、PB口按照方式1输出时,应答联络信号如图9-7所示。 OBF*与ACK*构成了一对应答联络信号,图9-7中各应答联络信号的功能如下。 ● OBF* :端口输出缓冲器满信号,低电平有效,它是82C55发给外设的联络信号,表示单片机已经把数据输出到82C55的指定端口,外设可以将数据取走。 ● ACK* :外设的应答信号,低电平有效。表示外设已把82C55端口的数据取走。

图9-7 方式1输出应答联络信号

● INTR:中断请求信号,高电平有效。表示该数据已被外设取走,向单片机发出中断请求,如果AT89S52响应该中断,则在中断服务子程序中向82C55的端口写入要输出的下一个数据。 ● INTEA:控制PA口是否允许中断的控制信号,由PC6的置位/复位来控制。 ● INTEB:控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。 方式1输出工作示意图如图9-8所示。下面以PB口的方式1输出为例,介绍方式1输出的工作过程。 36

图9-8 PB口方式1输出工作过程示意图

① 单片机可以通过“MOVX @Ri,A”指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚OBFB ① 单片机可以通过“MOVX @Ri,A”指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚OBFB*(PC1)变为低电平,以通知输出设备输出的数据已在PB口的PB7~PB0上。 ② 输出外设收到OBFB*上低电平后,先从PB7~PB0上取走输出数据,然后使ACKB*变为低电平,以通知82C55输出外设已收到82C55输出给外设的数据。 ③ 82C55从应答输入线ACKB*收到低电平后就对和中断允许控制位INTEB状态进行检测,若它们皆为高电平,则INTRB变为高电平而向单片机请求中断。

④ AT89S52单片机响应INTRB上中断请求后便可通过中断服务程序把下一个输出数据送到PB口的输出数据锁存器。重复上述过程,完成数据的输出。 3.方式2 只有PA口才能设定为方式2。图9-9所示为方式2下的工作过程示意图。方式2实质上是方式1输入和方式1输出的组合。在方式2下,PA7~PA0为双向I/O总线。当作为输入端口使用时,PA7~PA0受OBFA*和IBFA控制,其工作过程和方式1输入时相同;当作为输出端口使用时,PA7~PA0受OBFA*、ACKA*控制,其工作过程和方式1输出时相同。

图9-9 PA口在方式2下的工作示意图

方式2特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需要把单片机发出的数据通过PA口送给显示器显示。 9.2.4 AT89S52单片机与82C55的接口设计 1.硬件接口电路 图9-10所示为AT89S52单片机扩展一片82C55的电路图。图中,74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1、A0连接;P0.7经74LS373与片选端相连,其它地址线悬空;82C55的控制线RD*、WR*直接与AT89S52单片机的RD*和WR*端相连;单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。 41

2.82C55各端口地址的确定 图9-10中82C55只有3条线与单片机的地址线相接,片选端CS. 、端口地址选择端A1、A0,分别接与P0 2.82C55各端口地址的确定 图9-10中82C55只有3条线与单片机的地址线相接,片选端CS*、端口地址选择端A1、A0,分别接与P0.7、P0.1、P0.0相连的8 D锁存器的输出端Q7、Q1、Q0,其他地址线全悬空。显然只要保证P0.7为低电平时,即可选中82C55;若P0.1、P0.0再为“00”,则选中82C55的PA口。同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。 42

图9-10 AT89S52单片机扩展一片82C55的接口电路

【例9-4】要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,则程序如下: 若端口地址用16位表示,其他未用端全设为“1”(也可把无用端全设为“0”,但一般习惯上把未用端置“1”),则82C55的PA、PB、PC及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。 3.软件编程 在实际应用设计中,必须根据外部设备的类型选择82C55的工作方式,并在初始化程序中把相应控制字写入控制口。下面根据图9-10,介绍对82C55进行操作的编程。 【例9-4】要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,则程序如下: 44

82C55的PC口8位中的任意一位,均可用指令来置位或复位。例如, 如果想把PC口的PC5置“1”,相应的控制字为 45

00001011B=0BH(关于82C55的PC口置位/复位的控制字说明见图9-4)。程序段如下:

9.2.5 AT89S52扩展82C55的应用举例 图9-11为单片机通过扩展的并行I/O口82C55与微型打印机连接的接口电路。为便于理解,这里把扩展82C55的PA、PC口看作为单片机本身附加的并行I/O口。有关微型打印机TPµP-40A/16A的特性在7.7节已作介绍。 【例9-6】 把单片机内部RAM的3FH~4FH单元中的ASCII码数据送到打印机打印。82C55的端口A与端口C的高4位设置为方式0输出,端口C的低4位为方式0输入。 采用查询法,即单片机通过读与82C55的PC0脚相连的打印机BUSY脚的状态,判断单片机送给微型打印机的一个字节的数据是否处理完毕;这里也可采用中断法,即BUSY脚直接与单片机的INT0*引脚相连。 参考程序如下:

图9-11 AT89S52单片机通过扩展的I/O与TPµP-40A/16A连接

9.3 利用74LSTTL电路扩展并行I/O口 在单片机应用系统中,有些场合需要降低成本、缩小体积,这时采用TTL、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口。通常这种I/O都是通过P0口扩展。由于P0口只能分时复用,故构成输出口时,接口芯片应具有锁存功能;构成输入口时,要求接口芯片应能三态缓冲输入,而数据的输入、输出则由单片机的读/写信号控制。 图9-12所示为一个利用74LS244(缓冲输入驱动器)和74LS273(8D锁存器)芯片,将P0口扩展成简单的输入/输出口的电路。 50

图9-12 74LSTTL I/O扩展举例

74LS244和74LS273的工作受单片机的P2.0、、 3条控制线控制。74LS244作为扩展输入口,它的8个输入端分别接8个按钮开关。74LS273的输出端接8个LED发光二极管,以显示8个按钮开关状态。当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。 该电路的工作原理如下。 当P2.0=0,RD*= 0(WR*= 1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,

74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51单片机片内。 当P2. 0=0,WR. = 0(RD 74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51单片机片内。 当P2.0=0,WR*= 0(RD*=1)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。 总之,在图9-12中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。 53

【例9-6】编写程序把按钮开关状态通过图9-12中的点亮的发光二极管的位置显示出来。程序段如下: 输入程序段: MOV DPTR,#0FEFFH ;I/O地址→DPTR MOVX A,@DPTR ;RD*为低电平,74LS244接口数据读入片内A中 输出程序段: MOV A,#data ;数据#data→A MOV DPTR,#0FEFFH ;I/O地址#0FEFFH→DPTR MOVX @DPTR,A ; WR*为低电平,数据经74LS273口输出 【例9-6】编写程序把按钮开关状态通过图9-12中的点亮的发光二极管的位置显示出来。程序段如下: 54

由以上程序可以看出,对于所扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图9-12仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态输入缓冲功能,否则将影响总线的正常工作。 9.4 用AT89S52单片机的串行口扩展并行口 AT89S52单片机串行口的方式0用于I/O扩展。在方式0时,串行口为同步移位寄存器工作方式,其波特率是固定的,为fosc/12(fosc为系统的振荡器频率)。数据由RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。发送、接收的数据是8位,低位在先。

图9-13所示为串行口外接两片74LS165扩展两个8位并行输入口的接口电路。 74LS165是8位并行输入串行输出的寄存器。当74LS165的S/L*端由高到低跳变时,并行输入端的数据被置入寄存器;当S/L*=1,且时钟禁止端(第15脚)为低电平时,允许TXD(P3.1)移位时钟输入,这时在时钟脉冲作用下,数据由右向左方向移动。 在图9-13中,TXD(P3.1)作为移位脉冲输出与所有74LS165的移位脉冲输入端CP相连;RXD(P3.0)作为串行数据输入端与74LS165的串行输出端QH相连;P1.0与S/L* 56

相连,用来控制74LS165的串行移位或并行输入;74LS165的时钟禁止端(第15脚)接地,表示允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。 57

【例9-7】由图9-13,编写程序从16位扩展口读入5组数据(每组2B),并把它们转存到内部RAM 20H开始的单元。 58

上面程序中串行接收过程采用的是查询等待的控制方式,如有必要,也可改用中断方式。从理论上讲,按图9-13方法扩展的输入口几乎是无限的,但扩展越多,口的操作速度也就越慢。 9.4.2 用74LS164扩展并行输出口 图9-14所示为串行口外接两片74LS164扩展两个8位并行输出口的接口电路。74LS164是8位串入并出移位寄存器。 当AT89S52单片机串行口工作在方式0的发送状态时,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从 59

图9-14 利用74LS164扩展并行输出口 P3.0移入74LS164中。需要指出的是,由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在74LS164的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。

【例9-8】下面是将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。

9.5 用I/O口控制的声音报警接口 当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发出提醒人们警觉的声音报警。使用单片机系统的I/O口很容易实现该功能。 9.5.1 蜂鸣音报警接口 蜂鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过AT89S51的一根I/O口线通过驱动器驱动蜂鸣器发声。压电式蜂鸣器约需10mA的驱动电流,可以使用TTL系列集成电路7406的低电平驱动,如图9-15所示,也可以用一个晶体三极管驱动,如图9-16所示。 62

图9-15 通过74LS06 来驱动蜂鸣器的报警电路 图9-16 使用三极管驱动的蜂鸣器报警电路

在图9-15中,AT89S52的口线P1. 7接驱动器的输入端。当P1 在图9-15中,AT89S52的口线P1.7接驱动器的输入端。当P1.7输出高电平时,7406的输出为低电平,使压电蜂鸣器两条引线加上近5V的直流电压,由压电效应而发出蜂鸣音。当P1.7端输出低电平时,7406的输出端高电平约+5V,压电蜂鸣器的两引线间的直流电压降至接近于0V,发音停止。 在图9-16中,P1.7接晶体管基极输入端。当P1.7输出高电平时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;当P1.7输出低电平,三极管截止,蜂鸣器停止发声。 下面是连续蜂鸣100ms参考程序,该程序对上述两个接口电路都适用。 64

如果想要发出更大的声音,可采用功率大的扬声器作为发声器件,这时要采用相应的功率驱动电路。 65

9.5.2 音乐报警接口 音乐报警电路可使报警声优美悦耳,克服了蜂鸣音报警音调较单调的不足。可购买市售的乐曲发生器,发出的乐曲声可用来作为某种提示信号或报警信号。音乐报警接口由两部分组成: (1) 乐曲发生器,即集成电子音乐芯片; (2) 放大电路,也可采用集成放大器。 音乐报警接口电路如图9-17所示,图中采用华尔兹乐曲的电子音乐芯片7920A。当AT89S51从P1.7输出高电平时,电子音乐芯片7920A的输入控制端MT变为1.5V高电平,输出端Vout 便发出乐曲信号,经M51182L放大而驱动扬声器发出乐 66

图9-17 音乐报警接口电路 67

曲报警声,音量大小由10kΩ电位器调整。相反,若P1 曲报警声,音量大小由10kΩ电位器调整。相反,若P1.7输出低电平,则7920A因MT输入电位变低而关闭,故扬声器停止奏曲。音乐报警接口的参考程序为: START: SETB P1.7 ;P1.7为高电平,发出音乐报警乐曲 RET STOP: CLR P1.7 ;P1.7为低电平,音乐报警乐曲停止