理论教育 单片机编址方法与接口技术

单片机编址方法与接口技术

时间:2023-11-05 理论教育 版权反馈
【摘要】:下面分别讲述I/O端口的编址和扩展存储器的编址方法。因此,独立编址方式要求有专门针对这两种地址空间的各自的读写操作指令。统一编址方式统一编址就是把I/O端口的寄存器与数据存储器单元同等对待,统一进行编址,从而计算机只有一个统一的地址空间。图6-3线选法举例先看程序存储器2732与MCS-51的连接。

单片机编址方法与接口技术

所谓编址,就是使用单片机地址总线,通过适当的连接,最终达到一个地址对应一个选中单元的目的。下面分别讲述I/O端口的编址和扩展存储器的编址方法。

1.I/O端口的编址

在介绍I/O端口编址之前,首先要弄清I/O接口(INTERFACE)和I/O端口(PORT)的概念。I/O接口和I/O端口是有区别的,不能混为一谈。I/O端口简称I/O口,常指I/O接口电路中带有端口地址的寄存器或缓冲器,单片机通过端口地址就可以对端口中信息进行读写。I/O接口是指单片机与外设间的I/O接口芯片。一个外设通常需要一个I/O接口,但一个I/O接口可以有多个I/O端口,传送数据的端口称为数据口,传送命令的端口称为命令口,传送状态的端口称为状态口。当然,并不是所有的外设都需要三种端口齐全的I/O接口。

在单片机中有两个需要编址的子系统,一个是存储器,另一个是接口电路。存储器编址是对存储单元进行编址,而接口电路编址则是对其中的寄存器(端口)进行编址,以便CPU通过端口地址和外设交换信息。常用的I/O端口编址有两种方式,一种是独立编址方式,另一种是统一编址方式。

(1)独立编址方式

独立编址就是把I/O端口地址空间和存储器地址空间分开进行编址,亦即各编各的址,这样在一个单片机系统中就形成了两个独立的地址空间即存储器地址空间和I/O地址空间,从而使对存储器和I/O端口的访问是针对两个不同存储空间的操作。因此,独立编址方式要求有专门针对这两种地址空间的各自的读写操作指令。此外,在硬件方面还要定义一些专用的控制信号以便对存储器和I/O端口的访问进行硬件控制。

独立编址的优点是I/O端口地址空间和存储器地址空间相互独立,界限分明。缺点是需要设置一套专门的读写I/O端口的指令和控制信号。

(2)统一编址方式

统一编址就是把I/O端口的寄存器与数据存储器单元同等对待,统一进行编址,从而计算机只有一个统一的地址空间。统一编址方式的优点是不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强。

MCS-51单片机使用的是统一编址方式,即I/O端口和外部数据存储器RAM是统一编址的,用户可以把外部64K字节的数据存储器RAM空间的一部分作为扩展的I/O接口的地址空间,每一个接口芯片中的一个功能寄存器(端口)的地址就相当于一个RAM存储单元,CPU可以像访问外部存储器RAM那样访问I/O接口芯片,对其功能寄存器进行读、写操作。

2.扩展存储器的编址技术

(1)存储器扩展的编址概述

所谓存储器编址,就是如何使用系统提供的地址线,通过适当连接,最终达到系统中的一个存储单元只唯一地对应一个地址的要求。由于扩展存储器时往往是多片存储器同时扩展,而一个存储器芯片又有多个存储单元,为此存储器编址主要解决两个问题:一是该存储器芯片的选择,这称为片选,只有被“选中”的存储器芯片才能被MCS-51单片机读出或写入数据;二是存储器的内部存储单元的选择,称为单元选择。为了芯片选择(片选)的需要,每个存储器芯片都有片选信号引脚,因此芯片的选择的实质就是如何通过MCS-51单片机的地址线来产生芯片的片选信号。

通常把单片机系统的地址笼统地分为低位和高位地址,存储器芯片的某一存储单元选择使用低位地址,剩下的高位地址才作为芯片选择使用,因此芯片的选择都是使用高位地址线。实际上,在16位地址线中,高、低位地址线的数目并不是固定的,只是把用于存储单元选择所使用的地址线,都称为低位地址线,剩下多少就有多少高位地址线。

存储器地址空间分配除了考虑地址线的连接外,还讨论各存储器芯片在整个存储空间中所占据的地址范围,以便在程序设计时正确地使用它们。

(2)存储器扩展的编址技术

常用的存储器地址分配的方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法),下面分别予以介绍。

1)线选法。线选法就是直接利用系统的高位地址线作为存储器芯片(或I/O接口芯片)的片选信号。为此,只需把用到的高位地址线与存储器芯片的片选端直接连接即可。线选法的优点是电路简单,不需要地址译码器芯片,体积小,成本低。缺点是可寻址的器件数目受到限制,故只用于不太复杂的系统中。另外,地址空间不连续,每一个存储单元的地址不唯一,这会给程序设计带来一些不方便。

假设某一单片机系统,需要外扩8KB的EPROM(2片2732),4KB的RAM(2片6116),这些芯片与MCS-51单片机的接口电路如图6-3所示,这里只画出与地址分配有关的地址线连线。

