《单片机原理及应用》课件第4章_第1页
《单片机原理及应用》课件第4章_第2页
《单片机原理及应用》课件第4章_第3页
《单片机原理及应用》课件第4章_第4页
《单片机原理及应用》课件第4章_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章51单片机系统功能扩展14.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.151单片机最小化系统(a)80C51/87C51最小系统结构图;(b)80C31最小系统结构图4.1.2单片机系统扩展的内容与方法

1.单片机的三总线结构

单片机外部扩展的系统总线与通用微机系统一样,也呈现为三总线结构,如图4.2所示。图4.251单片机的三总线结构从图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.374LS373内部结构及引脚信号

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.474LS373用作地址锁存器4.2.274LS244和74LS245芯片

74LS244和74LS245常作单片机系统的总线驱动器,也作三态数据缓冲器。74LS244为单向驱动器或数据缓冲器,其内部结构如图4.5所示。它由8个三态门构成,分成两组,分别由控制端1G和2G控制。图4.574LS244内部逻辑及引脚信号

74LS245的内部结构如图4.6所示。它由16个三态门构成,每个方向8个。在控制端G低电平有效时,由DIR控制数据的方向。当DIR为“1”时,数据从左向右传送;当DIR为“0”时,数据从右向左传送。图4.674LS245内部逻辑及引脚信号当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.751单片机总线驱动器的连接(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.874LS138引脚信号表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程序存储器的扩展

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)扩展程序存储器,因对地址空间无任何约束条件,采用图4.11所示连接。图4.112764与51单片机的扩展连接图图中,芯片的输出允许信号与单片机的PSEN连接,控制读取指令代码。芯片8条数据线与单片机数据线顺次连接。芯片的13条地址线顺次与单片机的地址线A0~A12相接。由于不采用地址译码器,所以,高3位地址线A13、A14、A15不接,片选信号CE直接接地(常有效)。这样连接,单片机读取该存储器芯片时,只要从低13位地址线传送确定地址即可;也就是说,与高3位地址状态无关(高3位地址线的任意状态都可以访问该芯片)。故有23=8个重叠的8KB地址空间,8个重叠的地址范围为:图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.122片2764部分译码与51单片机的扩展连接图中以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.132片2764全译码与51单片机的扩展连接图4.3.3数据存储器的扩展

1.数据存储器芯片常用于单片机扩展的静态数据存储器芯片有2114(1K×4位)、6116(2K×8位)、6264(8K×8位),引脚图如图4.14所示。图4.14常用SRAM芯片引脚排列

6264有2个片选控制端CE1、CE2,其作用是两个信号同时为低电平有效才能选中芯片(相当于一个片选信号的作用)。动态RAM虽然集成度高、成本低、功耗小,但需要刷新电路,单片机扩展中不如静态RAM方便,所以目前单片机的数据存储器扩展仍以静态RAM芯片为多。然而,现在的动态随机存储器iRAM的刷新电路一并集成在芯片内,扩展使用与静态RAM一样方便。这种芯片有2186、2187,它们都是8K×8位存储器,引脚图如图4.15所示。图4.15iRAM芯片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.162片2114进行位扩展的连接示例4.3.4兼有片外程序存储器和片外数据存储器的扩展举例例5采用2764和6264芯片在51单片机片外分别扩展24KB程序存储器和数据存储器。扩展连接电路如图4.17所示。图4.17兼有片外ROM和RAM扩展的连接示例图中各有一片2764和一片6264的片选端并接在同一根译码输出线上,即2764和6264芯片具有相同的地址空间。但读控制信号连接不同,2764的OE连接于单片机的,6264的OE连接于单片机的RD,WE连接于单片机的WR。尽管两种存储器的地址空间相同,因使用不同的控制信号,所以不会发生地址冲突。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口,每个口有3种工作方式。

1.芯片引脚信号及其内部结构

8255芯片的引脚信号如图4.18所示。图4.188255A引脚信号

