首页计算机计算机工程单片机原理及应用 07 项目7 单片机的系统扩展.pptx

07 项目7 单片机的系统扩展.pptx

页数:30页文件大小:459.2 KB来源: 单片机原理及应用ppt课件

本课件讲解以单片机为核心的系统扩展方法:先说明地址、数据、控制三总线与P0、P2口的分时复用,再用27128、2764、6116等实例讲清存储器扩展的地址范围计算与线选法、译码法片选,最后介绍74LS244、74LS273与8155的I/O口扩展。

项目7 单片机的系统扩展封面页,标示本章讲解存储器扩展与并行I/O口扩展方法
系统扩展结构讲解页,说明外围器件通过外部总线挂接到单片机并在CPU控制下传送地址与数据
系统总线分类讲解页,说明地址总线单向、数据总线8位双向与控制总线协调外设的作用
查看本课件的文字版(共 30 页,供检索与复制)

第1页:项目7 单片机的系统扩展封面

项目7「单片机的系统扩展」讲解以单片机为核心的系统扩展结构、程序存储器与数据存储器的扩展方法,以及简单并行I/O口与8155可编程并行I/O口的扩展。

第2页:51单片机的系统扩展结构

7.1 51单片机的系统扩展结构:单片机的系统扩展是以单片机为核心,通过芯片外部总线把一些相应功能的外围器件(ROM、RAM、I/O等)与单片机连接起来,其情形就像各扩展部件「挂」在总线上一样,并且在单片机CPU的控制下通过总线进行数据、地址和信号的传送。

第3页:单片机的系统总线:AB、DB与CB

7.1.1 单片机的系统总线:总线是计算机中传送信息的公共通道,根据传送信息的类型和功能可以分为3组。

地址总线AB
CPU用来传送地址信息的总线,信息传送是单向的;存储容量越大,寻找某个存储单元所需的地址线条数就越多。
数据总线DB
用来传送数据或指令代码,实现CPU与外部设备之间的数据交换,传送是双向的;数据总线的条数与计算机字长相同,MCS-51字长为8位,故数据总线也是8位。
控制总线CB
用于传送各类控制信号,协调单片机与其他外围芯片之间的工作,实现单片机与外部设备之间的信息交换。

第4页:7.1.2 单片机的总线构成

7.1.2 单片机的总线构成:MCS-51单片机以P0口、P2口和若干控制信号构成外部总线,为系统扩展提供地址、数据和控制三类通道。

第5页:P0口、P2口与控制信号的连接

  • P0口作为数据总线和低8位地址总线:P0口具有双重功能,既可作为数据线,又可作为低8位地址线
  • P2口作为高8位地址总线:P2口的8位地址线加上P0口的低8位地址线,形成完整的16位地址总线,最大寻址范围可达64KB
  • 控制信号:ALE为地址锁存信号,用来锁存P0口输出的低8位地址;PSEN为外部程序存储器读选通信号,低电平有效;EA为片内/片外程序存储器的选择端;WR为外部数据存储器写选通信号;RD为外部数据存储器读选通信号

单片机与外部器件数据交换要遵循两个重要原则:一是地址唯一性,一个单元一个地址;二是同一时刻CPU只能访问一个地址,与哪个器件交换数据由地址线控制各器件的片选线来选择,不交换时外部器件处于锁闭状态,对总线呈浮空状态。

第6页:7.2.1 常用程序存储器芯片2764

7.2 存储器的扩展 7.2.1 程序存储器的扩展:(1)常用程序存储器芯片有ROM、EPROM(紫外线擦除型存储器)、E²PROM(电擦除可改写型存储器)以及近年来广泛使用的Flash ROM(快擦写型存储器)等多种类型,下面以2764为例介绍ROM的扩展方法。图7-4为2764的管脚配置图。

  • A0~A12:地址信号输入线,说明芯片容量为2^13=8K
  • D0~D7:8位数据线
  • CE:片选信号线,低电平有效,为低电平时选中该芯片
  • OE:读选通信号线,为低电平时芯片中的数据可以由O0~O7输出
  • PGM:编程脉冲输入端,对EPROM编程时由此加入编程脉冲
  • Vpp:编程电源;Vcc:主电源

