单片机扩展电路.ppt
第四章 MCS-51 单片机的系统扩展,本章主要介绍51系列单片机系统扩展问题,在本章中要研究较多的硬件方面及硬软结合方面的问题,本章与第一章关系密切,在学习本章内容之前,要先明确51系列单片机本身的系统资源,可先复习一下第一章的有关单片机硬件组成方面的内容。,本章将介绍以下具体内容:系统扩展的含义、单片机的地址总线和数据总线、常见系统扩展电路举例,一、系统扩展的含义 单片机中虽然已经集成了CPU、I/O口、定时器、中断系统、存储器等计算机的基本部件(即系统资源),但是对一些较复杂应用系统来说有时感到以上资源中的一种或几种不够用,这就需要在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,我们称为系统扩展(即系统资源的扩充)。需要解决的问题是单片机与相应芯片的接口电路连接(即地址总线、数据总线、控制总线的连接)与编程。,二、单片机的地址总线和数据总线 51系列单片机没有专用的对外地址总线和数据总线,其P0口和P2口既是通用I/O口,同时P0口还是分时复用的双向数据总线和低8位地址总线(一般需要加一级锁存器),而P2口则是高8位地址总线。,三、常见系统扩展电路系统扩展-单一功能的系统扩展、综合功能 的扩展。1.单一功能的系统扩展(1)存储器的扩展(程序存储器、数据存储 器、E2PROM),(a)程序存储器的扩展.程序存储器的作用-存放程序代码或常数表格.扩展时所用芯片-一般用只读型存储器芯片(可以是 EPROM、E2PROM、FLASH芯片等)。.扩展电路连接-用EPROM 2732扩展程序存储器。.存储器地址分析-究竟单片机输出什么地址值时,可以 指向存储器中的某一单元。,2732-4K EPROM,2732引脚功能,A7A6A5A4A3A2A1A0O0O1O2GND,VccA8A9A11OE/VppA10CEO7O6O5O4O3,2732,.扩展时所用芯片,.扩展电路连接,8031 2732数据总线的连接:P0.0-P0.7(数据总线)-O0-O7 地址总线的连接:P0.0-P0.7(地址总线低8位)-A0-A7P2.0-P2.3(地址总线高8位中的4位)-A8-A11控制总线的连接:PSEN(程序存储器允许,即读指令)-OE ALE(地址锁存允许)-接373的使能端 G,经过锁存器373,1,2,3,图4.1 从外存取指令时序图,.存储器地址分析-究竟单片机输出什么地址值时,可以,指向存储器中的某一单元。,8031 P2.3 P2.0 P0.7 P0.0(2732 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0)选中单元 0 0 0 0 0 0 0 0 0 0 0 0(0000H)0 0 0 0 0 0 0 0 0 0 0 0 1(0001H)1 0 0 0 0 0 0 0 0 0 0 1 0(0002H)2 0 0 0 0 0 0 0 0 0 0 1 1(0003H)3 0 0 0 0 0 0 0 0 0 1 0 0(0004H)4.1 1 1 1 1 1 1 1 1 1 1 1(0FFFH)4K-1可见,当单片机输出地址0000H0FFFH时,选中2732的04K-1号单元,即按照上面电路扩展的4K存储器的地址范围是0000H0FFFH(共4K字节)。,请思考:请同学们结合图4.1来分析图4.2中373的作 用,并说明没有它行不行?为什么?,.扩展时所用芯片,.程序存储器的作用,.扩展电路连接,.存储器地址分析,程序存储器的扩展,(b)数据存储器的扩展.数据存储器的作用-存放数据,可改写.扩展时所用芯片-一般用静态读写型存储器芯片SRAM,也可以用E2PROM、FLASH芯片等.扩展电路连接-用SRAM 6116扩展程序存储器。.存储器地址分析-究竟单片机输出什么地址值时,可 以指向存储器中的某一单元。,6116-2K SRAM,6116引脚功能,A7A6A5A4A3A2A1A0D0D1D2GND,VccA8A9WEOEA10CED7D6D5D4D3,6116,.扩展时所用芯片,.扩展电路连接,图4.5 扩展电路,8031 6116数据总线的连接:P0.0P0.7(数据总线)-D0D7 地址总线的连接:P0.0P0.7(地址总线低8位)-A0A7P2.0P2.2(地址总线高8位中的3位)-A8A10控制总线的连接:RD(读外部数据)-OE WR(写外部数据)-WE ALE(地址锁存允许)-接373的使能端 G,经过锁存器373,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,A0A7,三态,数据D0D7入,图4.4 读外部数据RAM时序图,RD,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,A0A7,数据D0D7出,图4.4 写外部数据RAM时序图,WR,一个机器周期,ALE,PSEN,P2,P0,地址A8A15,A0A7,三态,数据D0D7入,RD,图4.4 读外部数据RAM时序图,.存储器地址分析-究竟单片机输出什么地址值时,可以,指向存储器中的某一单元。,8031 P2.7 P2.2 P2.1 P2.0 P0.7 P0.0 选中单元(6116 CE A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0)0 X X X X 0 0 0 0 0 0 0 0 0 0 0(0000H)0 0 X X X X 0 0 0 0 0 0 0 0 0 0 1(0001H)1 0 X X X X 0 0 0 0 0 0 0 0 0 1 0(0002H)2 0 X X X X 0 0 0 0 0 0 0 0 0 1 1(0003H)3 0 X X X X 0 0 0 0 0 0 0 0 1 0 0(0004H)4.0 X X X X 1 1 1 1 1 1 1 1 1 1 1(07FFH)2K-1 可见,当单片机输出地址0000H07FFH时,选中6116的02K-1号单元,即按照上面电路扩展的4K存储器的地址范围是0000H07FFH(共2K字节)。,请注意,与扩展程序存储器相比较,有以下不同点:.存储器芯片为可读可写的静态RAM芯片,有读写控制引脚OE和WE。.单片机输出的对数据存储器的读写控制信号分别是RD(而不再是读程序存储器时的PSEN)和WR。,.扩展时所用芯片,.程序存储器的作用,.扩展电路连接,.存储器地址分析,数据存储器的扩展,(c)E2PROM的扩展,2864-8K E2PROM,2864引脚功能,N.CA12A7A6A5A4A3A2A1A0D0D1D2GND,VccWEN.CA8A9A11OEA10CED7D6D5D4D3,2864,.扩展时所用芯片,单片机 8031,P2.4,P2.0,A8,A12,ALE,RD,74LS373,G,2864,A7A6A5A4A3A2A1A0,D0D1D2D3D4D5D6D7,P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7,OE,CE,Q0Q1Q2Q3Q4Q5Q6Q7,D0D1D2D3D4D5D6D7,WE,WR,P2.7,PSEN,&,图4.9 扩展2864,请思考:什么情况下图4.9中的与门输出低电平,使E2PRAM的内容可以被读出,读出的是什么方面的内容?图中扩展的E2PRAM是外部数据存储器?外部程序存储器?两者都扩展了?,(2)外部中断源的扩展-51系列单片机有两个外部中断源(INT0、INT1),中断源的扩展可用与存储器扩展类似的方法,外接中断控制芯片(如8259)来进行扩展;也可以利用单片机中的定时器T0、T1来扩展(见第一章习题1.20);还可以外接门电路配合相应的查询软件进行简单的扩展。这里我们研究最后一种方法。,8031,1,1,1,1,P1.0,P1.1,P1.2,P1.3,INT0,ITS4,ITS3,ITS2,ITS1,+5V,图4.22 扩展外部中断源,R,要注意的是:.图4.22中的非门是OC(即集电极开路)门,图中的电阻是这些非门的上拉负载电阻,注意只有OC门才可以象图中那样采取线与方式连接。.此处是将一个外部中断源(INT0)扩展成了4个(ITS1-ITS4),同理还可以将INT1进行扩展。.由于经过一级反相,这4个中断源是上升沿或高电平引起中断。.不管这4个中断源中的哪一个或哪几个申请中断,都是通过INT0申请中断,因此处理程序入口地址只有一个即INT0的入口地址(0003H)。,中断处理程序PINT0:PUSH PSW JB P1.0,PIS1;查询ITS1有无中断请求 JB P1.1,PIS2;查询ITS2有无中断请求 JB P1.2,PIS3;查询ITS3有无中断请求 JB P1.3,PIS4;查询ITS4有无中断请求REP:POP PSW RETIPIS1:.;进入ITS1中断处理程序 AJMP REP PIS2:.;进入ITS2中断处理程序 AJMP REPPIS3:.;进入ITS3中断处理程序 AJMP REPPIS4:.;进入ITS4中断处理程序 AJMP REP,请思考:查询软件的作用是什么?没有 它行不行?,2.综合功能的扩展:使用具有综合功能的芯片、使用多个芯片扩展。(1)综合功能芯片扩展-8155 使用具有综合功能的可编程芯片8155来同时扩展单片机的I/O口、定时器、外部数据存储器RAM。.关于8155芯片,8155芯片的内部结构,256B静态RAM,A,定时器,B,C,口A,PA0PA7,口B,PB0PB7,PC0PC5,口C,IO/M,AD0AD7,CEALERDWRRESET,定时器输入,定时器输出,接单片机,接外设,接外设,接外设,图4.24b,8155引脚功能,PC3PC4 PC5 IO/MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7Vss,VccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA0,TIMER IN,RESET,TIMER OUT,图4.24a,CE,CE,IO/M,RD、WR,CE,I/O口地址-当IO/M 加高电平时,.8155的RAM和I/O口地址,RAM地址-当IO/M 加低电平时,此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是 0000 0000-1111 1111分别指向8155 RAM 的256个存储单元。,此时AD0-AD7(仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是:,8155的RAM和I/O口地址分配,.8155的使用(分二种情况:片内RAM的使用 各端口的使用),8155内RAM的使用:,与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/M 为低电平(见p91例1)。,8155各端口的使用:,A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。,8155命令字含义,PA,PB,PC1,PC2,IEA,IEB,TM1,TM2,00C口输入,A、B口基本I/O方式11C口输出,A、B口基本I/O方式01PC3-PC5输出,A口选通方式,B口基本I/O方式10A、B口选通方式,PC2、PC1C口数据传送方向及AB口工作方式,TM1、TM2计数器控制,.扩展电路的连接举例-见图4.25,接口电路非常简单,基本上是相同信号对接。,图4.25,请思考:对比图4.2(2732的扩展),为什么图4.25中扩展8155时,单片机P0口输出的地址信号没有经过373锁存而是直接接到8155的地址/数据复用线上了?,.应用举例-(见教材p91例1、例2)作业4.10、4.11,需要弄清以下几个问题:,.选片问题-,选片信号的功能是:当某个芯片的选片信号接低电平时,意味着该芯片被选中,而当其接高电平时,意味着该芯片没有被选中,此时就好象该芯片没有连接到电路中(实际上是其各引脚处于高阻态)。(在这部分以前所有扩展电路中所用的芯片的选片信号引脚CE,都是直接接地或者接某一P2口线的。),图4.28中的芯片138是3:8译码器,它在这里的作用是输出选片信号:其输出端Y0、Y1、Y2分别用来选择8155、6116(1)、6116(2)。138的引脚及功能见下表:,(2)多芯片扩展(见教材p92-93,图4.28)-使用多个芯片来进行综合功能扩展。,.译码器问题-,控 制 引 脚,输 入 引 脚,输 出 引 脚,G1 G2A G2B,C B A,Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0,1 0 0,0 0 0,1 1 1 1 1 1 1 0,1 0 0,0 0 1,1 1 1 1 1 1 0 1,1 0 0,0 1 0,1 1 1 1 1 0 1 1,1 0 0,0 1 1,1 1 1 1 0 1 1 1,1 0 0,1 0 0,1 1 1 0 1 1 1 1,1 0 0,1 0 1,1 1 0 1 1 1 1 1,1 0 0,1 1 0,1 0 1 1 1 1 1 1,1 0 0,1 1 1,0 1 1 1 1 1 1 1,138 功能表,.扩展电路,138,图4.28 多芯片扩展电路,请思考:,b.为什么图中 6116(1)的地址范围是 0800H-0FFFH?而 6116(2)的地址范围是 1000H-17FFH?,a.为什么图4.28中的8155的各端口地址分别是 0000H、0001H、0005H,而其内部RAM地址范围是 0000H-00FFH?,所以8155的各端口地址分别是 0000H、0001H、0005H。,且当IO/M=0时,选中8155的RAM单元,所以其内部RAM地址范围是 0000H-00FFH。,b.同理可得6116(1)和6116(2)的地址范围分别是 0800H-0FFFH和1000H-17FFH:,同样分析可知6116(2)的地址范围是1000H-17FFH,第四章 小结,具体内容,常见系统扩展电路举例,系统扩展的含义,单片机的地址总线和数据总线,存储器的扩展,外部中断源的扩展,综合功能的扩展,本章主要介绍51系列单片机接口技术问题,本章与第四章关系密切,是第四章的扩充,本章内容较多,由于学时限制我们只要求掌握其中的基本内容,具体是要掌握以下三点并要求了解第四点:,第五章 MCS-51 单片机的接口技术,接口是连接单片机与外围电路、芯片、设备(如I/O设备、A/D、D/A设备)的中间环节,它牵涉到很多问题(包括外围电路、设备、芯片的结构、使用方法、时序要求;单片机本身的硬件、软件资源等)。,一、接口的概念-,-用于接口的指令、产生的信号、数据交换方 式、端口地址的分配。,1.接口指令-单片机没有专用的接口指令,而是用外部数据操作指令(4四条)实现数据的I/O,即MOVX A,DPTR;读外部RAM,即输入MOVX A,Ri;读外部RAM,即输入MOVX DPTR,A;写外部RAM,即输出MOVX Ri,A;写外部RAM,即输出,二、接口技术要解决的问题,图4.4 读外部数据RAM时序图 即执行,MOVX A,DPTRMOVX A,Ri,指令执行时序,2.接口时序-就是执行上述MOVX类指令的时序(分读/写两种情况,见教材p96图5.1,也就是第四章中的p72图4.3和4.4),图4.4 写外部数据RAM时序图 即执行,MOVX DPTR,AMOVX Ri,A,指令执行时序,3.I/O数据交换方式-一般有无条件传送方式 延时等待方式 查询方式 中断方式等。,以A/D转换为例说明,延时等待方式,单片机由P1口某口线P1.x发出启动转换信号给A/D后,延时一段时间(假设经过这段时间A/D转换结束),然后单片机从P0口读入转换好的数据。,延时等待方式-,查询方式-,由单片机的P1口某口线P1.x发出启动转换信号给A/D,然后单片机由P1口某口线P1.y不断输入转换结束信号EOC并进行检测,发现EOC有效时,说明转换结束,单片机即可从P0口读入转换好的数据。,中断方式-,由单片机的P1口某口线P1.x发出启动转换信号给A/D后,就可以做别的工作了,当转换结束EOC有效时,向单片机发出中断请求,单片机即可在中断处理程序中从P0口读入转换好的数据。,4.端口地址的分配-单片机的I/O端口和外RAM统一编址,也即外RAM单元和I/O端口加起来最多不能超过64K个,确定I/O端口地址的方法有两种:,请思考:以上各种数据交换方式各有什么利弊。,线选法-单片机的单根地址线直接接到外部电路芯片(设备)的片选端(P98图5.3),图5.3 线选法译码地址,线选法译码地址,译码法-用译码器将单片机的(高位)地址线进行译码,译码输出信号作为外部电路芯片(设备)的片选信号(P99图5.4)。,控 制 引 脚,输 入 引 脚,输 出 引 脚,G1 G2A G2B,C B A,Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0,1 0 0,0 0 0,1 1 1 1 1 1 1 0,1 0 0,0 0 1,1 1 1 1 1 1 0 1,1 0 0,0 1 0,1 1 1 1 1 0 1 1,1 0 0,0 1 1,1 1 1 1 0 1 1 1,1 0 0,1 0 0,1 1 1 0 1 1 1 1,1 0 0,1 0 1,1 1 0 1 1 1 1 1,1 0 0,1 1 0,1 0 1 1 1 1 1 1,1 0 0,1 1 1,0 1 1 1 1 1 1 1,138 功能表,译码法译码地址,请思考:以上两种确定I/O端口的方法各有什么利弊?什么是全译码?部分译码?什么是地址重叠?什么时候会发生地址重叠?,线选法:接线简单,地址重叠较多,地址空间没有得到充分利用,当单片机外围芯片较少时采用。,译码法:需要硬件(译码器),电路稍复杂,但地址空间可以得到充分利用,地址重叠少。,全译码:所有(高位)地址线全部参与译码,没有地址重叠问题。,部分译码:部分(高位)地址线全部参与译码,有部分地址重叠。,什么时候会发生地址重叠当存在未用到的地址线时发生。因为这些地址线可设为“1”,也可设为“0”。,三几种常用接口电路举例,D/A电路一般是作成集成电路芯片,使用时要注意2个问题:一个是转换时间及转换精度;另一个是转换出来的模拟量的形式是什么(电流量还是电压量)。,1.D/A转换电路接口技术,-D/A转换即是将数字量转换成相应的模拟量,常用于控制系统中。如单片机输出不同的数字量经D/A转换后加给直流电机,即可控制电机的转速。,D/A转换原理-倒T型电阻网络D/A转换电路原理,图5.6(a)倒T型电阻网络D/A转换原理图,R,2R,2R,2R,2R,R,R,R,R,D0,D1,D2,D3,节点3,节点2,节点1,节点0,I,VREF,+,-,VOUT,I3,I2,I1,I0,图中 D3 D2 D1 D0是4位二进制数字量输入,当D3 D2 D1 D0中的某一位状态为1时,图中开关打向右方,为0 时,开关打向左方。,RF,IOUT1,IOUT2,VREF为基准电压输入,Vout是电压模拟量输出。由运算放大器概念可知:,Vout=-RFIout1,Iout1,是开关打向右端的各支路电流,Ii,之和,实际上,(其中 就是数字量D3 D2 D1 D0的某一位),Di,由等效电路图5.6(b)可知,各支路电流分别为:,上式右边,表示的就是数字量D3 D2 D1 D0的值(按权展开),而左边是模拟量输出值,可见模拟量输出正比于数字量输入,即实现了D/A转换。,请思考:倒T型电阻网络相对于权电阻网络有什么优势?,b.DAC0832与单片机的接口,.DAC0832的引脚,0832-8位D/A,0832引脚功能,IOUT2,电流输出2,CS,选片,WR1,输入写,DI0DI7,数据线,CSWR1AGNDDI3DI2DI1DI0VREFRFRDGND,VccILEWR2XFERDI4DI5DI6DI7IOUT2IOUT1,DAC写,WR2,IOUT1,电流输出1,数据锁存,ILE,数据传送,XFER,.DAC0832的结构,输入寄存器,DAC寄存器,D/A转换器,ILE,CS,WR1,WR2,XFER,IOUT1,IOUT2,DI7DI0,RFR,VREF,.DAC0832与单片机的接口,单缓冲方式接口电路-将两级寄存器的控制信号并接在一起,相当于控制一级寄存器(线选译码地址00FEH)。,8031,WR,ALE,P0,DI7DI0,CS,XFER,WR1,WR2,DAC0832,IOUT2,IOUT1,+,-,RFR,A0,373,G,A7A0,图5.9 DAC0832单缓冲方式接口电路图,ILE,+5V,采用单缓冲方式输出锯齿波、矩形波、三角波、梯形波等的D/A转换程序(见教材p103105),锯齿波,ORG 2000H,START:MOV DPTR,#00FEH;选中0832,MOV A,#00H;D/A数据初值,LP:MOVX DPTR,A;转换,INC A;修改D/A数据,SJMP LP;循环,输出连续模拟量,三角波,ORG 2000H,START:MOV DPTR,#00FEH;选中0832,MOV A,#00H;D/A数据初值,UP:MOVX DPTR,A;转换,INC A;修改D/A数据(上升),JNZ UP;未上升到最大值,继续,DOWN:DEC A;否则,修改D/A数据(下降),MOVX DPTR,A;转换,JNZ DOWN;未下降到最小值,继续,SJMP UP;一个周期结束,继续,双缓冲方式-略,