I/O口芯片的引脚信号都具有“两边”性,即一边与系统线连接,一边与外部设备连接。

8255A与系统相联系的引脚信号有:

D0~D7:8条双向数据线。与单片机系统数据线(P0口)连接,用于传输控制命令和数据。

A0、A1:8255A的内部端口寻址线。8255A内部有4个寄存器端口,称它们为PA口、PB口、PC口和控制口。通过A1A0上的4种状态来选择端口,其状态码与端口的对应关系如表4.3所示。

RD、WR:对8255A读、写的控制信号。与单片机的读、写信号连接,实现对8255A的读写操作控制。

RESET:复位信号。在该引脚上出现持续一定时间的高电平,使内部寄存器复位到初始状态,连接于外部复位电路或单片机的RESET引脚上。

CS:片选信号。当其为低电平时,8255A才能工作,否则禁止一切操作。同存储器芯片的片选信号作用一样,可与一个译码逻辑输出连接,确定内部端口地址范围。采用部分译码,内部端口有重叠地址;采用全地址译码内部端口有唯一地址。

Vcc、GND:工作电源接入端,接 +5 V电源。

8255A与外设相联系的数据线:PA7~PA0,PB7~PB0,PC7~PC0分别是PA、PB、PC口的8位双向数据线,与外设并行数据线连接。

8255A芯片的内部结构如图4.19所示。图4.198255A的内部结构图从8255A的内部结构可以看出,从控制上分为两组:A口和C口的高4位是A组控制;B口和C口的低4位是B组控制。这样的分组规定了:当A口、B口工作在需要由C口提供状态控制信号的工作方式时,由C口的高4位给A口提供状态控制信号,由C口的低4位给B口提供状态控制信号。当C口工作在I/O口方式时,C口可作为两个4位并行口。

8255A内部有一个读写控制逻辑模块,它接收对8255A的片选、复位、端口寻址和读写控制信号及命令字,分别控制8255A的各种功能操作。8255A的全部工作状态是由读写控制逻辑根据用户编程设置来实现的。例如,根据A1、A0上传送的端口寻址码,经译码可选通相应的端口寄存器。

8255A内部有一个数据总线缓冲器,暂存经数据线(D7~D0)传输的所有信息(命令和数据)。

2.8255A的工作方式

8255A有三种工作方式,可供用户根据需要来编程选用。方式0(基本输入/输出方式):这种工作方式不需要任何状态联络信号。A口、B口和C口的高低4位可以由程序设定为输入或输出,可设定16种输入、输出状态。作为输出口时,输出数据被锁存;作为输入口时,输入数据不锁存。方式1(选通输入/输出方式):在这种工作方式下,A口可由编程设定为输入或输出,由C口的高4位提供相应的控制和同步信号;B口可由编程设定为输入口或输出口,由C口的低4位提供相应的控制和同步信号。A口和B口的输入数据或输出数据都被锁存。方式1下的逻辑组态关系如图4.20所示。图4.208255方式1逻辑组态关系(a)A口输入;(b)A口输出;(c)B口输入;(d)B口输出当A口、B口设定为方式1时,8255A控制逻辑自动使C口相应位给A口、B口提供规定的控制和状态同步信号,C口不再作独立I/O口,但剩余位可按位作I/O线。

方式2(双向传送方式):这种工作方式只能用于A口,C口的PC3~PC7用来作为输入/输出的控制和同步信号。这时B口可工作在方式0或方式1。方式2下的逻辑组态关系如图4.21所示。图4.218255A方式2逻辑组态关系图4.20和图4.21中各状态控制信号的意义如下:

OBF:输出缓冲器满信号。当其为低时,8255A告知外设有数据可供输出。在单片机执行输出指令后,WR上升沿使其为低电平有效,表示数据已传送到数据端口。由外设的应答信号ACK使其变为高电平,表示外设已取走数据,腾空了数据寄存器。