第7页:程序存储器的片选方法:线选法与译码法

(2)程序存储器连接方法 1)地址线的连接:实际应用中扩展的存储器容量都大于256字节,所以除了P0口的8位地址线外,还需要P2口提供若干地址线。芯片的选择决定了存储的地址。

  • 扩展一片芯片:芯片的片选端直接接地即可
  • 扩展两片以上存储器:片选端应采用专门的片选信号来控制,有 ①线选法:将P2口多余的地址线中的某位与存储器或其他芯片的片选信号端相连;②译码法:使用地址译码器将P2口多余地址线译码输出,作为各芯片的片选信号

第8页:程序存储器数据线与控制线的连接

  • 2)数据线的连接:将单片机的P0口直接与程序存储器的8位数据线连接
  • 3)控制线的连接:PSEN与程序存储器的读选通信号端直接相连;ALE与地址锁存器的控制端相连;EA在单片机为无程序存储器的8031或只使用外部扩展的程序存储器时直接接地

第9页:例7.1 扩展27128程序存储器

【例7.1】在8031上扩展16KB芯片27128的程序存储器。1)硬件电路:图中给出8031通过地址锁存器74LS373与27128相连、扩展16KB程序存储器的电路连接。

第10页:例7.1 连线说明与地址范围

2)连线说明:

  • ①地址线:27128容量为16KB=2^14,共14条地址线(A0~A13),低8位A0~A7通过锁存器74LS373与P0口相连,高6位A8~A13直接与P2口的P2.0~P2.5连接
  • ②数据线:27128的数据线(O0~O7)直接与P0口的8位数据线连接
  • ③控制线:单片机的ALE与74LS373的使能端G端连接,EA直接接地;27128的OE与单片机的外部程序存储器读选通信号端直接相连;由于只扩展了一片程序存储器芯片,CE直接接地

3)扩展ROM地址范围:芯片地址编码中A15、A14为无关位(可取0或1,通常取0),A13~A00从全0到全1,即整个存储器的地址范围是0000H~3FFFH。

第11页:例7.2 两片2764扩展程序存储器

【例7.2】在8031上采用两片2764扩展16KB的程序存储器。1)硬件电路:图中给出两片2764与8031的连接,片选采用线选法,P2.5为低电平时选中2764(1),P2.5为高电平时经反相器选中2764(2)。

第12页:例7.2 连线说明与两片地址范围

2)连线说明:

  • ①地址线:2764容量为8KB=2^13,共13条地址线(A0~A12),两片芯片的低8位经74LS373与P0口相连,高5位与P2口的P2.0~P2.4连接
  • ②数据线:两片2764的数据线直接与P0口的8位数据线连接
  • ③控制线:两片2764的读选通信号端与单片机的外部程序存储器读选通信号端相连;采用线选法,P2.5为低电平时选中2764(1),为高电平时经反相器选中2764(2)

3)扩展ROM地址范围:2764(1)地址编码中A15、A14取0、A13为0,范围为0000H~1FFFH;2764(2)地址编码中A15、A14取0、A13为1,范围为2000H~3FFFH。

第13页:数据存储器的扩展与6116芯片

7.2.1 数据存储器的扩展:在单片机应用系统中,作为数据存储器使用的有静态读/写存储器RAM、动态读/写存储器RAM和EEPROM等,静态RAM扩展电路简单、使用方便,因而应用广泛,典型芯片有6116(2K×8)、6264(8K×8)、62256(32K×8)等。

  • A0~A10:12根地址信号线,说明芯片容量为2^11=2K
  • O0~O7:8位数据线
  • CE:片选信号线,低电平有效,为低电平时选中该芯片
  • OE:读选通信号线,为低电平时芯片中的数据可以由O0~O7输出
  • WE:写选通信号端,为低电平时可以由O0~O7输入数据到芯片中

(2)数据存储器连接方法:数据存储器的扩展地址与程序存储器一样都是0000H~FFFFH,系统扩展时两者的地址总线和数据总线可并联使用;地址线和数据线的连接方法与程序存储器相同,控制线OE和WE则分别与单片机的RD和WR连接。

