第四章功能扩展.docx

上传人:b****8 文档编号:10341342 上传时间:2023-02-10 格式:DOCX 页数:42 大小:1.27MB
下载 相关 举报
第四章功能扩展.docx_第1页
第1页 / 共42页
第四章功能扩展.docx_第2页
第2页 / 共42页
第四章功能扩展.docx_第3页
第3页 / 共42页
第四章功能扩展.docx_第4页
第4页 / 共42页
第四章功能扩展.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

第四章功能扩展.docx

《第四章功能扩展.docx》由会员分享,可在线阅读,更多相关《第四章功能扩展.docx(42页珍藏版)》请在冰豆网上搜索。

第四章功能扩展.docx

第四章功能扩展

第四章89C51的功能扩展

第一节最小应用系统与总线结构

一、单片机最小系统:

使单片机能运行的最少器件构成的系统,就是最小系统。

复位、晶振电路是必须的;如片内无ROM芯片:

如8031必须扩展ROM,现在应用很少,但许多实验箱中都用的8031。

如果片内有ROM芯片,如AT89c51、AT89c52等,构成最小系统时不必扩展ROM,只要有复位、晶振电路即可工作。

右图为89C51的最小系统。

这种最小应用系统只能用作一些小型的控制单元。

其应用特点是:

(1)全部I/O口线均可供用户使用。

(2)内部有一定容量的程序存储器(AT89C51为4KB,AT89C52为8KB地址空间)。

(3)内部的数据存储容量很小,不宜处理数据较多的情况。

二、89C51单片机的三总线结构

程序存储允许信号输出端

89C51系列单片机片外引脚可以构成如图所示的三总线结构:

地址总线(AB)(P0、P2)

•地址总线(AddressBus,AB)用于传送单片机送出的地址信号,以便进行存储单元和I/O端口的选择。

•地址总线是单向的,只能由单片机向外发送信息。

地址总线的数目决定了可直接访问的存储单元的数目。

•例如,n位地址可以产生2n个连续地址编码,因此,可访问2n个存储单元,即通常所说的寻址范围为2n个地址单元。

89C51单片机存储器扩展最多可达64KB,即216个地址单元,因此,最多需16位地址。

数据总线(DB)(P0)

•数据总线(DataBus,DB)用于单片机与存储器之间或单片机与I/O端口之间传送数据。

•数据总线的位数与单片机处理数据的字长一致。

•例如,89C51单片机是8位字长,所以,数据总线的位数也是8位。

数据总线是双向的,可以进行两个方向的数据传送。

控制总线(CB)

