《单片机及嵌入式系统原理》单片机课件 第十一章 51单片机的扩展_第1页
《单片机及嵌入式系统原理》单片机课件 第十一章 51单片机的扩展_第2页
《单片机及嵌入式系统原理》单片机课件 第十一章 51单片机的扩展_第3页
《单片机及嵌入式系统原理》单片机课件 第十一章 51单片机的扩展_第4页
《单片机及嵌入式系统原理》单片机课件 第十一章 51单片机的扩展_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

第十一章

51单片机的扩展本章内容11.1单片机系统总线和系统扩展方法(重点)11.2存储器的扩展(重点)11.3I/O接口的扩展(重点)11.4存储器和I/O综合扩展举例(掌握)11.5定时器/计数器扩展(掌握)11.6中断的扩展(掌握)11.7D/A扩展(掌握)11.8A/D扩展(掌握)11.9隔离与驱动(了解)

11.1概述(1)为什么需要扩展:单片机片内有ROM/RAM/定时器/IO口/中断/串口等接口电路,当这些接口资源不够时,必须扩展;(2)扩展的原则:扩展时,必须通过单片机的三总线(数据、地址和控制)进行,即P0做地址和数据复用,P2做地址,P3部分做控制。此时,P0/P2和P3的部分引脚,无法做I/O用,只能做总线用。(3)扩展时:如果扩展时多于一个芯片,那么此时必须片选,必须为扩展的芯片分配片外的RAM空间。(4)P0是地址和数据分时复用,必须加地址锁存芯片,以将地址和数据分开。(5)P3口部分引脚作为控制总线,此时/PSEN为程序存储器的控制信号,在取指令码时或执行MOVC指令时变为有效。/RD、/WR为数据存储器和I/O口的读、写控制信号,在执行MOVX指令时变为有效。11.1系统总线和扩展方法11.1系统总线和扩展方法11.1系统总线和扩展方法(6)被扩展芯片(不是单片机)的引脚规律 1)外围芯片的数据线一般是8根,可以很方便地直接与单片机数据总线直接相连。 2)外围芯片的地址线根数因芯片不同而不同,取决于片内存储单元的个数或I/O接口内寄存器(又称为端口)的个数,N根地址线和单元的个数的关系是:单元的个数=2N。 3)读控制线一般用符号/OE或/RD表示,其中/OE表示输出允许,/RD表示读允许,一般都是低电平有效。 4)写控制线一般用符号/WE或/WR表示写允许,一般都是低电平有效。 5)外围芯片通常有一个片选引脚/CS或/CE,表示芯片选择或芯片允许,一般都是低电平有效,仅当片选引脚为有效电平时,该芯片才会被选中使用总线,因此,一个芯片的某个单元或I/O接口的某个端口的地址由片选的地址和被扩展芯片的片内自选地址共同组成。

