1 / 31

第六章 CS-51 单片机系统扩展

第六章 CS-51 单片机系统扩展. MCS-51 单片机系统扩展包括程序存储器扩展、数据存储器扩展、 I/O 口扩展、定时 / 计数器扩展、中断系统扩展和串行口扩展。在本章中只介绍应用较多的程序存储器扩展、数据存储器扩展和 I/O 口扩展。. 6.1 MCS-51 单片机的最小系统. 所谓最小系统,是指一个真正可用的单片机最小配置系统。对于单片机内部资源已能满足系统需要的,可直接采用最小系统。 MCS-51 单片机根据片内有无程序存储器最小系统分两种情况。. 6.1.1 8051/8751 的最小系统.

gamada
Download Presentation

第六章 CS-51 单片机系统扩展

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. 第六章 CS-51单片机系统扩展 MCS-51单片机系统扩展包括程序存储器扩展、数据存储器扩展、I/O口扩展、定时/计数器扩展、中断系统扩展和串行口扩展。在本章中只介绍应用较多的程序存储器扩展、数据存储器扩展和I/O口扩展。 6.1 MCS-51单片机的最小系统 所谓最小系统,是指一个真正可用的单片机最小配置系统。对于单片机内部资源已能满足系统需要的,可直接采用最小系统。MCS-51单片机根据片内有无程序存储器最小系统分两种情况。 6.1.1 8051/8751的最小系统 8051/8751片内有4K的ROM/EPROM,因此,只需要外接晶体振荡器和复位电路就可构成最小系统。如图所示。

  2. 8 XTAL1 P0 8751 8051 8 P1 XTAL2 8 P2 RESET P3 8 EA GND +5V +5V 该最小系统的特点如下: (1)由于片外没有扩展存储器和外设,P0、P1、P2、P3都可以作为用户I/O口使用。 (2)片内数据存储器有128字节,地址空间00H~7FH,没有片外数据存储器。 (3)内部有4KB程序存储器,地址空间0000H~0FFFH,没有片外程序存储器,EA应接高电平。 (4)可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。

  3. A7 D7 A15 ~ ~ ~ D0 A0 A8 高8位地址线 P2 P2 ALE ALE G 74LS 373 8031 P0 P0 CE 2764 EA EA OE PSEN PSEN 6.1.1 8031最小应用系统 8031片内无程序存储器片,因此,在构成最小应用系统不仅要外接晶体振荡器和复位电路,还应外扩展程序存储器。

  4. 该最小系统特点如下: (1)由于P0、P2在扩展程序存储器时作为地址线和数据线,不能作为I/O线,因此,只有P1、P3作为用户I/O口使用。 (2)片内数据存储器同样有128字节,地址空间00H~7FH,没有片外数据存储器。 (3)内部有无程序存储器,但片外扩展了程序存储器,其地址空间随芯片容量不同而不一样。图6.2中使用的是2764芯片,容量为8K字节,地址空间为0000H~1FFFH。由于片内没有程序存储器,只能使用片外程序存储器,EA只能接低电平。 (4)同样可以使用两个定时/计数器T0和T1,一个全双工的串行通信接口,5个中断源。

  5. 6.2 存储器扩展 6.2.1 存储器扩展概述 一、MCS-51单片机的存储器扩展能力 MCS-51单片机地址总线宽度为16位,片外可扩展的存储器最大容量为64KB,地址为0000H~FFFFH。因为程序存储器和数据存储器是通过不同的控制信号和指令进行访问,允许两者的地址空间重叠,所以片外可扩展的程序存储器与数据存储器分别都为64KB。 二、存储器扩展的一般方法 不论何种存储器芯片,其引脚都呈三总线结构,与单片机连接都是三总线对接。另外,电源线接电源线,地线接地线。 1. 控制线:对于程序存储器,一般来说,具有输出允许控制线 OE,它与单片机的PSEN信号线相连 。对于数据存储器,一般都有输出允许控制线OE和写控制线 WE,它们分别与单片机的读信号线RD和写信号线WR相连。

  6. 2、数据线:存储器芯片的数据线的数目由芯片的字长决定。连接时,存储器芯片的数据线与单片机的数据总线(P0.0~P0.7)按由低位到高位的顺序顺次相接。 3、地址线:存储器芯片的地址线的数目由芯片的容量决定。容量(Q)与地址线数目(N)满足关系式:Q=2N。存储器芯片的地址线与单片机的地址总线(A0~A15)按由低位到高位的顺序顺次相接。一般来说,存储器芯片的地址线数目总是少于单片机地址总线的数目,因此连接后,单片机的高位地址线总有剩余。剩余地址线一般作为译码线,译码输出与存储器芯片的片选信号线CS相接。片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。 译码有两种方法:部分译码法和全译码法。 部分译码:所谓部分译码就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线仅用一部分参加译码。部分译码使存储器芯片的地址空间有重叠,造成系统存储器空间的浪费。

  7. 地址译码线 与存储器芯片连接的地址线 A15  A14 0 A13 0 A12 1 A11 0 A10  A9  A8  A7  A6  A5  A4  A3  A2  A1  A0  如下图,存储器芯片容量为2K,地址线为11根,与地址总线的低11位A0~A10相连,用于选中芯片内的单元。地址总线的A11、A12、A13、A14根地址线参加译码的选中芯片,设这四根地址总线的状态为0100时选中该芯片。地址总线A15不参加译码,当地址总线A15为0、1两种状态都可以选中该存储器芯片。 当A15=0时,芯片占用的地址是0001000000000000~0001011111111111,即1000H~17FFH。 当A15=1时,芯片占用的地址是1001000000000000~1001011111111111,即9000H~97FFH。 部分译码法的一个特例是线译码。所谓线译码就是直接用一根剩余的高位地址线与一块存储器芯片的片选信号CS相连。

  8. 系统扩展容量 系统字长 系统扩展容量 = ´ = 芯片数目 芯片数目 存储器芯片容量 存储器芯片字长 存储器芯片容量 全译码:所谓全译码就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线全部参加译码。这种译码方法存储器芯片的地址空间是唯一确定的,但译码电路相对复杂。 3.扩展存储器所需芯片数目的确定 若所选存储器芯片字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式确定: 若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。所需芯片数目按下式确定:

  9. +5V +5V P2.7 Vcc P2.6 Vff Vcc P2.5 P2.4 A12 P2.3 A11 P2.2 A10 P2.1 A9 P2.0 A8 P0.7 8D 8Q A7 P0.6 7D 74LS 373 7Q A6 P0.5 6D 6Q A5 P0.4 5D 5Q A4 P0.3 4D 4Q A3 P0.2 3D 3Q A2 P0.1 8031 2D 2Q A1 P0.0 1D 1Q A0 ALE G OE D7 D6 D5 D4 D3 CE D2 D1 GND EA D0 PSEN Vss OE 6.2.2 程序存储器扩展 一.单片程序存储器的扩展

  10. P2.7 P2.6 P2.5 5 P2.4~P2.0 74LS 373 ALE G 8 5 8 8031 8 5 OE A0~A7 A8~A12 CE A0~A7 A8~A12 CE 2764(1) 2764(2) D0~D7 D0~D7 OE OE 8 8 8 P0 EA PSEN 其8个重叠的地址范围为如下: 0000000000000000~0001111111111111,即0000H~1FFFH; 0010000000000000~0011111111111111,即2000H~3FFFH; 0100000000000000~0101111111111111,即4000H~5FFFH; 0110000000000000~0111111111111111,即6000H~7FFFH; 1000000000000000~1001111111111111,即8000H~9FFFH; 1010000000000000~1011111111111111,即A000H~BFFFH; 1100000000000000~1101111111111111,即C000H~DFFFH; 1110000000000000~1111111111111111,即E000H~FFFFH。 二.多片程序存储器的扩展

  11. 上图是通过线选法实现的两片2764扩展成16KB程序存储器。两片2764的地址线A0~A12与地址总线的A0~A12对应相连,2764的数据线D0~D7与数据总线A0~A7对应相连,两片2764的输出允许控制线连在一起与8031的PSEN相连。第一片2764的片选线CS与8031地址总线的P2.7直接相连,第二片2764的片选线CS与8031地址总线的P2.7取反后相连。 其两片的地址空间分别为: 第一片:00000000000000000~0001111111111111,即0000H~1FFFH; 00100000000000000~0011111111111111,即2000H~3FFFH; 01000000000000000~0101111111111111,即4000H~5FFFH; 01100000000000000~0111111111111111,即6000H~7FFFH; 第二片:10000000000000000~1001111111111111,即8000H~9FFFH; 10100000000000000~1011111111111111,即A000H~BFFFH; 11000000000000000~1101111111111111,即C000H~DFFFH; 11100000000000000~1111111111111111,即E000H~FFFFH。

  12. Vcc G1 74LS138 G G2A Y3 G2B Y2 C P2.7 Y1 B P2.6 A Y0 P2.5 P2.4~P2.0 5 ALE G 74LS 373 8 5 8 8 5 8 5 5 8 A0~A7 A0~A7 A0~A7 OE A0~A7 CE CE CE CE 8031 A8~A12 A8~A12 A8~A12 A8~A12 2764(4) 2764(2) 2764(1) 2764(3) D0~D7 D0~D7 OE OE D0~D7 D0~D7 OE OE 8 8 8 8 8 P0 EA PSEN 上图为采用全译码法实现的4片2764扩展成32KB程序存储器。8031剩余的高3位地址总线P2.7、P2.6、P2.5通过74LS138译码器形成4个2764的片选信号

  13. 由于采用全译码,每片2764的地址空间都是唯一的。它们分别是:由于采用全译码,每片2764的地址空间都是唯一的。它们分别是: 00000000000000000~0001111111111111,即0000H~1FFFH; 00100000000000000~0011111111111111,即2000H~3FFFH; 01000000000000000~0101111111111111,即4000H~5FFFH; 01100000000000000~0111111111111111,即6000H~7FFFH。 6.2.3 数据存储器扩展 数据存储器扩展与程序存储器扩展基本相同,只是数据存储器控制信号一般有输出允许信号OE和写控制信号WE,分别与单片机的片外数据存储器的读控制信号RD和写控制信号WR相连,其它信号线的连接与程序存储器完全相同。 下图是两片数据存储器芯片6264与8051单片机的连接。6264是8K8的静态数据存储器芯片,有13根地址线,数据线8根,一根输出允许信号OE和一根写控制信号WE ,两根片选信号CE1和CE2 ,使用时都应为低电平。

  14. P2.7 P2.6 P2.5 5 P2.4~P2.0 ALE G 74LS 373 8 5 8 8 5 OE A8~A12 A0~A7 A0~A7 A8~A12 CE1 CE1 8051 CE2 CE2 2764(2) 2764(1) D0~D7 D0~D7 OE OE WE WE 8 8 8 8 P0 RD EA WR P2.7为低电平0,两片6264芯片的地址空间为: 第一片:01000000000000000~0101111111111111,即4000H~5FFFH; 第二片:00100000000000000~0011111111111111,即2000H~3FFFH; P2.7为高电平1,两片6264芯片的地址空间为: 第一片:11000000000000000~1101111111111111,即C000H~DFFFH; 第二片:10100000000000000~1011111111111111,即A000H~BFFFH;

  15. 6.3 输入/输出口扩展 6.3.1 简单I/O口扩展 通常通过数据缓冲器、锁存器来扩展简单I/O接口。例如:74LS373、74LS244、74LS273、74LS245等芯片都可以作简单I/O扩展。实际上,只要具有输入三态、输出锁存的电路,就可以用作I/O口扩展。 下图是利用74LS373和74LS244扩展的简单I/O口,其中74LS373扩展并行输出口,74LS244扩展并行输入口。74LS373是一个带输出三态门的8位锁存器,8个输入端D0~D7,8个输出端Q0~Q7,G为数据锁存控制端,G为高电平,则把输入端的数据锁存于内部的锁存器,OE为输出允许端,低电平时把锁存器中的内容通过输出端输出。74LS244是单向数据缓冲器,带两个控制端1G和2G ,当它们为低电平时,输入端D0~D7的数据输出到Q0~Q7。

  16. +5V L0 Q0 P0.0 D0 L1 Q1 P0.1 D1 74LS 373 L2 Q2 P0.2 D2 L3 Q3 P0.3 D3 L4 Q4 P0.4 D4 L5 Q5 P0.5 D5 L6 Q6 P0.6 D6 L7 P0.7 D7 Q7 8051 G OE K0 Q0 D0 K1 Q1 74LS 244 D1 K2 Q2 D2 K3 + Q3 D3 K4 Q4 D4 K5 EA Q5 D5 K6 Q6 D6 K7 P2.0 Q7 D7 RD 1G + 2G

  17. 图中,扩展的输入口接了K0~K7 8个开关,扩展的输出口接了L0~L7 8个发光二极管,如果要实现K0~K7开关的状态通过L0~L7发光二极管显示,则相应的汇编程序为: LOOP:MOV DPTR,#0FEFFH MOVX A,@DPTR MOVX @DPTR,A SJMP LOOP 如果用C语言编程,相应程序段为: #include <absacc.h> //定义绝对地址访问 #define uchar unsigned char …… uchar i; i=XBYTE[0xfeff]; XBYTE[0xfeff]= i; ……

  18. A组控 制部件 A组 端口A PA7~PA0 双向数据总线 A组 数据总线 缓冲器 D0~D7 PC7~PC4 A组 端口C 8位内部总线 PC3~PC0 B组 端口C RD WR A1 读/写控制 部件 B组 B组 端口B A0 PB7~PB0 B组控 制部件 RESET CS 6.3.2 可编程I/O扩展(8255A) 一.8255A的结构与功能

  19. 8255A内部有3个可编程的并行I/O端口:PA口、PB口和PC口。其中C口又可分为两个独立的4位端口:PC0~PC3和PC4~PC7。A口和C口的高四位合在一起称为A组,通过图中的A组控制部件控制;B口和C口的低四位合在一起称为B组,通过图中的B组控制部件控制。 A口有三种工作方式:无条件输入/输出方式、选通输入/输出方式和双向选通输入/输出方式。B口有两种工作方式:无条件输入/输出方式和选通输入/输出方式。当A口和B口工作于选通输入/输出方式或双向选通输入/输出方式时,C口当中的一部分线用作A口和B口输入/输出应答信号线。 数据总线缓冲器是一个8位双向三态缓冲器,是8255A与系统总线之间的接口,8255A与CPU之间传送的数据信息、命令信息、状态信息都通过数据总线缓冲器实现传送。 读写控制部件接收CPU送来的控制信号、地址信号,经译码选中内部的端口寄存器,并指挥从这些寄存器中读出信息或向这些寄存器写入相应的信息。8255A有4个端口寄存器:A寄存器、B寄存器、C寄存器和控制口寄存器,通过控制信号和地址信号对这4个端口寄存器的操作如表所示。

  20. 二.8255A的引脚信号 8255A共40引脚,采用双列直插式封装,如下图所示,各引脚信号功能如下: D7~D0:三态双向数据线,与单片机的数据总线相连,用来传送数据信息。

  21. PA3 1 40 PA4 PA2 2 39 PA5 PA1 3 38 PA6 PA0 4 37 PA7 5 36 RD WR 6 35 RESET CS 7 8255A 34 D0 GND A1 8 33 D1 A0 9 32 D2 10 31 D3 PC7 11 30 D4 PC6 PC5 12 29 D5 13 28 D6 PC4 14 27 D7 PC0 15 26 Vcc PC1 16 25 PB7 PC2 17 24 PB6 PC3 18 23 PB5 PB0 19 22 PB4 PB1 PB2 20 21 PB3 CS:片选信号线,低电平有效,用于选中8255A芯片。 RD:读信号线,低电平有效,用于控制从8255A端口寄存器读出信息。 WR:写信号线,低电平有效,用于控制向8255A端口寄存器写入信息。 PA7~PA0:A口的8根输入/输出信号线,用于与外部设备连接。 PB7~PB0:B口的8根输入/输出信号线,用于与外部设备连接。 PC7~PC0:C口的8根输入/输出信号线,用于与外部设备连接。 RESET:复位信号线。 VCC:+5V电源线。 GND:地信号线。

  22. 端口A 0:输出 1:输入 端口C高4位 0:输出 1:输入 端口B 0:输出 1:输入 D7 D6 D5 D4 D3 D2 D1 D0 特征位1 A组工作方式位 00:方式0 01:方式1 1X:方式2 B组工作方式位 0:方式0 1:方式1 端口C低4位 0:输出 1:输入 三.8255A的控制字 8255A有两个控制字:工作方式控制字和C口按位置位/复位控制字。 1.工作方式控制字 D7位为特征位。D7=1表示为工作方式控制字。 D6、D5用于设定A组的工作方式。 D4、D3用于设定A口和C口的高4位是输入还是输出。 D2用于设定B组的工作方式。 D1、D0用于设定B口和C口的低4位是输入还是输出。

  23. D7 D6 D5 D4 D3 D2 D1 D0 特征位0 0:复位 1:置位 这三位不用 位选择位 000:C口0位 001:C口1位 …… 111:C口7位 2.C口按位置位/复位控制字 D7位为特征位。D7=0表示为C口按位置位/复位控制字。 D6、D5、D4这三位不用 D3、D2、D1这三位用于选择C口当中的某一位。 D0用于置位/复位设置,D0=0则复位,D0=1则置位。

  24. 四.8255A的工作方式 1.方式0 方式0是一种基本的输入/输出方式。在这种方式下,三个端口都可以由程序设置为输入或输出,没有固定的应答信号。方式0特点如下: (1)具有两个8位端口(A、B)和两个4位端口(C口的高4位和C口的低4位)。 (2)任何一个端口都可以设定为输入或者输出。 (3)每一个端口输出时是锁存的,输入是不锁存的。 方式0输入/输出时没有专门的应答信号,通常用于无条件传送。例如:下图是8255A工作于方式0的例子,其中A口输入,B口输出。

  25. +5V K0 PA0 PA1 PA2 PA3 PA4 系统总线 PA5 PA6 PA7 8051 8255A K7 L0 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 L7 +5V

  26. 8 8 PB0~PB7 PA0~PA7 INTE INTE PC2 STBB STBA PC4 PC1 IBFB IBFA PC5 & & PC3 INTRA PC0 INTRB PC6、PC7 I/O A口输入 B口输入 2.方式1 方式1是一种选通输入/输出方式。在这种工作方式下,端口A和B作为数据输入输出口,端口C用作输入/输出的应答信号。A口和B口既可以作输入,也可作输出,输入和输出都具有锁存能力。 方式1输入: 无论是A口输入还是B口输入,都用C口的三位作应答信号,一位作中断允许控制位。

  27. 8 8 PA0~PA7 PB0~PB7 INTE INTE PC2 ACKB OBFA PC7 PC1 OBFB PC6 ACKA & & PC3 INTRA PC0 INTRB 2 I/O PC4、PC5 A口输出 B口输出 各应答信号含义如下: STB:外设送给8255A的“输入选通”信号,低电平有效。 IBF:8255A送给外设的“输入缓冲器满”信号,高电平有效。 INTR:8255A送给CPU的“中断请求”信号,高电平有效。 INTE:8255A内部为控制中断而设置的“中断允许”信号。INTE由软件通过对PC4(A口)和PC2(B口)的置位/复位来允许或禁止。 方式1输出: 无论是A口输出还是B口输出,也都用C口的三位作应答信号,一位作中断允许控制位。

  28. 应答信号含义如下: OBF:8255A送给外设的“输出缓冲器满”信号,低电平有效。 ACK:外设送给8255A的“应答”信号,低电平有效。 INTR:8255A送给CPU的“中断请求”信号,高电平有效。 INTE:8255A内部为控制中断而设置的“中断允许”信号,含义与输入相同,只是对应C口的位数与输入不同,它是通过对PC4(A口)和PC2(B口)的置位/复位来允许或禁止。 3.方式2 方式2是一种双向选通输入/输出方式。只适合于端口A。这种方式能实现外设与8255A的A口双向数据传送,并且输入和输出都是锁存的。它使用C口的5位作应答信号,两位作中断允许控制位。

  29. PA0~PA7 PC5 IBFA INTE1 PC4 STBA & PC6 INTE2 ACKA PC7 OBFA & PC3 INTRA 1 五.8255A与MCS-51单片机的接口 1.硬件接口 8255A与MCS-51单片机的连接包含数据线、地址线、控制线的连接.

  30. +5V +5V Vcc Vcc WR WR RD RD P2.0 CS P0.7 D7 Q7 P0.6 D6 Q6 PA7-PA0 P0.5 D5 Q5 P0.4 D4 Q4 P0.3 D3 Q3 P0.2 D2 D2 Q2 A1 P0.1 D1 Q1 PB7-PB0 P0.0 DO G OE Q0 A0 D7 D6 8051 D5 PC7-PC0 D4 D3 D2 D1 D0 ALE EA GND GND

  31. 图中,8255A的数据线与8051单片机的数据总线相连,读、写信号线对应相连,地址线A0、A1与单片机的地址总线的A0和A1相连,片选信号CS与8051的P2.0相连。则8255A的A口、B口、C口和控制口的地址分别是:FEFCH,FEFDH,FEFEH,FEFFH。 2.软件编程 如果设定8255A的A口为方式0输入,B口为方式0输出,则初始化程序为: 汇编程序段: MOV A,#90H MOV DPTR,#0FEFFH MOVX @DPTR,A C语言程序段: #include <reg51.h> #include <absacc.h> //定义绝对地址访问 …… XBYTE[0xfeff]=0x90; ……

More Related