控制总线(ControlBus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。

外部芯片一般通过这三组总线进行扩展。

三、扩展注意事项:

1、接口驱动能力。

在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。

总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。

2、电平兼容。

在对TTL负载驱动时,只需考虑驱动电流的大小;在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑电平的兼容和分布电容的电流。

一般TTL电平与CMOS电平是不兼容的,CMOS电路能驱动TTL电路,而TTL电路一般不能驱动CMOS电路,在TTL电路和CMOS电路混用的系统中,应特别注意。

 

第二节扩展中常用的器件介绍

一、锁存器

1、作用:

P0口分时复用时,一定要用锁存器将地址信号锁存起来,才能够达到地址、数据分离、分时复用的目的。

2、常用器件:

74LS373,74LS573,74LS374,8282,8283等

3、74LS373的引脚及控制

74LS373带输出三态门的8D锁存器。

引脚功能:

1D~8D—输入;1Q~8Q—输出;

G-数据锁存控制,D=1,输入=输出;由高变低(负跳变),锁存数据;D=0,锁存数据不变。

-输出允许端,

=0,三态门开;

=1,三态门关。

扩展多路时用来选择。

74LS373与74LS573只是引脚布置的不同。

74LS273的11脚G逻辑与以上相反。

正跳变输入数据并锁存,高、低电平锁存保持不变。

二、常用的总线驱动器

作用:

提高驱动能力,改善信号性态。

常用元件:

74LS244、74LS245

74LS244介绍:

74LS244是由8个三态门构成的单向驱动器。

如图:

8个三态门分为两组,由

进行控制。

-低电平导通,高电平输出为高阻态。

高阻态可以隔离信号,便于总线传输数据。

芯片有20个引脚,如图:

系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如74LS244。

系统中的数据总线是双向的,其驱动器也要选用双向的,如74LS245。

74LS245也是三态的,有一个方向控制端DIR,DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。

 

第三节

存储器的扩展

存储器扩展分程序存储器扩展和数据存储器扩展。

由于程序存储器扩展在实际应用中已很少使用,故只做简单介绍。

一、扩展的基本原理

1、程序存储器扩展

右图为扩展时基本连接方法。

接高电平时,首先执行片内程序存储器中的程序,然后执行片外程序,片内外统一编址;若

接低电平,只执行片外的程序。

为片外程序存储器读选通信号。

必须和被扩展芯片的读选通输入信号线相连。

P0口输入8位数据和输出地址低8位,P2输出地址高8位。

ALE用于锁存低8位地址,在下降沿将低8位地址锁存。

可以看出,尽管89C51单片机有4个I/O口,共32条口线,但由于系统扩展的需要,真正能作为数据I/O使用的,就只剩下P1口和P3口的部分口线了。

特别需要强调的是,程序存储器不应再采用外扩的方案。

因为89系列单片机内有4~32KB的不同型号产品可供选择。

如果课题需要功能更强的MCU,则可选择ADμC8××、C8051F×××和MAX7651等SOC芯片。

 

2、数据存储器的扩展

数据存储器的扩展,基本原理与程序存储器相同,也是三总线对接,但数据存储器要对数据进行读和写,扩展外部设备时,也占用的是外部RAM的地址。

因此数据存储器的扩展要比程序存储器复杂。

扩展数据存储器空间地址,由P2口提供高8位地址,P0口分时提供低8位地址和用作8位双向数据总线。

片外数据存储器RAM的读/写由89C51的,RD(P3.7)和WR(P3.6)信号控制。

注意:

在数据存储器扩展时,P2口未用的引脚还可以做它用。

但注意相互影响,不要在写数据时影响未用的端口。

二、常用的存储器芯片介绍

1、EPROM

EPROM是采样电信号写入、紫外线擦除的存储器,专门用紫外线灯擦除,在日光下也可以擦除,长期暴露在室内光线下程序也消失。

因此要将擦除窗口保护起来。

常见的型号:

2732、2764、27128、27256等。

其中27后面的数字代表位容量,如2764为64k位容量,也就是8K字节的容量。

CMOS型加C,如27c128

2、EEPROM和FlashROM(可以存储不常修改的数据)

EEPROM是一种电擦除可编程只读存储器,其主要特点是能在计算机系统中进行在线修改,并能在断电的情况下保持修改的结果。

因而在智能化仪器仪表、控制装置等领域得到普遍采用。

存在的问题是写和擦除较慢。

常用的EEPROM芯片主要有Intel2816A、2864A等。

FlashROM是一种新型的存储器,也叫闪速存储。

型号有AT29010A,AT29020A等。

AT29010A的容量为64K字节。

3、随机存储器RAM

数据存储器一般采用RAM芯片,这种存储器在电源关断后,存储的数据将全部丢失。

(用在运算数据量大的情况)

常用的静态RAM(SRAM),在工业现场常使用SRAM。

常用的型号:

6116、6264、62128、62256等

型号:

6264,前两位数62,表示SRAM,

后两位64÷8=8k字节容量。

引脚功能:

以6264为例,介绍引脚功能。

I/O0-7:

双向数据线,三态输出;

A0~A12:

地址线;

片选信号,低电平有效;

CE2:

片选线,高电平有效;

读选通信号,输出使能

写选通信号,写入使能VCC、GND:

电源

NC:

未使用

还有串行连接的存储器等,在后面讲。

 

三、采用三总线方式扩展时地址的确定

1、地址确定的方法

对于扩展的芯片,要根据不同的芯片区别对待:

存储器:

芯片都有自己的地址引脚,如6264扩展8K,则芯片地址为A0-A13,低8位直接与P0口由锁存器输出的低8位相连,高位与P2对应位相连。

芯片都有片选,一般P2高位地址中未用完的端口,与片选相连,就确定了该芯片的地址。

其它元件:

如A/D转换等,片内需要的地址很少,一般用低8位就可以满足,地址确定主要取决于地址高8位分配的片选信号。

如用P0驱动8位LED显示,地址作为位码,数据作为段码,该位码的地址从高到低分别为80H、40H、20H、10H、08H、04H、02H、01H,256个地址中只用了8个。

如果还要扩展其它元件,就要用高8位的某一位控制373的输出允许OE,就合成一个完整的16位地址。

在扩展几个芯片时,按高8位中连接方法不同,分线选法和译码法。

2.线选法寻址

如果要扩展几个存储器,用P0和P2口的低几位地址线对每个芯片存储单元统一进行寻址,称为字选。

所需地址线数由每片的存储单元数决定,对于8K×8容量的芯片需要13根地址线A12-A0。

然后将余下的高位地址线分别接到存储芯片的片选端CE,称为线选。

线选法的不足是空间不连续,中间有一部分存储空间无法使用。

如下图所示:

扩展6264,每个只有8K,最多可以扩展8个6264,下面扩展3片6264为例,讲解如何扩展和确定地址(仅作为例子,如果扩展的容量大,可以直接选容量大的芯片,不但便宜,电路也简单,下面例子实际上可以直接用1片32K的62256)

6264

(1)的地址:

C000H-DFFFH,(P2.5=0)

6264

(2)的地址:

A000H-BFFFH,(P2.6=0)

6264(3)的地址:

6000H-7FFFH,(P2.7=0)

可以看出,高8位已经全部应用,只扩展了24K。

3.译码法寻址

译码法寻址就是利用译码器对系统的片外高位地址进行译码,以其译码输出作为存储器芯片的片选信号,将地址划分为连续的地址空间块,避免了地址的间断。

译码法仍用低位地址线对每片内的存储单元进行字选,而高位地址的某几位经过译码器译码后输出作为各芯片的片选信号。

常用的地址译码器是3/8译码器74LS138。

译码法又分为完全译码和部分译码两种。

如上例中用译码法,P2.5、P2.6、P2.7接3/8译码器,则最高3位的地址为000B-111B,就可以扩展8片6264。

注意:

将片外器件(如A/D转换等)扩展时,它的地址是RAM的一个单元地址,和RAM地址连续排列。

四、数据存储器6264的扩展举例

引脚连接说明:

1)数据线D0~n直接从锁存器前连接单片机的P0.0-P0.7;

