120
本本本本本本 本本本本本本 本本本本本 本本本本本本本本 本本本本本本本本本本本本本 本本 I/O 本本本本本 本本本本 I/O 本本本本本本本本 本本 8155 本本本本本本本 80C51 本本本本本 本本本本本本 8155 本本本本本本本 本本本本本本本本本 本本本本 LED 本本本本本本本本本本 80C51 本本本本本 本本本本本本本本本本本本本 LED 本本本本本本本 本本本本 LED 本本本本本本本本本本本本本本本本 本本本本本本本本本本本本本本本本 LE D 本本本本本本本本本本 本本本本本本本本本本本本本本本本本本 本本本本本本本本本本本本本本本本本本本本 6 6 80C51 80C51 本本 本本 本本 本本

本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

  • Upload
    finna

  • View
    172

  • Download
    0

Embed Size (px)

DESCRIPTION

第 6 章 80C51 的系统扩展. 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法 了解 8155 的工作方式及与 80C51 的接口方法,能读懂教材中 8155 的控制实例熟悉中断优先控制的方法 熟练掌握 LED 数码管的显示原理及与 80C51 的接口方法,能独立编写与教材同等难度的 LED 数码管控制程序 熟练掌握 LED 点矩阵显示器的显示原理及驱动方法,借助资料独立编写与教材同等难度的 LED 点矩阵显示器控制程序 - PowerPoint PPT Presentation

Citation preview

Page 1: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

本章学习目标 :了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法 了解 8155 的工作方式及与 80C51 的接口方法,能读懂教材中8155 的控制实例熟悉中断优先控制的方法熟练掌握 LED 数码管的显示原理及与 80C51 的接口方法,能独立编写与教材同等难度的 LED 数码管控制程序 熟练掌握 LED 点矩阵显示器的显示原理及驱动方法,借助资料独立编写与教材同等难度的 LED 点矩阵显示器控制程序 熟悉独立式按键和矩阵式键盘的结构特点,借助资料独立编写与教材同等难度的控制程序

第第 66 章 章 80C51 80C51 的系统扩展的系统扩展

Page 2: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.1.1 系统扩展的概念

80C51 单片机中已经集成了 CPU 、 I/O 口、定时器、中断系统、存储器等计算机的基本部件(即系统资源),使用非常方便,应用于小型控制系统已经足够了。但要构成较为复杂的应用系统,有时会感到以上资源中的一种或几种不够用,这就需要在 80C51 芯片外再扩展相应的芯片或电路,使相关功能得以扩充,我们称之为系统扩展(即系统资源的扩充)。

6.1 系统扩展概述

Page 3: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.1.2 扩展系统总线结构

单片机系统扩展有并行扩展和串行扩展两种方法。并行扩展通过单片机的三总线 (AB 、 DB 、 CB) 来实现;串行扩展是利用 SPI 三总线和 I2C 双总线的串行系统扩展。

SPI 三线同步总线: 串行外围设备接口 SPI ( serial peripheral interface )总线技术是 Motorola 公司推出的一种同步串行接口。 Motorola 公司生产的绝大多数 MCU (微控制器)都配有 SPI硬件接口,如 68系列 MCU 。 SPI 总线是一种三线同步总线,因其硬件功能很强,所以,与 SPI 有关的软件就相当简单,使 CPU 有更多的时间处理其它事务。

Page 4: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

单片机外部并行扩展以单片机为核心,通过系统总线挂接存储芯片或 I/O 芯片来实现。挂接存储器芯片就是存储器扩展,挂接 I/O 接口芯片就是 I/O 扩展。扩展系统总线结构如图 6-1 所示。

图 6-1 扩展系统总线结构

单片机外部并行扩展的总线结构

Page 5: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

地址总线用于传送单片机送出的地址信号,以便进行存储单元和 I/O 端口的选择。地址总线的位数决定着可访问的存储器或 I/O 口的容量。 80C51 单片机有 16 条地址线。所以能寻址 64KB 空间。

80C51 单片机的 16 位地址线分为两部分: 高 8 位地址线:由 P2 口提供; 低 8 位地址线:由 P0 口提供。

由于 P0 口是低 8 位地址和 8 位数据的复用线,因此必须外接锁存器,用于将先发送出去的低 8 位地址锁存起来,然后才能传送数据。 需要注意: P0、 P2 口在系统扩展中用作地址线后就不能作为一般 I/O 口使用。

1 .地址总线 AB ( Address Bus )

Page 6: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

数据总线用于在单片机与存储器之间或单片机与 I/O 端口之间传送数据。数据总线是双向的,可以进行两个方向的数据传送。 80C51 单片机数据总线为 8 位,由 P0 口提供。在数据总线上可以连接多个外围芯片,但在某一时刻只能有一个有效的数据传送通道。

2 .数据总线 DB (Data Bus)

Page 7: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

控制总线实质上是一组控制信号线,用于协调单片机与外围芯片间的联系。在对 80C51 进行系统扩展时用到的控制信号有:地址锁存允许信号 ALE 、外部程序存储器读选通信号 、外部存储器访问允许信号 、外部数据存储器读/写选通信号 、 等。

PSEN EA

RD WR

3 .控制总线 CB (Control Bus)

Page 8: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.2 存储器扩展

存储器是用来存放程序和数据的,它由专用的存储芯片构成。 80C51 单片机的程序存储器和数据存储器相互独立,均为 64KB ,其控制信号也各自独立。 存储器扩展的内容包括:存储器的地址线与单片机的地址线间的连接、相应数据线间的连接和控制线间的连接等。

Page 9: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.2.1 存储器的分类

存储器的分类方法较多 :

如果按存储器所处位置划分,可分为片内存储器和片外存储器;

根据用途不同,可分为程序存储器和数据存储器; 按照存取方式和使用功能,可分为随机存取存储器( Random Access Memory ,简称 RAM )和只读存储器( Read Only Memory ,简称 ROM )。

Page 10: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

⑴特点 可以将数据任意读出和写入; 存储的信息不稳定,一旦掉电就会丢失 dvnamis 。由于 RAM 的读写操作方便,所以常用作数据存储器

1.随机存取存储器 RAM

⑵分类

Page 11: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

⑴特点 编入程序或写入数据后只能读出不能写入(指单片机在

正常工作状态下);掉电以后所存内容不会丢失,通电后照常能够使用。因

此常用作程序存储器。⑵分类根据结构和工艺不同, ROM 可分为以下几种:

2. 只读存储器 ROM

Page 12: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

掩模 ROM

可编程的 PROM ( Programmable ROM )紫外线可擦除可编程的 EPROM ( Erasable Programm

able ROM ) 电可擦除可编程的 EEPROM ( Electrically Erasable

Programmable ROM )闪速存储器 Flash

Page 13: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

注:“自动”指断电或写入数据时,原有数据自动擦除

表 6-1 是半导体存储器的分类和性能对照表。

Page 14: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

扩展程序存储器一般采用掉电信息不丢失的 ROM 类芯片,如 EPROM 和EEPROM ;扩展数据存储器一般采用RAM 类芯片,如静态 RAM 6116 、 62

64 、 62256 等。 目前扩展存储器以 EEPROM 的使用最为普遍,它既能用作程序存储器,又能用作数据存储器。常用的 EEPRO

M 芯片主要有 Intel 2817A 、 2864A 等。

6.2.2 常用存储器扩展芯片

图 6-2 Intel 2864A 的引脚

Page 15: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