图6-3 线选法举例

先看程序存储器2732与MCS-51的连接。由于2732是4KB的程序存储器,有12根地址线A11~A0,它们分别与单片机的P0口及P2.0~P2.3相连,从而实现4K字节单元的选择。由于系统中有2片程序存储器,存在2片程序存储器芯片之间相区别的问题,2732(1)片选端img接A15(P2.7),2732(2)片选端CE接A14(P2.6),当要选中某个芯片时,单片机P2口对应的片选信号引脚应为低电平,其他引脚一定要为高电平。这样才能保证一次只选中一片,而不会再选中其他同类存储器芯片,这就是所谓的线性选址法,简称线选法。

再来看数据存储器与单片机的接口。数据存储器也有2片芯片需要区别。这里用P2.5和P2.4分别作为这2片芯片的片选信号。当要选中某个芯片时,单片机P2口对应的片选信号引脚应为低电平,其他引脚一定要为高电平。由于6116是2KB的,需要11根地址线作为存储单元的选择,而剩下的P2口线(P2.4~P2.7)正好作为片选线。

从图6-3中可以看出,程序存储器2732的低2KB和数据存储器6116的地址是重叠的。那么会不会MCS-51单片机发出访问2732某个单元的地址时,同时也会选中6116的某个单元,这样MCS-51单片机就会同时选中两个单元,从而发生数据冲突,产生错误呢?这种情况,完全不用担心,虽然两个单元的地址是一样的,但是MCS-51单片机发给两类存储器的控制信号是不一样的。如果访问的是程序存储器,则是img信号有效;如果访问的是数据存储器,则是imgimg信号有效。以上控制信号是由MCS-51单片机执行访问外部程序存储器或访问外部数据存储器的指令产生,任何时刻只能执行一种指令,产生一种控制信号,所以不会产生数据冲突的问题。通过上面的讨论,可以得出一个重要的结论:MCS-51单片机外扩程序存储器和数据存储器的地址空间可以重叠,只是注意程序存储器和程序存储器之间,数据存储器和数据存储器之间,千万不要发生地址重叠。

现在再来看两个程序存储器的地址范围。

2732(1)的地址范围:

选中2732(1)时,P2口(高8位的地址)各引脚的状态为:

由上面介绍可见高8位的地址变化范围:70H~7FH。

由上可见低8位的地址变化范围:00H~FFH。

所以2732(1)的地址范围变化范围为:7000 H~7FFFH。

2732(2)的地址范围:

选中2732(2)时,P2口(高8位的地址)各引脚的状态为:

由上可见高8位的地址变化范围:B0 H~BFH。

由上可见低8位的地址变化范围:00H~FFH。

所以2732(2)的地址的变化范围为:B000H~BFFFH。

现在再来看两个数据存储器的地址范围。

6116(1)的地址范围:

选中6116(1)时,P2口(高8位的地址)各引脚的状态为:

由上可见高8位地址变化范围:ECH~EFH。

由上可见低8位的地址变化范围:00H~FFH。

所以6116(1)的地址范围变化范围为:EC00H~EFFFH。

6116(2)的地址范围:

选中6116(2)时,P2口(高8位的地址)各引脚的状态为:

由上可见高8位地址变化范围:D8H~DFH。

由上可见低8位的地址变化范围:00H~FFH。

所以6116(2)的地址范围变化范围为:D800 H~DFFFH。

由上面介绍可见,线选法的特点是简单明了,不需要另外增加硬件电路。但是,这种方法对存储器空间的利用是断续的,不能充分有效地利用存储空间,扩展的存储器容量有限,只适用于外扩的芯片数目不多,规模不大的单片机系统的存储器扩展。

2)译码法。译码法就是使用译码器对MCS-51单片机的高位地址进行译码,译码器的译码输出作为存储器芯片的片选信号。这是一种最常用的存储器地址分配的方法,它能有效的利用存储器空间,适用于大容量多芯片的存储器扩展。译码电路可以使用现成的译码器芯片。最常用的译码器芯片有:74LS138(3-8译码器)、74LS139(双2-4译码器)、74LS154(4-16译码器)。它们的CMOS芯片分别为:74 HC138、74 HC139、74HC154。它们使用灵活,完全可根据设计者的要求来组合译码,产生片选信号。若全部地址都参加译码,称为全译码;若部分地址参加译码,称为部分译码,部分译码存在着部分存储器地址空间相重叠的情况。

下面介绍几种常用的译码器芯片。

①74LS138。74LS138是一种3-8译码器,有3个数据输入端,经译码产生8种状态,其引脚如图6-4所示,译码功能见表6-1。(www.daowen.com)

图6-4 74LS138的引脚图

表6-1 74LS138 真 值 表

注 1表示高电平,0表示低电平,×表示任意。

由表6-1可见,当译码器的输入为某一个编码时其输出就有个固定的引脚输出为低电平,其余的为高电平。

②74LS139。74LS139是一种双2-4译码器。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端。其引脚如图6-5所示,真值表如表6-2所示(只给出其中的一组)。