11.1系统总线和扩展方法(7)数据线的连接 外接芯片的数据线D0-D7接单片机的数据线的D0-D7,对于并行接口,数据线通常为8位、各位对应连接即。(8)控制线的连接 1)外接程序存储器: 由于程序存储器只读,通常使用状态是读操作,因此只需连/OE引脚。由于/PSEN为程序存储器的选通控制信号,因此单片机的/PSEN连接ROM的输出允许端/OE; 2)外接数据存储器和I/O口: 由于数据存储器可读可写,而/RD(P3.7)和/WR(P3.6)为数据存储器(RAM)和I/O口的读写控制信号,因此单片机的RD应连接扩展芯片的/OE(输出允许)或/RD端,单片机的/WR应连接扩展芯片的/WR或/WE端。11.1系统总线和扩展方法(9)地址地址线的连接单片机总共有16根地址线,被扩展芯片的地址线必须小于等于16根。为区别同类型的不同芯片,外围芯片通常都有一个片选引脚,仅当该引脚为有效电平(通常为低电平)该片才被选中,该引脚称为片选;其他未被选择的芯片也挂在总线上,但处于僵尸状态,不响应任何总线的读写操作。在被选中的情况下,被扩展芯片的片内有N根地址线,用于选择该芯片片内的存储单元或端口,称为字选或片内选择;因此,地址线的连接包括片选和片内地址线的连接。字选:被扩展芯片的字选(片内选择)N根地址线引脚直接接单片机的从A0开始的N-1低位地址线。设外围芯片有N根地址线(N≤16),那么外围芯片的片选只能和单片机的16-N根高位的线想办法连接(单片机的0至N-1根线被扩展芯片的片内N根线用了)。片选:通常连接连接方法三种:1)片选引脚接单片机用于片内寻址剩下的高位地址线中的某一根;此法称为线选法,或称线译码。用于外围芯片不多的情况,是最简单,最低廉的方法。2)片选引脚接单片机的所剩下高位地址线进行译码后的输出。译码可采用部分译码或全译码法,所谓部分译码就是用片内寻址剩下的高位地址线中的几根进行译码,所谓全译码就是用片内寻址剩下的所有的高位地址线进行译码。全译码的缺点是:要增加地址译码器,其优点:地址唯一。3)片选端可直接接地。当接入单片机的某类芯片仅一片时,片选端可直接接地使它始终处于选中状态。此法可用于最小系统。11.1系统总线和扩展方法(10)译码方法(线选)

各个芯片的地址范围,请老师在黑板上一步一步推导11.1系统总线和扩展方法(10)译码方法(译码)

各个芯片的地址范围,请老师在黑板上一步一步推导11.1系统总线和扩展方法关于地址空间

地址空间是CPU所能寻址的最大范围,比如对51单片机而言,有16根地址线,那么最大的可扩展地址空间是64K。

编程的时候,如MOVXA,0001H,这里的0001H是片外的地址,是从单片机的角度看的。也即,某个RAM芯片,该芯片有2根地址线,那么该RAM的容量是4B,这4B可能在单片机的地址空间中,位于0000H-0003H,也可能位于0001H-0004H,0002H-0005H……。从上述看出,RAM芯片的地址线根数,只能决定该芯片的容量,比如4B。而该芯片的4B位于单片机地址空间的位置,由片选决定的。11.2课题:嵌入式打标机中存储器的扩展11.2存储器的扩展为什么ALE(地址锁存信号)在一个程序存储器读周期内两次有效?11.2存储器的扩展11.2存储器的扩展(1)程序存储器扩展的基本方法1)地址线的连接

P0口(P0.0-P0.7)经锁存器接存储器低8位地址线(A0~A7)。

P2口(P2.0-P2.7)与存储器高8位地址线(A8~A15)相连接;2)数据线的连接

P0口与存储器的8位数据线(D0~D7)相连接。3)控制线的连接/PSEN接存储器的允许输出信号/OEALE接地址锁存器锁存信号G。4)片选信号的连接与地址译码当芯片的三组总线连接完后,将单片机地址总线剩下的高位地址线作为片选信号,一般片选信号的产生有三种方法即:线选法、部分译码法、全译码法等。11.2课题:嵌入式打标机中存储器的扩展芯片的地址范围,请老师在黑板上一步一步推导芯片的地址范围,请老师在黑板上一步一步推导11.2课题:嵌入式打标机中存储器的扩展11.2存储器的扩展(2)数据存储器扩展的基本方法 1)P0口通过8位地址锁存器向外部数据存储器分时提供低8位地址信息和8位数据信息; 2)单片机地址锁存信号ALE为8位地址锁存器提供选通信号; 3)P2口向外部数据存储器提供高8位地址; 4)单片机读信号端可直接向数据存储器端发“读”命令,使信息从外部数据存储器经P0口数据总线进入单片机;

5)单片机写信号/WR可直接向数据存储器端发“写”命令,使信息从单片机经P0口数据总线进入外部数据存储器。芯片的地址范围,请老师在黑板上一步一步推导11.2课题:嵌入式打标机中存储器的扩展11.3I/O的扩展(1)接口的概念

