版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章51单片机系统功能的扩展4.1系统扩展概述4.2常用扩展器件简介4.3存储器的扩展4.4并行I/O口扩展习题四
51单片机的功能较强,在智能仪器仪表、家用电器、小型检测及控制系统中直接使用本身功能就可满足需要,使用极为方便。但对于一些较大的应用系统来说,它毕竟是一块集成电路芯片,其内部功能略显不足,这时就需要在片外扩展一些外围功能芯片。在51单片机外围可以扩展存储器芯片、I/O口芯片及其他功能芯片。4.1系统扩展概述4.1.1最小应用系统单片机系统扩展一般是以基本的最小系统为基础的,故首先应熟悉最小应用系统的结构。所谓最小系统,是指一个真正可用的单片机最小配置系统。对于片内带有程序存储器的单片机(如80C51/87C51),只要在芯片上外接时钟电路和复位电路就能达到真正可用,这就是一个最小系统,如图4.1(a)所示。对于片内不带有程序存储器的单片机(如80C31)来说,除了在芯片上外接时钟电路和复位电路外,还需外接程序存储器,才能构成一个最小系统,如图4.1(b)所示。图4.1
51单片机最小化系统(a)80C51/87C51最小系统结构图;(b)80C31最小系统结构图4.1.2单片机系统扩展的内容与方法
1.单片机的三总线结构为了使单片机能方便地与各种扩展芯片连接,常将单片机芯片的外部引线变为一般微型计算机的三总线形式,如图4.2所示。图4.2
51单片机的三总线结构形式从图4.2可知,三总线的引线组成如下:地址总线:由P2口提供高8位地址线,具有地址输出锁存的能力;由P0口提供低8位地址线,由于P0口分时复用为地址/数据线,因而为保持地址信息在访问存储器期间一直有效,需外加地址锁存器锁存低8位地址,用ALE正脉冲信号的下降沿进行锁存。数据总线:由P0口提供,此口是准双向、输入三态控制的8位数据输入/输出口。控制总线:PSEN用于片外程序存储器取指控制信号;RD、WR用于片外数据存储器读、写控制信号。
2.系统扩展的内容与方法
(1)系统扩展一般有以下几方面的内容:①外部程序存储器的扩展。②外部数据存储器的扩展。③输入/输出接口的扩展。④管理功能器件的扩展(如定时器/计数器、键盘/显示器、中断优先级编码器等)。
(2)系统扩展的基本方法:一般来讲,所有与计算机扩展连接的芯片的外部引脚线都可以归为三总线结构。扩展连接的一般方法实际上是三总线对接,要保证单片机和扩展芯片协调一致地工作,即要共同满足其工作时序。4.2常用扩展器件简介在51单片机系统扩展中常用的芯片如表4.1所示。本节将对锁存器、总线驱动器、译码器等常用芯片进行简单介绍。表4.1常用的扩展器件4.2.18
D锁存器74LS373
74LS373是一种带输出三态门的8D锁存器,其结构如图4.3所示。图4.3
74LS373结构示意图
1D~8D为8个输入端。
1Q~8Q为8个输出端。
G为数据锁存控制端:当G为“1”时,锁存器输出端同输入端;当G由“1”变“0”时,数据输入锁存器中。
OE为输出允许端:当OE为“0”时,三态门打开;当OE为“1”时,三态门关闭,输出呈高阻状态。在51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如图4.4所示。其中输入端1D~8D接至单片机的P0口,输出端提供的是低8位地址,G端接至单片机的地址锁存允许信号ALE。输出允许端OE接地,表示输出三态门一直打开。图4.4
74LS373用作地址锁存器4.2.2
74LS244和74LS245芯片
74LS244和74LS245常作单片机系统的总线驱动器,也作三态数据缓冲器。74LS244为单向驱动器或数据缓冲器。
74LS244的内部结构如图4.5所示。它由8个三态门构成,分成两组,分别由控制端1G和2G控制。图4.5
74LS244内部逻辑与引脚图
74LS245的内部结构如图4.6所示。它由16个三态门构成,每个方向8个。在控制端G低电平有效时,由DIR控制数据的方向。当DIR为“1”时,数据从左向右传送;当DIR为“0”时,数据从右向左传送。图4.6
74LS245内部逻辑与引脚图当P2口需要增加驱动能力时,可采用单向驱动器74LS244,其连接如图4.7(a)所示。图中两个控制端1G和2G均接地,相当于8个三态门均打开,数据从P2口到A8~A15端直通。也就是说,此处采用74LS244纯粹是为了增加驱动能力而不加任何控制。当51单片机的P0口需要增加驱动能力时,必须采用双向驱动器,可用74LS245,其连接如图4.7(b)所示。图中,将控制端G接地(常有效),将单片机的PSEN和RD信号经与门后接到它的DIR端。当从片外程序存储器取指令(PSEN变为低电平有效)或读片外数据存储器(RD信号低电平有效)时,与门输出为0,即DIR=0,数据从右向左,即通过74LS245传向P0口再送往CPU;其余时间PSEN与RD信号均为高电平无效,DIR=1,数据从左向右,即由P0口经驱动器向外输出。图4.7总线驱动器的连接图(a)P2外接74LS244;(b)P0外接74LS2454.2.3
3-8译码器74LS138
3-8译码器74LS138为一种常用的地址译码器芯片,其引脚如图4.8所示。其中,G1、G2A、G2B为3个控制端,只有当G1为“1”且G2A、G2B均为“0”时,译码器才能进行译码输出;否则,译码器的8个输出端全为高阻状态。译码输入端与输出端的译码逻辑关系如表4.2所示。图4.8
74LS138引脚图表4.274LS138的译码逻辑关系具体使用时,G1、G2A、G2B既可直接接至+5V电源端或接地,也可参与地址译码,但其译码关系必须为100。需要时,也可通过反相器使输入信号满足要求。4.3存储器的扩展4.3.1存储器扩展概述
1.51单片机的扩展能力根据51单片机地址总线宽度(16位)可知,在片外可扩展的存储器最大容量为64KB,地址为0000H~FFFFH。
2.扩展的一般方法存储器按读/写特性不同区分为程序存储器和数据存储器。程序存储器又可分为掩膜ROM、可编程ROM(PROM)、可擦除ROM(EPROM或EEPROM);数据存储器又可分为静态RAM和动态RAM。因此,存储器芯片有多种,即使是同一种类的存储器芯片,因其容量的不同,则引脚数目也不同。尽管如此,存储器芯片与单片机扩展连接具有共同的规律。不论何种存储器芯片,其引脚都呈三总线结构,与单片机的连接都是三总线对接。另外,电源线应接在对应的电源线上。存储器芯片的控制线:一般来说,程序存储器具有读操作控制线(OE),它与单片机的PSEN信号线相连。除此之外,对于EPROM芯片还有编程脉冲输入线(PRG)、编程状态线(READY/BUSY)。PRG应与单片机在编程方式下的编程脉冲输出线相接。
READY/BUSY在单片机查询输入/输出方式下,与一根I/O口线相接;在单片机中断工作方式下,与一个外部中断信号输入线相接。存储器芯片的数据线:数据线的数目由芯片的字长决定。例如,1位字长的芯片数据线有一根,4位字长的芯片数据线有4根,8位字长的芯片数据线有8根。存储器芯片的数据线与单片机的数据总线(P0.0~P0.7)按由低位到高位的顺序顺次相接。存储器芯片的地址线:地址线的数目由芯片的容量决定。容量(Q)与地址线数目(N)满足关系式:Q=2N。存储器芯片的地址线与单片机的地址总线(A0~A15)按由低位到高位的顺序顺次相接。一般来说,存储器芯片的地址线数目总是少于单片机地址总线的数目,如此相接后,单片机的高位地址线总有剩余。剩余地址线一般作为译码线,译码输出与存储器芯片的片选信号线相接。存储器芯片有一根或几根片选信号线,访问存储器芯片时,片选信号必须有效,即选中存储器芯片。片选信号线与单片机系统的译码输出相接后,就决定了存储器芯片的地址范围。因此,单片机的剩余高位地址线的译码及译码输出与存储器芯片的片选信号线的连接,是存储器扩展连接的关键问题。译码有两种方法:部分译码法和全译码法。
(1)部分译码。所谓部分译码,就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线仅用一部分参加译码。参加译码的地址线对于选中某一存储器芯片有一个确定的状态,而与不参加译码的地址线无关。部分译码的一种特例是线译码。所谓线译码,就是直接用一根线与存储器芯片的片选信号相接,即一根线选中。在设计存储器扩展连接或分析扩展连接电路确定存储器芯片的地址范围时,常采用图4.9所示的地址译码关系图的方法。假定某一2KB存储器芯片译码扩展系统具有图中译码地址线的状态,我们来分析其地址范围。图4.9地址译码关系图图4.9中与存储器芯片连接的低11位地址线的地址变化范围为全“0”~全“1”。参加译码的4根地址线的状态是唯一确定的。不参加译码的A15位地址线有两种状态,这两种状态都可以选中该存储器芯片:当A15=0时,占用的地址是0010000000000000~0010011111111111,即2000H~27FFH。当A15=1时,占用的地址是1010000000000000~1010011111111111,即A000H~A7FFH。同理,若有N条高位地址线不参加译码,则有2N个重叠的地址范围。重叠的地址范围中真正能存储信息的只有一个,其余仅是占据,所以造成浪费,这是部分译码的缺点。它的优点是译码电路简单。
(2)全译码。所谓全译码,就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线全部参加译码。这种译码方法中,存储器芯片的地址空间是唯一确定的,但译码电路相对复杂。这两种译码方法在单片机扩展系统中都有应用。在扩展存储器(包括I/O口)容量不大的情况下,可选择部分译码,译码电路简单,可降低成本。
3.扩展存储器所需芯片数目的确定若所选存储器芯片字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式确定:若所选存储器芯片字长与单片机字长不一致,则不仅需要扩展容量,还需扩展字长。所需芯片数目按下式确定:4.3.2程序存储器的扩展单片机扩展常用的存储器类型是EPROM芯片,本节主要介绍它的扩展连接方法。
1.EPROM芯片
2716是常用EPROM芯片中容量最小的(更小的已很少采用),有24条引脚,如图4.10所示。其中有3根电源线(VCC、VPP、GND)、11根地址线(A0~A10)、8根数据输出线(O0~O7),其他2根为片选端CE和输出允许端OE。VPP为编程电源端,在正常工作(读)时,也接到+5V。大容量的EPROM芯片有2732、2764、27128、27256,它们的引脚功能基本与2716类似,在图4.10中一并列出了它们两侧的引脚分布。图4.10常用EPROM芯片的引脚图
2.程序存储器扩展举例下面分三种情况说明程序存储器的扩展方法。
1)不用片外译码器的单片程序存储器的扩展例1试用EPROM2764构成80C31的最小系统。
2764是8KB×8位程序存储器,芯片的地址引脚线有13条,顺次和单片机的地址线A0~A12相接。由于不采用地址译码器,因此高3位地址线A13、A14、A15不接,故有23=8个重叠的8KB地址空间。因只用一片2764,故其片选信号CE可直接接地(常有效)。其连接电路如图4.11所示。图4.11
2764与51单片机的扩展连接图图4.11所示连接电路的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。
2)采用线选法的多片程序存储器的扩展例2使用两片2764扩展16KB的程序存储器,采用线选法选中芯片。扩展连接图如图4.12所示。图4.12用2片2764EPROM的扩展连接图图中以P2.7作为片选,当P2.7=0时,选中2764(1);当P2.7=1时,选中2764(2)。因两根线(A13、A14)未用,故两个芯片各有22=4个重叠的地址空间。它们分别为:左片: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。
3)采用地址译码器的多片程序存储器的扩展例3要求用2764芯片扩展51单片机的片外程序存储器,分配的地址范围为0000H~3FFFH。本例要求的地址空间是唯一确定的,所以要采用全译码方法。由分配的地址范围可知:扩展的容量为3FFFH-0000H+1=4000H=16KB,2764为8KB×8位,故需要两片。第1片的地址范围应为0000H~1FFFH;第2片的地址范围应为2000H~3FFFH。由地址范围确定译码器的连接,为此画出译码关系图如下:其中的第1行、第2行分别对应第1片、第2片译码输入线的状态。由此知,选用74LS138译码器时,其输出Y0应接在第1片的片选线上,Y1应接在第2片的片选线上。扩展连接如图4.13所示。图4.13用2片2764EPROM的扩展连接图4.3.3数据存储器的扩展
1.数据存储器芯片常用于单片机扩展的静态数据存储器芯片有2114(1K×4位)、6116(2K×8位)、6264(8K×8位),引脚图如图4.14所示。图4.14常用静态RAM芯片的引脚图
6264有2个片选控制端CE1、CE2,其作用是两个信号同时为低电平有效才能选中芯片(相当于一个片选信号的作用)。动态RAM虽然集成度高、成本低、功耗小,但需要刷新电路,单片机扩展中不如静态RAM方便,所以目前单片机的数据存储器扩展仍以静态RAM芯片为多。然而,现在的动态随机存储器iRAM的刷新电路一并集成在芯片内,扩展使用与静态RAM一样方便。这种芯片有2186、2187,它们都是8K×8位存储器,引脚图如图4.15所示。图4.15
2186/2187引脚图
2186与2187的不同仅在于前者的引脚1是刷新联络信号端,后者的引脚1是刷新选通端。数据存储器的OE、WE信号线分别为输出允许和写允许控制端。2114只有一个读/写控制端WE,当WE=0时,是写允许;当WE=1时,是输出允许。
2.数据存储器的扩展举例数据存储器与单片机的扩展连接除芯片的输出允许信号OE应与单片机的RD读/写控制信号相接、写允许信号与WR相接外,其它信号线的连接与程序存储器类同。例4采用2114芯片在51单片机片外扩展1KB数据存储器。因2114为1K×4位的静态RAM芯片,所以需要2片进行位扩展。扩展连接电路如图4.16所示。因为两个芯片相同地址的4位单元组合起来作为单片机系统的8位单元,所以片选信号线要并接在一起,即两片同时选中。本例采用并接于地(常有效)的方法。图4.16用2片2114EPROM的扩展连接图4.3.4兼有片外程序存储器和片外数据存储器的扩展举例例5采用2764和6264芯片在51单片机片外分别扩展24KB程序存储器和数据存储器。扩展连接电路如图4.17所示。图4.17兼有片外ROM和片外RAM扩展连接图从图中可以看出,各有一片2764和一片6264的片选端并接在一根译码输出线上。即2764和6264芯片相同的地址单元将会同时选通,这不会发生地址冲突,因为两种芯片的控制信号是不一样的。请读者自己分析两种存储器及各芯片的地址范围。4.4并行I/O口扩展
51单片机共有4个并行I/O口,但这些I/O口并不能完全提供给用户使用,对于片内有ROM/EPROM的单片机(如80C51/87C51),在不使用外部扩展时,才允许这4个I/O口作为用户I/O口使用。然而大多数应用系统都需外部扩展,51单片机可提供给用户使用的I/O口只有P1口和P3部分口线。因此,在大部分的51单片机应用系统设计中,都不可避免地要进行I/O口扩展。4.4.1
I/O口扩展概述
1.51单片机I/O口扩展性能单片机应用系统中的I/O口扩展方法与单片机的I/O口扩展性能有关。
(1)在51单片机应用系统中,扩展的I/O口采取与数据存储器相同的寻址方法。所有扩展的I/O口或通过扩展I/O口连接的外围设备均与片外数据存储器统一编址。任何一个扩展I/O口,根据地址线的选择方式不同,占用一个片外RAM地址,而与外部程序存储器无关。
(2)利用串行口的移位寄存器工作方式(方式0)也可扩展I/O口,这时所扩展的I/O口不占用片外RAM地址。
(3)扩展I/O口的硬件相依性。在单片机应用系统中,I/O口的扩展不是目的,而是为外部通道及设备提供一个输入、输出通道。因此,I/O口的扩展总是为了实现某一测控及管理功能而进行的,例如,连接键盘、显示器,驱动开关控制,开关量监测等。
(4)扩展I/O口的软件相依性。选用不同的I/O口扩展芯片或外部设备时,扩展I/O口的操作方式不同,因而应用程序应有不同,如入口地址、初始化状态设置、工作方式选择等。
2.I/O口扩展用芯片
51单片机应用系统中,I/O口扩展用芯片主要有通用I/O口芯片和TTL、CMOS锁存器、缓冲器电路芯片两大类。通用I/O口芯片选用Intel公司的芯片,其接口最为简捷可靠,如8255、8155等。
3.I/O口扩展方法根据扩展并行I/O口时数据线的连接方式,I/O口扩展可分为总线扩展方法、串行口扩展方法和I/O口扩展方法。4.4.2
8255A可编程并行I/O口扩展
8255A是单片机应用系统中广泛被采用的可编程外部I/O口扩展芯片。它有3个8位并行I/O口,每个口有三种工作方式。
1.芯片引脚及其内部结构
8255A芯片的引脚如图4.18所示,引脚信号如表4.3所示。图4.18
8255A芯片的引脚图表4.38255A芯片的引脚信号说明8255A芯片的内部结构如图4.19所示。图4.19
8255A芯片的内部结构图
8255A的内部组成可分为四部分:
(1)数据总线缓冲器:是一个8位的双向三态驱动器,用于与单片机的数据总线相连。
(2)读/写控制逻辑:根据单片机的地址信息(A1、A0)与控制信息(RD、WR、RESET),控制片内数据、CPU控制字、外设状态信息的传送。
(3)控制电路:根据CPU送来的控制字使所管I/O口按一定方式工作,对C口甚至可按位实现“置位”或“复位”。控制电路分为两组:A组控制电路控制A口及C口的高4位(PC7~PC4),B组控制电路控制B口及C口的低4位(PC3~PC0)。
(4)三个并行I/O端口:A口可编程为8位输入,或8位输出,或双向传送;B口可编程为8位输入,或8位输出,但不能双向传送;C口分为两个4位口,用于输入或输出,也可用作A口、B口的状态控制信号。
2.8255A的操作方式
8255A的全部工作状态是通过读/写控制逻辑和工作方式选择来实现的。
1)读/写控制逻辑操作选择由单片机输出的地址A1、A0及控制信号WR、RD、CS来选择口的操作状态。口的操作状态如表4.4所示。表4.4
8255A的口操作状态
2)8255A的三种工作方式方式0(基本输入/输出方式):这种工作方式不需要任何选通信号。A口、B口及C口的两个4位口中任何一个端口都可以由程序设定为输入或输出。作为输出口时,输出数据被锁存;作为输入口时,输入数据不锁存。方式1(选通输入/输出方式):在这种工作方式下,A、B、C三个口分为两组。A组包括A口和C口的高4位,A口可由编程设定为输入口或输出口,C口的高4位则用来作为A口输入/输出操作的控制和同步信号;B组包括B口和C口的低4位,B口可由编程设定为输入口或输出口,C口的低4位则用来作为B口输入/输出操作的控制和同步信号。A口和B口的输入数据或输出数据都被锁存。方式1下的逻辑组态关系如图4.20所示。图4.208255A方式1逻辑组态关系图(a)A口输入;(b)A口输出;(c)B口输入;(d)B口输出方式2(双向传送方式):在这种工作方式下,A口可用于双向传送,C口的PC3~PC7用来作为输入/输出的控制同步信号。应该注意的是,只有A口允许用作双向传送,这时B口和PC0~PC2则可编程为方式0或方式1下工作。方式2下的逻辑组态关系如图4.21所示。图4.21
8255A方式2逻辑组态关系图
3)8255A的编程控制字
8255A的编程选择是通过对控制口输入控制字的方式实现的。控制字有方式选择控制字和C口置位/复位控制字。方式选择控制字:其格式与定义如图4.22(a)所示。
C口置位/复位控制字:C口具有位操作功能,把一个置位/复位控制字送入8255A的控制寄存器(控制口),就能把C口的某一位置1或清0而不影响其它位的状态。C口置位/复位控制字的格式与定义如图4.22(b)所示。例如:将7H(00000111B)写入控制寄存器后,8255A的PC3位置1;写入08H时,PC4复位至0。图4.22
8255A控制字的格式与定义(a)方式选择控制字;(b)C口置位/复位控制字
3.51单片机与8255A的接口方法
51单片机与8255A的接口逻辑很简单,其接口电路如图4.23所示。图4.238255A的扩展连接图因8255A芯片内部无地址锁存能力,所以图中8255A的片选信号CS及口地址选择线A1、A0分别由51单片机的P0.7、P0.1和P0.0经地址锁存器后提供。如果把没有参与选址的地址线的状态都看做“1”状态,则8255A的A、B、C口及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。当然,各口都有重复地址,请读者自己思考。8255A的复位端与51单片机的复位端相连,都接到51单片机的复位电路上。例6试对图4.23中的8255A编程,使其各口工作于方式0,A口作输入,B口作输出,C口的高4位作输出,C口的低4位作输入。由方式选择控制字的格式与定义可确定出满足要求的方式控制字应为91H(10010001B)。对8255A编程,将91H写入它的控制寄存器,初始化程序为:
MOVDPTR,#FF7FH;DPTR作地址指针,指向控制口
MOVA,91H
MOVX@DPTR,A因为图4.23所示的扩展电路未使用高位地址线,所以端口地址也可使用8位。例7试按图4.23所示的扩展电路写出自8255A的B口输出单片机中R7内容与自8255A的A口输入数据到单片机R3的程序。使用8位地址,8255A的A、B、C口及控制口地址分别为7CH、7DH、7EH、7FH。实现所要求功能的程序为:
MOVR0,#7FH ;R0作地址指针,指向控制口
MOVA,#91H
MOVX@R0,A ;方式控制字送控制寄存器
MOVR0,#7DH ;R0指向B口
MOVA,R7
MOVX@R0,A ;R7的内容输出到B口
DECR0 ;使R0指向A口
MOVXA,@R0 ;从A口输入数据到累加器A
MOVR3,A ;把输入数据送存到R3中4.4.3
8155可编程并行I/O口扩展
8155芯片含有256×8位静态RAM,两个可编程的8位I/O口,一个可编程的6位I/O口,一个可编程的14位定时器/计数器。8155芯片具有地址锁存功能,与51单片机接口简单,是单片机应用系统中广泛使用的芯片。
1.8155的结构与引脚
8155的逻辑结构如图4.24(a)所示,引脚分布如图4.24(b)所示。图4.24
8155逻辑结构及引脚(a)8155逻辑结构;(b)8155芯片引脚图
AD0~AD7为地址数据总线,单片机和8155之间的地址、数据、命令、状态信息都是通过这个总线口传送的。ALE为地址锁存信号输入线,在ALE的下降沿将单片机P0口输出的低8位地址信息以及CE、IO/M的状态都锁存到8155内部寄存器。
IO/M为RAM/IO口选择线。当IO/M=0时,对8155的RAM进行读/写,AD0~AD7上的地址为8155中RAM单元地址;当IO/M=1时,对8155的I/O口进行操作,AD0~AD7上的地址为I/O口地址。
CE为片选信号线。
RD、WR为读、写控制信号线。
2.8155的RAM和I/O口编址
8155在单片机应用系统中是按外部数据存储器统一编址的,地址为16位,其高8位地址由片选线CE提供,低8位地址为片内地址。当IO/M=0时,对RAM进行读/写,RAM低8位地址为00H~FFH;当IO/M=1时,对I/O口进行读/写,I/O口及定时器由AD0~AD3进行寻址。其编址如表4.5所示。表4.58155内部端口编址
3.8155的工作方式与基本操作
8155的A口、B口可工作于基本I/O方式或选通方式,C口可作为输入/输出口线,也可作为A口、B口选通方式工作时的状态控制信号线。工作方式的选择是通过对8155内部命令寄存器(命令口)设定控制字来实现的,三个口可组合工作于四种方式下。命令字的格式及定义如图4.25所示。图4.25
8155命令控制寄存器格式基本I/O工作方式:当8155编程设定为ALT1、ALT2时,A、B、C口均为基本输入/输出方式。该方式不需要任何状态选通信号。选通I/O工作方式:当8155被设定为ALT3时,A口为选通I/O,B口为基本I/O;当设定为ALT4时,A、B口均为选通I/O工作方式。选通方式的状态控制信号的逻辑组态如图4.26所示。图4.26
8155选通方式信号逻辑组态图4.26中各信号的含义如下:
BF:输出缓冲器满信号。缓冲器有数据时,BF为高电平,否则为低电平。
STB:外设来的选通信号。当其为低时,将从外设输入数据。
INTR:中断请求信号。当8155的A口或B口缓冲器接收到外设输入的数据或外设从缓冲器中取走数据时,INTR变为高电平(仅当命令寄存器相应中断允许位为1),向单片机请求中断,单片机对8155的相应I/O口进行一次读/写操作,INTR变为低电平。
I/O状态查询:8155有一个状态寄存器,锁定I/O口和定时器的当前状态,供单片机查询用,状态寄存器和命令寄存器共享一个地址,只能读出不能写入。因此,可以认为8155的00H口是命令/状态寄存器,对其写入时作为命令寄存器,写入的是命令;而对其读出时,作为状态寄存器,读出的是当前I/O和定时器的状态。状态寄存器的格式如图4.27所示,它们表示了I/O作为选通输入/输出的状态以及定时器的工作状态。图4.27
8155状态寄存器格式
4.8155内部的定时器/计数器
8155片内有一个14位减法计数器,可对输入脉冲进行减1计数。外部有两个定时器引脚端TIMERIN、TIMEROUT。TIMERIN为外部计数脉冲输入端;TIMEROUT为定时器输出端,可输出各种脉冲波形。定时器的高6位、低8位计数器和输出方式由04H、05H口寄存器确定。其格式如图4.28所示。图4.28
8155定时器寄存器格式定时器有四种输出方式,可输出四种脉冲波形,如图4.29所示。图4.29
8155定时器方式及输出波形任何时候都可以设置定时器的长度和工作方式,然后将启动命令写入命令寄存器(00H),即使计数器已经计数,在写入启动命令后仍可改变定时器的工作方式。如果写入定时器的计数常数为奇数,方波输出不对称,如计数常数N为奇数,则定时器输出的方波在(N+1)/2个脉冲周期内为高电平,(N-1)/2个脉冲周期内为低电平。
8155定时器在计数过程中,计数器的值并不直接表示外部输入的脉冲,计数器终值为2,初值为2~3FFFH之间。若作为外部事件计数,由计数器状态求输入事件脉冲的方法如下:停止计数器计数,分别读出计数器的两个字节,取低14位计数值。若为偶数,则右移一位,即为输入脉冲数;若为奇数,则右移一位,再加上计数初值的1/2的整数部分。
5.8155与单片机的扩展连接图4.30所示是8155与51单片机的扩展。在图中的连接状态下,8155所占的地址为:
RAM地址范围:7E00H~7EFFH
I/O端口地址:命令/状态口7F00H
PA口7F01H PB口7F02H PC口7F03H
定时器低字节7F04H
定时器高字节7F05H图4.30用8155的扩展连接下面对8155扩展的编程举个例子。例8使8155用作I/O口和定时器工作方式,A口定义为基本输入方式,B口定义为基本输出方式,定时器为方波发生器,对输入脉冲进行24分频(8155中定时器最高计数频率为4MHz),则相应的程序如下:
MOVDPTR,#7F04H ;DPTR指向定时器低字节
MOVA,#18H ;计数常数0018H=24
MOVX@DPTR,A ;计数常数低8位装入计数器低字节
INCDPTR ;使DPTR指向定时器高字节
MOVA,#40H(01000000B)
;置定时器方式为连续 方波输出
MOVX@DPTR,A
;装计数器高字节值
MOVXDPTR,#7F00H;使DPTR指向命令/状态口
MOVA,C2H(11000010B)
MOVX@DPTR,A
;向命令/状态口送方式控 制字,并启动定时器4.4.4用TTL芯片扩展简单的I/O接口在51单片机应用系统中,采用TTL或CMOS锁存器、三态门芯片,通过P0口可以扩展各种类型的简单输入/输出口。P0口是系统的数据总线口,通过P0口扩展I/O口时,P0口只能分时使用,故输出时接口应有锁存功能;输入时,视数据是常态还是暂态的不同,接口应能三态缓冲或锁存选通。还应注意的是,不论是锁存器还是三态门芯片,都只具有数据线和锁存允许及输出允许控制线,而无地址线和片选信号线。而扩展一个I/O口,则相当于一个片外存储单元。CPU对I/O口的访问,要以确定的地址,用MOVX指令来进行。所以,在接口电路中,一般要用单片机系统的地址线或地址译码线与读/写控制信号组合,形成一个既有寻址作用又有读/写控制作用的信号线,与锁存器或三态门芯片的锁存允许及输出允许控制端相接。
1.用锁存器扩展输出口图4.31是用一片74LS377扩展一个8位输出口的示例。74LS377是带有输出允许控制端的8D锁存器,有8个输入端(1D~8D),8个输出端(1Q~8Q),1个时钟控制端CLK,1个锁存允许端E。当E=0时,CLK的上升沿将8位D输入端的数据输入锁存器,这时锁存器将保持D端输入的8位数据。图4.31用74LS377扩展输出口在图中,CLK与WR相连,作为写(输出)控制端;E与单片机的地址选择线P2.7相连,作为寻址端,如此连接的输出口地址是P2.7=0的任何16位地址,7FFFH可作为该口地址。对该口的输出操作如下:
MOVDPTR,#7FFFH ;使DPTR指向74LS377
输出口
MOVA,#data ;输出的数据要通过累加 器A传送
MOVX@DPTR,A ;向74LS377扩展口输出 数据
2.用锁存器扩展输入口对于快速外部设备输出的数据,可视为暂态数据。单片机扩展输入口时应用锁存器,否则数据将可能丢失。图4.32是用一片74LS373扩展一个8位输入口的示例。图4.32中,外设向CPU发送数据采用的是中断方式(当然也可以采用查询方式),此时,应有一个选通信号连到74LS373的锁存端上,在选通信号的下降沿将数据锁存,同时向单片机发出中断申请。在中断服务程序中,从P0口读取锁存器中的数据。单片机的地址线P2.6和RD相“或”形成一个既有寻址作用又有读控制作用的信号线与74LS373的输出允许控制端相接。74LS373的口地址为只要P2.6=0的任何16位地址,BFFFH可以作为该口的地址。若单片机从扩展的输入口74LS373输入的数据送入片内数据存储器中首地址为50H的数据区,则其相应的中断系统初始化及中断服务程序如下:中断系统初始化程序:
PINT:SETBIT0 ;外部中断0选择为下降沿触发方式
SETBEA ;开系统中断
MOVR0,#50H;R0作地址指针,指向数据区首址
SETBEX0 ;外部中断0中断允许中断服务程序:ORG0003H
PINT0:AJMPINT0
INT0:MOVDPTR,#0BFFFH;使DPTR指向74LS373
扩展输入口
MOVXA,@DPTR ;从74LS373扩展输入 口输入数据
MOV@R0,A ;输入数据送数据区
INCR0RETI图4.32用74LS373扩展输入口
3.用三态门扩展输入口对于慢速外设输出的数据,可视为常态数据(如开关量)。单片机扩展输入口时,可采用三态缓冲器芯片。图4.33是用一片三态缓冲器74LS244扩展一个8位输入口的示例。图4.33用74LS244扩展输入口图4.33中,74LS244用作8位输入口,所以将1G、2G并接当作一个三态门控制端用。P2.6和RD相“或”形成一个既有寻址作用又有读控制作用的信号与三态门控制端相接。从这个接口电路输入数据时使用以下指令即可:
MOVDPTR,#0BFFFH
MOVXA,@DPTR
4.扩展多个输入、输出口举例前述三种I/O口扩展都是一个8位口扩展,用一条地址线进行寻址,每个扩展口都有许多重叠的地址。此外,也可使用多片锁存器或三态门来扩展多个I/O口,可用地址译码进行寻址。图4.34是用两片74LS377和两片74LS244分别扩展两个输出口和两个输入口的示例。图中采用74LS138译码器的输出作为扩展口的寻址与读/写控制。图4.34扩展多个输入口和输出口的连接4.4.5用串行口扩展并行I/O口
51单片机的串行口在方式0(移位寄存器方式)下,使用移位寄存器芯片可以扩展一个或多个并行I/O口。扩展并行输入口时,可用并入串出移位寄存器芯片,如CMOS芯片4014和74LS165芯片。
4014芯片的引脚信号如图4.35(a)所示。图4.35
8并行输入/串行输出移位寄存器芯片的引脚图(a)4014;(b)74LS165
PI1~PI8是8个并行输入端;SI是串行数据输出端;CLK是时钟脉冲端,时钟脉冲既用于串行移位,也用于数据的并行置入;Q8、Q7、Q6是移位寄存器高3位输出端。P/S是并/串选择端,当P/S为高电平时,并行数据可置入4014;为低电平时,4014可串行移位。
74LS165芯片的引脚信号如图4.35(b)所示。74LS165与4014的工作情况类似。移位/置数端高电平时串行移位,低电平时并行输入置数;串行移位仍在时钟脉冲的上升沿时实现,但并行数据进入与时钟脉冲无关;接口连接时,时钟禁止端接低电平。扩展并行输出口时,可用串入/并出移位寄存器芯片,如CMOS芯片4094和74LS164芯片。
4094芯片的引脚信号如图4.36(a)所示。
Q1~Q8是8个并行输出端;DATA是串行数据输入端;CLK是时钟脉冲端,时钟脉冲既用于串行移位,也用于数据的并行输出;QS、QS、Q8是移位寄存器最高位输出端;OE是并行输出允许端;STB是选通脉冲端,STB高电平时,
4094选通移位,低电平时,4094可并行输出。
74LS164芯片的引脚信号如图4.36(b)所示。74LS164与4094的使用类似。图4.36
8串行输入/并行输出移位寄存器芯片的引脚图(a)4094;(b)4LS164
1.用串行口扩展并行输入口图4.37是用2片4014扩展2个并行输入口的示例。在图4.37所示电路中,两个接口芯片4014从外设并行地接收数据,单片机通过串行口从4014的Q8端串行输入数据。单片机串行口必须工作在方式0(同步移位寄存器方式)下。图4.37串行口扩展并行输入口连接单片机串行口工作在方式0时,P3.1(TxD)提供同步移位脉冲,它与4014的时钟端相连接,又给4014提供移位脉冲,使4014并行输入的数据串行地移入单片机的串行数据接收端P3.0(RxD)。4014(1)每移出1位(即单片机接收1位),4014(2)同时将1位数据自Q8到4014(1)的SI向4014(1)移入1位。这样,单片机串行口接收的第一个8位数据是从4014(1)并行置入的数据,接着又可从4014(1)串行接收4014(2)并行置入的8位数据。4014的P/S端接于单片机的一根I/O口线P1.7上。当4014并行置数时,应使P1.7为“1”;串行移位时,应使P1.7为“0”。下面是从两个扩展的8位并行口输入数据存于片内RAM的30H、31H单元的应用程序。
SETBP1.7 ;置4014于并行输入工作方式
CLRP3.1 ;串行口未启动之前,P3.1上无同步移位脉 冲,为4014SETBP3.1 ;并行置数,软件产生一个脉冲上升沿
CLRP1.7 ;置4014于串行移位工作方式
MOVSCON,#00010000B ;置串行口为工作方式0,同 时启动串行口接收数据
JNBRI,$ ;检测串行口接收数据是否完毕,未 完等待
CLRRI ;接收完毕后清RI标志
MOVR0,#30HMOV@R0,SBUF ;将接收的8位数据送存30H单元
MOVSCON,#00010000B ;再启动串行口接收
4014(2)的8位数据
JNBRI,$ ;检测串行口接收数据是否完毕,未完等待
CLRRI ;接收完毕后清RI标志
INCR0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论