1、第八章 单片机系统扩展 第八章 单片机系统扩展 8.1 片外总线结构和最小应用系统片外总线结构和最小应用系统8.2 外围扩展外围扩展 8.3 应用接口扩展应用接口扩展 8.4 可编程器件的扩展简介可编程器件的扩展简介 思考练习题思考练习题第八章 单片机系统扩展 8.1 片外总线结构和最小应用系统片外总线结构和最小应用系统MCS-51系列单片机一块芯片本身就是一个基本的计算机,可以完成计算机的一些基本功能。但在实际系统应用中,它的功能可能不够,还需要进行外部扩展。扩展是通过总线方式等实现的。8.1.1 80C51片外总线结构片外总线结构我们知道,CPU内部和外部电路都采用总线结构。所谓扩展,就是
2、通过CPU的外部总线连接外部电路和CPU一起工作,增加CPU的功能。80C51单片机的外部扩展可通过地址总线、数据总线和控制总线进行,但由于受到管脚限制,数据线和地址线低8位复用,且与I/O口线兼用,如图8-1所示。第八章 单片机系统扩展 图8-1 MCS-51片外三总线第八章 单片机系统扩展 1地址总线地址总线(AB)80C51地址总线由16位构成:由P0口经地址锁存器(如74373)提供低8位地址(A0A7),P2口提供高8位地址(A8A15),用于传送单片机输出的地址信号,决定操作的存储单元或I/O口。地址总线是单向总线,只能由单片机送出。可直接访问的存储单元为216,即通常所说的寻址范
3、围为64KB。对外部寻址时,P0口是低8位地址和8位数据的复用线,P0口首先将低8位的地址发送出去,当ALE由高变低时,用锁存器(74373)将先送出的低8位地址锁存后再传送数据,在下一次ALE变高时,和P2口高8位地址共同作用寻址。第八章 单片机系统扩展 2数据总线数据总线(DB)数据总线宽度为8位,由P0口提供,用于单片机与存储器或I/O端口之间传送数据。它与单片机处理数据的字长是一致的,所以我们通常也称MCS-51为8位机,即指其每次处理8位数据。数据总线是双向的,可以进行两个方向的数据传送。 第八章 单片机系统扩展 3控制总线(CB) 控制总线是单片机发出的用于控制片外电路工作的一组信
4、号线,主要包括: (1) EA,内外程序存储器的选择信号。EA =1 时访问片内程序存储器,EA=0 时访问片外序存储器。 (2) PSEN ,扩展程序存储器的读选通信号,接外部扩展 EPROM 芯片的OE 脚。 (3) ALE,低 8 位地址锁存控制信号,接 74373 的锁存信号输入端 G。 (4) RD 和WR ,扩展数据存储器和 I/O 端口的读、写选通信号,低电平有效。 第八章 单片机系统扩展 8.1.2 总线驱动能力及扩展总线驱动能力及扩展 单片机在外部扩展时,根据芯片的生产厂家、工艺等的不同及所带负载的类型和数量,要考虑设计的电路是否能稳定可靠工作。因此在应用系统设计时要遵循一些
5、基本原则。1TTL电路和电路和CMOS电路的带负载问题电路的带负载问题在单片机应用系统中,经常会遇到TTL与CMOS两种电路并存的情况,这就存在将两种器件互相对接的问题。例如,早期的8031是用双极型晶体管工艺制造的,而现在生产的89C51(87C51)采用CMOS工艺。无论是用TTL电路驱动CMOS电路还是用CMOS电路驱动TTL电路,驱动门必须能为负载门提供合乎标准的高、低电平和足够的驱动电流,这样电路才能协调一致地工作,也就是必须同时满足下列各式:第八章 单片机系统扩展 VOH(min)VIH(min) (8-1)VOL(max)VIL(max) (8-2)IOH(max) (8-3)I
6、OL(max) (8-4) IH(max)IIL(max)I第八章 单片机系统扩展 上面各式就是电路连接时必须满足的条件。这样,我们就可以根据电路的具体参数来确定电路的连接原则。实际上,式(8-1)、式(8-2)用于解决接口电平的匹配问题,而式(8-3)、式(8-4)用于解决能带多少负载的问题。为便于对照比较,表8-1中列出了常用的TTL和CMOS两种电路的输入、输出特性参数。因为电流条件是任何电路都要满足的,即使同一种电路也有带多少负载的问题,所以我们这里主要考虑电平匹配问题。当TTL与CMOS两种电路并存时,我们主要解决两类问题:一是TTL电路驱动CMOS电路的问题,还有一类是CMOS电路
7、驱动TTL电路的问题。应该说,现在4000(包括4000B)系列CMOS电路应用已经不多,而且它的特性和电源有关,所以我们这里主要针对高速CMOS电路进行讨论。第八章 单片机系统扩展 表表8-1 TTL、CMOS电路的输入、输出特性参数电路的输入、输出特性参数第八章 单片机系统扩展 1) TTL电路驱动CMOS电路(1) 用TTL电路驱动74HC系列CMOS电路。根据表8-1给出的数据可知,无论是用74系列TTL电路作驱动门还是用74LS系列TTL电路作驱动门,只有式(8-1)不能满足。74HC系列CMOS电路的VIH(min)=3.5V,而74系列TTL电路(包括74LS系列)的VOH(mi
8、n)=2.4V图8-2 接上拉电阻提高TTL电路输出的高电平(2.7V),因此,必须设法将TTL电路输出的高电平提升到3.5V以上才能满足要求。解决方法一般是在TTL电路的输出端与电源之间接入上拉电阻Ru,如图8-2所示。当TTL电路的输出为高电平时,其输出级的驱动管截止,负载管导通,故有:VOH=VDDRu(nIIHI0) (8-5)第八章 单片机系统扩展 图8-2 接上拉电阻提高TTL电路输出的高电平 第八章 单片机系统扩展 式中的I0为TTL电路输出高电平时的拉电流。由于I0和nIIH近似相等,所以流过Ru的电流很小,只要Ru的阻值不是特别大,输出高电平将被提升至VOHVDD,这样就可以
9、满足要求。(2) 用TTL电路驱动74HCT系列CMOS电路。为了能方便地实现直接驱动,厂家又生产了74HCT系列高速CMOS电路。通过改进工艺和设计,使74HCT系列的VIH(min)值降至2V。这样,TTL电路的输出可以直接接到74HCT系列电路的输入端而无需外加任何元器件,使电路设计应用更加简单、方便。第八章 单片机系统扩展 2) CMOS电路驱动TTL电路当用74HC/74HCT系列CMOS电路驱动TTL电路时,根据表8-1给出的数据可知,无论负载是74系列TTL电路还是74LS系列TTL电路,都可以直接用74HC或74HCT系列CMOS电路直接驱动,可驱动负载的数目不难从表8-1的数
10、据中求出。第八章 单片机系统扩展 2单片机总线驱动扩展单片机总线驱动扩展在单片机扩展应用中,由于CPU是通过总线与数片存储器芯片及若干个I/O接口芯片相连接的,而且这些芯片可能是TTL器件,也可能是CMOS器件,所以当构成系统时,CPU总线能否支持其负载是必须考虑的问题。当CPU总线上连接的器件均为CMOS器件且数量不多时,因为CMOS器件功耗低,所以一般不会超载。当总线上连接的器件使CPU超载时,就应该考虑总线的驱动问题。这时需在总线上增加缓冲器和驱动器,以增加CPU总线的带负载能力。第八章 单片机系统扩展 虽然都是MCS-51系列单片机,但各个厂家采用的生产工艺不同(TTL或CMOS),产
11、品不同,端口不同,驱动的外部负载电路不同,则带负载能力也不一样。在设计单片机外围扩展电路时都要考虑其是否能驱动所有负载正常工作。特别是外围扩展电路较多时,更要考虑这一问题。在实际系统设计中,首先要详细了解所用芯片的电气指标(高、低电平,输入、输出电流等),如果是TTL和CMOS电路混合系统,不但要考虑电流,还要考虑电平。然后,根据指标要求,考虑单片机是否能驱动所要扩展的所有外围电路,如果不行,则需要进行驱动扩展。第八章 单片机系统扩展 1) 地址和控制总线驱动扩展我们知道,单片机的地址线和控制线都是单向的(单向输出驱动外部设备),因此选用的驱动器也应为单向驱动器。而且由于驱动器是在总线上应用的
12、,所以其要具有三态功能。常用的驱动器有74244和74240(带反向输出),它们都是8位总线驱动器,应用比较简单:输入端接单片机端口,输出端接负载。当然,还要考虑74244本身的带载问题。第八章 单片机系统扩展 2) 数据总线驱动扩展对单片机系统来说,数据是双向传输的,所以数据总线的驱动器也为双向驱动器。对MCS-51来说,因为外设和外部数据存储器共同占用64KB空间,所以理论上可以外接64K个外部设备(当然实际不会)。一般常用的双向驱动器有74245,它是8位双向总线驱动器,有数据传输方向控制端,在单片机控制下可以实现数据的双向传输。第八章 单片机系统扩展 8.1.3 外部扩展芯片的地址译码
13、选择外部扩展芯片的地址译码选择 单片机对外部的访问操作首先要寻址,也就是要找到本次操作的源和目的地址,然后才能进行相应的读写等操作。这样,扩展的外部设备就要有一个唯一的地址,单片机才能对其访问。在计算机中,凡需要进行读写操作的部件都存在编址问题。MCS-5l单片机使用统一编址方式,就是把系统中的外部数据存储器和I/O接口统一编址。在这种编址方式中,I/O接口中的寄存器(端口)与存储器中的存储单元等同对待,具有一个统一的地址空间,不需设置I/O指令和专用信号。具体地讲,就是I/O端口地址与外部数据存储器单元地址共同使用0000HFFFFH这64KB地址空间。第八章 单片机系统扩展 由于外部程序存
14、储器与外部RAM或I/O端口的读操作使用不同的指令和控制信号,所以允许它们的地址重复,因此程序存储器的64KB单元地址的寻址范围也是0000HFFFFH。一般来说,扩展的芯片都有一个片选控制端以控制芯片的工作,为实现对其的访问,单片机首先要选定一些地址线连接到片选控制端,这样,当这些地址线有效时也就实现了对该芯片的访问。一片存储器芯片包含若干个存储单元,对应于若干个单元地址。同样,一片I/O接口芯片也包含多个(端)口,例如数据口、状态口、命令口等,因此一片I/O接口芯片也对应着多个端口地址。存储器需要对存储单元进行编址,而I/O接口则需要对其中的端口进行编址。第八章 单片机系统扩展 外部扩展芯
15、片的地址选择方法(即芯片片选线与地址总线的连接)主要有下面两种。 1线选法线选法一般当外部扩展电路较少时采用这种方法,它简单直观,直接把一位高位地址线连到扩展芯片的片选端,当该位地址线有效时(一般为低电平)即实现了单片机对它的访问。例如扩展两个芯片,芯片1的片选端接地址线A15,芯片2的片选端接地址线A14,都是低电平有效,芯片1的地址范围为4000H7FFFH,芯片2的地址范围为8000HBFFFH。不管芯片内有多少个单元,它们所占的地址空间大小是相同的,都是16KB。第八章 单片机系统扩展 如果芯片内部有若干个单元,则一般用低位地址来控制访问。例如,设芯片1内部有4个单元,可以用A0、A1
16、来控制对它们的访问,这4个单元的地址为A15=0,A14=1,A13A2任意为0或1,A1A0=00、01、10、11,写成二进制为01xx xxxx xxxx xx0001xx xxxx xxxx xx11只要上面地址有效,单片机就能实现对芯片1内部4个单元的访问。可以看到,虽然芯片地址不唯一,但内部单元的地址还是由A1A0确定的。第八章 单片机系统扩展 2全地址译码法全地址译码法线选法简单直观,但是地址空间浪费严重,每个芯片要占用16KB字节空间。当扩展较多RAM及I/O设备时,一般采用全地址译码法。常用的地址译码器有74138(3-8译码器)、74139(双2-4译码器)等。例如在线选法
17、中用A15和A14来控制两个芯片的片选端,用74139进行译码,输入还是A15和A14,但输出可以产生4个选片信号,即可以控制对4个芯片的访问,每个芯片占用地址为16KB;如选用74138作为译码器,输入为A15、A14和A13,则可以产生8个选片信号,每个芯片占用地址为8KB。第八章 单片机系统扩展 应该说,这两种方法是最基本的方法。实际应用中,扩展的RAM、I/O和外部设备的数量及型号、用法不同,所采用的译码方式也不同,如采用分级译码,译码中有控制线、地址线然后从中选择等多种方式。要灵活选择译码方式,尽量不使地址重叠。8.1.4 最小应用系统最小应用系统单片机的最小应用系统是指其在最少外接
18、电路的情况下能正常工作。单片机本身就是一个独立的计算机,所以其应用系统可以非常简单。第八章 单片机系统扩展 189C51(87C51)单片机的最小应用系统 89C51(87C51)是片内具有程序存储器的单片机, 构成最小应用系统时只要将单片机接上外部的晶振或时钟电路和复位电路即可工作,如图 8-3 所示。这样构成的最小系统简单可靠,其特点是没有外部扩展电路,有可供用户使用的大量的 I/O 线。电路中,EA 接高电平,带手动复位,具体可参考第二章。 第八章 单片机系统扩展 图8-3 89C51单片机的最小应用系统第八章 单片机系统扩展 第八章 单片机系统扩展 图8-4 8031单片机的最小应用系
19、统第八章 单片机系统扩展 应该看到,最小应用系统仅使单片机系统能正常工作,实际应用中一般要通过I/O口输出控制外部设备,否则没有实际意义。第八章 单片机系统扩展 8.2 外外 围围 扩扩 展展单一的单片机在实际应用中往往不能满足要求,需要进行外围扩展。外围扩展一种是功能的扩展,如存储器容量不够、I/O口不够等;还有一种是接口的扩展,通过接口使单片机与外部设备协调工作,如与低速设备(打印机)协调工作、对模拟信号进行处理等。市场上可提供的外围设备种类很多,扩展方式各种各样,要遵循经济、适用、稳定、可靠的原则,尽量选用常用器件。单片机系统的有些功能可以由硬件实现,也可以由软件实现,要综合分析,找出最
20、佳方案。第八章 单片机系统扩展 8.2.1 TTL或或CMOS芯片扩展的简单芯片扩展的简单I/O接口接口在单片机应用系统中,常采用TTL或CMOS数字集成电路构成各种类型的简单接口。TTL或CMOS三态门、寄存器、三态缓冲寄存器等电路具有数据缓冲或锁存功能,但自身仅有数据的输入或输出以及选通端或时钟端,没有地址线和读写控制线,其扩展方法与I/O接口芯片不同。它们的选通端或时钟端应与地址线和控制线的逻辑组合的输出相连,数据线与数据总线相连,但数据线数量不必要求一定与MCS-5l单片机的数据总线数相等,可以少于8根数据线,视具体情况而定。用其扩展的I/O接口具有电路简单、成本低、配置灵活方便等特点
21、,在单片机应用系统中被广泛采用。第八章 单片机系统扩展 1寄存器扩展的简单输出接口寄存器扩展的简单输出接口寄存器(由触发器或锁存器构成)用于寄存微处理器送出的数据和命令。只要是寄存器,都可以用来存储数据。常用的寄存器有7474(21位)、74175(4位)和74273(8位)等。设计时,要根据具体要求选择相应的电路。例如74273 8D触发器如图8-5所示,8个数据输入端D0D7与单片机的数据总线相连,8个数据输出端Q0Q7与外设相连。加到74273时钟端CLK的脉冲信号的上升沿将出现在D0D7上的数据写入该触发器寄存,寄存的数据可由上的脉冲下降沿清除。该触发器寄存数据的过程是由单片机执行MO
22、VX指令完成的。执行MOVX指令时,微处理器发出写寄存器信号,该信号通常是由端口地址与写信号 CLR第八章 单片机系统扩展 图8-6 74273线选扩展图第八章 单片机系统扩展 WR 产生的。将写寄存器信号接至 74273 的 CLK 端,对该寄存器寻址的 MOVX 指令就把累加器 A中的数据通过数据总线送至该触发器寄存。 用线选法扩展 74273 作输出接口的电路如图 8-6 所示。如 Ai=A7,74273 的端口地址用 Ri间接寻址,地址为 7FH(实际此接法 007FH 地址均有效),则将立即数送 74273 寄存器输出的程序如下: MOV R0,#7FH MOV A,#data MO
23、VX R0,A 第八章 单片机系统扩展 2三态缓冲器扩展的输入接口三态缓冲器扩展的输入接口单片机是通过总线方式进行外部扩展的,而三态缓冲器因为具有高阻态,可以在总线上应用,所以应用很多,也很方便。在使用三态缓冲器扩展时,首先要确定数据的传输方向。我们知道,74244是单向的,可以向外送数据,也可以接收数据,但只能单方向传送。74245是双向三态缓冲器,可以双向传输数据。因此,在设计中首先要根据应用的要求确定数据传输方式,然后再选择相应的器件。设从外设输入数据和状态信号,通过数据输入三态缓冲器或三态总线驱动器经数据总线传送给微处理器,可选用74244 8位三态总线驱动器,如图8-7所示。第八章
24、单片机系统扩展 图8-7 74244三态总线驱动器 第八章 单片机系统扩展 8 个数据输出端1Y11Y4、 2Y12Y4 与单片机的数据总线相连,8 个数据输入端 1A11A4、2A12A4 与外设相连, 加到输出允许 G1和 G2上的负脉冲将数据输入端的数据送至数据输出端。执行 MOVX 指令时,单片机发出读寄存器信号,该信号通常是由端口地址和读信号RD 产生的。将读寄存器信号接至 74244 的输出允许端,MOVX 指令就把三态缓冲器 74244 数据输入端的数据, 经数据总线输入到累加器 A 中。 第八章 单片机系统扩展 用线选法扩展74244作为输入接口的电路如图8-8所示。如Ai=A
25、7,74244的端口地址用DPTR间接寻址为FF7FH(高8位00FFH,低8位007FH),则将输入设备的数据读入累加器A的程序段如下:MOV DPTR,#0FF7FHMOVX A,DPTR第八章 单片机系统扩展 图8-8 74244线选扩展第八章 单片机系统扩展 3三态缓冲寄存器扩展输入三态缓冲寄存器扩展输入/输出接口输出接口三态缓冲寄存器由三态缓冲器和寄存器组成,所以具有寄存器和三态缓冲器的特点。数据进入寄存器寄存后并不直接从寄存器输出,要经过三态缓冲器才能输出。三态缓冲寄存器既可以作为数据输入寄存器,又可以作为数据输出寄存器。寄存器既可以由触发器构成,也可以由锁存器构成。触发器与锁存器
26、是有差别的,锁存器有一锁存允许信号端,当加到该端的信号为有效电平时,Q端随D端变化,这时锁存器好像一个“直通门”。当锁存允许信号变为无效时,锁存器将此变化前一瞬间D端的输入信号锁存起来,此后D端的变化不再影响Q端。第八章 单片机系统扩展 将三态缓冲锁存器的锁存允许端接有效电平,三态缓冲锁存器即为三态缓冲器;将三态缓冲锁存器的输出允许端接有效电平,三态缓冲锁存器即为锁存器。74373是三态缓冲锁存器,74374是三态缓冲触发器,它们的引脚排列相同,如图8-9所示。应该注意到,它们都是单向数据传输的。传输数据可以采用中断、查询等多种方式。第八章 单片机系统扩展 图8-9 74373和74374三态
27、缓冲寄存器第八章 单片机系统扩展 8.2.2 程序存储器扩展程序存储器扩展我们知道,在MCS-51系列单片机中,程序空间内外统一编址,最大为64KB。8031片内没有程序存储器,而基本的8051/8751/8951内部的程序存储空间为4KB(当然现在也有64KB产品),所以,如果在我们的应用系统中选用8031或程序量超过4KB时,就要在外部扩展程序存储器。从应用角度考虑,尽量采用内部含有ROM(EPROM/EEPROM)的产品,这样会使系统简单可靠(包括选用超过4KB ROM的产品)。而且随着电子技术的迅速发展,内部有ROM的产品与8031价格已接近。ROM为厂家定制产品,由用户把程序编好后由
28、生产CPU的厂家在生产时写入,不可更改,但成本低,保密性好,工作可靠,适用于大批量成熟产品的生产。第八章 单片机系统扩展 EPROM产品应用比较广泛,程序可擦除修改,但需要专门的擦除器和写入器。现在EEPROM产品应用非常广泛,它具有在线多次擦除、写入的特点,写入速度快。另外,现在市场上已很难买到小容量的EPROM产品,所以读者在扩展时可直接选用27512,价格也便宜,如程序量不满,将相应的高位地址线不用即可,具体应用见图8-10。如果是8751/ 8951产品,要接高电平,而且因为程序存储空间内外统一编址,所以片外程序要从4KB以上存放,这样当执行程序超过4KB时自动访问外部程序存储器。当然
29、,在这种情况下也可将接低电平,作8031使用,程序全部放在外部程序存储器中。应该说,现在单片机产品内部程序存储器的容量有多种选择,故在实际应用中已很少扩展片外程序存储器。第八章 单片机系统扩展 图8-10 8031片外扩展64 KB EPROM和32 KB RAM系统 第八章 单片机系统扩展 8.2.3 数据存储器扩展数据存储器扩展基本的MCS-51单片机片内RAM的容量只有128 B(80C52有256B),当系统计算比较多,工作过程中有大量数据时,片内RAM就不够用了,此时就需片外扩展数据存储器RAM,最大可扩展64KB(特殊应用可不受此限制)。由于单片机面向控制,对于一般实际需要,扩展容
30、量不大,若需要具有随机读写功能,则采用静态RAM较方便,如6116为2K8位RAM,6264为8K8位RAM,62256为32K 8位RAM等,与程序存储器同样道理,一般可直接选用62256。与动态RAM相比,静态RAM无需考虑保持数据而设置有刷新电路,故扩展电路较简单。第八章 单片机系统扩展 但静态 RAM 在工作中要通过电源电路来保持存储器中的数据,因此要消耗较多功率。EEPROM 因为具有在线改写的功能,也可以用作片外 RAM,而且掉电后数据不丢失,在一些掉电后需要保存当前工作数据的场合非常适用, 可以省掉电池。扩展数据存储器空间地址同外扩程序存储器一样,由 P2 口提供高 8 位地址,
31、P0 口为分时复用提供低 8 位地址和 8 位双向数据总线,所以也需要锁存器。片外数据存储器RAM的读和写由80C51的 RD (P3.7)和 WR (P3.6)信号控制,而片外程序存储器 EPROM 的输出允许端( OE )由读选通PSEN 信号控制,即使与 EPROM 共处同一地址空间,但由于控制信号及使用的数据传送指令不同, 也不会发生总线冲突。 第八章 单片机系统扩展 1静态静态RAM的扩展的扩展静态RAM存储器有读出、写入、维持三种工作方式,这些工作方式的操作控制见表8-2。扩展应用62256,就是根据62256的工作方式,由单片机在读出、写入和维持数据时在相应的地址处发出对应的控制
32、信号,完成对62256的操作。第八章 单片机系统扩展 表表8-2 62256(6264等等)的操作控制的操作控制第八章 单片机系统扩展 图8-10所示为采用大容量存储器芯片27512和62256为8031片外扩展64KB EPROM和32KB RAM的原理电路图。其中8031要接地,如为8751/8951而不扩展程序存储器可直接将27512去掉,这时接高电平。图中62256的片选端接8031的P2.7,P2.7输出为0时,才能选通62256,所以它的地址为0000H7FFFH。27512的接地,为常选通,地址为0000HFFFFH。如选用其它RAM芯片,则仅是地址线数目和个别引脚有些差别。第八
33、章 单片机系统扩展 2EEPROM的扩展的扩展EEPROM即电擦除可编程只读存储器,它突出的优点是能够在线擦除和改写,不像EPROM必须用紫外线照射才能擦除。EEPROM既具有ROM的非易失性的优点,又能像RAM一样随机地进行读写,每个单元可重复进行1万次改写,保留信息的时间长达20年,不存在EPROM在日光下信息缓慢丢失的问题。过去,EEPROM产品在写数据时需要比较高的编程电压(12.5V),但现在一般EEPROM产品在写入时能自动完成擦除,且不再需要专用的编程电源,可以直接用单片机系统的5V电源来完成,这大大方便了用户,使EEPROM产品的应用更加广泛。第八章 单片机系统扩展 在芯片的引
34、脚设计上,2KB的EEPROM 2816与同容量的EPROM 2716和静态RAM 6116是兼容的,8KB的EEPROM 2864A与同容量的EPROM 2764A和静态RAM 6264也是兼容的,因此可以直接作为数据存储器和程序存储器使用。上述这些特点使硬件电路的设计和调试更加方便。现在EEPROM产品主要有两类:一类采用并口操作,如上面所说的28系列;还有一类采用串口操作,如ATMEL的24C等,只能做RAM扩展。第八章 单片机系统扩展 在调试程序中也可用EEPROM代替仿真RAM,既可方便修改程序,又能保存调试好的程序。当然,与RAM芯片相比,EEPROM的写操作速度很慢;另外,它的擦
35、除/写入是有寿命限制的,虽然有一万次之多,但也不宜用于数据频繁更新的场合。因此,应注意平均地使用各单元,不然有些单元可能提前就结束寿命了。EEPROM的取数时间与相同容量的EPROM速度相当,均为250ns,甚至还快一些,但写入的时间较长,一般为10ms。由于EEPROM多用于在工作情况下改写存储单元中的内容,即在程序运行中进行改写,因此需在软件设计时充分考虑这一特点。第八章 单片机系统扩展 常用的 EEPROM 集成电路有 2817A、 2864A 等。 图 8-11是 2864A 的引脚图。各引脚的功能如下: A0Ai:地址输入线;i=10(2817)或 12(2864); I/O0I/O
36、7:双向三态数据线; CE:片选信号输入线,低电平有效; OE :读选通信号输入线,低电平有效; WE :写允许信号输入线,低电平有效; VCC:电源 5 V; GND:地。 EEPROM 的工作方式如表 8-3 所示。 第八章 单片机系统扩展 图8-11 2864A DIP引脚图第八章 单片机系统扩展 表表8-3 2864A的工作方式的工作方式 应该说,EEPROM产品不同,工作方式也有一些差别(如并行、串行,页操作等)。2864A的工作方式如表8-3所示,有4种工作方式。第八章 单片机系统扩展 1) 维持方式(待机) 当CE 为高电平时( OE 、WE 任意),2864A 进入低功耗维持方
37、式,此时,输出线呈高阻态,芯片的电流从 140 mA降至维待所需的 60 mA。这时,只保持数据不变,芯片不工作。 2) 读方式 当 CE 和OE 均为低电平而WE 为高电平时,内部的数据缓冲器打开,数据被送上总线,此时执行读操作。 第八章 单片机系统扩展 3) 写方式2864A写方式分为字节写入和页写入两种。16个字节为1页,页写入操作就是每次连续对EEPROM中16个单元进行写入。不论是字节写入还是页写入,写操作都由页装载和页存储两步完成:第一步由CPU(即单片机)向2864A中的页缓冲器写入数据,这一步称为页装载,与一般的静态RAM写操作是一样的。第二步在最后一个字节(即第16个字节)写
38、入到页缓冲器后20ns自动开始,把页缓冲器中的内容写到EEPROM阵列中对应地址的单元中,这一步称为页存储。2864A中有一个16字节的静态RAM用作页缓冲器。EEPROM阵列由512页组成,地址线A3A0选择页缓冲器中的16个字节,A12A4选择512页中的1页。第八章 单片机系统扩展 第八章 单片机系统扩展 字节写入的过程与页写入的过程类似,不过只写入一个字节,限时定时器很快就溢出,自动开始页存储操作。 4) 数据查询方式 数据查询是通过软件来检测一个写周期是否完成, 以进行下一步操作。 在写周期中,写入到页缓冲器的最后一个字节的最高位被自动取反, 这时若发出读命令( CE 和OE 为低电
39、平, WE 为高电平),则可从 I/O7 端读得取反后的数据。而在写周期完成时,2864A 将从 I/O7 送出真实数据(不取反的原始数据)。因此,要检查写周期是否完成,CPU 可不断查询 I/O7,并与写入数据的最后一个字节的最高位相比较,当两者相等时,说明这一个写周期已结束,可开始下一个写周期。 第八章 单片机系统扩展 图 8-12 所示为 8031 外扩一片 8 KB EEPROM 2864A 组成的应用系统。这 8 KB 存储器既可当程序存储器用,又可以当数据存储器(掉电不丢失数据)用,EA端接地。 第八章 单片机系统扩展 图8-12 8031外扩2864A系统第八章 单片机系统扩展
40、2864A 的引脚与 6264 相同并兼容,在读工作方式时,2864A 的引脚及功能也与 2764 相同。图中 2864A 的片选端CE 与高地址线 P2.7(MA15)连接,P2.7=0 才能选中 2864A,所以 2864A 的地址范围为 0000H7FFFH(实际使用 8 KB)。在硬件结构上, RD 信号和PSEN信号相“与”,其输出选通 2864A 的读允许片选端OE 。这样可以使程序空间和数据空间混合共用。在执行“MOVX”指令时,产生RD、 WE信号,对数据存储器操作;在执行 2864A 中的程序时,由PSEN 信号选通 2864A 的OE 端读出。 以图 8-12 所示电路为例
41、, 写 16 字节 EEPROM 2864A 的子程序 WR1 如下: 第八章 单片机系统扩展 *入口参数:N=写入字节数(16)Byte=写入EEPROM的地址(低位)Page =写入EEPROM的地址(高位)Pt=源数据区首址* 第八章 单片机系统扩展 int S_DATA, F_DATA, C_DATA, N;XDATA Byte低地址;XDATA Page高地址;for(N=0;N16;N+)S_DATA=*Pt;/取数据Byte=S_DATA;/写入2864ADPTR+;Byte+;第八章 单片机系统扩展 if(Byte=0)Page+;/高位地址加1Byte=Byte-;/数据查询
42、和最后一个字节的原始数据比较ACC7=1;while(ACC7=1)F_DATA=Byte;C_DATA=S_DATAF_DATA;第八章 单片机系统扩展 在应用中要注意EEPROM中程序区和数据区的区分,一定不要重叠,否则会产生灾难性后果。应该说,由于8031已很少使用,图8-12的实用价值并不大,而且很不可靠。但略加变化,将CPU改为8751/8951,2864作为数据存储器使用保存掉电不丢失的数据还是很实用的。8.2.4 人机通道接口人机通道接口随着单片机应用系统功能的增多,在系统运行前和运行中人进行数据输入和工作状态控制已非常普遍。而且,人也希望了解系统运行的实时状态和结果。这样,键盘
43、、显示器等就成为人机交互的良好渠道。因此,人机通道接口设计是单片机应用设计的一个重要方面。第八章 单片机系统扩展 1. 显示接口显示接口通过显示接口,显示器可以向人们提供系统参数、运行状态和结果等信息。从电路组成来看,一是要根据显示信息的要求选择合适的显示器件;二是要完成单片机与显示器件的连接,即接口电路的设计。当然,提供所要求的信息还需要有软件的支持。从显示器件来看,可以只采用发光二极管来显示状态,其设计简单,成本低,但显示状态少;也可以使用液晶显示器显示比较复杂的图形等,此设计相对复杂,成本高(有段式、点阵字符式和点阵图形式等显示方式,一般有驱动芯片)。现在单片机应用系统使用最多的LED数
44、码显示器具有设计方便,使用灵活,成本低等特点,已被广泛采用。 第八章 单片机系统扩展 1) LED显示器简介通常所说的LED显示器也称为七段LED显示器,其排列形状如图8-13所示,由7个发光二极管构成字型“8”的各个笔画(段)ag。此外,显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。当在某段发光二极管上施加一定的正向电压时,该段发光二极管(该段笔画)即点亮。这样,通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。通常称控制发光二极管的8位数据位为段选位,显示器共阴极或共阳极的公共连接点为位选位。第八章 单片机系统扩展 图8-13 七段LED显示器
45、第八章 单片机系统扩展 LED显示器中的发光二极管有两种连接方法。(1) 共阳极接法。把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V或位控制端。这样,阴极端输入低电平段(位控制端选通)的发光二极管就导通点亮,而输入高电平的则不点亮。(2) 共阴极接法。把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地或位控制端。这样,阳极端输入高电平段(位控制端选通)的发光二极管就导通点亮,而输入低电平的则不点亮。使用LED显示器时要区分这两种不同的接法。为了显示数字或符号,要为LED显示器提供代码,因为这些代码是与显示字形相对应的,因此称之为字形代码,如表8-4所示。 第八章 单片机
46、系统扩展 表表8-4 七段七段LED显示器显示字形编码表显示器显示字形编码表第八章 单片机系统扩展 2) LED显示器的工作方式(1) 静态显示。所谓静态显示,就是当显示器显示某一个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示下一个字符为止。例如七段显示器的a、b、c、d、e、f段导通,g段截止,则显示“0”。当b、c段导通而其它段截止时显示“1”。这种显示方式每一位显示器都需要有一个8位输出口控制。当显示器位数较少时,采用静态显示的方法是适合的;当位数较多时,用静态显示所需的I/O口太多,这时一般采用动态显示方法。第八章 单片机系统扩展 (2) 动态显示。实际使用的LED显示器一
47、般都是多位的,为了简化电路,降低成本,可将所有LED显示器的段选线并联在一起,由一个8位I/O口控制,每一个LED显示器的公共端由相应的I/O线控制,实现各位的分时选通。对多位LED显示器,通常都采用动态扫描的方法进行动态显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果完全一样。为了实现LED显示器的动态扫描,除了要给显示器提供段(字形代码)的输出之外,还要对显示器位加以控制,这就是通常所说的段控和位控。第八章 单片机系统扩展 因此,多位LED显示器接口电路需要有两个输出口,其中一个用于输出8条段控线(有小数点
48、显示);另一个用于输出位控线,位控线的数目等于显示器的位数。对于显示器的每一位来说,每隔一段时间依次点亮。显示器的亮度既与导通电流有关,又与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。第八章 单片机系统扩展 3) 显示扩展应用例例8-1 用输出寄存器74273接8个七段显示器(共阴极),试设计接口电路和控制程序。解解 因显示器较多(8个),所以采用动态显示方式。8个七段显示器的接口电路需要两片74273,一个段控,一个位控,接口电路如图8-14所示。段选地址为7FFFH(A15=0,A14=1),因为74273输出接有反向器,所以输出低电平有效,相应的段码亮。
49、其中dp没有使用,所以只使用了D6D0 7根数据线。位选的地址为BFFFH(A15=1,A14=0),74273输出高电平有效,三极管打开,选中相应的数码显示器。第八章 单片机系统扩展 虽然图中使用的是共阴极器件,但存储的是共阳极段选码(74273输出接反向器),而且dp不用,为0。DB区数据如程序所示。第八章 单片机系统扩展 图8-14 两片74273接口8个七段显示器的接口电路第八章 单片机系统扩展 *入口参数disbuffer8=源数据区*void delay(uinti);void display(void);void delay(uint i)uint j;for (j=0; ji;
50、 j+)第八章 单片机系统扩展 第八章 单片机系统扩展 第八章 单片机系统扩展 2键盘接口键盘接口键盘是单片机应用系统中最简单常用的输入设备。操作员通过键盘输入数据或命令,实现简单的人机通信,控制系统的工作状态及向系统输入数据。键盘是一组按键的集合,按键通常是一种常开型按钮开关,平时按键的两个触点处于断开(开路)状态,按下后闭合(短路)。键盘上闭合键的识别由专用硬件实现的,称为编码键盘;靠软件实现的,称为非编码键盘。第八章 单片机系统扩展 过去单片机系统采用的按键开关多为机械弹性开关,由于机械触点的弹性作用,开关在按下闭合时并不能马上稳定,断开时也不会马上断开,因而开关在闭合和断开瞬间均伴随有