《单片机的并行扩展.ppt》由会员分享,可在线阅读,更多相关《单片机的并行扩展.ppt(62页珍藏版)》请在课桌文档上搜索。
1、5-2 程序存储器的扩展,5-3 数据存储器的扩展,5-4 简单IO口的扩展,第5章 单片机的并行扩展,5-5 扩展可编程IO口8255A,5-6 小结,5-1 并行三总线的产生,5-1 并行三总线的产生,外扩展是构建单片机系统的重要内容,有两类外扩展:存储器扩展和I/O扩展;有两种外扩展方法:并行扩展和串行扩展。,单片机芯片内具有CPU、ROM、RAM、定时器/计数器及I/O口。但在实际应用中、大多数情况下仅靠片内资源是不够的。资源性扩展:包括存储器扩展和IO扩展。如何扩展?扩展功能如何实现?扩展部件如何连接?,5-1-1 片外三总线结构,图1 单片机并行扩展系统结构图,图2、89C51扩展
2、的三总线结构,1.地址总线:,地址总线(Address Bus,AB用于传送单片机送出的地址信号,以便进行存储器单元和I/O端口的选择。地址总线是单向的,只能由单片机向外发送信息。地址总线的数目决定了可直接访问的存储单元的数目。,2.数据总线:,数据总线(Data Bus,DB)用于单片机与存储器或I/O端口之间的数据传送。一般数据总线的位数与CPU的字长一致,MCS-51单片机的数据总线是8位的。数据总线是双向的,可以进行两个方向的数据传送。,3.控制总线:,控制总线(Control Bus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。,5-1-2 系统扩展
3、的实现,1.以P0口作低8位地址及8位数据的复用总线,复用,即一段时间内作两种或两种以上用途。,在这里指P0口在每个CPU的机器周期的前半个周期输出低8位地址,由地址锁存器锁存,然后由地址锁存器代替P0口输出低8位地址。后半个机器周期进行8位数据的输入输出。,2.以P2口作为高8位的地址总线,P0口的低8位地址加上P2的高8位地址就可以形成16位的地址总线,达到64KB的寻址能力。,但实际应用中,往往不需要扩展那么多地址,扩展多少用多少根线,P2口高位剩余的口线仍可作一般I/O口来使用。,3.控制信号线,ALE:地址锁存信号,用以实现对低8位地址的锁存。,PSEN:片外程序存储器读选通信号。,
4、EA:程序存储器选择信号。为低电平时,访问外部程序存储器;为高电平时,访问内外程序存储器(CPU复位先访问内部0号地址单元,然后根据PC指针的值访问内或外部程序存储器)。,WR:片外数据存储器写选通信号。,RD:片外数据存储器读选通信号。,5-2 程序存储器的扩展,1.存储器与微型机三总线的连接,(1)存储器数据线D0n连接CPU数据总线DB0n(2)存储器地址线A0N连接CPU地址总线低位AB0N。(3)存储器片选线CS连接CPU地址总线高位ABN+1。(4)存储器读写线OE、WE(R/W)连接CPU读写控制线RD、WR。,5-2-1 存储器的连接,图3、微机与存储器连接,2.存储器与单片机
5、的连接,单片机采用复用总线结构:数据与地址分时共用一组总线。当地址出现时需要锁存器锁存地址。,图4、单片机与存储器连接,图5、单片机访问存储器时序,地址锁存器:74LS373、8282,74LS373和Intel的8282具有相同的锁存功能,图6、74LS373、8282的引脚,5-2-2 扩展存储器概念,1.地址线的译码,1)线选法,直接以系统的地址线作为存储器芯片的片选信号,为此只需把用到的地址线与存储器芯片的片选端直接相连即可。,2)译码法,使用地址译码器对系统的片外地址进行译码,以其译码输出作为存储器芯片的片选信号。译码法又分为完全译码和部分译码两种。,2.扩展存储器所需芯片数目的确定
6、,若所选存储器芯片字长与单片机字长一致,则只需扩展容量。,芯片数目=系统扩展容量/存储器芯片容量,若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。,芯片数目=系统扩展容量/存储器芯片容量 系统字长/存储器芯片字长,5-2-4 存储器扩展的编址技术,所谓存储器编址,就是使用系统提供的地址线,通过适当的连接,最终达到一个编址唯一地对应存储器中一个存储单元的目的。,1.存储器编址分两个层次,(1)存储芯片的选择;(2)芯片内部存储单元的选择。,2.存储器映像,(1)线选法,(2)译码法:,对系统剩余的高位地址进行译码,以其译码输出作为片选信号。高效率地利用存储空间,适用于大容量
7、多芯片扩展。,常用的译码芯片有:74LS139(双2-4译码器)、74LS138(3-8译码器)和74LS154(4-16译码器)等。,3.74LS138(38译码器),3-8 地址译码器:74LS138的Y0、Y1、Y2分别连接三片存储器的片选端CE1、CE2、CE3各片存储器芯片分配地址:0000H1FFFH;:2000H3FFFH;:4000H5FFFH。,ABi:15141312 111098 7 6 5 4 3 2 1 015141312 11109 8 7 6 5 4 3 2 1 0:0000 0000 0000 0000 0001 1111 1111 1111:0010 0000
8、 0000 0000 0011 1111 1111 1111:0100 0000 0000 0000 0101 1111 1111 1111,5-2-5 EEPROM的扩展,常用EPROM芯片:Intel 2716(2KB=2K8位)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB),EEPROM是电可擦除PROM,既可全片擦除也可字节擦除,可在线擦除信息,又能失电保存信息,扩展程序存储器2716电路,5-2-6 8031单片机外接EEPROM,EEPROM 既能作为程序存储器又能作数据存储器。,片外存储器读信号=PSEN RD,5
9、-3 数据存储器的扩展,数据存储器即随机存取存储器(RAM),用于存放可随时修改的数据信息。单片机使用的主要是静态RAM。,MCS-51系列单片机片外数据存储器的空间可达64KB,而片内数据存储器的空间只有128B或256B。,5-3-1 数据存储器芯片,1.常用静态RAM芯片,常见的静态RAM芯片有6264(8K8位)、62256(32K8位)、628128(128K8位)等。,2.静态RAM(SRAM)芯片引脚功能,3.EEPROM芯片,常用的EEPROM有2816、2864A等,5-3-2 访问片外RAM的操作时序,1)读片外RAM操作时序,2)写片外RAM操作时序,5-3-3 89C5
10、1扩展2KB RAM,5-3-4 多片存储器芯片的扩展,1)线选法寻址,用线选法外扩3片6264,2)译码法寻址,用译码法扩展4片8K8位存储器芯片连线,5-4 简单I/O口的扩展,二、I/O接口的功能1、速度协调:锁存数据、传送联络信号。2、数据格式转换:并-串转换、A/D、D/A转换。3、电平转换:电平幅值或正/负逻辑转换。4、输入三态缓冲隔离:多个设备信号通过接口三态门隔离干扰信号。5、输出锁存驱动:驱动多个逻辑部件或大功率执行部件。,一、扩展I/O口原因:1、单片机本身接口功能有限;2、控制应用中的复杂接口要求:速度差异大、设备种类繁多、数据信号形式多种多样。因此,I/O设备必须通过I
11、/O接口电路与计算机连接。,5-4-1 I/O口的直接输入输出,1.有关I/O口基础知识,1)接口与接口电路,“接口”(Interface),具有界面、相互联系等含义,通过接口能使两个被连接的器件协同工作。单片机接口,则是研究单片机与外部设备之间的连接问题。,单片机与外部设备之间接口界面的硬件电路称为接口电路,2)口或端口,把接口电路中这些已编址并能进行读或(和)写操作的寄存器称为端口或简称口(Port)。,3)I/O接口的特点,异步性,实时性,与设备无关性,4)并行接口与串行接口,按数据传输方式的不同,接口有并行与串行之分,即并行接口与串行接口。,5)I/O口的编址方式,在MCS-51单片机
12、系统中,I/O口地址采用统一编址方式。,所谓统一编址方式,就是把I/O接口中的寄存器与外扩展的数据存储器中的存储单元同等对待,合在一起使用同一个64 KB的外扩展地址空间。,一、I/O接口信号及编址技术,(1)数据信息:微型机与外设交换的数据,经接口数据缓冲器传送。(2)状态信息:反映外设工作状态的信号。(3)控制信息:设定I/O电路工作方式的信号。,数据总线传递三种信息,用不同I/O地址区别:输入/输出数据缓冲器共用一个I/O地址:数据端口。状态/控制寄存器共用一个I/O地址:控制/状态端口。,CPU与I/O之间接口信号:(每个I/O接口分配有对应的I/O地址),二、I/O编址方式:,需要编
13、址的子系统:存储器和接口电路。1、存储器地址方式:统一编址 I/O接口共用存储器的地址空间,每个I/O端口视为一个存储单元。2、专用I/O地址方式:独立编址 有专用I/O控制信号和I/O指令。I/O接口独立编址,不占用存储器的地址空间。如的Z80。MCS-51、96为存储器地址方式(统一编址)。MCS-51单片机有片内I/O接口和扩展I/O接口。片内I/O接口寄存器在SFR中,使用片内数据存储器空间,扩展I/O接口使用片外数据存储器地址空间:输出指令:输入指令:片内寻址:MOV P1,A MOV A,P1片外寻址:MOVX DPTR,AMOVX A,DPTR MOVX R0,AMOVX A,R
14、0,三、I/O控制方式,(二)查询方式:(有条件传送方式)先查询I/O设备当前状态,若准备就绪,则交换数据,否则循环查询状态。1.硬件查询电路:设置状态锁存和数据锁存电路。,(一)无条件传送(同步程序传送)方式:已知I/O设备准备就绪,可直接进行数据传送。适用:1、具有常驻的或变化缓慢的数据信号的设备。如:指示灯、数码管等;2、工作速度快,足以和单片机同步工作的设备。如:DAC等。,2.软件查询程序:,INPUT:MOV DPTR,#SATUS;状态口地址 WAIT:MOVX A,DPTR JBACC.6,WAIT MOV DPTR,#DATA;数据口地址 MOVX A,DPTR,查询方式只适
15、用:单道作业、规模比较小的单片机系统。,先输入状态,决定是否进行数据传送。,(三)中断方式(程序中断方式):大多数时间计算机与外设并行工作,计算机不必因等待而浪费资源。当外设准备就绪,向CPU发出中断请求信号。CPU暂停当前程序,执行I/O操作。当I/O操作结束,CPU仍继续被中断的工作。,(四)直接存储器访问方式:(DMADirect Memory Access)用于计算机与高速外设进行大批量数据交换,由DMA控制器接管总线控制权,RAM与外设之间直接数据传输,不需CPU的介入。,四、单片机并行接口,并行I/O接口:用于微型机与外部设备之间并行传送数据。,五、MCS-51的并行接口4个8位双
16、向并行I/O接口:P0.0 P0.7、P1.0 P1.7、P2.0 P2.7、P3.0P3.7。均为多功能I/O接口,CPU按当前操作自动进行功能切换。,片内接口寄存器在SFR中的映象地址:1、I/O数据锁存器:P0、P1、P2、P3、SBUF。2、I/O控制/状态寄存器:IE、IP、TCON、TMOD、SCON、PCON。,3.读-修改-写:修改输出锁存器的内容。锁存器中的数据通过 上三态门进入内部总线,修改后再写入到锁存 器中。读-修改-写指令:并行口为目的操作数的指令:如:ANL P1,A,1.输出锁存:输出将使数据写入输出锁存器。输出指令:MOVP1,A;按字节操作 MOVP1.0,C
17、;按位操作2.输入三态:输入从I/O引脚上输入信号,读信号打开,引脚 信号通过下三态门进入内部总线。为保证可靠 输入,先写入“1”。MOVP1,#0FFH;使输出驱动器截止MOVA,P1;输入 P0P3的复位状态均为FFH,自动处于输入状态。,(一)并行接口的三种操作:,(二)并行口的使用:,(三)接口负载能力:P0驱动8个TTL电路,P1,P2,P3可驱动4个TTL电路。,3.P2口:双向I/O接口或高8位地址总线AB815。对读写片外存储器后,引脚仍恢复输出锁存器的内容。可用于读写片外数据存储器:MOV P2,#20HMOV R0,#00MOVX A,R0,4.P3口:双向并行接口和第二功
18、能:串行接口引脚:TXD、RXD中断输入引脚:INT0、INT1定时器输入引脚:T0、T1读写控制线:RD、WR,1.P0口:并行双向接口或系统总线DB07/AB07。P1、P2和P3为准双向口。,2.P1口:称为用户I/O接口。对片内EPROM编程时,用作 EPROM低8位地址信号线。,四、应用举例:,1.无条件传送方式:(见P166)指示灯立即反映开关状态。,ORG 0000H AJMP MAIN ORG 0100HMAIN:MOV A,#0FFH MOV P1,A;熄发光二极管 MOV A,P1;输入开关状态 SWAP A MOV P1,A;开关状态输出 SJMP MAIN,例:用4个发
19、光二极管对应显示4个开关的开合状态。如P1.0合则P1.4亮,其余依此类推。,2.中断传送方式:(见P167),先设好开关状态,然后发出中断请求信号,改变指示灯亮灭状态。,ORG 0000HAJMP MAINORG 0003HAJMP IOINTORG 0100HMAIN:SETB IT0;脉冲边沿触发SETB EX0;外部中断0允许SETB EA;总中断允许HERE:SJMP HERE;等待中断 ORG 0500HIOINT:MOV A,#0FFH;中断程序 MOV P1,A;熄发光二极管MOV A,P1;输入开关状态SWAP AMOV P1,A;开关状态输出RETI;中断返回,5-4-2
20、简单I/O口的扩展方法,1.I/O口扩展概述,1)单片机扩展方法,(1)总线扩展方法,(2)串行口扩展方法,2)I/O扩展常用芯片,(1)TTL/CMOS锁存器/缓冲器芯片:如74LS377、74LS374、74LS373、74LS273、74LS244、74LS245等;,(2)通用可编程I/O接口芯片:如8255、8155、8729等;,(3)可编程阵列:如GAL16V8、GAL20V8等。,2.扩展简单并行接口,1)扩展并行输出口,(1)用74LS377扩展并行输出口,(2)用74LS374扩展并行输出口,2)扩展并行输入口,3)合并输入输出口,5-5扩展可编程I/O口8255A,5-5
21、-1 8255A可编程外围并行接口的结构,1.8255A的内部结构,(1)3个8位并行I/O 接口PA、PB和PC,(2)2组控制:A组:PA和PC47 B组:PB和PC03,2.8255A的引脚功能,数据线(8条):D0D7,并行I/O总线(24条),地址线:CS:片选线;A1、A0:口选线,读写控制线:RD、WR,复位线:RESET,3.8255A方式控制字和状态字,8255A有两个控制字:方式控制字和C口置位/复位控制字。,方式选择控制字,(2)C口置位/复位控制字,4.8255A的3种工作方式,方式0(基本I/O方式),A口、B口、C口设置为方式0:是基本输入/输出方式。,PC口分成两
22、部分:上半口(PC4PC7)、下半口(PC0PC3),两部分可分别设置传送方向,方式1(选通I/O方式),方式1下A口、B口用于数据输入/输出,C口作为数据传送联络信号。,(1)方式1输入,(2)方式1输出,方式2(双向数据传送方式),工作方式2下外设在单一的8位总线上既能发送数据,也能接收数据(双向总线I/O),其输入和输出都锁存。,方式2下的输入输出操作时序,(1)输入操作,选通信号将数据锁存到8255A的输入锁存器中,从而使输入缓冲器满,信号IBFA成为高电平(有效),通知外设A口已收到数据,(2)输出操作,CPU响应中断,当用输出指令向8255A的A端口中写入一个数据时,会发出写脉冲信
23、号WR,5-5-2 8255A应用实例,89C51单片机8255A能够简单地连接而不需其他电路,【例5-1】按照图5-31对8255A初始化编程。要求:,(1)A、B、C口均为基本I/O输出方式。,(2)A口与上C口为基本I/O输出方式,B口与下C口为基本I/O输入方式。,(3)A口为应答I/O输入方式,B口为应答I/O输出方式。,解:(1)A、B、C口均为基本I/O输出方式。,define COM8255 XBYTE0 xE003*定义 8255A控制寄存器地址*void init8255(void)COM8255=0 x80;/*工作方式选择字送入 8255A控制寄存器,设置A、B、C口为
24、基本I/O输出方式*,(2)A口与上C口为基本I/O输出方式,B口与下C口为基本IO输入方式。,define COM8255 0 xE003*定义8255A控制寄存器地址*void init8255(void)XBYTECOM8255=0 x83;*工作方式选择字送入8255A控制寄存器,A口与上C 口为基本I/O输出方式,B口与下C口为基本I/O输入方式*,(3)A口为应答I/O输入方式,B口为应答I/O输出方式。,uchar xdata COM8255 _at_ 0 xE003;*定义8255A控制寄存器地址*void init8255(void)COM8255=0 xb4;*工作方式选择
25、字送入8255A控制寄存器,设置A 口为应答I/O输入方式(PAPC4PC7),B口为应答I/O输出方式(PBPC0PC3)*,【例5-2】如图5-32所示8255A与89C51的连接图,用8255A端口C的PC3引脚向外输出连续的正弦波信号,频率为500Hz。程序运行仿真如图5-33所示。,分析:可用两种方法,即软件延时方式和定时器1工作方式1中断实现延时。,(1)软件延时方式实现。将C口设置为基本I/O输出方式,先从PC3引脚输出高电平,间隔1ms后向PC3输出低电平,再间隔1ms后向PC3输出高电平,周而复始,则可实现从PC3输出频率为500Hz正方波。,(2)定时器1工作方式1中断实现
26、,可提高CPU的工作效率。将C口设置为基本I/O输出方式,12MHz晶振,定时器初值设为64536即可,每次中断PC3引脚翻转,周而复始,则可实现从PC3输出频率为500Hz正方波的目的。,解:(1)软件延时方式程序如下。,#include#include/绝对地址定义bit bitFF;/*位计数器*/#define PA8255 XBYTE0 xE000/*定义8255A A口地址*#define PB8255 XBYTE0 xE001/*定义8255A B口地址*#define PC8255 XBYTE0 xE002/*定义8255A C口地址*#define COM8255 XBYTE
27、0 xE003/*定义8255A 控制寄存器地址*void init8255(void)/*初始化8255*/COM8255=0 x80;void delay(unsigned char i)/*延时 ims函数,参考前面的程序*unsigned char j,k;for(k=0;ki;k+)for(j=0;j255;j+);,void main(void)init8255();while(1)COM8255=0 x07;/*PC3置1*delay(2);/*延时1ms*COM8255=0 x06;/PC3清0*delay(2);/*延时 lms*,(2)定时器1作方式1中断实现,#inclu
28、de#include/绝对地址定义bit bitFF;/*位计数器*/#define PA8255 XBYTE0 xE000/*定义8255A A口地址*#define PB8255 XBYTE0 xE001/*定义8255A B口地址*#define PC8255 XBYTE0 xE002/*定义8255A C口地址*#define COM8255 XBYTE0 xE003/*定义8255A 控制寄存器地址*void init8255(void)/*初始化8255*/COM8255=0 x80;,void main(void)init8255();/*初始化8255*TMOD=0 x10;/
29、*设置定时器 l为工作方式1*TH1=0 xFC;TL1=0 x18;/*定时器1每1000计数脉冲发生1次中断,12MHzJI晶振,定时时间1000us*TCON=0 x40;/*内部脉冲计数*IE=0 x88;/*打开定时器中断*while(1);,void timerlint(void)interrupt 3/定时器T1中断函数*/EA=0;/*关总中断*TR1=0;/*停计数*TH1=0 xFC;TL1=0 x18;/*重置计数初值*TR1=1;/*启动计数*if(bitFF)COM8255=0 x07;/*PC3置1*else COM8255=0 x06;/*PC3清0*bitFF=bitFF;/*位取反*/EA=1;/*开总中断*,1、单片机外部编址技术 2、IO口和存储器扩展的方法3、程序存储器扩展4、数据存储器扩展5、IO扩展6、并行接口芯片8255A,小 结,
链接地址:https://www.desk33.com/p-246798.html