以 2864A为例说明,其结构如图 6-2 所示。其中 A0~ A12 为地址线; I/O0 ~ I/O7为双向数据线; 为片选信号线; 为输出允许信号线; 为写信号线。

CEOE WE

Page 16: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.2.3 扩展 EEPROM 程序存储器

图 6-3 80C51 单片机扩展程序存储器 2864A 的硬件连接图

Page 17: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

由图 6-3 可知此时 2864A 用作程序存储器,在一般情况下,不需要向里面写入数据,只进行程序的读出操作,因此在接线时,将 80C51 的 信号直接与 2864A 的 引脚相连,当单片机需要从外部程序存储器读取程序时, 引脚为低电平,根据 P2 口和 P0 口提供的地址, 2864A 中相应的存储信息(指令的机器代码)就能从程序存储器中取出。

PSEN OE

PSEN

Page 18: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

表 6-3 74LS373的真值表 图 6-4 74LS373的位结构简图

图 6-4所示。表 6-3 列出了 74LS373的真值表。 在这种连接方式下, 2864A的地址范围是 0000H~ 1FFFH(未与 2864A连接的 A15、 A14、 A13 视为 0)。

〈想一想〉如果将未与 2864A 连接的 A15 、 A14 、 A13视为 1 , 2864A 的地址范围又是什么?

Page 19: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.2.4 扩展 EEPROM 数据存储器

1.硬件电路

图 6-5是 2864A与 80C51 单片机的硬件连接图,这时 2864A用作数据存储器。在图中, 2864A的片选 与 80C51 的 P2.5相连,作为最高位地址 A13,且要一直保持有效状态。由于 2864A为 8K容量,本身具有 13条地址线,所以该扩展系统共有 14条地址线 A0~ A13。其中的低 8位地址线通过 74LS373对 80C51 的P0 口地址锁存后得到。 2864A的 (数据读出控制)与 (数据写入控制)分别受 80C51 的 、 引脚控制。数据口线 I/O0~ I/

O7直接与 80C51 的数据口 P0 相连。在这种连接方式下, 2864

A 的地址范围是 0000H~ 1FFFH (未与 2864A 连接的 A15 、 A

14视为 0 )。

CE

OE WE

RD WR

Page 20: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

◄图 6-5 80C51 单片机扩展数据存储器 2864A的硬件连接图

〈想一想〉如果将未与 2864A

连接的多余地址线视为 1 , 286

4A 的地址范围又是什么?

Page 21: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

2 .读写操作

80C51 访问 EEPROM时采用如下指令完成读写操作:

MOVX @ DPTR, A ;将 A中内容写入EEPROM或 MOVX A ,@DPTR ;将 EEPROM中内容读入A中 需要说明,由于 EEPROM 的数据写入时间较长,因此在对 EEPROM 的某一单元执行了写数据操作后,一般需要延时 20ms 左右的时间才能对下一单元进行写操作。所以在“ MOVX @DPTR , A ”指令后常加一条软件延时 20ms 的调用子程序语句“ LCALL DELAY20”。

Page 22: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.2.5 存储器的综合扩展

有时在一个系统中既要扩展程序存储器,又要扩展数据存储器,这就是综合扩展。

1 .单个芯片扩程序存储器和数据存储器 80C51 单片机的程序存储器和数据存储器虽然彼此独立,但我们可以用一定的控制电路对它们统一编址,此时数据存储器、程序存储器和 I/O 共同占用 64KB的存储空间。如果系统对程序存储器和数据存储器的容量需求不大,可以只扩展一片 EEPROM,对其内部空间进行合理划分,将某一区域定义为程序存储空间,其它区域设为数据存储空间。电路如图 6-6 所示。

Page 23: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6- 6 存储器综合扩展电路

Page 24: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

在图中,将 80C51 的 (从数据存储器中读数据)、 (选通程序存储器)信号相与后接入 2864A的 引脚。这样,当 或 信号有一个为低电平时,就能从存储器中读取相应的数据或程序。

RD

PSEN OE

RD PSEN

( 1)读程序 由于硬件连接使 =0,所以单片机自动读取外部程序存储器。因此要求用户在编制程序时要将程序存储区和数据存储区划分清楚(伪指令ORG规定程序存储器地址,指针DPTR指示数据存储器地址),存储程序时不要占用数据存储区。

EA

Page 25: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

( 2)读 /写数据存储器

80C51 读数据,是由指令性质决定的。当执行“MOVX A,@DPTR”指令时, CPU时序使 引脚输出低电平,于是 2864A 的 引脚也为低电平,相应数据存储单元的数据会出现在数据线上, 80C51 读入该数据,存在累加器 A

中。 同理, 80C51 要执行写操作时, CPU 时序使单片机的 引脚输出低电平,可以对 2864A执行写操作。

RD

OE

WR

Page 26: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

该扩展电路的寻址范围是 0000H~ 1FFFH (未与 2864A 连

接的 A15 、 A14 、 A13视为 0 )。如设定其中 0000H~ 0FFFH

是程序存储区; 1000H~ 1FFFH 是数据存储区。为防止误将数据写入程序存储区,可采用图 6-7 所示的写保护电路。此时,单片机的 P2.4引脚一路接写保护电路,另一路接 2864A最高位地址线 A

12 。此时 0000H~ 0FFFH 只能读出不能写入。

〈想一想〉如果将未与 2864A 连接的多余地址线视为 1, 2864A 的地址范围又是什么?

图 6-7 写保护电路

Page 27: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

2 .多个芯片扩程序存储器和数据存储器 当一块芯片的容量不够时,我们还可以用多块芯片来扩展程序存储器和数据存储器。这时常采用译码器产生各个芯片的片选信号,常用的译码器有 74LS138( 3–8线)、 74LS139(双 2–4线),其引脚图见附录C。 下面以 74LS138为例来进行扩展, 74LS138的工作条件是 4、 5 引脚接低电平, 6引脚接高电平。 C、 B、 A引脚输入不同数值时,对应 ~ 某一引脚输出 0,如 CBA=110时,其对应的十进制数是 6 ,所以 引脚输出 0,其它引脚输出 1 ,当CBA=111 时, 输出 0,其余与此类似。图 6-8 给出了三块芯片的存储器扩展图,其中 6264是 RAM芯片,其引脚和读写与 2864类似,在此不详细描述,其地址空间分配情况见表 6-4,其中①号芯片是数据存储器,②③号芯片是程序存储器。

0Y 7Y

6Y

7Y

Page 28: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-8 多芯片程序存储器和数据存储器扩展

Page 29: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

表 6-4 芯片起止地址分析表

Page 30: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.3 并行 I/O 口扩展

6.3.1 I/0 接口简介

CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为 I/O接口,而后者则被称为存储器接口。存储器通常在 CPU的同步控制下工作,接口电路比较简单;而 I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指 I/O接口。

Page 31: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

I/O 接口的任务是通过系统总线实现 80C51 单片机与 I

/O 电路和外围设备的联系,按照芯片能否实现编程, I/O

接口通常分为两类:

不可编程 I/O接口芯片 通常是一些锁存器或驱动器, 如 74LS273、 74LS373和 74LS244等;

可编程 I/O接口芯片 能够通过 CPU输入不同的命令和参 数,并控制相关的 I/O电路或外设作相应的操作,如并 行接口芯片 8155、 8255和 8279等。

Page 32: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