IBF:输入缓冲器满信号。当其为高时,8255A告知外设数据已输入完毕。它由来自外设的置为高电平,表示外设数据已进入8255A的STB数据寄存器。在单片机执行输入指令后,上升沿使其复位,表示数据已被读走,输入缓冲器已被腾空。

ACK:来自外设的应答信号。当其为低时,表示外设已从数据端口取走数据。

STB:来自外设的选通信号。当其为低时,表示将外设数据打入到8255A数据端口。

INTR:中断请求信号。输入时,当外设数据进入到8255A数据端口时,由IBF触发,产生中断请求;在输出时,单片机将数据送入数据端口,由OBF触发,产生中断请求。

INTE:中断允许控制信号。通过对C口相应位置位或复位来进行控制。置位是中断允许,复位是中断不允许(禁止)。A口输入中断允许位是PC4,A口输出中断允许位是PC6,B口输入/输出中断允许位都是PC2。

3.8255A的编程命令字

用户通过设置命令字,将其送入8255A的控制端口,选择8255A的工作方式及其特性。8255A的编程控制字包含方式选择控制字和C口置/复位控制字。

方式选择控制字用于设定8255A的工作方式,其格式与定义如图4.22(a)所示。

C口置位/复位控制字用于设定8255A有关控制及操作的状态和特性,其格式定义如图4.22(b)所示。图4.228255A控制字的格式与定义(a)方式选择控制字;(b)C口置位/复位控制字

8255A工作前,必须根据应用需求,依照格式定义,设置方式控制字。设置好方式控制字后,用输出指令将其写入控制端口,8255A就按设定的方式工作。如果不设定工作方式,或设定的工作方式不正确,8255A将不能正常工作。这一步工作也称为对8255A的初始化。

C口具有位操作功能,把一个置位/复位控制字写入8255A的控制端口,就能把C口的指定位置1或清0。

两个命令字送入8255A,存放在一个控制端口,它们通过最高位(D7)来区分。D7=1,则为方式控制字;D7=0,则为置位/复位操作控制字。

4. 51单片机与8255的接口方法

8255A与单片机连接的基本方法仍是三总线对接。8255A三种工作方式下的接口要求有所不同。在方式1和方式2下,需和单片机控制线相连接的还有中断请求信号INTR。该信号的连接还取决于8255A与单片机的数据传输方式。如果采用查询方式,INTR可与单片机的一位I/O口线连接;如果采用中断方式,INTR连接在单片机外部中断输入线上。

图4.23是8255A与51单片机的基本连接示例。图4.238255A与51单片机的基本连接示例扩展I/O口与单片机连接可区分8位地址端口连接和16位地址端口连接。对于8位地址端口连接,与I/O芯片端口寻址有关的线(端口寻址线、片选线)只和单片机的低8位地址线产生连接关系,可用R0或R1来间接寻址端口。对于16位地址端口连接,与I/O芯片端口寻址有关的线(端口寻址线、片选线)和单片机的16位地址线产生连接关系,需用DPTR来间接寻址端口。图4.23采用了最简单的线译码、8位地址连接方式。PA口地址为0XXXXX00,取7CH;PB、PC和控制口地址依次可取7DH、7EH、7FH。8位地址端口连接也可以用16位地址来寻址端口,因为与高8位地址无关,只要低8位地址正确,就可以访问端口。所以,端口地址也可取FF7CH、FF7DH、FF7EH、FF7FH。在I/O口扩展中多用部分译码方式,这是考虑单片机应用系统中外设数量一般不是太多。如果受片外RAM地址空间限制,则需采用全地址译码或更多地址线参与的部分译码。

在硬件接口的基础上,需对8255A初始化后,才能与其传输数据。下面通过例子来说明8255A的应用。

例6