接口是CPU和外部设备之间通过总线进行连接的电路部分,是CPU与外界进行信息交换的中转站。要构成一个实际的微型计算机系统,不仅需要微处理器、存储器,还需要有各种接口,以将各种外部设备与CPU连接起来。前面章节的中断系统、定时器等,都属于接口范畴,只不过叫定时器接口电路、中断接口电路。本章的I/O口也属于接口范畴,叫I/O接口电路。51系列单片机片内集成了4个8位并行I/O口,但对于很多复杂的应用情况,单片机内的I/O接口等不够用的情况下就需要进行I/O扩展。

11.3I/O的扩展(2)I/O接口对于输入接口,接口电路的基本功能是三态缓冲。只有当输入接口被选中时,输入接口的三态缓冲器电路才被选通,外设可以将数据传送到系统的数据总线上。当输入接口没有被选中时,输入接口的三态缓冲器处于高阻态,相当于三态缓冲器的输出端和与系统数据总线断开,尽管该接口还挂在总线上。对于输出接口,接口电路的基本功能是数据锁存器。CPU在通过接口向外设输出数据时,是通过总线写周期来实现的,在总线写周期中,数据出现在系统数据总线上的时间是短暂的,因此需要在输出接口电路中使用数据锁存器来暂存CPU向外设传送的数据。因此,在设计接口电路的时候,必须遵循“输入要三态,输出要锁存”的基本原则。11.3I/O的扩展(3)I/O接口的端口从编程角度看,接口内部主要包括一个或多个可供CPU进行读/写操作的寄存器,接口内的这些寄存器又称为输入/输出(I/O)端口。各I/O端口由端口地址加以区分。因此,接口电路必须有地址线,因为需要单片机为其分配地址。因为接口有地址线,故与RAM/ROM一样,存在片选和字选。当然,片选的方法与ROM/RAM完全一样。

I/O端口可分为三种类型:①数据端口:用于存放CPU与外设间传送的数据信息;该端口有地址。②状态端口:用于暂存外设的状态信息;该端口有地址。③控制端口:用于存放CPU对外设或接口的控制信息,控制外设或接口的工作方式。该端口有地址。

I/O端口的编址方式:

①端口与存储器分别独立编址方式(I/O映射方式):如80X86系列、Z80系列采样这种方式,其特点是:端口与RAM分别独立编址,端口不占用RAM内存空间;有专门的I/O指令对端口进行读写,对内存操作的指令不能用于端口。②端口与存储器统一编址方式(存储器映射方式):如motorola的M6800系列及日立H8S单片机,其特点是:I/O端口相当于RAM的一部分,使内存容量减小;所有可对内存操作的指令对I/O端口均可使用,指令系统中不专设I/O指令。单片机属于这种。11.3I/O的扩展(4)CPU访问I/O接口的方式

1)程序控制的输入/输出这种方式分为无条件传送和有条件传送。①无条件传送:无条件传送是指程序执行到I/O指令时,立即无条件地执行I/O操作。无论接口是否准备好,CPU都将读、写数据。②有条件(查询式)传送:有条件传送是指CPU在传送数据前查询外设是否准备就绪,若就绪则进行数据传送。因此有条件传送能保证主机与外设间协调同步工作,但其缺点是查询操作会浪费CPU时间。(不停的查询) 2)中断程序控制的输入/输出在中断程序控制的输入/输出方式下,只有当外设要传送数据时才向CPU发出中断请求信号,所以该方式下外设处于主动地位,实时性较好,但其缺点是:①为能接受中断请求,CPU内部要有一些线路来控制;②中断响应和处理浪费CPU时间。因此中断程序控制的输入/输出方式适用于传送少量输入/输出数据的场合。 3)直接存储器存取方式直接存储器存取方式(DMA,DirectMemoryAccess)是在存储器与I/O设备间直接进行数据传送。这种传送方式下,数据并不经过CPU,因此其优点是速度快,缺点是需要使用DMA控制器,硬件连接较复杂。 4)专用I/O处理器方式专用I/O处理器方式是采用专用的I/O处理器(IOP),如8089芯片,这种专用的I/O处理器负责完成各种I/O操作与控制,因此减轻了CPU进行I/O操作的负担。11.3I/O的扩展(5)扩展一:通用锁存器、缓冲器扩展I/O