第14页:例7.4 两片6116扩展数据存储器

【例7.4】在8031上采用两片6116扩展4KB的数据存储器。1)硬件电路:图中给出两片6116与8031的连接,两片的读、写选通端分别并接,片选由P2.3和P2.4分别控制。

第15页:例7.4 连线说明与地址范围

2)连线说明:

  • ①地址线:6116容量为2KB=2^11,两片芯片的低8位A0~A7通过锁存器74LS373与P0口相连,高3位A8~A10直接与P2口的P2.0~P2.2连接
  • ②数据线:两片6116的数据线直接与P0口的8位数据线连接
  • ③控制线:两片6116的读选通信号端与单片机的外部RAM读选通端相连,写选通信号端与单片机的外部RAM写选通端相连;采用线选法分别由P2.3和P2.4控制

3)扩展RAM地址范围:芯片6116(a)的地址编码为×××1 0……0 到 ×××1 0……1,无关位取0时地址范围是1000H~17FFH;芯片6116(b)的地址编码为×××0 1……0 到 ×××0 1……1,无关位取0时地址范围是0800H~0FFFH。

第16页:7.3.1 简单并行I/O口的扩展

7.3 I/O口的扩展:通常I/O口的扩展有三种方式——并行I/O口扩展、可编程的并行I/O芯片扩展、串行口的I/O口扩展,本节主要介绍前两种。

7.3.1 简单并行I/O口扩展:简单的并行I/O口扩展通常采用普通的TTL电路和CMOS门电路实现,如八线缓冲驱动器74LS244(三态输出)、八总线发送/接收器74LS245、74LS373等。这些芯片一般通过数据总线P0口扩展,具有电路简单、成本低、配置灵活等优点。

74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发、低电平清除,常用作数据锁存器、地址锁存器,与74LS373功能相似。

第17页:例7.5 用244与273扩展I/O口

【例7.5】采用74LS244扩展输入、74LS273作为扩展输出的简单并行I/O口扩展。1)硬件电路:图中给出74LS244接8个开关作输入、74LS273接8个LED作输出,二者数据端均与P0口相连的电路。

第18页:例7.5 连线说明、地址确定与程序

2)连线说明:

  • 74LS244作为扩展输入接口,输入8个开关的信息;74LS273作为扩展输出接口,输出控制8个LED;74LS244的数据输出端和74LS273的数据输入端均与单片机的P0口连接
  • 输入控制信号由P2.7与RD相「或」后形成,二者同时为0时选通74LS244,外部信息输入到数据总线P0上;无按键闭合时输入全为1,按下某按键则对应口线输入为0
  • 输出控制信号由P2.7与WR相「或」后形成,二者同时为0时选通74LS273,P0上的数据锁存到其输出端,某位为低电平时对应的LED发光

3)I/O地址的确定:输入/输出都是在P2.7为0时有效,所以二者的口地址都是7FFFH(此地址不是唯一,只要保证P2.7为0即可)。

4)程序实现(每当接通任一开关时对应的LED发光):

  • LOOP:MOV DPTR,#7FFFH ;数据指针指向扩展I/O口地址
  • MOVX A,@DPTR ;从74LS244输入开关状态
  • MOVX @DPTR,A ;向74LS273输出数据,驱动LED
  • SJMP LOOP ;循环检测

第19页:8155可编程并行I/O口与内部结构

7.3.2 可编程并行I/O口的扩展:除简单扩展方式外,还可以用并行I/O口的可编程芯片进行扩展,这种方式通常采用软件编程的方式来改变和确定I/O口的工作方式及功能,常用的有Intel公司的8155、8255等,它们可以与单片机直接连接,使用十分方便。下面以8155为例介绍。

1)8155内部结构:

  • A、B、C三个端口:A、B是8位I/O口,数据传送方向由命令寄存器决定;C口为6位I/O口,通过命令寄存器编程选择
  • 控制逻辑部件中有一个控制命令寄存器和一个状态寄存器,8155的工作方式由CPU写入控制命令寄存器中的控制字确定
  • 内部有一个14位的定时/计数器,可用作定时或对外部脉冲计数
  • RAM容量为256×8位,由一个静态随机存取存储器和一个地址锁存器组成