2)地址线A0~A7从锁存器后连接,地址线A8~A12直接连单片机的P2.0~P2.4口。

3)片选线CE2接高电平,

连P2.7

4)读写线

(R/W)连接读写控制线

注意:

扩展时地址经常有形式上的不惟一性,如该电路中6264的8KB地址范围不唯一(由P2.5、P2.6、P2.7确定地址A15A14A13,只要保证P2.7为低电平,P2.5、P2.6如果在电路中无其它用途,则可置任意值),故地址的高三位是000,010,001,011都是正确的。

当向该片6000H单元写一个数据DATA时,可用如下指令:

MOVA,#DATA;要写入的数据

MOVDPTR,#6000H;要写入的地址

MOVX@DPTR,A

从7FFFH单元读一个数据时,可用如下指令:

MOVDPTR,#7FFFH

MOVXA,@DPTR

 

第四节I/O口的扩展

一、扩展的方法

当89C51应用系统需连接较多的输入/输出的外围设备(如打印机、键盘、显示器等),就得扩展。

2、用并行口扩展I/O口

1)用通用器件进行扩展

只要根据“输入三态,输出锁存”与总线相连的原则,选择74LS系列的TTL电路或CMOS电路即能组成简单的扩展I/O口。

例如采用8位三态缓冲器74LS244组成输入口,采用8D锁存器74LS273,74LS373,74LS377等组成输出口。

2)用串行口扩展I/O口

当MCS-51单片机串行口工作在方式0时,使用移位寄存器芯片可以扩展一个或多个8位并行I/O口。

这种方法不会占用片外RAM地址,而且可节省单片机的硬件开销。

缺点是操作速度较慢,扩展芯片越多,速度越慢。

常用的芯片有74LS165、74LS164等。

3)用专用芯片进行扩展

常用芯片如下:

型号

功能

8155/8156

256BRAM、可编程两个8位I/O口、可编程一个6位I/O口、14位定时器

8212

8位I/O口

8251A

可编程通信接口

8253

可编程3个16位定时器

8255A

可编程三个8位I/O口

8279

可编程键盘/显示器接口(64键)

8355

2K×8位ROM、两个通用8位I/O口

8755A

2K×8位EPROM、两个通用8位I/O口

二、通用器件的扩展

根据“输入三态,输出锁存”与总线相连的原则

下图中74LS244作为输入口、74LS273作为输出口,它们都可以通过P0口输入、输出数据。

注意:

由于P0口操作时,按指令相应的

有控制信号,在编程时就可以直接用MOVX给一个地址送数据,用其他端口时,就需要给端口送数据。

在74LS273中,

-清除线,低电平输出全为0;

-上升沿输入数据并锁存,高、低输出不变。

控制过程:

1、控制LED,

P2.0=0;

由1变0;“或非门”2输出正跳变,273将单片机输出的信息锁存。

输出低电平LED显示,因为用