80C51 单片机的 I/O口线共有 32 条,但 P3口是多用途的,若用作第二功能时,就不能作一般 I/O口线;在进行存储器扩展时, P0和 P2 也不能作 I/O口。这样,在极端情况下,只有 P1口的 8 根线可供用户作 I/O口线使用。因此,在实际应用系统中,往往需要扩展 I/O口。通常有简单扩展和使用可编程接口芯片来扩展两种途径。

Page 33: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.3.2 并行 I/O 口的简单扩展

1 .扩展方法

类似于扩展数据存储器,即把每一个 I/O端口当作一个片外数据存储器单元,给它分配存储空间的一个地址。直接使用访问片外数据存储器的指令(MOVX指令)来访问扩展的 I/O口。但当应用系统扩展较多的 I/O口时,将会占去大量的 RAM地址。 原则上说, I/O口的扩展容量最多可达 64KB,但实际上并不需要这么多。

Page 34: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6- 9 并行 I/O口的简单扩展

2 .简单的 I/O口扩展实例

扩展数量不多且功能简单的 I/O口,常采用 TTL电路或 CMOS电路锁存器、三态缓冲器。以如图 6- 9 所示电路为例,要求按下任意一个键时,点亮对应的发光二极管。

Page 35: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

在该系统中,采用双 4位三态门电路 74LS244作扩展输入,8位锁存器 74LS273作扩展输出。 P0口为双向数据线,既能从 74LS244 输入数据,又能将控制状态传送给 74LS273 输出。 74LS244的位结构简图见图 6-10。表 6-5 给出了 74LS244的逻辑功能表。

图 6-10 74LS244的位结构简图

表 6-5 74LS244的逻辑功能表

Page 36: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-11 74LS273的位结构简图 表 6-6 74LS273的逻辑功能表

图 6-11 是 74LS273 的位结构简图,表 6-6 是 74LS273 的

逻辑功能表。 输入控制信号由 P2.0和 合成,当二者同时为低电平0时,或门输出为 0,选通 74LS244,将外部开关状态作为数据输入到总线。当无键按下时,输入为全 1 ;若按下某键,则相应输入端输入0。

RD

Page 37: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

输出控制信号由 P2.0和 合成,当P2.0=0, 出现负脉冲时,该负脉冲的上升沿。选通 74LS273,将 P0口数据锁存到 74LS273,用来控制发光二极管的亮灭。由图可见,当某条数据线上输出低电平 0时,该线上的 LED发光。 显然,输入和输出都是在 P2.0=0时有效,二者的口地址同为 0FEFFH,但因分别是由 和 信号控制,故不会发生冲突。

参考程序如下: LOOP: MOV DPTR, #0FEFFH ;指向扩展 I/O口地址 MOVX A,@DPTR ;从 244读入数据, 检测开关状态 MOVX @DPTR, A ;向 273输出数据,驱 动 LED AJMP LOOP ;循环检测 除 74LS273、 74LS244以外,还可用 74LS373、 74LS377等芯片扩展 80C51 的 I/O口。

WR

WR RD

WR

Page 38: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.3.3 可编程 I/O 扩展芯片 8155

采用可编程接口芯片来扩展 I/O口,可以完成复杂的接口功能,如扩展并行 I/O口采用 8255、 8155,扩展串行 I/O口采用 8251 ,扩展定时 /计数器采用 8253等。 8155是单片机常用的接口扩展芯片。其内部含有 256B的静态RAM, 2 个 8位的并行 I/O接口, 1 个 6 位的并行 I/O接口和 1 个 14位的定时 /计数器。 8155与 80C51 系列单片机的连接非常简单。

Page 39: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

1 . 8155的结构和技术性能

(1) 内部结构 8155芯片采用 40 脚双列直插式封装,其引脚和内部结构如图 6-12 所示。从图中不难看出,在 8155内部具有 :

256字节的静态RAM,存取时间为 400ns 3个通用的输入 /输出口 PA、 PB、 PC 1 个 14位的可编程定时 /计数器。 1 个 8位命令寄存器(只能写入) /8位状态寄存器(只 能读出)(2) 引脚介绍

Page 40: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-12 8155引脚和内部结构图

Page 41: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

2 . 8155 的工作方式与地址编码

8155能工作于以下 3种方式: ⑴作 80C51 单片机片外 256字节RAM使用。条件是 IO/ = 0,这时 CPU对 8155的 256B的 RAM单元寻址。 ⑵作扩展 I/O口使用。条件是 IO/ = 1 。这时 8155片内的 3个 I/O接口及命令 /状态寄存器被选中。 ⑶作 14位定时 /计数器使用。条件是 IO/ = 1 。由于I/O接口、命令 /状态寄存器和定时 /计数器各自对应的口地址不同,因此不会发生冲突。

Page 42: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

8155 内部寄存器和 I/O 口的编址情况见下表

Page 43: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

3. 8155的命令 /状态寄存器 8155 内部的命令寄存器和状态寄存器使用同一个端口地址。命令寄存器只能写入不能读出,状态寄存器只能读出不能写入。 ⑴命令字 8155的 3个 I/O口的工作方式由 CPU写入命令寄存器的控制命令字决定。命令字的格式如图 6-13所示。

图6-13 8155

的控制命令字

Page 44: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

▲表 6-8 C口工作方式的设置

◄表 6-9 C口用作控制信号的说明

Page 45: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

8155的状态寄存器用于锁存 8155 I/O口和定时 /计数器的当前状态,供 CPU查询。状态寄存器只能读出,不能写入,而且和命令寄存器共用一个口地址。 CPU对该地址写入的是命令字,读出的是状态字。状态字格式如图 6-14 所示。

图 6-14 8155的状态字

⑵状态字

Page 46: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

8155的定时 /计数器是一个 14位的减法计数器,可用来定时或对输入脉冲进行减法计数。要对计数的过程进行控制,必须首先装入计数初值。由于计数长度为 14位,故定时器的计数初值由两个字节组成,每次装入 8位,要分两次才能全部装入。 8155定时 /计数器的计数长度为 2H~ 3FFFH之间的任意值。定时 /计数器格式如表 6-10所示。

表 6-10 定时 /计数器的设置

4 . 8155 的定时 / 计数器

Page 47: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-15 8155定时 /计数器的 4种输出波形

需要指出的是,硬件复位信号 RESET ,会使定时 /计数器停止工作,直至由命令 /状态寄存器再次启动计数操作( TM2TM1=11 )时为止。

定时 /计数器有 4种输出方式,分别由M2 和M1 定义,每一种方式的输出波形如图 6-15所示。

Page 48: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

80C51 单片机可以直接和 8155连接而不需要任何附加电路,直接为系统增加 256字节外部 RAM、 22根 I/O线及一个 14位定时器。其基本硬件连接方法如图 6 -16所示。

◄图 6-16 80C51 与 8155连接的硬件电路图

5 . 80C51 单片机与 8155 的连接与操作

Page 49: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图中的 P2.X、 P2.Y可以是 P2 口的任意引脚,如果图中 X取 7, Y取 6 ,则 8155中 RAM的地址因 P2.7( A15) =0, P2.6 ( A14) =0,可选为 0011 1111 0000 0000B( 3F00H)~ 0011 1111 1111 1111B( 3FFFH)。此时 I/O端口地址和命令 /状态寄存器地址由下表得: 7F00H~ 7F05H。表中无关位选 0或 1 均可。

表 6-11 图 6-16 的地址分配表

Page 50: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

应用系统电路如图 6-17所示。试编程实现如下功能:将PA口设定为输出口, PB口设定为输入口,当按钮没按下时,PA口作单一灯的左移;当按钮按下时, PA口作单一灯的右移。