利用8255A方式0以查询实现打印机接口。在图4.23基本连接的基础上,8255A连接打印机,如图4.24所示。设将片内RAM从30H单元开始存储的16个字符数据送打印机打印。图4.24扩展8255A与打印机的连接(查询方式)单片机把打印数据输出到PA口,在STROBE信号线上出现一个不小于1μs的负脉冲,可启动打印机。打印机接收数据后,当BUSY信号变为高电平时,表示忙碌;当BUSY信号为低电平时,表示空闲,可以接收下一数据。

根据打印机的工作过程,8255A工作在方式0下,从PA口输出数据,PC6输出选通信号,PC1输入打印机状态。8255A的方式控制字设定为81H。对8255A初始化及数据传输程序如下:

PRINT: MOVR0,#7FH;8255A初始化

MOVA,#81H

MOVX@R0,A

MOVA,#0DH;PC6置位命令字

MOV@R0,A;置位PC6

MOVR2,#10H;以数据个数控制循环

MOVR1,#30H;R1指向数据缓冲区首址

START: MOVR0,#7EH;R0指向PC口WAIT:MOVXA,@R0 ;从PC口读取状态

ANLA,#02H ;取状态位

JNZWAIT ;打印机忙,则等待

MOVA,@R1 ;读取打印数据

MOVR0,#7CH ;R0指向PA口

MOVX@R0,A ;向打印机输出数据

MOVR0,#7FH ;R0指向控制口

MOVA,#C0H ;PC6清0命令字

MOVX@R0,A

NOP

MOVA,#0DH

MOV@R0,A;产生负脉冲,选通打印机

INCR1

DJNZR2,START

END

例7

利用8255A方式1,以中断方式实现打印机接口。在图4.23基本连接的基础上,8255A连接打印机,如图4.25所示。设将片内RAM从30H单元开始存储的16个字符数据送打印机打印。图4.25扩展8255A与打印机的连接(中断方式)

PA口工作在方式1输出,单片机把数据输出到PA口,由PC7输出OBFA信号,其下降沿触发单稳触发器选通打印机,打印机产生ACK加到PC6上,由PC3产生中断请求信号。因8255A的INT0中断请求INTR是高电平有效,所以经反相器与单片机的INT0连接。

单片机与8255A的PA口采用中断方式输出数据,在主程序中对8255A初始化,在中断服务程序中完成数据输出。

8255A的方式控制字可设置为:10100000。为了在打印机输出ACK时,通过PC3产生有效的中断请求信号,必须使PA口的中断请求允许INTEA(PC6)=1。对8255A的初始化程序如下:

MOVR0,#7FH ;8255A初始化

MOVA,#0A0H

MOVX@R0,A

MOVA,#0DH ;PC6置位,使PA口输出中断允许

MOVX@R0,A

:PINT0: MOVR0,#7CH

MOVR1,#30H

MOVA,@R1 ;读取打印数据

MOVX@R0,A ;向PA口输出数据

INCR1

RETI4.4.38155可编程并行I/O口扩展

8155芯片含有256×8位静态RAM,两个可编程的8位I/O口,一个可编程的6位I/O口,一个可编程的14位定时器/计数器,具有地址锁存功能。8155与51单片机接口简单,是单片机应用系统中广泛使用的芯片。

1.8155的结构与引脚

8155的逻辑结构如图4.26(a)所示,引脚分布如图4.26(b)所示。图4.268155逻辑结构及引脚(a)8155逻辑结构;(b)8155芯片引脚图

8155与系统相联系的信号有:

AD0~AD7:地址/数据总线,用于传送地址、数据、命令、状态信息。

ALE:地址锁存信号输入线。在ALE的下降沿将地址及

CE、IO/M的状态锁存到8155内部寄存器。

IO/M:访问RAM或I/O口选择控制线。当IO/M=0时,对8155的RAM进行读/写,AD0~AD7上的地址为8155中RAM单元地址;当IO/M=1时,对8155的I/O口进行操作,AD0~AD7上的地址为I/O口地址。

CE:片选信号线。

RD、WR:读、写控制信号线。

RESET:复位控制端。