MOVDPTR,#7FFFH;指向74LS377输出MOVA,#data;累加器A中转MOVX@DPTR,A;向74LS377输出数据MOVDPTR,#0BFFFH;指向74LS373输入口MOVXA,@DPTR;输入数据MOV@R0,A;输入数据送数据区11.3I/O的扩展(5)扩展一:通用锁存器、缓冲器扩展I/O

273、244有相同的地址FEFFH(实际上只要保证P2.0=0,其他地址位无关紧要),然而由于使用不同的控制信号/RD和/WR,它们地址相同却不会发生数据传送冲突。244输入数据从273输出:MOVDPTR,#0FEFFH;指向扩展I/O地址MOVXA,@DPTR;从244读入数据MOVX@DPTR,A;向273输出数据11.3I/O的扩展(6)扩展二:8255扩展I/O

11.3I/O的扩展(6)扩展二:8255扩展I/O

A口、B口、C口和控制口的地址是连续的,分别对应8255片内地址线A1A0是:00,01,10,11.当A口地址为12H,那么B为13H,C为14H,控制口为15H。同理,如果C口为6H,那么A为4H,B为5H,控制口为7H。11.3I/O的扩展(6)扩展二:8255扩展I/O

11.3I/O的扩展(6)扩展二:8255扩展I/O

11.3I/O的扩展【例11-1】假设8255A控制端口的地址为7FFFH,编程设置控制字,使A口方式0输出;B口方式0输入。解:由于对C口无要求,控制C口的相应位D4,D0可为任意值,假设取0。所以,方式控制字为10000010B,即82H。MOVDPTR,#7FFFH ;指向控制口地址MOVA,#82H ;控制字→AMOVX@DPTR,A ;将控制字写入控制口【例11-2】假设8255A的控制口地址为203h,通过控制口置PC2为0,置PC4为1。程序段如下:MOVDPTR,#0203FH;指向控制口地址MOVA,#00000100B ;C口按位置位/复位控制字置PC2为0MOVX@DPTR,A ;将控制字写入控制口MOVA,#00001001B ;C口按位置位/复位控制字置PC4为1MOVX@DPTR,A ;将控制字写入控制口11.3I/O的扩展(7)8255的工作方式1)方式0(基本输入输出方式,重点)

A口、B口和C口都有方式0。工作在方式0的端口,为单向传送端口,输入或输出。作为输入口时相当于普通的三态门,作为输出口时相当于普通的锁存器。CPU可利用工作在方式0的端口,直接对端口进行读写操作,实现CPU与外设间的数据传送,没有任何条件。2)方式1(选通输入输出方式,了解)

仅A口和B口能工作在方式一。A口工作在方式1时,C口的某3根引脚作为A口的联络信号。B口工作在方式1时,C口的某3根引脚作为B口联络信号。3)方式2(双向传送方式,了解)

只有A口可以工作在方式2。工作在方式2时,C口的5根引脚(PC3~PC7)作为A口的联络信号。与方式0、方式1的单向传送不同,工作在方式2下的端口,具有双向传送功能。A口工作在方式2下,C口未做联络信号的3条引脚(PC0~PC2)可作为B口在方式1下的联络线,也可和B口一样工作在方式0下。由方式控制字决定其输入/输出。11.3I/O的扩展(7)8255的方式0举例【例11-3】设8255A口地址40H,要求A口工作在方式0输出,B口工作在方式1输入,C口的PC5输出为1。解:1)口地址为:A口:40H;B口:41H;C口:42H;控制寄存器口:43H2)根据控制字格式,可得控制字为:10000110BC口按位复位/置位字:0001011B3)初始化程序为:MOV DPTR,#0043H ;指向控制口MOV A,#10000110B ;方式控制字→AMOVX @DPTR,A ;控制字→控制口MOV A,#00001011B ;C口按位复位/置位字→AMOVX @DPTR,A ;控制字→控制口11.3I/O的扩展【例11-4】图11.28电路,将PA口设置为输出,PB口设置为输入,均工作于方式0,分别完成如下功能:(1)实现流水灯;2)按下K0-K7中任一键,LED0-LED7对应灯点亮。11.3I/O的扩展PA为方式0输出,PB为方式0输入,因此控制字为:1000×01×,如果将×全取1,则控制字就是10001011即8BH。(1)流水灯程序