分析:首先应对8155 初始化,然后判断按钮状态,据此作灯的移动

◄图 6-17 8155应用实例硬件电路

6 . 8155 应用实例

Page 51: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

ORG 0100H SETB P2.0 ;令 IO/=1 ,选择使用 8155的 I/O口 MOV R1 , #00H ;指向命令 /状态寄存器地址 00H MOV A, #01H ;由命令 /状态寄存器设定 PA为输 出, PB口为输入 MOVX @R1 , A ;控制字传送给命令 /状态寄存器LOOP:MOV R1 , #02H ;指向 PB口地址 MOVX A,@R1 ;读取PB口状态 JB ACC.0 , LEFT ;判断按钮是否按下?没按下, 作左移

参考程序如下:

Page 52: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

CJNE A, #00H, LEFT;再判断 MOV R2 , #7FH ;按钮已按下,赋右移初值 MOV R3, #08H MOV R1 , #01H ;指向 PA口地址RIGHT: MOV A, R2 MOVX @R1 , A ;输出至 PA RR A MOV R2 , A LCALL DELAY DJNZ R3 , RIGHT AJMP LOOP LEFT: MOV R2 , #0FEH ;按钮没按下,赋左移初值 MOV R3, #08H MOV R1 , #01H ;指向 PA口地址

Page 53: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

LOOP1 : MOV A, R2 MOVX @R1 , A ;输出至 PA RL A MOV R2 , A LCALL DELAY DJNZ R3 , LOOP1 AJMP LOOPDELAY: MOV R4, #200 D1 : MOV R5, #248 DJNZ R5, $ DJNZ R4, D1 RET END

Page 54: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.4 显示器接口技术 6.4.1 LED 数码显示器

1 . LED数码显示器结构 发光二极管显示器( Light Emitting Diode )简称 LED,又称数码管,具有结构简单、价格低廉、使用方便、耗电少、与单片机接口容易等特点,在单片机应用系统使用非常普遍。

LED数码显示器由七段条形的发光二极管组成“ ”字形显示字段,用一只圆形的发光二极管做小数点。结构如图 6-18( a )所示。

Page 55: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-18 LED数码显示器结构

在 LED 数码显示器中,通常将各段发光二极管的阴极或阳极连在一起做公共端,这样可以使驱动电路简单。因此, LED 数码显示器就有共阴极和共阳极两种接法,如图 6-18 ( b )、 6-18 (c) 所示。

Page 56: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

要使 LED数码管显示数字,只要点亮相应字段的发光二极管即可。如要显示“ 1”,点亮 b 、 c 段;要显示“0”,点亮 a 、 b 、 c 、d 、 e 、 f 段。从图 6-17中不难看出,对于共阴极数码管,点亮字段用高电平“ 1”表示,而对于共阳极数码管,点亮字段则用低电平“ 0”来表示。这样我们就可以把要显示的数字与一串二进制代码对应起来,即对 LED数码显示器实现编码。由于这种编码是与显示器结构相对应的,因此分为共阴显示码和共阳显示码两种。 不考虑小数点的编码只有七位,常称为七段显示码;如果对小数点也进行编码,则称为八段显示码。表 6-10 列出了常用字符的八段显示码。

2 . LED 数码显示器的编码

Page 57: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

表 6-12 常用字符的八段显示码

Page 58: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

续表 6-12 :

3.显示方式  在实际 LED显示系统中,常要进行多位显示。在这种情况下, LED数码显示器有静态显示和动态显示两种方式。

Page 59: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

  静态显示是指显示器显示某一字符时,相应段的发光二极管处于恒定导通或截止状态,直至需要显示下一个字符时为止。静态显示又分并行输出和串行输出两种形式。

 图6-19

静态显示方式下2

位共阳

LED

作并行输出的接口电路

◄ 

  ⑴静态显示

Page 60: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

  图 6-19 给出了静态显示方式下 2 位共阳 LED作并行输出的接口电路。图中采用两片 74LS373 扩展并行输入输出接口,接口地址由 2 线 -4线译码器 74LS139的输出决定。 74LS139的逻辑功能见表 6-13。显然, 2 片 74LS373的地址分别为 3FFFH、 0BFFFH。译码输出信号(或)与单片机的写信号共同控制对 74LS373的写入操作。

  由图可见,并行输出时,每个 LED数码管都需要 8位输出口独立控制,因此该方式虽然亮度好,且不占用CPU的工作时间,但在显示器位数较多时,连线较复杂。表 6-13 74LS139的真值表

 并行输出

Page 61: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

  采用串行输出可以大大节省单片机的内部资源。图 6-20为 2 位共阳 LED作串行输出的接口电路。该电路用 74LS164将 80C51输出的串行数据转换成并行数据输出给 LED显示器,减少了接口连线。其中 74LS164的 TXD为移位时钟输出, RXD为移位数据输出, P1 . 7作为显示器允许控制输出线。每次能够输出 2 个字节( 16 位)的段码数据。依据此方法,可以作多位 LED的串行输出显示。

串行输出

Page 62: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

  显示原理  动态显示就是一位一位地轮流点亮各位 LED 显示器(即扫描),对于每位显示器来说,每隔一段时间被 80C5

1 点亮一次,并保留一定时间(通常为 1~ 10ms ),以造成视觉暂留效果。这样,虽然在同一时刻,实际上只有一位LED 显示器在显示,但利用人眼的“视觉暂留”和发光二极管熄灭时的余晖效应,使人感觉好像若干位 LED 显示器在同时显示不同的数字一样。

⑵动态显示

Page 63: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

 图6-20

静态显示方式下2

位共阳

LED

作串行输出的接口电路

◄ 

 使用特点  动态显示常用于多位 LED显示。其最大的优点是硬件开销省,接口电路简单,但它要求CPU频繁地为显示服务。

Page 64: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

 图 6-21 经 8155扩展的 6 位动态扫描 LED显示器接口电路

  图 6-21 是经 8155扩展的 6 位动态扫描 LED显示器接口电路。图中 8155的 PA口作为位选口,其地址可设为 7F01H,PB口作为段选口,其地址可设为 7F02H,由于 LED显示器需要一定的驱动电流,故在接口中增设驱动器。

Page 65: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.4.2 点矩阵显示器   点矩阵显示器实际上就是 LED显示,只是构成显示器

的所有 LED都依矩阵形式排列而得名。点矩阵显示器主要用来制作电子显示屏,广泛用于火车站、体育场、股票交易厅、大型医院等处作信息发布或广告显示。其优点是能根据需要的大小、形状、单色或彩色来汇编,能与单片机连线,作各种动态效果或图形变化。

   1. 分类和结构   矩阵显示器的种类,可分为单色、双色、三色。依 LED

的极性排列方式,又可分为共阴极与共阳极两种类型。如果根据矩阵每行或每列所含 LED 个数的不同,点矩阵显示器还可分为 5×7、 8×8、 16×16 等类型。本章以单色共阳极 8×8点矩阵显示器为例。其外观和引脚排列如图6-22 所示。等效电路如图 6-23所示。

Page 66: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

◄ 图 6-22 单色共阳极 8×8点矩阵显示器外观和引脚排列

2 .显示原理 由图 6-22 可知,只要让某些 LED亮,就可以组成数字、英文字母、图形和汉字。从等效电路不难看出,点亮 LED 的方法就是要让该 LED

