《IO接口电路及其扩展.ppt》由会员分享,可在线阅读,更多相关《IO接口电路及其扩展.ppt(60页珍藏版)》请在三一办公上搜索。
1、1,扩展方法(1)总线扩展方法 采用总线扩展的方法是将扩展的并行I/O口芯片连接到 MCS-51单片机的总线上,即数据总线使用P0口,地址总线使用P2和P0口。这种扩展方法不影响总线上其他扩展芯片的连接,在MCS-51单片机应用系统的I/O扩展中被广泛采用。(2)串行口扩展方法 MCS-51单片机串行口工作在方式0时,提供一种I/O扩展方法。,13.1 简单并行口扩展,这种扩展方法不占用并行总线且可以扩展多个并行I/O。由于采用串行输入输出的方法,故数据传输速度较慢,2,用通用芯片扩展I/O口时,要把输入口、输出口分别进行扩展。当构成输出口,接口芯片应具有锁存功能,以使输出数据能在输出口上保留
2、,便于外部设备读取;构成输入口时,接口芯片要具有总线缓冲功能。,3,典型芯片74LS244,图13-2 74LS244引脚排列、内部结构及封装,13.1.1 扩展并行口输入,4,+5V,图13-3 74LS244构成的简单输入端口(a),5,P2.7决定了74LS244的地址为:0B 其中“”代表任意电平。由于地址线中有无关位,且无关位可组成多种状态,则会出现“地址重叠”问题。所谓“地址重叠”,是指一个扩展芯片占有多个额定地址空间。在进行I/O扩展情况下,一般无关位取“1”。确定了地址以后,就可以读入扩展输入口的内容。程序如下:MOV DPTR,#0BFFFH;确定扩展芯片地址MOVX A,D
3、PTR;将扩展输入口内容读入累加器A当与74LS244相连的按键都没有按下时,输入全为1,若按下某键,则所在线输入为0。,6,典型芯片74LS245,7,图13-3 74LS244构成的简单输入端口(b),8,13.1.3 简单的并行口输出,典型8D锁存器芯片74LS27374LS37374LS377,9,图13-8 各种简单输出端口的扩展,10,图13-8 各种简单输出端口的扩展,11,图13-8 各种简单输出端口的扩展,12,P2.6决定了74LS377的地址为:0B 确定74LS377的口地址为0BFFFH,就可以往扩展输出口内写入内容了。程序如下:MOV DPTR,#0BFFFH;确定
4、扩展芯片地址 MOV A,#DATA;8位数据MOVX DPTR,A;将扩展输入口内容读入累加器A,13,13.2 8255通用可编程并行接口芯片,13.2.1 8255简介,8255A是Intel公司生产的通用可编程并行接口电路,广泛应用于单片机扩展并行I/O 口。,8255内部结构,14,8255内部结构,A和B口是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能,A口可选择工作方式0、1、2,B口有方式0和1可选。,15,8255内部结构,C口可以看作是一个独立的8位I/O口,也可以看作是两个独立的4位I/O口,对输出的数据具有锁存功能,对输入数据不具有锁存功能,不能独立设置
5、工作方式。,16,8255内部结构,数据总线缓冲器是一个8位的双向的三态缓冲器,17,8255内部结构,读/写控制逻辑电路负责管理8255A的数据传输过程。,18,8255/引脚图,D0D7:8位,双向,三态数据线,用来与单片机的数据总线相连。,RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清0,所有I/O端口的初始状态被置成输入。,CS:片选信号线,低电平有效。,RD:读信号,控制8255A将数据或状态信息送给CPU。,WR:写信号,控制CPU将数据或控制信息到8255A。,A1,A0:地址线,这两个引脚上的信号组合绝对对8255A内部的哪一个口或寄存器
6、进行操作。,19,8255的操作表,表13-1 8255的操作,20,8255共有三种工作方式,这些工作方式可用软件编程来指定。(1)工作方式0:基本输入输出方式(2)工作方式1:选通输入输出方式(3)工作方式2:双向总线方式 8255A端口A有三种方式可供选择,端口B有两种工作方式可供选择。具体的方式选择由工作方式控制字来确定,其格式如图13-11所示。,13.2.2 8255的工作方式,21,图13-11 8255工作方式控制字格式,22,(1)方式0:基本输入输出方式,这种方式不需要任何选通信号。A 口、B口及C 口的两个4位口中任何一个端口都可以被设定为输入或输出。作为输出口时,输出数
7、据锁存;作为输入口时,输入数据缓冲。,23,(2)方式1:选通输入输出方式,方式1是一种选通I/O方式,在这种方式下,A口和B口仍作为两个独立的8位I/O通道,可单独连接外设,通过编程分别设置它们作为输入或输出。而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余两位仍可工作在方式0,可通过编程设置为输入或输出。,24,A口和B口工作在方式1,当数据输入时,C口的引脚信号定义如图13-13所示。PC3,PC4和PC5定义为A口的联络信号线INTRA,和IBFA,PC0,PC1和PC2定义为B口的联络信号线INTRB,IBFB和,剩余的PC6和PC7仍可以作为基本I/O线,工作在
8、方式0。,图13-13 8255方式1的信号组态,25,:选通信号,输入,低电平有效。此信号由外设产生输入,当 有效时,选通A口或B口的输入数据锁存器,锁存由外设输入的数据,供CPU读取。,IBF:输入缓冲器满信号,输出,高电平信号。当A口或B口的输入数据锁存器接收到外设输入的数据时,IBF变为高电平,作为对外设 信号的响应,CPU读取数据信号后IBF被清除。,INTR:中断请求信号,输出,高电平有效,用于请求以中断方式传送数据。,方式1输入联络信号功能,26,为了能实现用中断方式传送数据,在8255A内部设有一个中断允许触发器INTE,当触发器为“1”时允许中断,为“0”时禁止中断。触发器置
9、“1”或置“0”是通过端口C置位/复位命令字设置的。,图13-12 端口C置位/复位命令字格式,A口的触发器由PC4置位或复位;,B口的触发器由PC2置位或复位。,27,方式1输出联络信号功能,:输出缓冲器满指示信号,输出,低电平有效。此信号由8255A发送给外设,当CPU将数据写入数据端口时,该信号变为低电平,用于通知外设读取数据端口中的数据。,:应答信号,输入,低电平有效。该信号由外设发送给8255A,作为对 信号的响应信号,表示输出的数据已经被外设接收,同时清除 信号。,INTR:中断请求信号,输出,高电平有效,用于请求以中断方式传送数据。,28,设8255A的A口工作在方式0,数据输出
10、,B口工作在方式1,数据输入,编写初始化程序(设8255A的端口地址为FF80HFF83H)。,例1,分析:8255初始化就是向控制寄存器写入工作方式控制字。,MOV DPTR,#0FF83HMOV A,#10000110BMOVX DPTR,A,29,8255的扩展电路如下图7所示,对8255各口作如下设置:A口方式0输入,B口方式1输出,C口高位部分为输出,低位部分为输入。试完成对8255的初始化编程。,MOV DPTR,#7FFFHMOV A,#95HMOVX DPTR,A,例2,30,应用举例1,下图为某MCS-51应用系统的3位LED 8段共阳极静态显示器的接口电路,(1)写出显示字
11、符“3”、“8”、“5”的段码,注意:段码的最低位为“a”段,段码的最高位为“dp”段(2)已知8255的PA口、PB口和PC口的地址分别为FF7CH、FF7DH、FF7EH。请编写出使3位LED共阳极显示器从左至右显示“3.85”的程序段。,31,具体要求:6个LED采用共阳极连接 79H7EH分别存放6位显示器的显示数据(09)8255的A口接LED显示器位控8255的B口接LED显示器段控,应用举例2,32,分析:8255的A口、B口、C口、控制寄存器的地址分别为7FFCH、7FFDH、7FFEH、7FFFH。工作方式控制字为80H。,33,编写程序,m_Mian SEGMENT COD
12、E RSG m_Main,34,35,13.3.1 8253的内部结构,三个计数器内部结构完全相同。每个计数器都由一个16位计数初值寄存器、一个16位减法计数器和一个16位计数值锁存器组成。,36,13.3.1 8253的内部结构,在写计数初值到计数通道或CPU读取计数通道到当前计数值时,各计数通道都有各自的端口地址。3个计数通道功能完全相同。,37,13.3.1 8253的内部结构,数据总线缓冲器有三个基本功能:(1)通过编程向8253写入确定8253工作方式的命令;(2)向计数寄存器装入计数初值;(3)读出当前计数值。,38,数据线:写控制字,读写计数器的计数值,计数器0的时钟输入端,计数
13、器0的输出端,为低电平的时候,CPU将计数值写入计数器或将控制字写入控制字寄存器,为低电平的时候,CPU读取所选计数器的内容,计数器0的门控信号脉冲输入端,控制计数,8253的引脚功能,39,8253的操作,40,13.3.2 8253的控制字和工作方式,41,1)控制字写入控制寄存器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态。初始状态对不同的模式来说不一定相同。2)在任何方式下,向8253写入的计数初值将于下一个CLK被装入计数单元。3)通常,在每个时钟脉冲CLK的上升沿,采样门控信号GATE。不同的工作方式下,门控信号的触发方式是有具体规定的,即或者是电平触发,或者是边沿触发
14、,在有的模式中,两种触发方式都是允许的。其中0、3、4是电平触发方式,1、2、3、5是上升沿触发。,几条基本原则,42,方式0计数结束中断方式1可编程单稳态触发器方式2分频器方式方式3方波信号发生器方式方式4软件选通方式方式5硬件选通方式,8253的工作方式,43,工作方式0:计数结束产生中断,在GATE=1时写入控制字,OUT端输出低电平为起始电平,装入计数初值n,开始计数。写信号后沿()经一个CLK()将n值装入计数器。每经过一个CLK,在CLK下降沿,计数器减1。n=0时,计数结束,OUT由低电平变为高电平(可利用该电平变化向CPU发出中断请求),并保持,不开始重新计数。只有写入另一个计
15、数值时,开始新的计数。在GATE=0时停止计数,直至GATE恢复高电平,再继续计数,44,工作方式0:计数结束产生中断,特点:写入控制字寄存器后,输出OUT就变低,GATE为高计数,为低停止计数;不自动重新计数,需要重新将计数值写入计数器后开始计数;计数到0时,可利用OUT 产生中断信号。,45,工作方式1:可编程单稳态触发器,写入控制字,OUT端输出高电平为起始电平。装入计数初值n后,必须等待GATE的上升沿来后才转入计数,这时OUT变低,开始计数,每一个计数脉冲,计数器值减1。计数到0,OUT变成高电平,负脉冲结束,脉冲宽度=tcn(tc为时钟周期)。在计数过程中,若GATE变低,不影响计
16、数。,方式1的时序图(计数过程中GATE仅有一个上升沿),46,方式1的时序图(计数过程中GATE不止产生一个上升沿),特点:写入控制字寄存器后,输出OUT就变高;GATE的上升沿触发计数,同时OUT变低,直到计数到0;在计数过程中,若GATE变低,不影响计数;遇到GATE的上升沿时,自动重新计数。,47,工作方式2:分频器,写入控制字,OUT端输出高电平为起始电平,装入计数初值n,开始计数。每一个计数脉冲下降沿n减1,当n减至1时,OUT变低,n减为0时,OUT变高,产生一个与时钟脉冲周期一样宽的负脉冲。接着自动装入n连续计数,输出频率为:fclk/n。计数过程中,允许重新装入新的n值,下一
17、个计数周期按新的n值计数。,在GATE=1时:,方式2的时序图,48,计数过程中,若GATE0,停止计数,并强迫OUT输出高电平,在GATE变为高电平后,重新装入n值,开始计数。,49,工作方式2:分频器,方式2的时序图,特点:写入控制字寄存器后,输出OUT就变高;GATE为高计数;计数到1时,OUT变低,计数到0时,OUT变高,并自动重新计数。GATE为低时,禁止计数,直到GATE变高,重新自动写入计数值计数。一般作为分频器使用。,50,工作方式3:方波频率发生器,输出频率为:fclk/n的方波。写入控制字后,OUT端输出低电平作为起始电平,装入计数值n后,变为高电平。n为偶数,每个时钟脉冲
18、下降沿n值减1,至n/2后,电平变为低电平,并继续减1计数至0,然后改变OUT电平,重新装入n,开始计数。n为奇数,输出高电平宽度为(n+1)/2,低电平宽度为(n-1)/2的方波。GATE=0 停止计数,并强迫OUT输出高电平,在GATE变高后,重新将n装入,开始计数。注:GATE功能同方式2,GATE=1,51,工作方式3:方波频率发生器,软、硬件启动,自动重复计数。装入初值后OUT端变高电平,然后OUT连续输出对称方波:前 N/2或(N+1)/2 个CLK,OUT为高后N/2或(N-1)/2 个CLK,OUT为低。计数过程中修改初值不影响本半轮计数过程。其余的与方式2 类似。,特点:,5
19、2,工作方式4:软件触发选通脉冲,写入控制字后,OUT端变为高电平,写入初始值后,计数器作减1计数,OUT电平保持不变。计数器减至0时,OUT端输出一个脉冲周期的负脉冲,然后停止计数,只有输入新的计数值后,才能开始新的计数。计数过程中,若GATE变低电平,停止计数,在其变高后,重新将n装入,开始计数。,53,工作方式5:硬件触发选通脉冲,写入控制字后,OUT端变为高电平,写入初始值n后,必须等待GATE的上升沿触发才转入计数。计数器减至0时,OUT端输出一个脉冲周期的负脉冲。然后n值自动装入计数器,但要等GATE的上升沿来后才再次开始计数。计数过程中,若GATE变低电平,不影响计数,但其上升沿
20、将使得n重新装入计数器,开始计数。,54,54,总结性应用举例,1.8253定时功能的应用,在计算机应用中,经常会遇到隔一定时间重复某一个动作的应用。,设某应用系统中,系统提供一个频率为10kHz的时钟信号,要求每隔100ms采集一次数据。已知8253的端口地址为7FF0H7FF3H,试完成8253的初始化编程。,55,55,8253用于定时中断,7FF07FF3H,56,56,(1)选择工作方式,57,57,(2)确定计数初值,已知 fCLK0=10kHz,则TCLK0=0.1ms,所以,计数初值 N=TOUT0/TCLK0=100ms/0.1ms=1000=03E8H,(3)初始化编程,根
21、据以上要求,可确定8253通道0的方式控制字为00110100B,即34H。,58,编程及应用,在使用8253芯片时,首先要对其进行初始化编程。初始化编程包括写入控制字和写入计数值两个步骤。,第一步,写入控制字。任一计数器的控制字都要从8253的控制口地址写入,控制哪个计数器由控制字的D7D6位来决定。,第二步,写入计数初始值。计数初始值经由各计数器的端口地址写入。若控制字里规定只写低八位,则写入低八位,高8位自动置0若控制字里规定只写高八位,则写入高八位,低8位自动置0。若是16位计数值,则分两次写入,先写入低8位,再写入高八位。,写入顺序:可按计数器分别写入控制字和初值。也可先写所有计数器控制字,再写入它们的初值,59,59,初始化程序段如下:,MOV DPTR,#7FF3HMOV A,#34HMOVX DPTR,AMOV DPTR,#7FF0HMOV A,#0E8HMOVX DPTR,AMOV A,#03HMOVX DPRT,A,;通道0,16位计数,方式2,二进制计数,;写入方式控制字到控制字寄存器,;计数器0地址,;计数初值低8位,;写入计数初值低8位到计数器0,;计数初值高8位,;写入计数初值高8位到计数器0,60,60,初始化程序段如下:,