Vcc、Vss:电源线,接 +5 V工作电源。

8155与外部设备相联系的信号有:PA0~PA7,PB0~PB6,PC0~PC5:与外设连接的双向数据线。

TIMERIN为定时器/计数器的计数脉冲输入端,TIMEROUT为定时器/计数器的输出端。

2.8155的RAM和I/O口编址

8155在单片机应用系统中是按外部数据存储器统一编址的,地址为16位,低8位地址为片内RAM地址,其高8位地址由片选线CE连接的译码逻辑确定。当IO/M= 0时,对RAM读/写,RAM低8位地址为00H~FFH;当IO/M= 1时,对I/O口进行读/写,I/O口及定时器由AD0~AD3进行寻址。其编址如表4.4所示。

3.8155的工作方式与基本操作

8155的A口、B口可工作于基本I/O方式或选通方式,C口可作为输入/输出口线,也可以作为A口、B口选通方式工作时的状态控制信号。工作方式选择是通过对8155内部命令寄存器设定控制字来实现的。三个口可组合工作于四种方式下。命令字的格式及定义如图4.27所示。图4.278155命令控制寄存器格式基本I/O工作方式:当8155编程设定为ALT1、ALT2时,A、B、C口均为基本输入输出方式。该方式不需要任何状态选通信号。

选通I/O工作方式:当8155被设定为ALT3时,A口为选通I/O,B口为基本I/O;当设定为ALT4时,A、B口均为选通I/O工作方式。选通方式的状态控制信号逻辑组态如图4.28所示。图4.288155选通方式信号逻辑组态图4.28中各信号的含义如下:

BF:输出缓冲器满信号。缓冲器有数据时,BF为高电平,否则为低电平。

STB:来自外设的选通信号。当其为低时,从外设输入数据。

INTR:中断请求信号。当8155的A口或B口缓冲器接收到外设数据或外设从缓冲器中取走数据时,INTR变为高电平(仅当命令寄存器相应中断允许位为1),向单片机请求中断,单片机对8155的相应I/O口进行一次读/写操作,INTR变为低电平。

I/O状态查询:8155有一个状态寄存器,锁定I/O口和定时器的当前状态,供单片机查询。状态寄存器和命令寄存器共享一个地址,它只能读出不能写入。对其写入时,作为命令寄存器,写入的是命令;而对其读出时,作为状态寄存器,读出的是当前I/O和定时器的状态。

状态寄存器的格式如图4.29所示,它们表示了I/O作为选通输入/输出的状态以及定时器的工作状态。图4.298155状态寄存器格式

4.8155内部的定时器/计数器

8155片内有一个14位减法计数器,可对输入脉冲进行减1计数。外部有两个定时器引脚端TIMERIN、TIMEROUT。TIMERIN为外部计数脉冲输入端;TIMEROUT为定时器输出端,可输出不同脉冲波形。定时器/计数器的组成如图4.30所示。两个字节的低14位用于计数,最高2位用于控制输出方式。图4.308155定时器寄存器格式定时器有四种输出方式,可输出四种脉冲波形,如图4.31所示。图4.318155定时器方式及输出波形定时器/计数器的启停由命令字的最高两位(TM2、TM1)控制。向定时器/计数器写入初值和方式后,将启动命令字写入命令寄存器,即可启动工作。

如果设定为连续方波方式,则初值为偶数时,输出对称方波;初值为奇数时,输出方波不对称,方波的高电平比低电平多一个计数时钟周期。

5. 8155与单片机的扩展连接

图4.32所示是8155与51单片机的扩展连接示例。图4.32用8155的扩展连接在图中连接状态下,8155的地址分布:RAM地址范围:0XXXXXX000000000~0XXXXXX011111111,取7E00H~7EFFH

I/O端口地址:

例8

使8155用作I/O口和定时器工作方式,A口定义为基本输入方式,B口为基本输出方式,定时器为方波发生器,对输入脉冲进行24分频(8155中定时器最高计数频率为

4MHz),则相应的程序如下:4.4.4用TTL芯片扩展简单的I/O接口