对应的 Y 轴、 X 轴处于正向偏置状态。但如果用直接点亮的方式,则显示形状是固定的;而采用多工扫描的方式,就可以实现很多动态的效果。当然,不管使用哪种形式,都要依据 LED 的亮暗来组成图案,以下针对数字、字母和汉字作简要说明。

Page 67: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图6-23 单色共阳极8

×8

矩阵显示器等效电路

数字、字母和简单的汉字只要一片 8×8点矩阵显示器就可以显示,但要显示一般的汉字,则必须要由几个 8×8点矩阵显示器共同组合才能完成。图 6-24 给出了几个数字、字母和简单汉字的造型表。

Page 68: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-24 数字“ 0”、字母“A”和简单汉字“工”的造型表

点矩阵显示器的造型表一般以数据库的形式存放在软件中。单片机使用查表指令“MOVC A,@ A +DPTR”或 “MOVC A,@ A + PC”来读取。

Page 69: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

点矩阵显示器一般采用扫描方式显示,实际上有三种扫描方法:

3 .点矩阵显示器的扫描与驱动

点扫描法 扫描亮点从左上角开始,从左至右,由上而下不停移动到右下角,周而复始。依次轮流点亮 64 点。这种方法常用于鉴别点矩阵显示器的好坏。在使用时需要注意,其扫描频率必须大于 16×64=1024Hz ,周期小于 1ms 。

Page 70: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

扫描时由单片机控制驱动电路从左至右依次将点矩阵显示器每一列上 8个 LED的公共端(阳极)接到电源上,然后由单片机的另一驱动口对这 8个 LED送出行控制信号。由等效电路不难看出,行线输出“ 0”时,对应的 LED点亮,行线输出为“ 1”时,对应的 LED不亮。也就是说,在列扫描法中,每次选中的列上可以有多个 LED同时点亮。列扫描方式示意图见图6-25 。

需要注意,用列扫描法制作显示器时,其扫描频率必须大 16×8=128Hz ,周期小于 7.8 ms 才能符合视觉暂留要求。

图6-25

列扫描方式示意图

列扫描法

Page 71: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

方法类似于列扫描,只是单片机每次选中的是一行,而不是一列。注意事项相同。 行扫描和列扫描都要求点矩阵显示器一次驱动一行或一列( 8颗LED),如果不外加驱动电路, LED会因电流较小而亮度不足。常用驱动电路如图 6-26 所示。也可采用 74LS244、 UN2003驱动。

图 6-26 点矩阵显示器的常用驱动电路

行扫描法

Page 72: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.4.3 课题与实训 12 交通路口读秒计时显示器一.实训目的 1 .学习 LED数码管的驱动方法。 2 .掌握两位 LED数码管程序的编制方法。 3.掌握单片机基本 I/O口的控制及应用。二.课题要求 利用 2 只共阳极的 LED数码管模拟交通路口的读秒显示器。由于各交通路口的车流量不同,因此各路口的读秒显示器显示的时间也不同。本实训以 60秒为例。要求用 AT89C51 芯片的 P1.0 ~ P1.3经 7447控制个位的七段显示器; P1.4 ~ P1.7经 74LS47控制十位的七段显示器。

Page 73: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

1 . 7447 介绍 七段 LED数码显示器的输入信号应该是要显示数字的七段码,而人们习惯上将要显示的数字直接以 8421BCD码的形式由单片机输出,这时就需要一个转换器件,它能将单片机输出的 8421BCD码转换成七段码,然后送给七段 LED数码显示器。7447就是这样一种器件,它的全称是 4线 -七段译码器 /驱动器,输入是 4位 8421BCD码,输出是七段码。图 6-27是它的引脚图。 2 .在介绍 LED数码管结构与原理时,没有考虑 I/O口的驱动能力,在实际使用时,如果 I/O口的驱动电流不够,要外加驱动器。

▲图 6-27 7447引脚

三.背景知识

Page 74: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

硬件如图 6-28所示。采用静态扫描方式。 特别需要注意:使用数码管作为显示部件时,应在数码管的每一段加有限流电阻。

图6-28

交通路口读秒计时显示器硬件电路

四.硬件电路

Page 75: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

ORG 0000H AJMP MAIN ORG 0100HMAIN : MOV R4, #60 ;显示初值LOOP: MOV P1 , R4 ;送 P1 显示 LCALL DELAY ;延时 1 秒 MOV A, R4 ;送 A处理 CLR C ; CY清 0,准备减 1 SUBB A, #01H ;减 1 JB AC, BCD ;个位向十位有借位,转去作 BCD码处理 MOV R4, A ;无借位,送 R4 准备输出 AJMP LOOP ;循环显示BCD: JC MAIN ;已减至 00,再从 60 循环显示 SUBB A, #06 ; BCD码修正

五.软件设计 (参考程序如下 )

Page 76: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

MOV R4, A ;修正结果送 R4 准备输出 AJMP LOOP ;循环显示DELAY: MOV R5, #50 ; 1 秒 D1 : MOV R6 , #50 ; 20毫秒 D2 : MOV R7, #248 ; 0.5毫秒 DJNZ R7, $ DJNZ R6 , D2 DJNZ R5, D1 RET END六.总结与提高 做交通路口读秒显示器,也可以不用 7447,而是将 0 ~ 9的七段码以表格的形式存放在 RAM单元中,然后使用查表指令实现 8421BCD码到七段码的转换,请用此方法实现该课题。

Page 77: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.4.4 课题与实训 13 小小显示屏一.实训目的 1 .学习 8×8点矩阵显示器的使用。 2 .熟悉用单片机基本 I/O口扩展 8×8点矩阵显示器的基本 原理。 3.掌握基本 I/O口的功能及编程方法二.课题要求 用 P1 口扩展 8×8点矩阵显示器的列线,用 P2 口控制 8×8点矩阵显示器的行线。用一片 8×8 共阳极点矩阵显示器显示心形。三.背景知识 8×8点矩阵显示器有共阴极和共阳极两种型式。在本课题中我们采用共阳极点矩阵显示器。图 6-29为 8×8点矩阵显示器显示心形的造型图。

Page 78: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-29 造型图

要显示一个完整的图形,需要进行 8 次扫描。本实训是从最右侧的列开始扫描的,每一次扫描的数据格式如图 6-30所示。

► 图6-30

每次扫描

的数据格式

Page 79: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

硬件电路如图 6-31 所示,由于 LED显示器需要的电流较大,所以在行线和列线上都要加驱动器。本电路列线上采用 74LS244进行驱动,行线上采用图 6-26 所示三极管驱动电路。

◄图 6-31 小小显示屏硬件电路

四.硬件电路

Page 80: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

ORG 0000H AJMP MAIN ORG 0100HMAIN : MOV DPTR, #TAB ;指向表地址 MOV R3, #8 ;设列扫描次数 MOV R0, #11111110B ;扫描右侧第一列初值 N1 : MOV P2 , R0 ;扫描值送 P2 口 CLR A MOVC A,@A+DPTR ;到 TAB取显示码 MOV P1 , A ;将取到的码送 P1 口显示 INC DPTR ;取码指针加 1 LCALL DELAY ;延时 MOV A, R0 ; 列扫码送 A RL A ;左移 1 位 MOV R0, A ;列扫码送回 R0

五.软件设计 (参考程序如下: )

Page 81: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

DJNE R3, N1 ;显示完 8列了吗?不是,跳到 N1 AJMP MAIN ;是则循环 TAB: DB 30H, 48H, 44H, 22H, 44H DB 48H, 30H, 00HDELAY: MOV R5, #1 D1 : MOV R7, #248 DJNZ R7, $ DJNZ R5, D1 RET END六.总结与提高 通过编程训练,读者可以掌握 8×8点矩阵显示器的编程方法及硬件扩展方法。请用该方法实现字母“P”的显示。