如何通过74LS138把64KB空间分配给各个芯片?由表6-2可知,把G1接到+5V,img接地,P2.7、P2.6、P2.5分别接到74LS138的C、B、A端,P2.4~P2.0,P0.7~P0.0这13根地址线接到8片6264的引脚A12~引脚A0。

图6-5 74LS139的引脚图

表6-2 74LS139真值表

由于对高3位地址译码,这样译码器有8个输出Y0~Y7,分别接到8片6264的片选端,而低13位地址(P2.4~P2.0,P0.7~P0.0)完成对6264存储单元的选择。这样就把64KB存储器空间分成8个8K空间了。64KB地址空间的分配如图6-6所示。

图6-6 64KB地址空间的分配

这种除了单元选择的地址线外,剩余的高位地址线全部参加译码的方式称为全地址译码方式。由于采用的是全地址译码方式,MCS-51单片机发地址码时,每次只能唯一地选中一个存储单元。这样,同类存储器之间根本不会产生地址重叠的问题。

如果用74 LS138把64 KB空间全部划分为每块4 KB,如何划分呢?由于4 KB空间需要12根地址线进行单元选择,该译码器的输入有3根地址线(P2.6~P2.4),P2.7没有参加译码,P2.7发出的0或1决定了选择64 KB存储器空间的前32KB还是后32KB。由于P2.7没有参加译码(高位地址没有全部参加译码,就不是全译码方式),前后两个32 KB空间就重叠了。但是在实际的应用设计时,32 KB存储器空间在大部分情况下是够用的。这32KB空间利用74LS138译码器可划分为8个4KB空间。如果把P2.7通过一个非门与74LS138的G1端连接起来,如图6-7所示,就不会发生两个32KB空间重叠的问题了。这时,选中的是64KB空间的前32KB空间,地址范围为0000 H~7FFFH。如果去掉图6-7中的非门,地址范围为8000 H~FFFFH。把译码器的输出连到各个4KB存储器的片选端,这样就把32KB的空间划分为8个4KB空间。P2.3~P2.0,P0.7~P0.0实现对单元的选择,P2.6~P2.4通过74LS138译码器的译码实现对存储器的片选。

图6-7 32KB存储器空间被划分为每块4KB

如果利用74LS138实现每块为2KB的划分,这样会产生4个16KB存储器空间的划分。如果把P2.7同74LS138译码器的G1端相连,P2.6同G2A端相连,这样一来就把64KB空间固定为4个16KB空间中的一个。改变P2.7、P2.6同译码器G1端、G2A端连接的逻辑,即可改变选中4个16KB空间中的某一个。译码器的8个输出,即把16KB空间划分为8个2KB的存储空间了。

译码器的译码方案是多种多样的,设计者可根据系统的设计要求来选择不同的方案。

3.外部地址锁存器

MCS-51单片机受引脚数的限制,数据线和地址线是复用的,由P0口线兼用。为了将它们分离出来,以便同单片机片外的扩展芯片正确的连接,需要在单片机外部增加地址锁存器。

目前,常用的地址锁存器芯片有:74LS373、8282、74LS573等。下面对这几种地址锁存器进行介绍,以供读者在设计时参考。

(1)74LS373

74LS373是一种带有三态门的8D锁存器,其引脚如图6-8所示,其内部结构如图6-9所示。

图6-8 74LS373的引脚图

图6-9 74LS373的内部结构图

其引脚的功能如下:

D7~D0:8位数据输入线。

Q7~Q0:8位数据输出线。

G:数据输入锁存选通信号,高电平有效。当该信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。

OE:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。

74LS373功能表见表6-3。

表6-3 74LS373功能 表

(2)锁存器8282

锁存器8282也是一种带有三态输出缓冲的8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚的排列与74LS373不同。图6-10为8282的引脚。

由图6-10可以看出,与74LS373相比,8282的输入的D端和输出的Q端各依次排在两侧,这为绘制印刷电路板时的布线提供了方便。

8282各引脚的功能如下:

D7~D0:8位数据输入线。

Q7~Q0:8位数据输出线。

图6-10 8282的引脚图

STB:数据输入锁存选通信号,高电平有效。当该信号为高电平时.外部数据选通到内部锁存器,负跳变时,数据锁存。该引脚相当于74LS373的G端。

img数据输出允许信号,低电平有效。当该信号为低电平时,锁存器中数据输出到数据输出线。当该信号为高电平时.输出线为高阻态。

图6-11 MCS-51单片机P0口与地址锁存器的连接

图6-11分别给出了74LS373、8282芯片作为地址锁存器与MCS-51单片机P0口的连接方法。

(3)74LS573

74LS573引脚的排列与8282类似,输入的D端和输出的Q端依次排在芯片的两侧,为绘制印刷电路板时的布线提供了方便。74LS573的功能与74LS373相同,参见表6-3,可用来替代74LS373。74LS573的引脚见图6-12。

74LS573各引脚的功能如下:

D7~D0:8位数据输入线。

Q7~Q0:8位数据输出线。

G:数据输入锁存选通信号,该引脚与74LS373的G端的功能相同。

图6-12 74LS573的引脚图

img数据输出允许信号,低电平有效。当该信号为低电平时,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