锁存P0口的输出,所以LED的显示是由P0口输出的数据而不是地址,地址只要满足P2.0=0;其它地址位(含低8位)随意。

2、读按键输入

P2.0=0;

=0,“或”门1输出0电平,244的Q=D(直通),当

由低变高时,CPU读走数据。

当244的

为高电平时,Q端输出为高阻态。

注意:

确定地址时,要使P2.0(A8)为0。

其他未用地址可以随意。

三、用串行通信口扩展

1、用串行口扩展输出口

用串行口扩展输出口时,一般用移位寄存器,如74LS164芯片、4094芯片。

74LS164为串入并处的移位寄存器,下图为74LS164的引脚,各引脚功能如下:

Q0-Q7:

并出数据线;

DSA、DSB:

串行输入线,当其中有一个为低电平时输出为0;两个同时为高电平时输出QA为1。

可以同时接串行口的数据输出口RXD,也可以一个用于控制;

CP:

移位脉冲输入口,在脉冲上升沿移位;

清零,低电平有效。

例:

用89C51串行口外接164串入-并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。

设发光二极管为共阴极接法,如图7-17所示。

解:

设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现,延时程序的编写已经讲过。

程序清单:

ORG0000H

AJMP0030H

ORG0023H;串行口中断入口

AJMPSBR;转入串行口中断服务程序

ORG0030H;主程序起始地址

MOVSCON,#00H;串行口方式0初始化

MOVA,#80H;最左一位发光二极管先亮

CLRP1.0;传送数据时不显示

MOVSBUF,A;开始串行输出

LOOP:

SJMP$;等待中断,

SBR:

SETBP1.0;允许显示,数据传送完开始显示

ACALLDELAY;显示延迟一段时间

CLRTI;清发送中断标志

RRA;准备右边一位显示

CLRP1.0;关闭显示

MOVSBUF,A;再一次串行输出

RETI;中断返回

如果将上面指示灯看作七段数码管,一个164可以驱动1个七段数码管LED,N个LED需要N个164。

可以连续将要显示的数据发送完然后显示。

要用串行口扩展并行输入口,用芯片74LS165,也可以用4014芯片。

该部分内容自己看教材相关部分。

四、用专用芯片的扩展

由前面已经知道,用专用芯片,不但可以扩展并行端口,而且还可以扩展定时器/计数器,RAM等。

扩展时很大的特点是可以编程。

本节只用8155芯片介绍扩展方法。

1.8155的结构和技术性能

8155的结构框图。

在8155内部具有:

(1)256字节的静态RAM,存取时间为400ns。

(2)三个通用的输入/输出口。

(3)一个14位的可编程定时/计数器。

(4)地址锁存器及多路转换的地址和数据总线。

(5)单一+5V电源,40脚双列直插式封装。

2、8155的引脚功能

AD0-AD7:

三态地址/数据总线,带地址锁存;

ALE:

地址锁存信号,负跳变(高→低)锁存;

IO/

RAM与I/O口的选择线,低电平选择RAM操作,高电平选择I/O口;

片选信号,低电平有效;

:

读写控制线;

PA0-PA7:

端口A;

PB0-PB7:

端口B;

PC0-PC5:

端口C;

TIMERIN、TIMEROUT:

定时器/计数器输入输出。

3、8155的寄存器

和单片机相同,可编程器件都是由寄存器控制,编程也就是对寄存器编程。

(1)命令/状态寄存器C/S,该寄存器地址为×××××000B

该寄存器是两个寄存器公用一个地址,(写是命令,读是状态)

命令寄存器:

(见表)

注意:

复位时,命令寄存器被置为00H,端口PA、PB都为输入方式。

状态寄存器:

状态寄存器用于查询当前状态。

读状态寄存器,TIMER自动清零。

(2)PA寄存器,地址:

×××××001B

为PA口寄存器。

(3)PB寄存器,地址:

×××××010B

为PB口寄存器。

(4)定时器低8位寄存器,地址:

×××××100B

定时器高8位寄存器,地址:

×××××101B

(5)PC寄存器地址:

×××××011B

为PC口寄存器,可以由命令寄存器中的PC1、PC2设置PC口为输入寄存器、输出寄存器,也可以PC的6个端口设为PA、PB口的控制线。

第五节中断扩展

1、为什么要扩展中断。

AT89C52单片机有两个外部中断请求输入端(即外部中断0、外部中断1)。

在实际应用中,往往有三个或三个以上的外部事件需要用中断进行处理,这就需要扩展外部中断源。

2、利用查询加中断的方式进行扩展