Page 82: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.5键盘接口

6.5.1 独立式按键 1 .独立式按键的硬件结构 在单片机应用系统中,常要使用按扭、开关或键盘对系统进行控制。在系统比较简单的情况下,只要几个开关就可以实现了。例如紧急停机按钮、部件到位的行程开关、变速开关等。这时可以把开关直接装在 I/O口,这就是独立式按键。独立式按键电路与芯片的连接要视芯片内部是否含有上拉电阻而定。如图 6-32 所示。

Page 83: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-32 独立式按键电路与芯片的连接

电路 6-32 ( a )中的 8个按键分别与单片机的 P1.0 ~P1.7相连,按键输入一般采用低电平有效。因而按键的一端与“地”相连,只要有键按下,相连的 P1 口线便会出现“ 0”电平;当没有键按下时, P1 口内部的上拉电阻保证了各个

Page 84: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

口线的输入均为高电平。对于内部没有上拉电阻的芯片,必须外接上拉电阻,以保证按键在断开和闭合时能可靠地出现两种电平“ 0”和“ 1”。如图 6-32 ( b )所示。 独立式键盘的电路连接和软件设计都比较简单,但由于一个按键就要占用一条 I/O口线,故一般只用于系统中按键较少的情况。

2 .独立式按键的软件结构 独立式按键的软件结构包括按键查询和按键功能程序转移。在图 6-32 ( a )所示电路中,单片机判断是否有键按下,可通过不断查询P1 口线的状态,并判断读入的 P1 口数据,当有数据位为“ 0”时,说明相应的按键被按下,单片机要转去执行相应的程序。如暂停键被按下,程序要跳转到暂停程序段;调速键被按下,程序要跳转到调速程序段等。

Page 85: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

例 1 对图 6-32 ( a )所示电路,请编程以查询的方式实现 P1 口按键的识别。要求以 P00~ P77 作为每个按键的功能程序入口地址标号。参考程序如下:KEY:MOV A, #0FFH ;置 P1 口为输入方式 MOV P1 , A ; MOV A, P1 ;读键状态 JNB ACC.0, P00 ; 0号键按下,转去 0号键处理程序 P00 JNB ACC.1 , P11 ; 1 号键按下,转去 1 号键处理程序 P11 JNB ACC.2 , P22 ; 2 号键按下,转去 2 号键处理程序 P22 JNB ACC.3, P33 ; 3号键按下,转去 3号键处理程序 P33 JNB ACC.4, P44 ; 4号键按下,转去 4号键处理程序 P44 JNB ACC.5, P55 ; 5号键按下,转去 5号键处理程序 P55

Page 86: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

JNB ACC.6 , P66 ; 6 号键按下,转去 6 号键处理程序 P66 JNB ACC.7, P77 ; 7号键按下,转去 7号键处理程序 P77 AJMP KEY ;无键按下返回,继续查询P00:…… ; 0号键处理程序 …… AJMP KEY ; 0号键处理完返回P11 :…… ; 1 号键处理程序 …… AJMP KEY ; 1 号键处理完返回 : :P77:…… ; 7号键处理程序 …… AJMP KEY ; 7号键处理完返回 END

Page 87: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

在单片机应用系统中,为了降低成本,通常采用触点式按键,由于机械触点的弹性作用,在闭合和断开瞬间均有一个抖动过程,如图 6-33 所示。抖动时间的长短与开关的机械特性有关,一般为 5 ~ 10ms。

图 6-33 抖动的产生

3 .独立式按键的去抖动问题

Page 88: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

硬件去抖动方法 是在按键和 I/O接口之间加一个 RS触发器(用与非门构成或用集成 RS触发器 74121 ),只有当按键真正按下时,才能输出稳定的波形。见 8.2.2节图 8-11 ( b )、 (c)所示。

软件去抖动 方法是在 CPU检测到有键按下时,先执行一个延时 20ms的子程序再确定按键是否真的按下。

常用的去抖动方法分为以下两种:

Page 89: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.5.2 矩阵式键盘

1 .矩阵式键盘的结构和 工作原理 矩阵式键盘又称行列式键盘,常用在按键数量较多的场合。矩阵式键盘的按键设置在行与列的交点上,如图 6-34所示。在该图矩阵式 4×4键盘结构中,行线通过电阻接+5V电源。在键盘中无按

图 6 - 34 矩阵式键盘的结构示意图

Page 90: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.5.2 矩阵式键盘

键按下时,所有的行线和列线都被断开,相互独立,行线 X

0~X3都为高电平。当有任何一键闭合时,该键所对应的行线和列线被接通。如果把行线接到单片机的输入口,列线接到单片机的输出口,由单片机控制列线的当前状态是“ 0” ,这样当某键所对应的行线出现低电平时,就可以判断出该行有键被按下。

Page 91: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

确定键盘上哪一个键被按下可以采用逐行或逐列扫描的方法,称行(列)扫描法。以上图所示的键盘为例,确定按键号的过程如下: 先将全部列线 Y0 ~ Y3置为低电平,然后判断键盘中是否 有键按下。

判断闭合键的位置。在确认键盘中有键按下后,依次将 列线 Y0 ~ Y3分别置为低电平,再逐行检测各行的电平 状态。若某行为低电平,则该行与置为低电平的列线相 交处的按键即为闭合的按键。

综合上述两步的结果,即可确定出闭合键所在的行和列,从而识别出所按的键。

2 .按键的识别

Page 92: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

3.矩阵式键盘的扫描方式

矩阵式键盘的扫描常用编程扫描方式、定时扫描方式或中断扫描方式 [6. 3] 来实现。无论采用哪种方式,都要编制相应的键盘扫描程序,在键盘扫描程序中一般要完成以下几个功能: 判断键盘上有无键按下→去键的机械抖动影响→求按下键的键号 图 6-35 给出了编程扫描方式的流程图。中断扫描方式的电路图如图 6-36 所示。

Page 93: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

▲图 6-35 编程扫描方式流程图 ▲图 6-36 中断扫描方式电路图

Page 94: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

☆ 6.5.3 课题与实训 14 矩阵式键盘的扩展

一.实训目的 1 .熟悉矩阵式键盘扫描的基本原理。 2 .学习单片机基本 I/O口扩展矩阵式键盘的电路设计方法。 3.学习矩阵式键盘程序设计的基本方法。二.课题要求 用 P1 口扩展 4×4矩阵式键盘,键值分别为 0 ~ 15,并将P1 口读入的键值(二进制)从P2.0 ~ P2.3显示出来。 显示方法: 4位发光二极管分别代表 4位二进制数,二进制数中的数码“ 1”用发光二极管亮来表示,数码“ 0” 用发光二极管灭来表示。例如,若 1 号键按下,则发光二极管 L1亮,L2~ L4灭( 0001B);若 6 号键按下,则发光二极管 L2 和L3 亮, L1 和 L4 灭( 0110B),依此类推。

Page 95: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

三.背景知识 对矩阵式键盘的编程操作一般包含几个方面: 1. 判断是否有键按下。 2. 找出按下的键。 3.求出按下键对应的键值。如按下硬件电路中矩阵式键盘

左上角的键,其值应该对应 F,根据电路结构可以求出 键值 =(列号 ×4) + 行号。 4.执行按下该键后应该完成的操作,如输出 1111B,由 4