ORG0000HJMPSTARTSTART:MOVSP,#5FH;堆栈初始化MOVA,#8BH;方式控制字MOVDPTR,#0DFFFH;控制口地址MOVX@DPTR,A;设置工作方式MOVA,#80HMOVDPTR,#0DFFCH;端口A的地址LOOP: MOVX@DPTR,AACALLDELAY;调用延时子程序RLA;左移JMPLOOP;循环DELAY:……;延时子程序(2)按下K0-K7中任一键,LED0-LED7对应灯点亮程序:ORG0000HJMPSTARTSTART: MOVSP,#5FHMOVA,#8BHMOVDPTR,#0DFFFHMOVX@DPTR,ALOOP:MOVDPTR,#0DFFDH;端口B地址MOVXA,@DPTR;读B口的数据MOVDPTR,#0DFFCH;端口A的地址MOVX@DPTR,AJMPLOOP11.4存储器和I/O综合扩展11.4课题:嵌入式打标机中存储器的扩展【例11-6】一单片机应用系统,需外扩2ΚB的EPR0M(一片2716),4KBRAM(两片6116),还需外扩一片8155并行接口芯片。这些芯片与MCS-51单片机的连接电路如图所示。11.4存储器和I/O综合扩展

8031的P2.7-P2.3=00000时,选中8155。在此前提下,当8031的P0口输出地址是XXXXX000-XXXXX101,且IO/M=1时,选中8155的I/O端口,即:

8031的P2.7-P2.3=00000时且IO/M=0时,选中8155的RAM单元,所以其内部RAM地址范围是:0000H--00FFH。

6116(1):0800H-0FFFH 6116(2):1000H-17FFH11.4存储器和I/O综合扩展(1)概述单片机内部有2个16位的定时器,如果不够用,需要扩展。8253内部有三个16位的减法计数器,分别成为计数器0、计数器1和计数器2。8253是一种接口电路,需要通过三总线与CPU打交道。8253的初始化过程需要掌握,即控制字和初始值需要理解。8253有6种计数、定时方式,每种方式又非常复杂,不建议记忆,理解即可。11.5定时器/计数器的扩展11.5定时器/计数器的扩展11.5定时器/计数器的扩展在A1A0=11时,设置控制字11.5定时器/计数器的扩展【例11-7】如图所示,CLK0输入的时钟脉冲频率为1kHz。8253的计数通道0采用方式0(计数结束中断方式),当开关K合上后经过1s使接于P1.0引脚的LED亮。11.5定时器/计数器的扩展8253的4个端口地址为:计数通道0为7FFCH,计数通道1为7FFDH,计数通道2为7FFEH,控制字寄存器(控制端口)为7FFFH。计数通道0的计数初值为1kHz/1Hz=1000。11.5定时器/计数器的扩展ORG0000HAJMPMAINORG0003HAJMPINT_0ORG0030HMAIN:MOVSP,#5FH ;建栈

SETBIT0;/INT0采用下降沿触发

SETBEX0;开外部中断0SETBEA;开总中断

MOVDPTR,#7FFFH;8253写方式控制字

MOVA,#00110001B;设置计数通道0为方式0,写16位数据,BCD计数MOVX@DPTR,AMOVDPTR,#7FFCH;向计数通道0写计数初值

