1 / 120

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

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

finna
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 6.1.2扩展系统总线结构 单片机系统扩展有并行扩展和串行扩展两种方法。并行扩展通过单片机的三总线(AB、DB、CB)来实现;串行扩展是利用SPI三总线和I2C双总线的串行系统扩展。 SPI三线同步总线: 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI总线是一种三线同步总线,因其硬件功能很强,所以,与SPI有关的软件就相当简单,使CPU有更多的时间处理其它事务。

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

  5. 1.地址总线AB(Address Bus) 地址总线用于传送单片机送出的地址信号,以便进行存储单元和I/O端口的选择。地址总线的位数决定着可访问的存储器或I/O口的容量。80C51单片机有16条地址线。所以能寻址64KB空间。 80C51单片机的16位地址线分为两部分: • 高8位地址线:由P2 口提供; • 低8位地址线:由P0 口提供。 由于P0口是低8位地址和8位数据的复用线,因此必须外接锁存器,用于将先发送出去的低8位地址锁存起来,然后才能传送数据。需要注意:P0、P2口在系统扩展中用作地址线后就不能作为一般I/O口使用。

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

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

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

  9. 6.2.1存储器的分类 存储器的分类方法较多: 如果按存储器所处位置划分,可分为片内存储器和片外存储器; 根据用途不同,可分为程序存储器和数据存储器; 按照存取方式和使用功能,可分为随机存取存储器(Random Access Memory,简称RAM)和只读存储器(Read Only Memory,简称ROM)。

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

  11. 2.只读存储器ROM ⑴特点 • 编入程序或写入数据后只能读出不能写入(指单片机在 正常工作状态下); • 掉电以后所存内容不会丢失,通电后照常能够使用。因 此常用作程序存储器。 ⑵分类 根据结构和工艺不同,ROM可分为以下几种:

  12. 掩模ROM • 可编程的PROM(Programmable ROM) • 紫外线可擦除可编程的EPROM(Erasable Programmable ROM) • 电可擦除可编程的EEPROM(Electrically Erasable Programmable ROM) • 闪速存储器Flash

  13. 表6-1是半导体存储器的分类和性能对照表。 注:“自动”指断电或写入数据时,原有数据自动擦除

  14. 6.2.2 常用存储器扩展芯片 扩展程序存储器一般采用掉电信息不丢失的ROM类芯片,如EPROM和EEPROM;扩展数据存储器一般采用RAM类芯片,如静态RAM 6116、6264、62256等。 目前扩展存储器以EEPROM的使用最为普遍,它既能用作程序存储器,又能用作数据存储器。常用的EEPROM芯片主要有Intel 2817A、2864A等。 图6-2 Intel 2864A的引脚

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

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

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

  18. 表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的地址范围又是什么?

  19. 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 相连。在这种连接方式下,2864A的地址范围是0000H~1FFFH(未与2864A连接的A15、A14视为0)。

  20. 图6-5 80C51单片机扩展数据存储器2864A的硬件连接图 〈想一想〉如果将未与2864A连接的多余地址线视为1,2864A的地址范围又是什么?

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

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

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

  24. 在图中,将80C51的 (从数据存储器中读数据)、 (选通程序存储器)信号相与后接入2864A的 引脚。这样,当 或 信号有一个为低电平时,就能从存储器中读取相应的数据或程序。 (1)读程序 由于硬件连接使 =0,所以单片机自动读取外部程序存储器。因此要求用户在编制程序时要将程序存储区和数据存储区划分清楚(伪指令ORG规定程序存储器地址,指针DPTR指示数据存储器地址),存储程序时不要占用数据存储区。

  25. (2)读/写数据存储器 80C51读数据,是由指令性质决定的。当执行“MOVX A,@DPTR”指令时,CPU时序使 引脚输出低电平,于是2864A的 引脚也为低电平,相应数据存储单元的数据会出现在数据线上,80C51读入该数据,存在累加器A中。 同理,80C51要执行写操作时,CPU时序使单片机的 引脚输出低电平,可以对2864A执行写操作。

  26. 该扩展电路的寻址范围是0000H~1FFFH(未与2864A连接的A15、A14、A13视为0)。如设定其中0000H~0FFFH是程序存储区;1000H~1FFFH是数据存储区。为防止误将数据写入程序存储区,可采用图6-7所示的写保护电路。此时,单片机的P2.4引脚一路接写保护电路,另一路接2864A最高位地址线A12。此时0000H~0FFFH只能读出不能写入。该扩展电路的寻址范围是0000H~1FFFH(未与2864A连接的A15、A14、A13视为0)。如设定其中0000H~0FFFH是程序存储区;1000H~1FFFH是数据存储区。为防止误将数据写入程序存储区,可采用图6-7所示的写保护电路。此时,单片机的P2.4引脚一路接写保护电路,另一路接2864A最高位地址线A12。此时0000H~0FFFH只能读出不能写入。 〈想一想〉如果将未与2864A连接的多余地址线视为1,2864A的地址范围又是什么? 图6-7 写保护电路

  27. 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,其中①号芯片是数据存储器,②③号芯片是程序存储器。

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

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

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

  31. I/O接口的任务是通过系统总线实现80C51单片机与I/O电路和外围设备的联系,按照芯片能否实现编程,I/O接口通常分为两类: • 不可编程I/O接口芯片 通常是一些锁存器或驱动器, 如74LS273、74LS373和 74LS244等; • 可编程I/O接口芯片 能够通过CPU输入不同的命令和参 数,并控制相关的I/O电路或外设作相应的操作,如并 行接口芯片8155、8255和8279等。

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

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

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

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

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

  37. 输出控制信号由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口。

  38. 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系列单片机的连接非常简单。

  39. 1.8155的结构和技术性能 (1) 内部结构 8155芯片采用40脚双列直插式封装,其引脚和内部结构如图6-12所示。从图中不难看出,在8155内部具有: • 256字节的静态RAM,存取时间为400ns • 3个通用的输入/输出口PA、PB、PC • 1个14位的可编程定时/计数器。 • 1个8位命令寄存器(只能写入)/8位状态寄存器(只 能读出) (2) 引脚介绍

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

  41. 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接口、命令/状态寄存器和定时/计数器各自对应的口地址不同,因此不会发生冲突。

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

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

  44. 表6-8 C口工作方式的设置 • 表6-9 C口用作控制信号的说明

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

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

  47. 定时/计数器有4种输出方式,分别由M2和M1定义,每一种方式的输出波形如图6-15所示。定时/计数器有4种输出方式,分别由M2和M1定义,每一种方式的输出波形如图6-15所示。 图6-15 8155定时/计数器的4种输出波形 需要指出的是,硬件复位信号RESET,会使定时/计数器停止工作,直至由命令/状态寄存器再次启动计数操作(TM2TM1=11)时为止。

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

  49. 图中的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的地址分配表

  50. 6.8155应用实例 应用系统电路如图6-17所示。试编程实现如下功能:将PA口设定为输出口,PB口设定为输入口,当按钮没按下时,PA口作单一灯的左移;当按钮按下时,PA口作单一灯的右移。 • 图6-17 8155应用实例硬件电路 分析: 首先应对8155初始化,然后判断按钮状态,据此作灯的移动

More Related