个发光二极管显示出来。四.硬件电路

硬件电路如图 6 -37所示。键盘采用 4×4结构,共有 16 个按键。其中 P1.0 ~ P1.3对应 0 ~ 3列, P1.7 ~ P1.4对应 0 ~ 3行。使用 1KΩ 的电阻是为了保证在无键按下时各行能输入高电平。

Page 96: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

资源分配: R1为输入按键位置的列号, R2 为输入按键位置的行号, R3为按键的总行数, R4为总扫描列数, R5为列扫描数据, R6和 R7为延时参数。

▲图 6-37 矩阵式键盘的硬件电路

Page 97: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

ORG 0000H AJMP MAIN ORG 0100HMAIN : MOV R1 , #00H ;初始列号为 0 MOV R2 , #00H ;初始行号为 0 MOV R4, #04H ;R4为总扫描列数 MOV R5, #11111110B ;设置第 0 列为低电平“ 0”

MOV A, R5LOOP: MOV P1 , A ; 送扫描数据 ORL P1 , #0F0H ;行线设为输入状态 MOV A, P1 ; 读行线上的信号

LCALL DELAY ; 延时去抖动 MOV R3, #04H ;检查一列中的各行按键

MOV R2 , #00H ;R2 为输入按键位置的行号 SETB C

五.软件设计 ( 参考程序如下 )

Page 98: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

LOOP1 : RLC A JNC DISPLAY ; 有键按下,转去显示

INC R2 ; 无键按下,继续扫描该列 DJNZR3, LOOP1 MOV A, R5 ;R5为输入按键列扫描数据 RL A

MOV R5, A ; 改变 R5中按键列扫描数据,指向 ; 下一列

INC R1 ; 已扫描了一列,列号加 1 DJNZR4, LOOP ; 所有列均无键按下,循环扫描

DISPLAY:MOV A, R1 ; 有键按下,计算键值 MOV B, #04H MUL AB ; 键值 =(列号 ×4) + 行号

Page 99: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

ADD A, R2 CPL A MOV P2 , A ; 送显示 LJMP MAIN

DELAY: MOV R6 , #0C8H ; 延时子程序 D1 : MOVR7, #0A0H DJNZ R7, $

DJNZ R6 , D1 RET END

六.总结与提高 通过编程训练,读者可以掌握矩阵式键盘的编程方法及硬件扩展方法。请用该硬件实现 8421BCD码的编排与显示。

Page 100: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

☆ 6.7 I2C总线扩展 近年来,单片机串行扩展技术得到了发展,并正在成为单片机应用系统扩展的主流。目前较为常用的串行扩展方式有移位寄存器扩展和 I2C总线扩展

6.7.1 I2C 总线基础

1 .串行扩展总线的特点2 . I2C 总线简介3 . I2C 总线的性能特点

Page 101: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

与并行扩展相比,串行扩展具有如下特点: 能最大限度地发挥最小系统的资源功能。将原来由并行扩 展占用的 P0 口和 P2 口直接用于输入 /输出 .

简化硬件线路,缩小了印制线路板的面积,降低了成本。串 行扩展只需 1~ 4根信号线,器件间连线简单,结构紧凑,可 大大缩小系统的尺寸,适用于小型单片机应用系统。 扩展性好,可简化系统的设计。串行总线能十分方便地构成 由一台单片机和部分外围器件组成的单片机应用系统。

串行总线的缺点是数据处理容量较小,信号传输速度慢, 但随着 CPU工作频率的提高,以及串行扩展芯片功能的不断 增强,这些缺点将逐步淡化。其应用将会越来越广。

1 .串行扩展总线的特点

Page 102: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

2 . I2C总线简介 I2C总线 (Inter IC BUS— 集成电路芯片间的串行总线 )是一种由 Philips公司推出的两线式串行总线,用于连接微控制器及其外围设备,是近年来在微电子通信控制领域广泛采用的一种新型总线标准,能用于替代标准的并行总线。图 6-38是 I2C总线的外围扩展示意图。它给出了单片机应用系统中最常使用的 I2C总线外围通用器件。

图6-38 I2C

总线的外围扩展示意

Page 103: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

I2C 总线的性能特点可体现为以下几方面: (1) 简单性 这是 I2C 总线最主要的优点。由于接口就在组件上,因此 I2C 总线占用的空间非常小,减少了电路板的层数和电路连线,简化了芯片管脚的数量,并且不需要并行总线接口,因而降低了互联成本。

(2) 有效性

I2C 总线的长度可达 25 英尺( 7 、 8 米),标准 I2C 总线传输速率可以到 100Kbps ,通过使用 7 位地址码,就能支持128 个设备。加强型 I2C 总线用了 10 位地址码(能够支持 1024 个设备),快速模式传输速度达到 400Kbps ;高速模式传输速度最高有 3.4Mbps 。

(3) 支持多主控 (multimastering) 所以更容易调试。

3 . I2C 总线的性能特点

Page 104: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.7.2 I2C 总线原理

1 . I2C总线的构成 I2C总线是由数据线 SDA和时钟信号 SCL构成的串行总线,可发送和接收数据。在 CPU与被控 IC之间、 IC与 IC之间进行双向传送,最高传送速率 100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址。

在信息的传输过程中, I2C 总线上并接的每一模块电路既可充当主控器(或被控器),又能作为发送器(或接收器)使用,这取决于它所要完成的功能。

CPU 发出的控制信号分为地址码和控制量两部分,地址码用来选地址,即接通需要控制的电路,确定控制的种类,类似于电话的拨号;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

Page 105: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

2 . I2C总线的信号类型 I2C总线在传送数据过程中共有三种信号类型,它们分别是:开始信号、结束信号和应答信号。

开始信号: SCL为高电平时, SDA由高电平向低电平跳变, 开始传送数据。 结束信号: SCL为高电平时, SDA由低电平向高电平跳 变,结束传送数据。 应答位信号:主控器与被控器之间的联系信号,它是 I2C总 线上第 9个时钟脉冲对应的 SDA状态。当该状态为“ 0”电平 时,表示有应答信号;当该状态为“ 1”电平时,表示无应 答。

Page 106: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

主控器与被控器之间应答信号的联系过程如下: 接收数据的 IC在接收到 8bit 数据后,向发送数据的 IC发出特定的低电平脉冲,表示已收到数据。 CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号, CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,可以判断为受控单元出现故障。

Page 107: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

3. I2C总线上一次典型的工作流程

开始:发送开始信号,表明传输开始。

发送地址:主设备发送地址信息,包含 7位的从设备地址和 1 位的指示位(表明读或者写,即数据流的方向)。 发送数据:根据指示位,数据在主设备和从设备之间传输。 数据一般以 8位传输,最重要的位放在前面;具体能传输多少 量的数据并没有限制。接收器上用一位的 ACK(应答信号)表 明每一个字节都收到了。传输可以被终止和重新开始。 停止:发送停止信号,结束传输。

Page 108: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

4 . I2C 总线的基本操作

I2C规程运用主 /从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟( SCL)控制总线的传输方向,并产生起始和停止条件。 SDA线上的数据状态仅在 SCL为低电平的期间才能改变, SCL为高电平的期间, SDA状态的改变被用来表示起始和停止条件。(参见图 6-39)

▲图 6-39 串行总线上的数据传送顺序

Page 109: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