利用AT89C52的两个外部中断线,每一个中断线可以通过“与”的关系连接多个外部中断源,同时利用AT89C52的I/O端口作为各中断源的识别。

例:

用单片机监测X1,X2,X3三个外部设备在运行过程中是否有故障。

不管哪

一个设备一旦出现故障,必须马上处理,所以采用中断系统来监测这三个外部设备。

当系统无故障时,3个故障源输人端X1~X3全为低电平,对应的3个显示灯全灭;当某个设备出现故障时,其对应的输入端由低电平变为高电平,从而引起AT89C52单片机中断,中断服务程序的任务是判定故障,并点亮对应的发光二极管。

其中,发光二极管LEDl~LED3对应3个输入端X1~X3。

实现上述功能的电路如图所示。

3个故障源X1~X3通过“或非门”与AT89C52单片机的外部中断0输入端相连,同时,X1~X3与PO口的P1.0-P1.2引脚相接,3个发光二极管LEDl~LED3分别与P0口的P1.3~P1.5相接。

主程序如下:

ORG0000H;;主程序的入口地址

AJMPMAIN;跳转到主程序的开始处,

ORG0003H;外部中断0的中断程序入口地址

AJMPSERVE;跳转到中断服务程序处

MAIN:

ORLP1,#OFFH;灯全灭,准备读入

SETBIT0;选择边沿触发方式

SETBEX0;允许INT0中断

SETBEA;CPU开中断

AJMP$;等待中断

中断服务子程序如下:

SERVE:

PUSHPSW;保护规场

PUSHACC

JNBP1.0,L1;若x1无故障,跳到L1

CLRP1.3;点亮LED1

L1:

JNBP1.1,L2;若x2无故障,跳到L2

CLRP1.4;点亮LED2

L2:

JNBP1.2,L3;若x3无故障,跳到L3

CLRP1.5;点亮LED3

L3:

POPACC;恢复现场

POPPSW

RETI

 

第四节串行扩展总线接口技术

一、概述

1、并行口扩展:

线路复杂,占用资源多,使单片机本来就不多的资源显得很紧张,对于智能仪器,特别是便携式仪器,功耗低,体积小是一个重要的指标。

2、串行总线扩展:

占用MCU的I/O口线少,系统简单,体积小,编程也方便。

3、实现方法:

1)、串行口扩展I/O口线;

2)、SPI串行总线扩展;

3)、I2C总线扩展;

4)、单总线扩展。

5)、其它如USB总线等。

扩展应尽量采用串行扩展方案。

通过SPI或I2C总线扩展E2PROM、A/D、D/A、显示器、看门狗、时钟等芯片。

有些单片机已经带有该接口。

4、扩展时的共性问题

1)系统如何找到该器件;

2)如何对扩展的芯片进行控制;

3)通信协议是什么(特别是时序图);

4)怎样进行读或写。

 

二、I2C总线扩展

一)概述

1、什么是I2C总线

I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的一种简单、双向二进制同步串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息。

I2C总线产生于在80年代,最初为音频和视频设备开发。

2、I2C总线的几个基本概念

1)所有进入I2C总线系统中的设备都带有I2C总线接口,只需将I2C总线上所有节点的串行数据线SDA和时钟线SCL分别与总线的SDA和SCL相连即可。

2)当执行数据传送时,启动数据发送并产生时钟信号的器件称为主器件;被寻址的任何器件都可看作从器件;发送数据到总线上的器件称为发送器;从总线上接收数据的器件称为接收器。

3)I2C总线是多主机总线,可以有两个或更多的能够控制总线的器件与总线连接;同时I2C总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏。

4)I2C总线的寻址采用纯软件的寻址方法,无需片选线的连接,这样就简少了总线数量。

3、优点

①总线只有两根线,即串行时钟线SCL和串行数据线SDA。

②同步时钟允许器件以不同的波特率进行通信;总线的长度可高达7m,在标准I2C模式下数据传送率可达100kB/s,高速模式下可达400kB/s。

③它是一个真正的多主总线,带有竞争监测和仲裁电路,多个主机任意发送而不破坏总线上的数据。

下图中单片机有2个,单片机必须有I2C总线接口。

89C51无该接口,只能用于单主扩展。

④支持带电插拔,并有众多的外围接口芯片;并且能够以10Kb/s的最大传输速率支持40个组件。

4、I2C器件类型及用途

常用的12C总线外围通用器件有:

SRAM,EEPROM,ADC/DAC,I/O口,实时时钟芯片RTC等。

外围设备模块有LED驱动控制器构成的LED显示器,各种LCD驱动控制器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1