在51单片机应用系统中,采用TTL或CMOS锁存器、三态门芯片,通过单片机系统总线(P0口)可以扩展各种类型的简单输入/输出口。因P0口作系统线只能分时使用,故输出时,接口应有锁存功能;输入时,视数据是常态还是暂态的不同,接口应能三态缓冲,或锁存选通。还应注意的是,不论是锁存器还是三态门芯片,都只具有数据线和锁存允许及输出允许控制线,而无地址线和片选信号线。而扩展一个I/O口相当于一个片外存储单元。CPU对I/O口的访问,要以确定的地址用MOVX指令来进行。所以,在接口电路中,一般要用单片机系统的地址线或地址译码线与读/写控制信号组合,形成一个既有寻址作用又有读/写控制作用的信号线与锁存器或三态门芯片的锁存允许及输出允许控制端相接。

1.用锁存器扩展输出口

图4.33是用一片74LS377扩展一个8位输出口的示例。图4.33用74LS377锁存器扩展输出口

74LS377是带有输出允许控制端的8D锁存器,1D~8D是数据输入线,1Q~8Q是数据输出线,CLK是时钟控制端,E为锁存允许端。当E=0时,CLK的上升沿将8位数据锁存,这时将保持D端输入的8位数据。在图中CLK与WR相连,作为写(输出)控制端;E与单片机的地址选择线P2.7相连,作为寻址端。如此连接的输出口地址是P2.7=0的任何16位地址,取7FFFH作为该口地址。对该口的输出操作如下:

MOVDPTR,#7FFFH;使DPTR指向74LS377输出口

MOVA,#data;输出的数据要通过累加器A传送

MOVX@DPTR,A;向74LS377扩展口输出数据

2.用锁存器扩展输入口

对于快速外部设备输出的数据,视为暂态数据。单片机扩展输入口时,应用锁存器,否则数据可能丢失。图4.34是用一片74LS373扩展一个8位输入口的示例。

图4.34中,单片机输入数据采用中断方式(也可以采用查询方式),当外设准备好一个数据时,产生一个选通信号XT加到74LS373的锁存端G,在选通信号的下降沿将数据锁存,同时向单片机发出中断请求。在中断服务程序中读取锁存器中的数据。图4.34用74LS373锁存器扩展输入口示例单片机的地址线P2.6和RD相“或”形成一个既有寻址作用又有读控制作用的信号线与74LS373的输出允许控制端相

接。74LS373的口地址为只要P2.6=0的任何16位地址。取BFFFH作为该口的地址。若单片机从扩展的输入口74LS373输入的数据送入片内数据存储器中首地址为50H的数据区,其相应的中断系统初始化及中断服务程序如下:

3.用三态门扩展输入口

对于慢速外设输出的数据,可视为常态数据(如开关量)。单片机扩展输入口时,可采用三态缓冲器芯片。图4.35是用一片三态缓冲器74LS244扩展一个8位输入口的示例。

图4.35中,74LS244用作8位输入口,所以将1G、2G并接,当作一个三态门控制端用。P2.6和RD相“或”形成一个既有寻址作用又有读控制作用的信号和三态门控制端相接。从这个接口输入数据时使用以下两条指令即可:

MOVDPTR,#0BFFFH

MOVXA,@DPTR图4.35用74LS244三态缓冲器扩展输入口示例

4.扩展多个输入、输出口举例

前述三种I/O口扩展都是一个8位口扩展,用一条地址线进行寻址,每个扩展口都有许多重叠的地址。也可使用多片锁存器或三态门来扩展多个I/O口,可用地址译码进行寻址。图4.36是用两片74LS377和两片74LS244分别扩展两个输出口和两个输入口的示例。图中采用74LS138译码器的输出作为扩展口的寻址与读/写控制。图4.36扩展多个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论