IO接口扩展电路设计.doc_第1页
IO接口扩展电路设计.doc_第2页
IO接口扩展电路设计.doc_第3页
IO接口扩展电路设计.doc_第4页
IO接口扩展电路设计.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

i/o接口扩展电路设计 8051系列单片机如果系统不做任何扩展,p0p3接口可做i/o接口使用。只要稍微扩展系统,p0、p2接口则被用为地址线。p0接口还兼做数据线,p3接口常被专用线占用,只有pl接口可做i/o接口。一个实际系统,只有8位io接口往往是不够用的,所以i/o接口也需要扩展。本节重点介绍i/o接口扩展方法及应用实例。 i/o接口扩展方式主要有两种:总线扩展法和串行口扩展法。总线扩展又可分为简单i/o接口扩展和可编程i/o接口扩展。 扩展i/o接口常用芯片有ttl、cmos锁存器、三态门芯片,如74系列的373、244、273、367等,这些常用来扩展简单i/o接口。可编程芯片常用8255、8155等,利用程序对芯片进行设置,软硬件结合实现对i/o接口的扩展。 简单i/o接口扩展 在单片机应用系统中,利用ttl芯片、coms锁存器、三态门等接口芯片把p0接口扩展,常选用74ls273、74ls373、74ls244等芯片。这些芯片价格低,结构简单,使扩展灵活方便。如图6-7所示是一个利用74ls273和74ls244,将8位p0接口扩展成简单的输入、输出口的电路。74ls273是8d锁存器扩展输出口,输出端接8个led发光二极管,以显示开关状态,某位低电平时二极管发光。74ls244是缓冲驱动器,扩展输入口,它的8个输入端分别接8个按钮开关。74ls273与74ls244的工作受p2.0、rd、wr三条控制线控制。其工作原理如下。当p2.0=0,wr=0(rd=1)选中74ls273芯片,cpu通过p0接口输出数据锁存到74ls273,74ls273的输出端低电平位对应的led发光二极管点亮;当p2.0=0,rd=0(wr=1)时选中74ls244,此时若无键按下,输入全为高电平,当某键按下时则对应位输入为“0”,74ls244的输入端不全为“1”,其输入状态通过p0接口数据线被cpu读入机内。总之,在图6-7中只要保证p2.0端低电平就有可能使扩展输入口或输出口工作。至于哪一个口工作受wr和rd控制线控制,二者不会同时为“0”,故在图6-7中,两个扩展芯片可共用一个地址。扩展口地址确定原则,只要保证p2.0为“0” 。其他地址位或“0”或“1”即可。如地址用feffh(无效位全为“1”),用0000h(无效位全为“0”)。输出程序段:mov a, #data ;数据amov dptr, #0feffh ;i/o地址dptrmovx dptr, a ;wr为低电平,数据74ls273口输出输入程序段:mov dptr, #ofeffh ;i/o地址dptrmovx a, dptr ;rd为低电平,74ls244接口数据读入内部ram例 要求编程把按键状态通过图6-7中的发光二极管显示出来。程序lp: mov dptr, #0feffh ;输入口地址dptr mov a, dptr ;键状态送 a movx dptr, a ;a 数据送显示输出口 sjmp lp ;(输入、输出公用一个地址)反复连续执行8255可编程并行i/o接口扩展与电路设计8255 是一个单片机系统常用的可编程芯片,利用指令设置各口的工作方式。为了对8255合理设置,灵活应用,有必要了解他的内部结构及工作原理。1.8255内部结构及引脚功能8255是一个有40引脚双列支插型可编程芯片,内部及引脚如图6-8所示。由图6-8可见,8255内部有3个并行的8位i/o接口,分别称为a口、b口、c口。扩展一片8255则可扩展24位并行端口。引脚功能介绍如下:(1) 接口线a、b、c 3个i/o接口的引线端分别为:pa0pa7、pb0pb7、pc0pc7共24条端线。3个口皆为锁存/缓冲寄存器,a口、b口有锁存功能,c口无锁存功能。a、b、c 3口的工作方式由程序设置。a口可设置为输入或输出或双向方式工作。b口只能设置为输入或输出,不能双向方式工作。c口可设置为输入或输出口。它的特点是可分成高、低两个4位使用。上半部pc4pc7与a口组成一组叫a组;下半部pc0pc3与b口组成一组为b组,便于控制。 (2) 数据线8255是8位芯片,有8位数据线d0d7。数据线接于8051的p0接口,用以实现8255与cpu之间的数据传送。(3) 控制线控制线控制8255的读、写、复位及片选等。rd:读入控制线,低电平有效,当其为低电平时cpu对8255进行读操作,此时8255相应口为输入口。wr:输出控制线,低电平有效,当wr为低电平时,cpu输出数据或命令到8255端口,此时8255相应口为输出口。reset:复位端,高电平有效,8255内部寄存器全清0,24条i/o口线为高阻状态。cs:片选线,当cs为低电平时,cpu选中此8255芯片。(4) 地址线8255共占用4个口地址,为a、b、c口及控制口地址。这4个地址之间的选择由a0、a1两端口线控制。a0、a1通常接于单片机的地址线最低两位p0.o、p0.1,二者组合决定了4个端口地址,口地址选择方式如下:a1a0=00,选择a口;a1a0=01,选择b口;a1a0=10,选择c口;a1a0=11,选择控制口。除这两位外,其他位状态还与硬件接线有关,各口具体地址,结合实际电路才能确定。2.方式选择及方式控制字(1) 8255工作方式8255有3种工作方式:方式0、方式1,方式2。方式0时,a、b、c三口都可作基本的输入或输出口;方式1时,a、b口可作选通输入或输出,c口部分作专用联络线;方式2时,a口为双向口,c口部分为专用联络线,b口无此方式。8255的c口专用功能如表6-3所列。 (2) 方式选择 8255的方式选择由方式控制字决定。方式控制字是8255内部方式控制寄存器的状态字,它由指令写入控制寄存器中a、b、c口控制位为“1”,对应口为输入方式,若为“0”则为输出方式。例如,控制字状态为10010101b,表示a组为方式0(d6d5=00),a口为输入方式(d4=1),c口上半部为输出方式(d3=0);b组方式1(d2=1)中,b口为输出(d1=0),c口下半部为输入方式(d0=1)。d7=0只能对c口位操作,位操作内容由控制寄存器相应位状态决定。例如,若控制字为01h,即控制寄存器格式为00000001b,表示c口位操作(d7=0),将pc0位置“1”(d3d2d1=000,do=l置“1”),同理若控制字为0eh则把c口最高位pc7置“0”即复位。8255扩展电路及地址设置 如图6-9所示是8051单片机扩展一片8255的电路图。图中,74ls373是地址锁存器。8255的地址线ai、a0经74ls373接于p0.1、p0.0;片选端cs经74ls373与p0.7接通,其他地址线悬空;8255的控制线rd、wr直接接于8051的rd和wr端;数据线db接于p0口。18255地址口确定图6-9中8255只有3根线接于地址线。片选cs、地址选择端a1、a0。分别接于p0.7,p0.1、p0.0其他地址线全悬空。显然只要保证p0.7为低电平时,选中该8255,若p0.1、p0.0再为“00”选中8255的a口,同理p0.1、p0.0为“01”、“10”、“11”分别选中b口、c口及控制口。若地址口用16位表示,其他无用端全设为“1”,则8255的a、b、c及控制口地址分别可为 ff7ch、ff7dh、ff7eh、ff7fh,无用位为“0”则4个地址为0000h、0001h、0002h、0003h,只要保证cs、a1、a0的状态,无用位设为“0”或“1”无关。掌握了确定地址的方法,使用者可灵活选择地址。 28255初始化 使用8255芯片时,首先要对它初始化。所谓初始化,也就是对8255的3个端口的工作方式预先设置。设置控制字经控制口写入。 例如图6-9电路,欲设置8255的a、b、c口全为输出状态,控制字为80h。程序:mov dptr, #0003h ;8255控制口地址dptrmov a, #80h ;控制字送amovx dptr, a ;控制字写入控制寄存器 利用这几条指令对8255初始化后,a、b、c 3个口才能作为输出口使用。当然改变控制字,则可改变3个端口的工作方式。8155可编程i/o接口扩展设计8155可编程接口芯片与8255的使用方法类似,只是二者在结构与功能上有所不同。18155结构及引脚 8155 内部也有3个i/o接口a、b、c口,与8255的主要区别是c口只有6位,i/o接口共22位,比8255多一个14位可编程定时/计数器,还多256b的静态ram。8155共40引脚,双列直插式封装,如图6-10所示。(1) i/o接口线pa0pa7,pb0pb7,pc0pc5分别为a、b、c 3个i/o接口引线端。a、b、c口多用于与外设之间的数据传送;c口还可以作为a、b口的控制线。(2) 地址数据线 8155的低8位地址线和数据线共用ad0ad7,故称为地址数据线。当ale=1时,输入的是地址信息,否则是数据信息。当与8051单片机连接时,ale下降沿到,将p0接口输出的低8位地址信息及ce、io/m状态都锁存到8155内部寄存器。因此8155的ad0ad7直接与p0接口相联,低8位地址不需要外接锁存器,这点与8255不同。(3) 控制线 ale:地址锁存线。ale=1表示给8155输入的是地址信息,当ale下降沿时,把地址锁存到8155中。io/m:ram与i/o接口的选择线。io/m=0选中8155内部ram区,io/m=1 选择3个i/o接口、定时/计数器和命令寄存器。ce:片选线,rd:读控制线,wr:写控制线。 timerin:定时计数器外部脉冲输入端。timerout:定时/计数器输出端。2. 8155功能及操作 8155具有3种功能,下面介绍具体操作。 (1) 作i/o接口使用io/m=1时8155作i/o接口使用。各口的工作方式通过内部控制寄存器设置。8155工作于i/o口时,各方式具体功能如表6-4所列。表6-48155 i/o接口工作方式及功能 pc2 pc1方式功 能 0 0方式1a、b口定义为基本输入/输出口;c口为输入口 1 1方式2a、b口定义为基本输入/输出口;c口为输入口 0 1方式3a口为选通输出,b口基本输入/输出pc3pc5输出,pc0pc2作a口选通控制pc0;aintr,pc1,abf,pc2,astb 1 0方式4a口、b口都作为选通输入/输出方式pc0pc2控制a口,同方式3pc3pc5控制b口,pc3;bintr,pc4:bbfpc5:bstb 2)状态寄存器格式8155有一个状态寄存器,它锁存i/o接口和定时器当前状态供单片机查询。状态寄存器和控制寄存器共用一个地址,所不同的是状态寄存器只能读出不能写入而控制寄存器只能写入不能读出。标志寄存器皆为高电平有效。(2) 作扩展ram 8155作为单片机扩展ram 256b,操作很简单,只要使io/m控制端为低电平即可。通常io/m端、ce端与p2接口两位相连,二者皆为低电平决定了ram的高8位地址,p0接口与ad0ad7相接决定ram的低8位地址。注意与其他数据存储器统一编址。 (3) 作定时器使用当io/m=1时,8155也可作定时器使用。8155内的可编程定时/计数器实际是一个14位的减法计数器。它共有两个8位寄存器组成,低8位和高6位存放计数初值,最高2位控制定时器的工作方式。m2m1决定的定时方式及波形,8155的定时计数器为计数方式时。由引脚timerin(3)从外部输入计数脉冲;为定时方式时,则接单片机系统时钟。无论定时或计数方式都从timerout端输出脉冲或方波。 注意:如果写入定时器的计数初值为奇数,方波输出将不对称。例如计数初值为9,单方波方式输出方波在5个脉冲周期为高电平,4个脉冲周期内为低电平。8155任何时候都可以置定时初值和工作方式,只要重新启动即可。计数初值为23fffh之间,终值为2。 8155计数方式一般作信号发生器使用,输入连续脉冲后,由编程控制输出不同波形。3. 8155的i/o接口及ram地址分配 8155和其他芯片一样统一按16位地址。它的地址范围分两种情况。 当ram方式,io/m=0、ce=0(二者接p2口),其ram中数据地址范围可为0000h- 00ffh(无关位取为0)。ram应与系统中其他数据存储器统一编址。表 6-5 i/o接口及定时器地址编码 ad2 ad1 ad0选中i/o接口或定时寄存器低8位地址编码 0 0 0控制(命令)/状态寄存器00h 0 0 1pa口01h 0 1 0pb口02h 0 1 1pc口03h 1 0 0 定时器低8位04h 1 0 1定时器高8位05h 当io/m=1、ce=0时工作在i/o接口或定时器方式,这种情况8155共需要占6个地址,6个地址由地址低8位中最低3位ad2、adl、ado编码决定,编码格式如表6-5所列。4. 8051单片机与8155接口电路举例如图6-11所示是8051单片机与8155芯片接口电路之一。结合硬件电路着重说明8155地址口的确定及初始化程序。(1) 8051与8155连接特点及地址分配 mcs-51系列单片机可以直接和8155连接,低8位地址可不加锁存器。adoad7直接接于p0口,8155的ale直接与8051 ale相接,这点优于8255。 图中8155的io/m接8051的p2.0端,ce接p2.1端。 io/m=0, ce=0工作在ram方式,其地址范围为0000h00ffh(无用位设为0)。 io/m=1,ce=0 8155工作在 i/o接口或定时方式,其地址确定方法:高位保证p2.1=0, p2.0=1其他无用位设为0,这样高位地址为01h,再考虑低位ad2、ad1、ad0三位编码可确定8155的以下6个地址:控制/状态字地址 0100ha口地址 0101hb口地址 0102hc口地址 0103h定时器低8位地址 0104h定时器高8位地址 0105h(2) 8155初始化用指令把8155设置成各种工作方式:1)设置i/o口工作方式例1 设a口为基本输出,b口为基本输入,c口输出。分析:根据题目要求,控制寄存器状态为00001101b(0dh),编程把控制字送入即可。程序为: mov dptr, #0100h ;控制寄存器dptr mov a, #0dh ;控制字a movx dptr, a ;控制字送控制寄存器无论控制字为何值,都必须通过上述方式,把控制字送入控制寄存器,才能正确设置8155中i/o口工作方式。2)设置ram方式。例2 编程使cpu往8155ram30h单元送立即数88h。程序为:mov dptr, #0030h ;ram数据单元地址dptrmov a,#88h ;立即数送入amovx dptr, a ;立即数送入0030h中 使用ram时必在io/m=0条件下。3) 设置为定时方式。例3 设8155的定时/计数器为方波发生器,输出方波频率为输入时钟频率的24分频。初始化程序如下: mov dptr,#0104h ;定时器低8位地址dftr mov a, #18h ;18h-24d分频系数a movx dptr,a ;定时初值送入定时器低8位 inc dptr ;0105h是定时高8位地址 mov a,#40h ;定时器方式1 movx dptr,a ;a 定时器高位地址 mov dptr,#0100h ;控制口地址dptr mov a, #0c2h ;启动计数器,b口输出,a、c口输入 movx dptr,a 与8155芯片类似芯片如8156,除选片端ce高电平有效外,其他功能及引脚与8155完全相同。8755内部有2kb eprom和两个i/o接口,详细参数可查阅有关资料。串行口扩展i/o接口 单片机控制系统中,串行口常用来扩展io接口,使用移位寄存器作为锁存或输入信号的接口,可以方便地扩展并行输入、输出口。这种方法不占用片外ram地址,简单易行,便于操作,适用于速度较慢、实时性要求不高的场合。1. 串行口扩展并行输入口 74ls165芯片是8位并行输入和串行移位输出寄存器。原则上利用n片74ls165与8051的3根端口线相连,可扩展8n根并行输入口线。图6-12所示利用2片74lsl65与串行口配合,扩展16根并行输入线的电路。由图可见,8051仅用了3根线,分别为串行口输入线rxd(p3.0)、串行口输出线txd(p3.1)和1根控制线p1.0引出。74lsl65是一个8位寄存器,其sl端是串行移位控制端接于p1.0端;ck是移位时钟输入端,接于p3.1 (txd)端;qh是串行移位输出端接于p3.0(rxd)端。串行口置为方式0。两个165芯片是串联方式,首尾相接,低位qh接于高位ser端,高位qh端接8051的rxd端。若16位并行输入数据已送到两个74lsl65的输入端,当pl.0=0时。16位数据被同时接收,置入对应的74lsl65的寄存器中。当p1.

温馨提示

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

评论

0/150

提交评论