1、第9章单片机系统的并行 扩展单片机原理及接口技术(C51编程)(第2版)目 录CONTENTS9.1 系统并行扩展技术9.2 外部数据存储器RAM的并行扩展9.3 片内Flash存储器的编程9.4 E2PROM的并行扩展9.5 AT89S51扩展并行I/O芯片82C55的设计9.6 利用74LSTTL电路扩展并行I/O口9.7 用AT89S51单片机的串行口扩展并行输入/输出口9.1.1 系统并行扩展结构单片机系统并行扩展结构见图9-1。图9-1 单片机系统扩展结构9.1.1 系统并行扩展结构 由图9-1可看出,系统并行扩展主要包括数据存储器扩展、程序存储器扩展和I/O接口的扩展。由于目前AT
2、89S5x系列单片机片内都集成了不同容量的串行下载可编程的Flash存储器与一定数量的RAM,如表9-1所示,如果片内存储器资源能够满足系统设计需求,扩展存储器的工作可以省去。9.1.1 系统并行扩展结构AT89S51单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构,因此形成了两个并行的外部存储器空间。在AT89S51系统中,I/O端口与数据存储器采用统一编址方式,即I/O接口芯片的每一个端口寄存器就相当于一个RAM存储单元。由于AT89S51单片机采用并行总线结构,扩展的各种外围接口器件只要符合总线规范,就可方便地接入系统。并行扩展是通过系统总线把AT89S51单片机与各扩展器件连
3、接起来。因此,要并行扩展首先要构造系统总线。9.1.1 系统并行扩展结构系统总线按功能通常分为3组,见图9-1。地址总线(Address Bus,AB):传送单片机单向发出的地址信号,以便进行存储单元和I/O接口芯片中的寄存器单元选择。01OPTION02OPTION03OPTION数据总线(Data Bus,DB):用于单片机与外部存储器之间或与I/O接口之间双向传送数据。控制总线(Control Bus,CB):是单片机发出的各种控制信号线。下面介绍如何构造系统的三总线。9.1.1 系统并行扩展结构1P0口作为低8位地址/数据总线AT89S51受引脚数目限制,P0口既用作低8位地址总线,又
4、用作数据总线(分时复用),因此需增加1个8位地址锁存器。AT89S51单片机对外部扩展的存储器单元或I/O接口寄存器进行访问时,先发出低8位地址送地址锁存器锁存,锁存器输出作为系统的低8位地址(A7A0)。随后,P0口又作为数据总线口(D7D0),见图9-2。9.1.1 系统并行扩展结构1P0口作为低8位地址/数据总线图9-2 AT89C51单片机扩展的片外三总线9.1.1 系统并行扩展结构2P2口的口线作为高位地址P2口的全部8位口线用作系统高8位地址线,再加上地址锁存器输出提供的低8位地址,便形成了系统的16位地址总线(见图9-2),从而使单片机系统的寻址范围达到64KB。9.1.1 系统
5、并行扩展结构3控制信号线除了地址线和数据线外,还要有控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是P3口第二功能信号。其中包括:PSEN*信号作为外部扩展的程序存储器的读选通控制信号;01OPTION02OPTIONRD*和WR*信号作为外部扩展的数据存储器和I/O接口寄存器的读、写选通控制信号;9.1.1 系统并行扩展结构3控制信号线03OPTION04OPTIONALE信号作为P0口发出的低8位地址的锁存控制信号。EA*信号为片内、片外程序存储器访问允许控制端。由上看出,尽管AT89S51有4个并行I/O口,共32条口线,但由于系统扩展的需要,真正给用户作为通用I/O使用,就
6、剩下P1口和P3口的部分口线了。9.1.2 地址空间分配如何把片外两个64KB地址空间分配给各个存储器与I/O接口芯片,使一个存储单元只对应一个地址,避免单片机对一个地址单元访问时,发生数据冲突。这就是存储器地址空间的分配问题。AT89S51发出的地址信号用于选择某存储器单元,在外扩多片存储器芯片中,要完成这种功能。9.1.2 地址空间分配必须进行两种选择:n 一是必须选中该存储器芯片,这称为“片选”,只有被“选中”的存储器芯片才能被单片机访问,未被选中的芯片不能被访问;n 二是在“片选”的基础上还同时“选中”芯片的某一单元对其进行读写,这称为“单元选择”。每个扩展的芯片都有“片选”引脚,同时
7、每个芯片也都有多条地址引脚,以便对其进行单元选择。9.1.2 地址空间分配需要注意的是,“片选”和“单元选择”都是单片机通过地址线一次发出的地址信号来完成选择的。常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法)。9.1.2 地址空间分配1线选法直接利用单片机某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只要用某一高位地址线与存储器芯片的“片选”端直接连接即可。优点:电路简单,不需另外增加地址译码器硬件电路,体积小,成本低。缺点:可寻址芯片数目受限制。另外,地址空间不连续,存储单元地址不唯一,这会给程序设计带来一些不便。线选法适用
8、于外扩芯片数目不多的单片机系统的系统扩展。9.1.2 地址空间分配 2译码法使用译码器对AT89S51单片机的高位地址进行译码,将译码器的译码输出作为存储器芯片的片选信号。本法能有效地利用存储器空间,适于多芯片的存储器扩展。常见有74LS138(3-8译码器)、74LS139(双2-4译码器)与74LS154(4-16译码器)。下面介绍74LS138和74LS139译码器芯片。9.1.2 地址空间分配 2译码法(1)74LS138是3-8译码器,有3个数据输入端,经译码后产生8种状态,其引脚见图9-3,真值表见表9-2。图9-3 74LS138引脚图9.1.2 地址空间分配 2译码法由表9-2
9、可见,当译码器输入为某一固定编码时,其8个输出引脚Y0*Y7*中仅有1个引脚输出为低,其余全为高。而输出低电平的引脚恰好作为片选信号。9.1.2 地址空间分配 2译码法(2)74LS139 双2-4译码器。两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端,其引脚如图9-4所示,其中1组的真值表见表9-3。图9-4 74LS139引脚图9.1.2 地址空间分配 2译码法表9-3 74LS139真值表9.1.2 地址空间分配 2译码法以74LS138为例,介绍如何进行空间地址分配。例如,要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片
10、?由74LS138真值表可知,把G1接到+5V,该G2A*、G2B*接地,P2.7、P2.6、P2.5(高3位地址线)分别接到74LS138的C、B、A端,由于对高3位地址译码,这样译码器有8个输出Y0*Y7*,分别接到8片6264的“片选”端,实现8选1片选。而低13位地址(P2.4P2.0,P0.7P0.0)完成对选中的6264芯片中的各个存储单元的“单元选择”。这样就把64KB存储器空间分成8个8KB空间了。64KB地址空间的分配见图9-5。9.1.2 地址空间分配 2译码法图9-5 64KB空间划分成8个8KB空间9.1.2 地址空间分配 2译码法当AT89S51单片机发出16位地址码
11、时,每次只能选中一片芯片以及该芯片的唯一存储单元。采用译码器划分的地址空间块相等,如将地址空间块划分为不等的块,可用FPGA实现非线性译码逻辑来代替译码器。9.1.3 外部地址锁存器AT89S51单片机受引脚数的限制,P0口兼用数据线和低8位地址,为了将它们分离出来,需要在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有74LS373、74LS573等。9.1.3 外部地址锁存器1锁存器74LS373带有三态门的8D锁存器,其引脚见图9-6,内部结构如图9-7所示。图9-6 锁存器74LS373的引脚图9-7 74LS373的内部结构 9.1.3 外部地址锁存器1锁存器74LS37374
12、LS373引脚说明:u D7D08位数据输入线。u Q7Q08位数据输出线。u G数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。u OE*数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。9.1.3 外部地址锁存器1锁存器74LS37374LS373锁存器功能见表9-4。表9-474LS373功能表 9.1.3 外部地址锁存器1锁存器74LS373图9-8 AT89S51单片机P0口与74LS373的连接AT89S51单片机与74LS373锁存器的连接如图
13、9-8所示。9.1.3 外部地址锁存器2锁存器74LS573带三态门的8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚排列与74LS373不同,图9-9为74LS573引脚图。由图9-9,与74LS373相比,74LS573输入D端和输出的Q端依次排列在芯片两侧,为绘制印制电路板提供较大方便。74LS573引脚说明如下。图9-9 锁存器74LS573的引脚 9.1.3 外部地址锁存器2锁存器74LS573D7D08位数据输入线。Q7Q08位数据输出线。G数据输入锁存选通,该引脚与74LS373的G端功能相同。OE*数据输出允许,低电平有效。当低电平时,三态门打开,锁存器中数据输出
14、到数据输出线。当该信号为高电平时,输出线为高阻态。9.1.3 外部地址锁存器2锁存器74LS573图9-12 AT89S51单片机与4片27128 EPROM的接口电路目 录CONTENTS9.1 系统并行扩展技术9.2 外部数据存储器RAM的并行扩展9.3 片内Flash存储器的编程9.4 E2PROM的并行扩展9.5 AT89S51扩展并行I/O芯片82C55的设计9.6 利用74LSTTL电路扩展并行I/O口9.7 用AT89S51单片机的串行口扩展并行输入/输出口9.2 外部数据存储器RAM的并行扩展AT89S51片内有128B RAM,如不能满足需要,须扩展外部数据存储器。在单片机系
15、统中,外扩的数据存储器都采用静态数据存储器SRAM。AT89S51对外部数据存储器访问,由P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据总线。片外数据存储器RAM的读和写由AT89S51的 RD*(P3.7)和WR*(P3.6)信号控制,而片外程序存储器EPROM的输出端允许(OE*)由AT89S51单片机的读选通信号PSEN*控制。尽管与EPROM地址空间范围都相同,但由于是两个不同空间,控制信号不同,故不会发生数据冲突。9.2.1 常用的静态RAM(SRAM)芯片单片机系统中常用RAM典型芯片有6116(2KB)、6264(8KB)、62128(16KB)、62256(32K
16、B)。都单一+5V电源供电,双列直插,6116为24引脚,6264、62128、62256为28引脚。RAM芯片引脚见图9-10。9.2.1 常用的静态RAM(SRAM)芯片各引脚功能如下。n A0A14地址输入线。n D0D7双向三态数据线。n CE*片选信号输入线,低电平有效。对于6264芯片,当 24脚(CS)为高电平且为低电平时才选中该片。n OE*读选通信号输入线,低电平有效。n WE*写允许信号输入线,低电平有效。n VCC工作电源+5V。n GND地9.2.1 常用的静态RAM(SRAM)芯片图9-10 常用RAM引脚9.2.1 常用的静态RAM(SRAM)芯片RAM存储器有读出
17、、写入、维持3种工作方式,见表9-5。9.2.2 并行扩展RAM的扩展接口访问外扩数据存储器,要由P2口提供高8位地址,P0口提供低8位地址和8位双向数据总线。AT89S51对片外RAM的读和写由AT89S51的RD*和WR*信号控制,片选端CE*由地址译码器译码输出控制。因此,接口设计主要解决地址。9.2.3 读写片外RAM的操作时序1读片外RAM的时序AT89S51单片机若外扩一片RAM,应将其引脚与RAM芯片的引脚连接,引脚与芯片引脚连接。ALE信号的作用是锁存低8位地址。AT89S51单片机读片外RAM的时序如图9-11所示。9.2.3 读写片外RAM的操作时序1读片外RAM的时序图9
18、-11 AT89S51单片机读片外RAM的操作时序图 9.2.3 读写片外RAM的操作时序1读片外RAM的时序在第一个机器周期的S1状态,ALE信号由低变高(见处),读RAM周期开始。在S2状态,CPU把低8位地址送到P0口总线上,把高8位地址送上P2口。ALE的下降沿(见处),把低8位地址信息锁存到外部锁存器74LS373内。而高8位地址信息一直锁存在P2口锁存器中(见处)。在S3状态,P0口总线变成高阻悬浮状态。在S4状态,执行读指令后使信号变为有效(见处),信号使被寻址的片外RAM过片刻后把数据送上P0口总线(见处),当回到高电平后(见处),P0总线变为悬浮状态(见处)。至此,读片外RA
19、M周期结束。9.2.3 读写片外RAM的操作时序2写片外RAM操作时序当AT89S51单片机执行向片外RAM写指令后,单片机的信号为低电平有效,此信号使RAM的端被选通。写片外RAM的操作时序如图9-12所示。开始的过程与读过程类似,但写的过程是单片机主动把数据送上P0口总线,故在时序上,单片机先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(见处)。此间,P0总线上不会出现高阻悬浮现象。在S4状态,写控制信号有效(见处),选通片外RAM,稍过片刻,P0口上的数据就写到RAM内了,然后写控制信号变为无效(见处)。9.2.3 读写片外RAM的操作时序2写片外RAM操作时序图9-1
20、2 AT89S51单片机写片外RAM的操作时序图9.2.4 并行扩展数据存储器的设计访问外扩展的数据存储器,要由P2口提供高8位地址,P0口提供低8位地址和8位双向数据总线。AT89S51单片机对片外RAM的读和写由AT89S51的(P3.7)和(P3.6)信号控制,片选端由地址译码器的译码输出控制。因此,进行接口设计时,主要解决地址分配、数据线和控制信号线的连接。如果读/写速度要求较高,还要考虑单片机与RAM的读/写速度匹配问题。图9-13所示为用线选法扩展外部数据存储器的电路。数据存储器选用6264,该芯片地址线为A0A12,故AT89S51单片机剩余地址线为3条。用线选法可扩展3片626
21、4,3片6264的存储器空间如表9-6所示。9.2.4 并行扩展数据存储器的设计图9-13 线选法扩展外部数据存储器电路图9.2.4 并行扩展数据存储器的设计用译码法扩展外部数据存储器的接口电路如图9-14所示。图中数据存储器选用62128,该芯片地址线为A0A13,这样,AT89S51剩余地址线为两条,采用2-4译码器可扩展4片62128。各62128芯片的地址范围如表9-7所示。9.2.4 并行扩展数据存储器的设计图9-14 译码法扩展外部数据存储器电路图9.2.4 并行扩展数据存储器的设计表9-7各62128芯片的地址空间分配【例9-1】编写程序将片外数据存储器中的0 x50000 x5
22、0FF的256个单元全部清“0”。参考程序:xdata unsigned char databuf256 _at_0 x5000;void main(void)unsigned char i;for(i=0;i256;i+)databufi=0 9.2.5 单片机外扩数据存储器RAM6264的案例设计 单片机外部扩展1片外部数据存储器RAM6264。原理电路如图9-15所示。单片机先向RAM6264的0 x0000地址写入64字节的数据164,写入的数据同时送到P1口通过8个LED显示出来。然后再将这些数据反向复制到0 x0080地址开始处,复制操作时,数据也通过P1口的8个LED显示出来。9
23、.2.5 单片机外扩数据存储器RAM6264的案例设计上述两个操作执行完成后,发光二极管D1被点亮。表示数据第1次的写入起始地址0 x0000的64个字节,以及将这64个字节数据反向复制到起始地址0 x0080的读写已经完成。如要查看RAM6264中的内容,可在D1点亮后,单击“暂停”按钮,然后单击调试(Debug)菜单,在下拉菜单中选择“Memory Contents”,即可看到图9-16所示的窗口中显示的RAM6264中的数据。可看到单元地址0 x00000 x003f中的内容为0 x000 x3f。而从起始地址0 x0080开始的64个单元中的数据为0 x3f 0 x00,可见完成了反向
24、复制。9.2.5 单片机外扩数据存储器RAM6264的案例设计图9-15 单片机外部扩展1片外部数据存储器RAM6264 9.2.5 单片机外扩数据存储器RAM6264的案例设计图9-16 RAM6264第1次写入的数据与反向复制的数据 9.2.5 单片机外扩数据存储器RAM6264的案例设计9.2.5 单片机外扩数据存储器RAM6264的案例设计9.2.5 单片机外扩数据存储器RAM6264的案例设计程序说明:主程序中的共有两个for循环,第1个for循环,完成将数据164写入起始地址0 x0000的64个字节,第2个for循环,完成将这64个字节数据641反向复制到起始地址0 x0080开
25、始的64个单元中。目 录CONTENTS9.1 系统并行扩展技术9.2 外部数据存储器RAM的并行扩展9.3 片内Flash存储器的编程9.4 E2PROM的并行扩展9.5 AT89S51扩展并行I/O芯片82C55的设计9.6 利用74LSTTL电路扩展并行I/O口9.7 用AT89S51单片机的串行口扩展并行输入/输出口9.3 片内Flash存储器的编程程序存储器具有非易失性,在电源关断后,存储器仍能保存程序,在系统上电后,CPU可取出这些指令重新执行。程序存储器中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称为只读存储器(ROM)。美国ATMEL公司生产的A
26、T89S5x系列单片机,片内分别集成有不同容量的Flash ROM,来作为片内程序存储器使用,具体见表9-1。在片内Flash ROM满足要求的情况下,外部程序存储器的扩展工作即可省去。本小节只讨论如何把已调试完毕的程序代码写入到AT89S51的片内Flash存储器中,即对Flash存储器的编程问题。9.3 片内Flash存储器的编程单片机芯片出厂时,Flash存储器处于全部空白状态(各单元均为FFH),可直接进行编程。若Flash存储器不全为空白状态(即单元中有不是FFH),应该首先将芯片擦除(即各个单元均为FFH)后,才可向其写入调试通过的程序代码。AT89S51单片机片内4KB Flas
27、h存储器的基本特性如下:可循环写入/擦除1 000次;01OPTION02OPTION03OPTION存储器数据保存时间为10年;具有3级加密保护。9.3 片内Flash存储器的编程AT89S51片内的Flash存储器有3个可编程的加密位,定义了3个加密级别,用户只要对3个加密位:LB1、LB2、LB3进行编程即可实现3个不同级别的加密。经过上述的加密处理,使解密的难度加大,但还是可以解密。现在还有一种非恢复性加密(OTP加密)方法,就是将AT89S51的第31脚(脚)烧断或某些数据线烧断,经过上述处理后的芯片仍然正常工作,但不再具有读取、擦除、重复烧写等功能。这是一种较强的加密手段。国内某些
28、厂家生产的编程器直接具有此功能(例如RF-1800编程器)。9.3 片内Flash存储器的编程目前对片内Flash存储器的编程有两种常用方法:u 一种是使用通用编程器编程;u 另一种是PC机通过下载线进行在线编程(ISP)。9.3.1 使用通用编程器的程序写入 通用编程器一般通过串行口或USB口与PC机相连,并配有相应的驱动软件。在编程器与PC机连接后,在PC机上运行驱动软件,首先选择所要编程的单片机型号,再调入调试完毕的程序代码文件,执行写入命令,编程器就将调试通过的程序代码烧录到单片机片内的Flash存储器中。开发者只需在电子市场购买一台通用编程器即可完成上述工作。9.3.1 使用通用编程
29、器的程序写入编程器通过USB口与PC机通讯,可进行芯片型号自动判别,编程过程中的擦除、烧写、校验等各种操作。编程器供电部分由USB端口的5V电源提供,省去笨重的外接电源并加入USB接口保护电路,即自恢复保险丝,不怕操作短路。编程器的驱动软件界面友好,菜单、工具栏、快捷键齐全,具有编程、读取、校验、空检查、擦除、Flash存储器加密等功能。9.3.2 使用下载线的ISP编程AT89S5x系列单片机支持对片内Flash存储器在线编程(ISP),即PC机直接通过下载线向单片机片内Flash存储器写入程序代码。编程完毕的片内Flash存储器也可用ISP方式擦除或再编程。ISP下载线按与PC机的连接分为
30、三种类型:串口型、并口型以及USB型,可自行制作,也可在电子市场购买。由于USB接口下载线使用起来较为方便,因此目前使用较为普遍。购买USB接口ISP下载线时,已经配置了相应的驱动软件。9.3.2 使用下载线的ISP编程ISP下载线与单片机一端的连接端口通常采用ATMEL公司提供的接口标准,即10引脚的IDC端口。图9-17为IDC端口的实物图以及端口的定义。采用ISP下载程序时,用户目标板上必须装有上述IDC端口,端口中的信号线必须与目标板上AT89S51的对应引脚连接。注意,图中的8脚P1.4()端只是对AT89LP系列单片机有效,对AT89S5x系列单片机无效,不用连接即可。使用ISP下
31、载编程时,只需启动编程软件,按照使用说明书进行操作即可。9.3.2 使用下载线的ISP编程图9-17 IDC端口的实物图以及端口的定义 9.3.2 使用下载线的ISP编程 就单片机的发展方向而言,目前已经趋向于ISP程序下载方式,一方面由于原有不支持ISP下载的芯片逐渐被淘汰(部分已经停产,例如AT89C51),另一方面ISP使用起来十分方便,不需要编程器就可实现程序的下载,所以ISP下载方式已经逐步成为主流。但需要注意的是,虽然ISP的程序下载方法简单易行,但对已有的单片机系统来说,可能使用的单片机仍然是较老款式的机型,或在设计单片机系统时由于程序存储器空间不够用等原因扩展了大容量存储器,此
32、时ISP下载方式就显得无能为力了。另外有些厂家的单片机机型不支持ISP下载方式,所以有时还是要用到编程器进行程序下载的。目 录CONTENTS9.1 系统并行扩展技术9.2 外部数据存储器RAM的并行扩展9.3 片内Flash存储器的编程9.4 E2PROM的并行扩展9.5 AT89S51扩展并行I/O芯片82C55的设计9.6 利用74LSTTL电路扩展并行I/O口9.7 用AT89S51单片机的串行口扩展并行输入/输出口9.4 E2PROM的并行扩展 在以单片机为核心的智能仪器仪表、工业监控等应用系统中,对某些状态参数数据,不仅要求能够在线修改保存,而且断电后能保持。断电数据的保护可采用电
33、可擦除写入的存储器E2PROM,其突出优点是能够在线擦除和改写。E2PROM与Flash存储器都可在线擦除与改写,它们之间的区别在于Flash存储器结构简单,同样的存储容量占芯片面积较小,成本自然比E2PROM低,且大数据量下的操作速度更快,但缺点是擦除改写都是按扇区进行的,操作过程麻烦,特别是在小数据量反复改写时。所以单片机中Flash存储器的结构更适合作为不需频繁改写的程序存储器。而传统结构的E2PROM,操作简单,可字节写入,非常适合用作运行过程中频繁改写某些非易失的小数据量的存储器。9.4 E2PROM的并行扩展 E2PROM有并行和串行之分,并行E2PROM的速度比串行的快,容量大。
34、例如并行的E2PROM 2864A的容量为8k8位。而串行I2C接口的E2PROM与单片机的接口简单,连线少,比较流行的ATMEL公司的串行E2PROM芯片AT24C02/AT24C08/AT24C16。串行E2PROM的扩展将在下一章介绍。本节只介绍AT89S51单片机扩展并行E2PROM芯片2864的设计。9.4.1 并行E2PROM芯片简介 常见的并行E2PROM芯片有2816/2816A,2817/2817A,2864A等。这些芯片的引脚如图9-18所示。图9-18 常见的并行E2PROM引脚图9.4.2 AT89S51单片机扩展E2PROM AT2864的设计2864A与AT89S5
35、1单片机的接口电路如图9-19所示。2864A的存储容量为8K字节,与同容量的静态RAM 6264的引脚是兼容的,2864A的片选端由高位地址线P2.7(A15)来控制。单片机对28 64A的读写非常方便,在单一+5V电压下写入新数据即覆盖了旧的数据,类似于对RAM的读写操作,2864A典型的读出数据时间为200350ns,但是字节编程写入时间为10ms15ms,要比对RAM写入时间长许多。9.4.2 AT89S51单片机扩展E2PROM AT2864的设计图9-19 2864A与AT89S51单片机的接口电路 目 录CONTENTS9.1 系统并行扩展技术9.2 外部数据存储器RAM的并行扩
36、展9.3 片内Flash存储器的编程9.4 E2PROM的并行扩展9.5 AT89S51扩展并行I/O芯片82C55的设计9.6 利用74LSTTL电路扩展并行I/O口9.7 用AT89S51单片机的串行口扩展并行输入/输出口9.5 AT89S51扩展并行I/O芯片82C55的设计 AT89S51本身有4个通用的并行I/O口P0P3,但真正用作通用I/O口线的只有P1口和P3口某些位线。当AT89S51本身4个并行I/O口不够用时,需进行外部I/O接口扩展。本节介绍AT89S51单片机扩展可编程并行I/O接口芯片82C55的设计。此外还介绍使用廉价的74LSTTL芯片扩展并行I/O接口以及使用
37、AT89S51串行口来扩展并行I/O口的设计。9.5.1 I/O接口扩展概述1.I/O接口的基本功能要求I/O接口作为单片机与外设交换信息的桥梁,应满足如下功能要求。(1)实现和不同外设的速度匹配多数外设速度慢,无法和s级单片机比。单片机只有在确认外设已为数据传送做好准备前提下才进行数据传送。要知道外设是否准备好,就需I/O接口电路与外设间传送状态信息,以实现单片机与外设间的速度匹配。9.5.1 I/O接口扩展概述1.I/O接口的基本功能要求(2)输出数据锁存与外设相比,单片机工作速度快,送出数据在总线上保留时间十分短暂,无法满足慢速外设的数据接收。所以在扩展的I/O接口电路中应有输出数据锁存
38、器,以保证单片机输出数据能为慢速接收设备接收。9.5.1 I/O接口扩展概述1.I/O接口的基本功能要求(3)输入数据三态缓冲外设向单片机输入数据时,要经过数据总线,但数据总线上可能“挂”有多个数据源。为使传送数据时不发生冲突,只允许当前时刻正在接收数据的I/O接口使用数据总线,其余I/O接口应处于隔离状态,为此要求I/O接口电路能为输入数据提供三态输入缓冲功能。9.5.1 I/O接口扩展概述2.I/O端口的编址介绍I/O端口编址之前,首先弄清I/O接口(Interface)和I/O端口(Port)的概念。I/O接口是单片机与外设间连接电路总称。I/O端口(简称I/O口)是指I/O接口电路中具
39、有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,传送数据端口称数据口,传送命令端口称命令口,传送状态端口称状态口。当然,并不是所有外设都需这3种齐全的I/O端口。9.5.1 I/O接口扩展概述2.I/O端口的编址每个I/O接口中端口都要有地址,以便AT89S51进行端口访问,来和外设交换信息。常用I/O端口编址两种方式,独立编址方式和统一编址方式。(1)独立编址独立编址方式就是I/O端口地址空间和存储器地址空间分开编址。优点是两个地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。9.5.1 I/O接口扩展概述2.I/O端口的编址(2)统一编址把
40、I/O端口与数据存储器单元同等对待,即接口芯片中一个端口就相当于一个RAM单元。AT89S51使用的就是I/O端口和外部数据存储器RAM统一编址方式,因此AT89S51外部数据存储器空间也包括I/O端口在内。统一编址方式优点是不需要专门的I/O指令,直接使用访问数据存储器指令进行I/O读写操作,简单、方便。但需把外部数据存储器所占的单元地址与I/O端口所占地址划分清楚,避免发生数据冲突。9.5.1 I/O接口扩展概述3.I/O数据的传送方式 为了实现和不同外设速度匹配,I/O接口须根据不同外设选择恰当I/O数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。(1)同步传送又称无条
41、件传送。当外设速度和单片机速度相比拟时,常采用本方式,最典型的同步传送就是单片机和外部数据存储器间的数据传送。9.5.1 I/O接口扩展概述3.I/O数据的传送方式(2)异步传送实质就是查询传送。单片机通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序十分简单,但由于程序在运行中经常查询外设是否“准备好”,因此工作效率不高。(3)中断传送为提高单片机对外设的工作效率,常采用中断传送方式,即利用AT89S51本身的中断功能和I/O接口芯片的中断功能来实现数据传送。9.5.1 I/O接口扩展概述3.I/O数据的传送方式单片机只有在外设准备好后,才中断主程序执行,从而执行与
42、外设进行数据传送的中断服务子程序。中断服务完成后又返回主程序断点处继续执行。中断方式可大大提高单片机的工作效率。常用的可编程通用并行I/O接口芯片为82C55(3个8位I/O口)。它可以与AT89S51单片机直接连接,接口逻辑十分简单。下面介绍AT89S51扩展82C55的设计。9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构 82C55是Intel公司生产的可编程并行I/O接口芯片,它具有3个8位并行I/O口,3种工作方式,可编程,因而使用灵活方便,可作为单片机与多种外设连接时的中间接口电路。82C55引脚及内部结构见图9-20和图9-21。9.5.2 并行I/O芯片8
43、2C55简介 1.82C55引脚与内部结构 图9-20 82C55的引脚图 图9-21 82C55的内部结构9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构(1)引脚说明双列直插封装,40只引脚,功能如下。n D7D0三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息。n CS*片选信号线,低电平有效,表示本芯片被选中。n RD*读信号线,低有效,用来读出82C55端口数据的控制信号。n WR*写信号线,低有效,用来向82C55写入端口数据的控制信号。9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构n Vcc +5V电源。n PA7P
44、A0 端口A输入/输出线。n PB7PB0 端口B输入/输出线。n PC7PC0 端口C输入/输出线。n A1、A0地址线,选择82C55内部4个端口。n RESET复位引脚,高有效。9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构(2)内部结构82C55内部结构见图9-21。左侧引脚与单片机连接,右侧引脚与外设连接。各部件功能如下。端口PA、PB、PC3个8位并行口PA、PB和PC,它们都可选为输入/输出工作模式,但功能和结构上有些差异。9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构n PA口:1个8位数据输出锁存器和缓冲器;1个8位数据输入锁存
45、器。n PB口:1个8位数据输出锁存器和缓冲器;1个8位数据输入缓冲器。n PC口:1个8位的输出锁存器;1个8位数据输入缓冲器。通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件控制下,分为两个4位端口,作为端口PA、PB选通方式操作时的状态控制信号。9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构 A组和B组控制电路这是两组根据AT89S51写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部(PC7PC4);B组控制PB口和PC口的下半部(PC3PC0),并可使用“命令字”来对端口PC的每一位实现按位置“1”或清“
46、0”。数据总线缓冲器数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。9.5.2 并行I/O芯片82C55简介 1.82C55引脚与内部结构 读/写控制逻辑电路读/写控制逻辑电路接收AT89S51单片机发来的控制信号RD*、WR*、RESET、地址信号A1、A0。A1、A0共4种组合00、01、10、11,分别选择PA、PB、PC及控制寄存器的端口地址。根据控制信号不同组合,端口数据被AT89S51读出,或者将AT89S51送来的数据写入端口。各端口工作状态与地址信号A1、A0及控制信号关系见表9-8。9.5.2 并行I/
47、O芯片82C55简介 1.82C55引脚与内部结构表9-8 82C55端口工作状态选择9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字AT89S51可向82C55控制寄存器写入两种不同控制字:工作方式选择控制字及端口PC置位/复位控制字。首先来介绍工作方式选择控制字。(1)工作方式选择控制字82C55有3种工作方式:方式0基本输入/输出;方式1应答输入/输出;方式2双向传送(仅PA口有此工作方式)。9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字3种工作方式由写入控制寄存器的方式控制字决定。方式控制字格式见图9-22。
48、最高位D7=1,为本控制字标志,以便与端口PC口置位/复位控制字相区别(端口PC置位/复位控制字最高位D7=0)。3个端口中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字图9-22 82C55的方式控制字格式9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字【例9-2】AT89S51单片机向82C55控制寄存器(端口地址为0 xff7f)写入工作方式控制字0 x95,根据图9-22,
49、可将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7PC4)输出,PC口的下半部分(PC3PC0)输入。9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字参考程序:#include#define COM8255 XBYTE0 xff7f /0 xff7f为82C55的控制寄存器地址#define uchar unsigned charvoid init8255(void)COM8255=0 x95;/方式选择控制字写入82C55控制寄存器 9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字
50、(2)PC口按位置位/复位控制字为写入82C55另一个控制字,即PC口8位中任一位,可用一个写入82C55控制口的置位/复位控制字对PC口按位置“1”或清“0”。该功能主要用于位控。PC口按位置位/复位控制字见图9-23。9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字图9-23 PC口按位置位/复位控制字格式9.5.2 并行I/O芯片82C55简介2工作方式选择控制字及端口PC置位/复位控制字【例9-3】AT89S51单片机向82C55的控制字寄存器写入工作方式控制字07H,则PC3置1;08H写入控制口,则PC4清0。假设82C55的端口寄存器的地址为
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。