在起始条件之后,必须是从器件的控制地址,其中高四位为器件类型识别符(不同的芯片类型有不同的定义, EEPROM一般应为 1010),接着三位是片选,最后一位是读写位,当该位为 1 时表示读操作,为 0时表示写操作。如图 6-40 所示。

图 6-40 从器件的地址配置 SLA

⑴从器件的控制地址

Page 110: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

⑵写操作

说明: 1 .其中 S表示开始信号, A是应答信号, P是停止信号。 2 . SLAw 是从器件的控制地址(最后一位为 0,表示写 操作); 3. SADR是要写入页面的首地址。

▲图 6-41 页面写

写操作分为字节写和页面写两种,在页面写方式下要根据芯片的一次装载的字节不同而有所不同。关于页面写的地址、应答和数据传送的时序参见图 6-41 。灰色部分由 80C51 发送,白色部分由 24CXX发送。

Page 111: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

⑶读操作

读操作有三种基本情况:当前地址读、随机读和顺序读。图 6-42给出的是顺序读的时序图。

▲ 图 6-42 顺序读

说明: 1 .其中 S表示开始信号, A是应答信号, P是停止信号。 2 . SLAw 是从器件的控制地址(最后一位为 0,表示写 操作); 3. SLAR是从器件的控制地址(最后一位为 1 ,表示读 操作); 4. SADR是读出单元的首地址。

Page 112: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

6.7.3 I2C 总线应用实例

1 . 常用 I2C芯片简介 近年来,基于 I2C总线的各种串行 EEPROM的应用日益增多,如 CATALYST公司生产的 24CXX系列芯片就是一个典型代表。该系列产品主要有 24C02 、 24C04、 24C08、24C16 和 24C32 ,容量分别对应于 2~ 32KB。它们一般具有并口 EEPROM的特点,但以串行方式传送数据,一般仅占用 2~ 4条 I/O线,价格低廉。

Page 113: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

图 6-43 是 DIP封装的 24C02 与 80C51 的接口方案。其中 A0、 A1 、 A2 是芯片地址线,单片使用时接地;SCL是串行移位时钟端; SDA是串行数据或地址端, CPU通过 SDA访问芯片; WP是写保护端,接高电平时芯片只能读。

图 6-43 24C02执行写操作时与 80C51 的接口

Page 114: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

X24C04是 XICOR公司的 CMOS结构 4096 位( 512Byte×8位)串行 EEPROM, 16字节页面写。与 80C51 单片机接口如图 6-44所示。 SDA是漏极开路输出,且可以与任何数目的漏极开路或集电极 .开路输出“线或”( wire-Ore

d )连接,上拉电阻的选择可参考 X24C04 的数据手册。下面是通过 I2C 接口对 X24C04 进行单字节写操作的例程(设输入参数为 A )。

▲图 6-44 24C04与 51 单片机接口

2 . 应用实例— 80C51 对 X24C04的单字节写操作

Page 115: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

MOV R7,#08H ; 1字节 8位 SENDA: CLR P3.2 ; RLC A ;左移一位 MOV P3.3,C ;写一位 SETB P3.2 DJNZ R7,SENDA;写完 8个字 节? CLR P3.2 ;应答信号 SETB P3.3 SETB P3.2 RET ►图 6-45 流程

源程序如下: (流程图见 6-45)

Page 116: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

3.使用须知

严格按照时序图的要求进行操作。

若与口线上带内部上拉电阻的单片机接口连接,可以不外加 上拉电阻。

程序中为配合相应的传输速率,在对口线操作的指令后可用 NOP指令加一定的延时。

为了减少意外的干扰信号将 EEPROM内的数据改写可用外部写 保护引脚(如果有),或者在 EEPROM内部没有用的空间写入 标志字,每次上电时或复位时做一次检测,判断 EEPROM是否 被意外改写。

在 I2C总线的应用中应注意这样几个问题 :

Page 117: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

80C51 单片机的内部集成了计算机的基本部件,这对于一般小型单片机应用系统已经足够了。但在应用系统较为复杂的情况下,就会感到其中的某些部件不够用,这时就需要进一步扩充。 按照扩展器件功能的不同, 80C51 单片机的系统扩展分为存储器扩展和 I/O口扩展,按照接口的连接对象不同, I/O接口又可分为显示器接口、键盘接口、测控接口等。对于存储器扩展,同学们要掌握其扩展原理。 I/O接口的扩展是我们本章乃至全书的重点,对这部分内容,同学们一定要多练。还是那句话,只看不练是学不好单片机的。

本章小结

Page 118: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

1.什么是存储器扩展?什么是 I/O 接口扩展?请画出 80C51 单片机扩展系统总线结构图。

2. 扩展程序存储器一般采用哪类芯片?扩展数据存储器呢? 你知道的 EEPROM芯片有哪几种?

3. 一片 EEPROM芯片能否同时用作程序存储器和数据存储器? 如果能,单片机寻址时会不会发生冲突?

4.采用一片 EEPROM芯片 2864A扩展程序存储器和数据存储 器,要求芯片地址范围是 7800H~7FFFH,如何扩展?

5.采用 74LS138 译码器最多可扩展多少块芯片?6.试用 74LS138 译码器扩展 8片 2864,试画出其线路连

接图, 并分析各个芯片的起止地址。

7. 在扩展简单 I/O接口时需要注意哪些问题?8.80C51 并行扩展 I/O口作输入输出操作时执行什么指令?

使 用什么控制信号?为什么?

思考题与习题

Page 119: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

9. 画简图说明 8155 的内部结构。它的命令寄存器和状态寄 存器共用一个地址会不会发生读写混乱?为什么?

10. 8155能工作于哪几种方式?条件是什么?11 .参照图 6-16 ,编程检验 8155片内 256BRAM能否正

确读出 和写入(方法是对相邻两单元分别写入 01H和 FFH,然后分别读出求和,看结果是否为 0,依次检查)。

12 .参照图 6-16 ,将 PA口定义为基本输入方式,将 PB口定义 为基本输出方式,编写初始化程序。

13.参照图 6-16 ,要求从 8155A口每隔 1ms读入一次数据,共 256次,取反后依次存入 8155片内 RAM 00H~FFH。

14. LED数码显示器有哪两种结构?它们是如何编码的? 15.什么是静态显示方式?它有什么特点?16 .什么叫动态扫描显示?如何连线?有什么特点?17.对图 6-19电路,要求将存放在 80C51 内 RAM30H、31H单元 的两个压缩 BCD码在两个 LED数码显示器上显示出来。

Page 120: 本章学习目标 : 了解单片机系统扩展的意义,常用存储器的应用 特点和存储器扩展的基本方法 理解 I/O 接口的作用,熟悉常用 I/O 接口的功能和用法

18 .点矩阵显示器依据什么原理工作?对它的操作常用什么 指令?19.请画出数字“ 6”、汉字“天”的造型表。20.对点矩阵显示器如何驱动?它有哪几种扫描方式?每种 扫描方式如何工作?21 .请编程分别实现 19题的字符显示。22 .独立式按键如何与集成电路芯片连接?请画图说明。23.对图 6-32 ( a )所示电路,请编程检测P1 口各按键情况: 若P1.0按下,将 30H单元内容取反后送回原单元;若P1.1 按 下,将 31H单元内容取反后送回原单元;以此类推。24.什么是独立式按键的抖动和窜键?如何处理?25.矩阵式键盘如何进行按键识别?26 .与并行扩展相比,串行扩展有哪些特点?27.什么是 I2C总线?它是如何构成的?28.简述 I2C总线上一次典型的工作流程。