MOVA,#00HMOVX@DPTR,AMOVA,#10HMOVX@DPTR,ASJMP$INT_0:CLRP1.0 ;使LED亮

RETIEND【例11-8】利用8253产生方波。如图所示,CLK0输入时钟脉冲频率为2MHz。使8253的OUT0端输出40kHz的方波。11.5定时器/计数器的扩展8253的4个端口地址为:计数通道0为7FFCH,计数通道1为7FFDH,计数通道2为7FFEH,控制字寄存器(控制端口)为7FFFH。计数通道0的计数初值为1kHz/1Hz=1000。11.5定时器/计数器的扩展计数通道0选择方式3,计数初值为2MHz/40KHz=50。程序如下:

ORG0000HAJMPMAINORG0030HMAIN:MOVDPTR,#7FFFH;8253写方式控制字

MOVA,#00010110B;通道0,方式3,低8位数据,二进制

MOVX@DPTR,AMOVDPTR,#7FFCH;写计数初值

MOVA,#50MOVX@DPTR,ASJMP$END11.6中断的扩展ORG0000HAJMPMAIN;转向主程序

ORG0003H

;入口地址

AJMPINTRP;转向中断

ORG0030HMAIN:SETBEX0;允许中断0

SETBIT0;边沿触发方式

SETBEACPU开中断HERE:SJMPHERE;等待中断

ORG0200HINTRP:PUSHPSW;中断服务程序

PUSHAJBP1.0,DV1JBP1.1,DV2JBP1.2,DV3JBP1.3,DV4EXIT:POPAPOPPSWRETIDV1:…

装置l的中断服务程序

AJMPEXITDV2:…

装置2的中断服务程序

AJMPEXITDV3:…

装置3的中断服务程序

ATMPEXITDV4:…

装置4的中断服务程序

AJMPEXIT【例11-9】电路如图所示,当CPU检测到/INT0的中断请求信号时,由P1口查询判断中断源,点亮相应的发光二极管。11.6中断的扩展ORG0000HAJMPMAIN;设主程序入口ORG0003H;INT0中断入口AJMPLL;转中断服务程序

ORG0100H;主程序MAIN:MOVP1,#0FFH;P1口置输入SETBIT0;边沿触发SETBEX0;允许INT0中断SETBEA;开中断AJMP$;等待中断在中断服务程序中查询ORG0200HLL:JNBP1.0,LED1;IN0未中断CLRP1.4;IN0中断,L0亮LED1:JNBP1.1,LED2;IN1未中断CLRP1.5;IN1中断,L1亮LED2:JNBP1.2,LED3;IN2未中断

CLRP1.6;IN2中断,L2亮LED3:JNBP1.3,END0;IN3未中断CLRP1.7;IN3中断,L3亮END0:RETI;返回11.7D/A扩展(1)概述

D/A转换器是把输入的数字量转换为模拟量的一种接口电路 一些CPU内部集成了D/A转换接口电路,如ARM,DSP等,但价格较贵,51单片机片内没有,必须扩展,且通过三总线扩展。D/A芯片的内部结构,属于数字电路的内容,不必细究D/A芯片分辨率指D/A转换的数字量的位数。输入数字量的最大位数越多,则输出电压或电流的等级数就越多,分辨率越高

8位的0832芯片和12位的1210芯片使用比较多

11.7课题:嵌入式打标机中A/D的扩展11.7课题:嵌入式打标机中A/D的扩展11.7课题:嵌入式打标机中A/D的扩展11.7121011.71210从上图的连接关系可以看出,高8位数据写入地址为E000H(P2.7=1,P2.6=1,P2.5=1),低4位数据的写入地址为C000H(P2.7=1,P2.6=1,P2.5=0),12位DAC寄存器的写入地址为2000H(P2.7=0,P2.6=0,P2.5=1)。设:R2中为D/A转换高8位数据,R3中为D/A转换低4位数据,则:PU

温馨提示

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

评论

0/150

提交评论