第20页:8155的引脚及其功能

2)引脚及其功能特点:

AD0~AD7
地址/数据线,低8位地址和数据复用线;8155内部具有地址锁存器,在ALE下降沿可锁存单片机的地址数据,不需外加373之类的锁存器,可直接接P0口
PA0~PA7、PB0~PB7
A口、B口输入/输出线
PC0~PC5
C口输入/输出线,是6位I/O口,既可作通用数据I/O口,又可作控制口
ALE
地址锁存信号,锁存P0口的地址编码
IO/M
I/O口或RAM选择信号:0选择RAM,1选择I/O及命令状态寄存器和定时/计数器
CE
片选信号,低电平有效
RD、WR
读、写信号选通线,低电平有效,可直接与单片机的RD、WR连接
TIMER IN
内部定时/计数器时钟脉冲输入,一个脉冲使14位定时器当前值减1
TIMER OUT
内部定时/计数器输出,可向外界输出脉冲或者方波信号
RESET
芯片复位信号线

第21页:表 8155的RAM和I/O口地址编码

8155内部共有256个RAM单元,I/O口除A口、B口、C口外还有命令/状态寄存器、定时器高8位和低8位等,要对RAM单元和I/O端口进行访问必须有相应的编码地址,为此8155芯片采用8位地址AD0~AD7对片内RAM和I/O端口分别编址。

8155的RAM和I/O口地址编码
选中的寄存器AD7~AD0编码IO/M选择
命令/状态寄存器×××××0001(I/O)
PA口×××××0011(I/O)
PB口×××××0101(I/O)
PC口×××××0111(I/O)
定时计数器的低8位×××××1001(I/O)
定时计数器的高8位×××××1011(I/O)
片内RAM单元(00H~FFH)××××××××0(RAM)

说明:源文本中地址位与IO/M选择位粘连在一起,此处按8155标准的低3位端口编码(000~101)与IO/M位对齐还原,建议对照原课件图片核对。

第22页:表 8155的PC口工作方式

8155的PA口和PB口有基本输入/输出和选通输入/输出两种工作方式:前者以无条件的方式进行数据的输入和输出,后者数据的输入和输出受到某些联络信号的控制。PC口有ALT1~ALT4四种工作方式,如下表所示。

8155的PC口工作方式(ALT1~ALT4)
命令口位ALT1(方式1)ALT2(方式2)ALT3(方式3)ALT4(方式4)
PC0输入线输出线A-INTRA-INTR
PC1输入线输出线A-BFA-BF
PC2输入线输出线A-STBA-STB
PC3输入线输出线输出线B-INTR
PC4输入线输出线输出线B-BF
PC5输入线输出线输出线B-STB
A口工作方式基本I/O口基本I/O口选通I/O口选通I/O口
B口工作方式基本I/O口基本I/O口基本I/O口选通I/O口

第23页:8155命令字的格式及定义

8155的工作方式由CPU写入控制命令寄存器中的命令字来确定。①命令字的格式及定义:命令字用于设定A口、B口、C口的工作方式(基本I/O或选通I/O)、中断允许以及定时/计数器的启动与停止。

第24页:8155状态字的格式及定义

②状态字的格式及定义:状态寄存器各位为D0~D7,定义如下:

INTR-A(D0)
A口中断请求标志位,1表示请求,0表示未请求。
BF-A(D1)
A口缓冲器满标志位(输入时)、缓冲器空标志位(输出时),1为满,0为空。
INTE-A(D2)
A口中断允许标志位,1为允许,0为禁止。
INTR-B(D3)
B口中断请求标志位,1表示请求,0表示未请求。
BF-B(D4)
B口的缓冲器满/空标志位(输入/输出),1为满,0为空。
INTE-B(D5)
B口中断允许标志位,1为允许,0为禁止。
TIMER(D6)
定时/计数器中断标志位;当达到最终计数值时该位锁定于高电平,并由读命令/状态寄存器操作或开始新的计数过程操作复位至低电平。

第25页:8155定时/计数器与输出方式

