《周国运单片机原理及应用(C语言版)8》由会员分享,可在线阅读,更多相关《周国运单片机原理及应用(C语言版)8(98页珍藏版)》请在金锄头文库上搜索。
1、单片机原理及应用(C语言版)第8章 单片机系统扩展主 编:周国运 本章制作:赵天翔中国水利水电出版社第8章 单片机系统扩展 目 录8.1 扩展并行三总线 8.2 扩展简单并行输入/输出口8.3 扩展并行数据存储器8.4 串行扩展总线接口技术第8章 单片机系统扩展 本章主要介绍了MCS-51单片机系统扩 展的方法。通过扩展并行三总线来进行并行总线 接口扩展;根据各种串行数据传输的特点,通过 对I/O口编程模拟,实现几种串行总线接 口的扩展。8.1 扩展并行三总线 主要内容8.1.1 片外三总线结构 8.1.2 MCS-51系统扩展的实现 8.1.3 总线驱动8.1.1 片外三总线结构 通常,微机
2、的CPU外部都有单独的并行地 址总线、数据总线、控制总线。MCS-51单片机由于引脚的限制,数据总线和地 址总线是复用的。地址需要锁存:为了能把复用的数据总线和地 址总线分离出来,以便同外部的芯片正确的连接 ,需要在单片机的外部增加地址锁存器,从而构 成与一般CPU相类似的三总线结构,如图8-1所示 。P2ALE89C52P0PSEN WR RD地址 锁存器地址总线数据总线控制总线A8A15A0A7D0D78.1.1 片外三总线结构图8-1 89C52扩展的三总线ALEP0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0LE OE 8D 8Q 7D 7Q 6D 6Q
3、5D 5Q 4D 4Q 3D 3Q 2D 2Q 1D 1QA7 A6 A5 A4 A3 A2 A1 A089C5274HC573 图8-2 地址总线扩展电路8.1.1 片外三总线结构地址锁存器74HC573与单片机P0口连接 ,扩展地址总线,如图8-2所示。74HC573简介 74HC573是有输出三态门的电平允许8位锁存 器。引脚信号如下:OE:输出允许端,为0时芯片有效。 LE:锁存控制端,高电平时,锁存器的数据 输出端Q的状态,与数据输入端D相同,即锁存 器是透明的;当LE端从高电平返回到低电平时 (下降沿后),输入端的数据就被锁存在锁存器 中,数据输入端D的变化不再影响Q端。8.1.1
4、 片外三总线结构一、地址总线地址总线(Address Bus,AB)用于传送 单片机送出的地址信号,以便进行存储器 单元和I/O端口的选择。地址总线是单向的,只能由单片机向外 发送信息。地址总线的数目决定了可直接访问的存 储单元的数目。 8.1.1 片外三总线结构二、数据总线数据总线(Data Bus,DB)用于单片机与存储 器或I/O端口之间的数据传送。一般数据总线的位数与CPU的字长一致,MCS -51单片机的数据总线是8位的。数据总线是双向的,可以进行两个方向的数据 传送。三、控制总线控制总线(Control Bus,CB)是单片机发出 的以控制片外ROM、RAM和I/O口读/写操作的
5、一组控制线。 8.1.1 片外三总线结构8.1.2 MCS-51系统扩展的实现一、以P0口作低8位地址及8位数据的复 用总线复用,即一段时间内作两种或两种以上用途。在这里指P0口在每个CPU周期的前半个周期输 出低8位地址,由地址锁存器锁存,然后由地址 锁存器代替P0口输出低8位地址。后半个周期进 行8位数据的输入输出。 二、以P2口作为高8位的地址总线P0口的低8位地址加上P2的高8位地址就 可以形成16位的地址总线,达到64KB的寻 址能力。实际应用中,往往不需要扩展那么多地 址,扩展多少用多少口线,剩余的口线仍 可作一般I/O口来使用。8.1.2 MCS-51系统扩展的实现三、控制信号线
6、 ALE:地址锁存信号,用以实现对低8位 地址的锁存。 PSEN:片外程序存储器读选通信号。 EA:程序存储器选择信号。为低电平时 ,访问外部程序存储器;为高电平时,访 问内部程序存储器。 WR:片外数据存储器写选通信号。 RD:片外数据存储器读选通信号。8.1.2 MCS-51系统扩展的实现8.1.3 总线驱动总线驱动的原因:在单片机应用系统中 ,扩展的三总线上挂接很多负载,如存储 器、并行接口、A/D接口、显示接口等, 但总线接口的负载能力有限,因此常常需 要通过连接总线驱动器进行总线驱动。 总线驱动器的作用:对于单片机的I/O口 只相当于增加了一个TTL负载,因此驱动 器除了对后级电路驱
7、动外,还能对负载的 波动变化起隔离作用。在对TTL负载驱动时,只需考虑驱动电 流的大小。在对MOS负载驱动时,MOS负载的输入 电流很小,更多地要考虑对分布电容的电 流驱动。 8.1.3 总线驱动总线驱动器的选择:系统总线中地址总线是单向的,因此驱 动器可以选用单向的,如74LS244,还带有 三态控制,能实现总线缓冲和隔离。数据总线是双向的,其驱动器也要选用双 向的,如74LS245。74LS245也是三态的, 有一个方向控制端DIR。DIR=1时输出( AnBn),DIR=0时输入(AnBn)。 8.1.3 总线驱动8.2 扩展简单并行输入/输出口89C52有P0P3四组I/O口,但是在
8、某些特定的场合,可能会出现I/O口不够用 的情况。这时就需要通过扩展来增加I/O口 的数量以满足使用的需要。在很多应用系统中,采用74系列TTL电 路或4000系列MOS电路芯片,扩展并行数 据输入输出。例1 在图8-4中,当P2.0=0,WR=1 ,RD=0时,通过74HC244(扩展输入 )读入按键状态,当P2.0=0,WR=0, RD=1时,通过74HC573(扩展输出) 输出,使按下的键对应的发光二极管点 亮。 74HC244、74HC573的操作地址均设 为0xfeff。8.2 扩展简单并行输入/输出口P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.789
9、C52 WR P2.0 RDD0 Q0 D1 Q1 D2 Q2 D3 Q3 D4 Q4 D5 Q5 D6 Q6 D7 Q7 LE VCCQ0 D0 Q1 D1 Q2 D2 Q3 D3 Q4 D4 Q5 D5 Q6 D6 Q7 D7 G+74HC57374HC244+5V图8-4 简单I/O接口扩展 8.2 扩展简单并行输入/输出口10k81008C语言程序清单: #include voidmain() unsigned char data tmp1, tmp2=0; unsigned char xdata *pt1; pt1=0xfeff; /给指针赋地址值 0xfeff while(1) /
10、循环 tmp1=*pt1;/从74HC244输入 数据 if (tmp1!=tmp2)/判断输入改变时, *pt1 =tmp1;/从74HC573输出 数据tmp2=tmp1; 汇编语言程序清单: MOV30H,#00H ;设一初值 MOVDPTR,#0FEFFH ;设端口地址 LOOP: MOVXA,DPTR;从244读键盘新值 CJNEA, 30H, NEXT;与上次值比较 SJMP LOOP;相等再读键盘值 NEXT: MOV 30H,A;保存新键盘值 MOVXDPTR,A;从573输出键盘值 SJMP LOOP;继续读取键盘值8.2 扩展简单并行输入/输出口8.3 扩展并行数据存储器主
11、要内容8.3.1 扩展存储器概述8.3.2 数据存储器的扩展8.3 扩展并行数据存储器数据存储器即随机存取存储器(Random Access Memory,RAM),用于存放可随时修改 的数据信息。单片机使用的主要是静态RAM。MCS-51系列单片机片外数据存储器的空间可 达64KB,而片内数据存储器的空间只有128B或 256B。如果片内的数据存储器不够用时,则需进 行数据存储器的扩展。8.3.1 扩展存储器概述存储器扩展的核心问题是存储器的编址 问题。所谓编址就是给存储单元分配地址 。由于存储器通常由多个芯片组成,为此 存储器的编址分为两个层次:即存储器芯片的选择和存储器芯片内部 存储单元
12、的选择。 一、地址线的译码存储器芯片的选择有两种方法:线选法和译码 法。1、线选法。所谓线选法,就是直接以系统的 地址线作为存储器芯片的片选信号,为此只需把 用到的地址线与存储器芯片的片选端直接相连即 可。2、译码法。所谓译码法,就是使用地址译码 器对系统的片外地址进行译码,以其译码输出作 为存储器芯片的片选信号。译码法又分为完全译 码和部分译码两种。 8.3.1 扩展存储器概述(1)完全译码。地址译码器使用了全部地址 线,地址与存储单元一一对应,也就是1个存储 单元只占用1个唯一的地址。 (2)部分译码。地址译码器仅使用了部分地 址线,地址与存储单元不是一一对应,而是1个 存储单元占用了几个
13、地址。8.3.1 扩展存储器概述译码地址线与存储器连接的地址线A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A00100图8-5 地址译码关系图8.3.1 扩展存储器概述芯片译码地址:在设计地址译码器电路时,常采 用地址译码关系图。所谓地址译码关系图,就是 一种用简单的符号来表示全部地址译码关系的示 意图,如图8-5所示。 二、扩展存储器所需芯片数目的确定若所选存储器芯片字长与单片机字长一致,则只 需扩展容量。所需芯片数目按下式确定:芯片数目=系统扩展容量 存储器芯片容量8.3.1 扩展存储器概述若所选存储器芯片字长与单片机字长不一致,
14、则不仅需扩展容量,还需字扩展。所需芯片数目 按下式确定:芯片数目= 系统字长 存储器芯片字长系统扩展容量 存储器芯片容量三、38译码器74LS13838译码器74LS138 为一种常用的地址译码器芯 片。 其中,G1、G2A、G2B为 控制端。只有当G1为“1”, 且G2A、G2B均为“0”时,译 码器才能进行译码输出。否 则译码器的8个输出端全为高 阻状态。 译码输入端与输出端之间 的译码关系如表8-1所示。8.3.1 扩展存储器概述A Vcc B Y0 C Y1 G2A Y2 G2B Y3 G1 Y4 Y7 Y5 GND Y61 2 3 4 5 6 7 816 15 14 13 12 11
15、 10 974LS138CBA编码000001010011100101110111输出有效位表8-1 74LS138的译码关系8.3.1 扩展存储器概述8.3.2 数据存储器的扩展一、常用静态RAM芯片常见的静态RAM芯片有6264(8K8位)、 62256(32K8位)、628128(128K8位)等。二、扩展数据存储器举例例8-2 采用6264芯片在89C52片外扩展24KB数据 存储器,如图8-8所示。图8-8 6264扩展24KB数据存储器 P2.0P2.4P0ALEP2.5 P2.6 P2.7WE RD74HC573 D Q LE 74LS138 A Y0 B Y1 C Y2A0A12 6264 CE WE OEA0A12 6264 CE WE OEA8A12D0D