6)定时/计数器:8155片内的定时/计数器是一个14位的减法计数器,它对TIN端的时钟脉冲进行计数,并在达到最后计数值(TC)时给出一个方波或脉冲,如图7-17所示。编址为XXXXX100B和XXXXX101B的两个寄存器为计数长度寄存器,计数初值由程序预置,每次预置一个字节。

  • 该寄存器的0—13位规定下一次计数的长度,14、15位规定定时/计数器的输出方式
  • TIMER IN输入外接脉冲时实现计数功能,输入系统时钟实现定时功能;每输入一个脉冲计数器减1,减到0时TIMER OUT引脚根据M1、M0的设置输出波形
8155定时/计数器输出方式(M2、M1)
M2M1输出方式
00单个方波
01连续方波(计数满后自动加载计数初值并计数)
10单个脉冲
11连续脉冲(计数满后自动加载计数初值并计数)

第26页:MCS-51单片机与8155的连接

7)MCS-51单片机和8155的连接:

  • AD0~AD7:直接与单片机的P0口连接,作为地址/数据线使用
  • ALE:与单片机的ALE连接
  • CE:片选信号,用线选法与单片机高8位地址线(P2口)任一位连接
  • IO/M:与单片机另外一根未用的高8位地址线连接
  • RD、WR:直接与单片机的RD、WR连接

连接的关键接线是CE和IO/M:CE决定本芯片是否被选中,IO/M则决定是对I/O端口操作还是对内部RAM操作。

第27页:例7.6 把立即数写入8155片内RAM

【例7.6】电路如图所示,编程将立即数66H写入到8155片内RAM的20H单元中。

解:分析题意得

  • 1)对8155进行操作需选通芯片,所以CE=0,即P2.7=0
  • 2)对8155片内RAM操作,IO/M=0,即P2.0=0;访问8155片内RAM的地址范围是7E00H~7EFFH(设无用位为1)

3)汇编语言程序如下:

  • MOV A,#66H ;立即数送A
  • MOV DPTR,#7F20H ;指向8155片内RAM的20H单元
  • MOVX @DPTR,A ;写入数据到8155片内RAM的20H单元

第28页:例7.7 8155应用要求

【例7.7】电路如图所示,要求:

  • 1)读入PB口按键状态,通过PA口的LED显示出来
  • 2)设从8155的TIMER IN端输入一计数脉冲,经24分频后由TIMER OUT输出连续方波信号

第29页:例7.7 定时器初值与命令字设置

解:分析题意得

  • 1)CE=0选通8155,IO/M=1选择I/O口,命令/状态寄存器的地址为7FF8H(设无用位为高电平)
  • 2)设定定时器初值和输出方式:输出连续方波,定时器输出方式M2M1=01;输出脉冲频率为输入脉冲频率的24分频,所以计数长度为24,即初始值为24(18H)。8155定时器两个寄存器的数值分别为——输出方式及计数值高6位:01000000B(40H);计数值低8位:00011000B(18H)
  • 3)PA口为输出,PB口为输入,同时在装入数值后需启动定时器计数,设无用位为0,则命令字为11000001B,即C1H

第30页:例7.7 汇编语言程序

4)汇编语言程序如下:

  • ORG 0000H LJMP MAIN ORG 0100H
  • MAIN: MOV DPTR,#7FFCH ;指向定时器低8位
  • MOV A,#18H ;装入计数值低8位
  • MOVX @DPTR,A
  • MOV DPTR,#7FFDH ;指向定时器高8位
  • MOV A,#40H ;装入计数值高6位及输出方式字
  • MOVX @DPTR,A
  • MOV DPTR,#7FF8H ;DPTR指向命令寄存器
  • MOV A,#0C1H ;命令字送A,设定PA输出、PB输入,并启动定时器
  • MOVX @DPTR,A ;写入命令字到命令寄存器
  • LOOP: MOV DPTR,#7FFAH ;指向PB口
  • MOVX A,@DPTR ;读入PB口状态到A中
  • MOV DPTR,#7FF9H ;指向PA口
  • MOVX @DPTR,A ;A中数据写入PA口中
  • SJMP LOOP END
顶部目录