欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第9章AT89S51单片机的IO扩展.ppt

    • 资源ID:2609656       资源大小:2.28MB        全文页数:91页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9章AT89S51单片机的IO扩展.ppt

    1,第9章 AT89S51单片机的 I/O扩展,1,成都理工大学工程技术学院 自动化工程系,2,2,第9章 目录 9.1 I/O接口扩展概述 9.1.1 扩展的I/O接口功能 9.1.2 I/O端口的编址 9.1.3 I/O数据的传送方式 9.1.4 I/O接口电路 9.2 AT89S51扩展I/O接口芯片82C55的设计 9.2.1 82C55芯片简介 9.2.2 工作方式选择控制字及端口PC置位/复位控制字 9.2.3 82C55的3种工作方式 9.2.4 AT89S51单片机与82C55的接口设计,3,9.3 AT89S51扩展I/O接口芯片81C55的设计 9.3.1 81C55芯片介绍 9.3.2 81C55的工作方式 9.3.3 AT89S51单片机与81C55的接口设计及软件编程 9.4 利用74LSTTL电路扩展并行I/O口 9.5 用AT89S51单片机的串行口扩展并行口 9.5.1 用74LS165扩展并行输入口 9.5.2 用74LS164扩展并行输出口 9.6 用I/O口控制的声音报警接口 9.6.1 蜂鸣音报警接口 9.6.2 音乐报警接口,4,内容概要 AT89S51有4个I/O口P0P3,真正用作I/O口线的只有P1口的8位I/O口线和P3口的某些位线。因此,大多需要外部I/O接口的扩展。 介绍AT89S51与两种常用的可编程I/O接口芯片82C55和81C55的扩展接口设计。此外还介绍使用廉价的74LSTTL芯片扩展并行I/O接口以及用AT89S51串行口来扩展并行I/O接口的设计。最后介绍使用I/O口控制的声音报警接口。,5,9.1 I/O接口扩展概述 扩展I/O接口与扩展存储器一样,都属于系统扩展的内容。扩展的I/O接口应该具有哪些功能? 9.1.1 扩展的I/O接口功能 扩展的I/O接口电路主要应满足以下功能要求。 1实现和不同外设的速度匹配 大多数外设的速度很慢,无法和µs量级的单片机速度相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备的前提下才能进行数据传送。外设是否准备好,就需要I/O接口电路与外设之间传送状态信息,以实现单片机与外设之间的速度匹配。,5,6,2输出数据锁存 与外设比,单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。所以在扩展的I/O接口电路中应有输出数据锁存器,以保证输出数据能为慢速的接收设备所接收。 3输入数据三态缓冲 数据总线上可能“挂”有多个数据源,为使传送数据时不发生冲突,只允许当前时刻正在接收数据的I/O接口使用数据总线,其余的I/O接口应处于隔离状态,为此要求I/O接口电路能为数据输入提供三态缓冲功能。,6,7,9.1.2 I/O端口的编址 介绍I/O端口编址之前,首先要弄清楚I/O接口和I/O端口的概念。 I/O接口是单片机与外设间的连接电路的总称。 I/O端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。 每个I/O接口中的端口都要有地址,以便AT89S51通过读写端口来和外设交换信息。常用的I/O端口编址有两种方式,独立编址方式与统一编址方式。,7,8,1独立编址 I/O端口地址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。 2统一编址 把I/O端口与数据存储器单元同等对待。I/O端口和外部数据存储器RAM统一编址。因此外部数据存储器空间也包括I/O端口在内。 优点是不需专门的I/O指令。缺点是需要把数据存储器单元地址与I/O端口的地址划分清楚,避免数据冲突。,8,9,9.1.3 I/O数据的传送方式 为了实现和不同外设的速度匹配,必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。 1同步传送 同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片机和外部数据存储器之间的数据传送。 2查询传送 又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但工作效率不高。,9,10,3中断传送 为了提高单片机对外设的工作效率,通常采用中断传送方式,来实现I/O数据的传送。单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。采用中断方式可大大提高工作效率。 9.1.4 I/O接口电路 常用的外围I/O接口芯片: (1)82C55:可编程通用并行接口(3个8位I/O口)。,10,11,(2)81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。 都可以和AT89S51直接连接,接口逻辑简单。 9.2 AT89S51扩展I/O接口芯片82C55的设计 先介绍可编程并行I/O接口芯片82C55的应用特性,然后介绍AT89S51与82C55的接口电路以及软件设计。 9.2.1 82C55芯片简介 Intel公司的可编程并行I/O接口芯片,3个8位并行I/O口,3种工作方式,单片机与多种外设连接时的中间接口电路。引脚及内部结构如图9-1和图9-2所示。,11,12,12,图9-1 82C55的引脚图 图9-2 82C55的内部结构,13,1引脚说明 共40个引脚,引脚功能如下: D7D0:三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息。 :片选信号线,低有效,表示本芯片被选中。 :读信号线,低有效,读82C55端口数据的控制信号。 :写信号线,低电平有效,用来向82C55写入端口数据的控制信号。 VCC:+5V电源。,13,14,PA7PA0:端口A输入/输出线。 PB7PB0:端口B输入/输出线。 PC7PC0:端口C输入/输出线。 A1、A0:地址线,用来选择82C55内部的4个端口。 RESET:复位引脚,高电平有效。 2内部结构 如图9-2所示,3个并行数据输入/输出端口,两种工作方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器。 各部件的功能如下:,14,15,(1)端口PA、PB、PC 3个8位并行口PA、PB和PC,都可以选为输入/输出工作模式,功能和结构上有差异。 PA口:一个8位数据输出锁存器和缓冲器;一个8位数据输入锁存器。 PB口:一个8位数据输出锁存器和缓冲器;一个8位数据输入缓冲器。 PC口:一个8位的输出锁存器;一个8位数据输入缓冲器。 通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件控制下,分为两个4位的端口,作为端口PA、PB选通方式操作时的状态控制信号。,15,16,(2)A组和B组控制电路 是两组根据AT89S51写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部(PC7PC4);B组控制PB口和PC口的下半部(PC3PC0),并可用“命令字”来对端口PC的每一位实现按位置“1”或清“0”。 (3)数据总线缓冲器 数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。,16,17,(4)读/写控制逻辑电路 接收AT89S51单片机发来的控制信号 、 、RESET、地址信号A1、A0等,然后根据控制信号的要求,端口数据被AT89S51单片机读出,或者将AT89S51单片机送来的数据写入端口。 各端口工作状态与控制信号的关系见表9-1。,17,18,18,19,9.2.2 工作方式选择控制字及端口PC置位/复位控制字 可向82C55控制寄存器写入两种不同的控制字。 1工作方式选择控制字 82C55有3种基本工作方式: (1)方式0基本输入/输出; (2)方式1选通输入/输出; (3)方式2双向传送(仅PA口有此工作方式)。 3种工作方式方式控制字来决定。格式如图9-3所示。最高位D7=1,为本方式控制字的标志,以便与另一控制字相区别(最高位D7 = 0)。,19,20,20,图9-3 82C55的方式控制字格式,21,PC口分两部分,随PA口称为A组,随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。 【例9-1】 AT89S51向82C55的控制字寄存器写入工作方式控制字95H,根据图9-3,将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7PC4)输出,PC口的下半部分(PC3PC0)输入。 MOV DPTR,#××××H ;控制字寄存器端口地址 ;××××H送DPTR MOV A,#95H ; 方式控制字95H送A MOVX DPTR,A ; 控制字95H送控制字寄存器,21,22,2PC口按位置位/复位控制字 为另一控制字。即PC口中任何一位,可用一个写入82C55控制口的置位/复位控制字来对PC口按位置“1”或清“0”。用于位控。格式如图9-4所示。 【例9-2】 AT89S51向82C55的控制字寄存器写入工作方式控制字07H,则PC3置1;08H写入控制口,则PC4清0。程序段如下: MOV DPTR,#××××H ; 控制寄存器端口地址 ;××××H送DPTR MOV A,#07H ; 方式控制字07H送A,22,23,图9-4 PC口按位置位/复位控制字格式,24,MOVX DPTR,A; 控制字07H送控制寄存器,把PC3置1 MOV DPTR,#××××H; 控制字寄存器端口地址送DPTR MOV A,#08H ; 方式控制字08H送A MOVX DPTR,A ; 08H送控制字寄存器,PC4清0,24,25,9.2.3 82C55的3种工作方式 1方式0 是基本输入/输出方式。T89S51可对82C55进行I/O数据的无条件传送。 例如,AT89S51单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组指示灯的亮、灭。并不需要任何条件,外设I/O数据可在82C55的各端口得到锁存和缓冲。因此,方式0称为基本输入/输出方式。 方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式0的基本功能如下:,25,26,(1)具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分)。 (2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合。 PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字,规定各端口为输入或输出方式。,27,【例9-3】 假设82C55的控制字寄存器端口地址为FF7FH,令PA口和PC口的高4位为方式0输出,PB口和PC口的低4位为方式0输入,初始化程序: MOV DPTR,#0FF7FH ; 端口地址#0FF7F送DPTR MOV A,#83H ; 方式控制字83H送A MOVX DPTR,A ; 控制字83H送控制字寄存器,27,28,2方式1 是一种采用应答联络的输入/输出工作方式。 PA口、PB口皆可设成这种工作方式。 在方式1下,82C55的PA口和PB口通常用于I/O数据的传送,PC口用作PA口和PB口的应答联络信号线,以实现采用中断方式来传送I/O数据。 PC口的PC7PC0的应答联络线是规定好的,其各位分配如图9-5和图9-7所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用。 下介绍方式1输入/输出时的应答联络信号与工作原理。,28,29,(1)方式1输入 方式1输入应答联络信号如图9-5所示。其中 与IBF为一对应答联络信号。各应答联络信号的功能如下。 :是由输入外设发给82C55的选通输入信号,低有效。 IBF:输入缓冲器满,应答信号。82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高有效。 INTR:由82C55向AT89S51单片机发出的中断请求信号,高有效。 INTEA:控制PA口是否允许中断的控制信号,由PC4的置位/复位来控制。,29,30,INTEB:控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。 方式1输入如图9-6所示。下面以PA口的方式1输入为例,介绍方式1输入的工作过程。 当外设向82C55输入一个数据并送到PA7PA0时,外设自动在 上向82C55发送一个低电平选通信号。 82C55收到 后,先把PA7PA0输入的数据存入PA口的输入数据缓冲/锁存器,然后使输出应答线IBF变为高,通知输入外设,PA口已收到它送来的数据。 82C55检测到 由低电平变为高电平、IBFA(PC5)为“1”状态和中断允许INTEA(PC4)=1时,使,30,31,INTRA(PC3)变为高电平,向单片机发出中断请求。INTEA的状态可由用户通过指令对PC4的单一置位/复位控制字来控制。 单片机响应中断后,进入中断服务子程序来读取PA口的外设发来的输入数据。当输入数据被单片机读走后,82C55撤销INTRA上的中断请求,并使IBFA变低,通知输入外设可传送下一个输入数据。,31,32,32,图9-5 方式1输入应答联络信号,33,33,图9-6 PA口方式1输入工作过程示意图,34,(2)方式1输出 方式1输出时,应答联络信号如图9-7所示。 与 构成一对应答联络信号,应答联络信号功能如下。 :端口输出缓冲器满信号,低有效,它是82C55发给外设的联络信号,表示外设可以将数据取走。 :外设应答信号,低有效。表示外设已把82C55发出的数据取走。 INTR:中断请求信号,高有效。表示该数据已被外设取走,向单片机发出中断请求,如果AT89S51响应该中断,在中断服务子程序中向82C55写入要输出的下一数据。,34,35,INTEA控制PA口是否允许中断,由PC6控制。 INTEB控制PB口是否允许中断,由PC2控制。 方式1输出工作示意如图9-8所示。以PB口的方式1输出为例,介绍工作过程。 AT89S51可以通过“MOVX Ri,A”指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚 (PC1)变低,以通知输出设备输出的数据已在PB口的PB7PB0上。 输出外设收到 上低电平后,先从PB7PB0上取走输出数据,然后使 B 变低电平,以通知82C55输出外设已收到82C55输出的数据。,35,36,36,图9-7 方式1输出应答联络信号,37,图9-8 PB口方式1输出工作过程示意图,37,38, 82C55从应答输入线 B收到低电平后就对 B 和中断允许控制位INTEB状态进行检测,若皆为高电平,则INTRB变为高电平而向单片机请求中断。 AT89S51单片机响应INTRB上中断请求后便可通过中断服务程序把下一个输出数据送到PB口的输出数据锁存器。重复上述过程,完成数据的输出。 3方式2 只有PA口才有方式2。图9-9为工作示意图。方式2是方式1输入和输出组合。PA7PA0为双向I/O总线。当作为输入口使用,PA7PA0受STBA 和IBFA控制;当作输出端口使用,PA7PA0受 A、 A 控制。,38,39,39,图9-9 PA口在方式2下的工作示意图,40,方式2特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需把单片机发出的数据通过PA口送给显示器显示。 9.2.4 AT89S51单片机与82C55的接口设计 1硬件接口电路 如图9-10为AT89S51扩展一片82C55的电路。P0.1、P0.0经74LS373与82C55的A1、A0连接;P0.7经74LS373与片选端 相连,其它地址线悬空;82C55的控制线 、 直接与单片机 和 端相连;单片机数据总线P0.0P0.7与82C55数据线D0D7连接。,40,41,2确定82C55端口地址 图9-10中82C55只有3条线与AT89S51地址线相接,片选端 、端口地址选择端A1、A0,分别接于P0.7、P0.1和P0.0,其他地址线全悬空。显然只要保证P0.7为低电平时,即可选中82C55;若P0.1、P0.0再为“00”,则选中82C55的PA口。同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。 若端口地址用16位表示,其他无用端全设为“1”(也可把无用端全设为“0”),则82C55的A、B、C及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。,41,42,42,图9-10 AT89S51单片机扩展一片82C55的接口电路,43,如果没有用到的位取“0”,则4个端口地址分别为0000H、0001H、0002H、0003H,只要保证 、A1、A0的状态,无用位设为“0”或“1”均可。 3软件编程 在实际设计中,须根据外设的类型选择82C55的操作方式,并在初始化程序中把相应控制字写入控制口。下面根据图9-10,介绍对82C55进行操作的编程。 【例9-4】要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,程序如下: MOV A,#90H ;控制字送A MOV DPTR,#0FF7FH;控制寄存器地址FF7FHDPTR,43,44,MOVX DPTR,A ;方式控制字控制寄存器 MOV DPTR,#0FF7CH ;PA口地址FF7CHDPTR MOVX A,DPTR ;从PA口读入数据A MOV DPTR,#0FF7DH ;PB口地址FF7DHDPTR MOV A,#data1 ;要输出的数据#data1A MOVX DPTR,A ;将#data1送PB口输出 MOV DPTR,#0FF7EH ;PC口地址DPTR MOV A,# data 2 ;数据#data 2A MOVX DPTR,A ;将数据#data 2送PC口输出,44,45,【例9-5】对端口PC的置位/复位。 1PC口1中的任1一位,均可用指令来置位或复位。例如,如果想把PC口的PC5置“1”,相应的控制字为00001011B = 0BH(关于82C55的PC口置位/复位的控制字说明见图9-4)。程序如下: MOV R1,7FH ;控制口地址7FHR1 MOV A,0BH ;控制字0BHA MOVX R1, A ;控制字7FH控制口,把PC5置1,45,46,如果想把PC口的PC5复位,相应的控制字0AH,程序如下: MOV R1,7FH ;控制口地址7FH R1 MOV A,0AH ;控制字0AHA MOVX R1,A ;控制字7FH控制口, PC5清0 82C55接口芯片在AT89S51单片机应用系统中广泛用于与各种外部数字设备的连接,如打印机、键盘、显示器以及作为数字信息的输入、输出接口。,46,47,9.3 AT89S51扩展I/O接口芯片81C55的设计 包含256B的RAM存储器(静态),RAM的存取时间为400ns,可编程的两个8位并行口PA和PB,可编程的一个6位并行口PC,以及一个14位的减1计数器。PA口和PB口可工作于基本输入/输出方式(同82C55的方式0)或选通输入/输出方式(同82C55的方式1)。81C55可直接与AT89S51相连,不需增加任何硬件逻辑电路。由于81C55片内集成有I/O口、RAM和减1计数器,因而是被选用的I/O接口芯片之一。 9.3.1 81C55芯片介绍 介绍81C55芯片基本特性。,47,48,181C55的结构 逻辑结构如图9-11。 图9-11 81C55的逻辑结构,49,281C55的引脚功能 40引脚,采用双列直插式封装,如图9-12所示。 图9-12 81C55的引脚图,49,50,各引脚功能如下。 (1)AD7AD0,为地址/数据线,与AT89S51单片机的P0口相连,用于分时传送地址/数据信息。 (2)I/O总线(22条)。PA7PA0为通用I/O线,数据传送方向由写入81C55的命令字决定(图9-13);PB7PB0为通用I/O线,用于传送PB口上的外设数据,数据传送方向也由写入81C55的控制字决定。PC5PC0为数据/控制线,共有6条,在通用I/O方式下,用作传送I/O数据;在选通I/O方式下,用作传送命令/状态信息(见表9-3)。,50,51,(3)控制引脚 RESET:复位输入线,在RESET线上输入一个大于600ns宽的正脉冲时,81C55即可处于复位状态,PA、PB、PC三口也定义为输入方式。 、IO/ : 为片选线,若 =0,则AT89S51单片机选中本81C55工作;否则,本81C55未被选中。IO/ 为I/O端口或RAM存储器选择线,若IO/ =0,则AT89S51单片机选中81C55片内的RAM存储器;若IO/ =1,则AT89S51单片机选中81C55的某一I/O端口。 和 :当 =0且 =1时,81C55被读出数据状态;当 =1且 = 0时,81C55被写入数据状态。,51,52,ALE:允许地址输入线,高有效。若ALE=1,则81C55允许AT89S51通过AD7AD0线发出地址锁存到81C55片内“地址锁存器”;否则,81C55地址锁存器处于封锁状态。81C55的ALE常和AT89S51的ALE相连。 TIMERIN和 :TIMERIN是计数器脉冲输入线,输入的脉冲上跳沿用于对81C55片内的14位计数器减1。 为计数器输出线,当14位计数器减为0时就可以在该引线上输出脉冲或方波,输出脉冲或方波与所选的计数器工作方式有关。 (4)电源线。VCC为+5V电源输入线,VSS接地。,52,53,3CPU对81C55 I/O端口的控制 3个端口数据传送方式是由控制字和状态字来决定的。 (1)81C55各端口地址分配 内部有7个端口,需要3位地址A2A0上的不同组合代码来加以区分。表9-2为端口地址分配以及RAM单元的选择。 (2)81C55的控制字 有一个控制寄存器和一个状态标志寄存器。工作方式由写入控制寄存器的控制字来确定。控制字格式如图9-13所示。控制寄存器只能写入不能读出。,53,54,图9-13 81C55的控制字格式,54,55,控制寄存器中的D3D0位用来设置PA口、PB口和PC口的工作方式。 D4、D5位用来确定A口、B口以选通输入/输出方式工作时是否允许中断请求。 D6、D7位用来设置计数器的操作。 (3)81C55的状态字 有一个状态标志寄存器,用来存入PA口和PB口的状态标志。它的地址与控制寄存器地址相同,只能对其读出,不能写入。格式如图9-14所示。,56,下面仅对状态字中的D6位给出说明。 D6为计数器中断状态标志位TIMER。 若计数器正在计数或开始计数前,则D6=0;若计数器的计数长度已计满,即计数器减为0,则D6=1,可作为计数器中断请求标志。在硬件复位或对它读出后又恢复为0。 9.3.2 81C55的工作方式 下面介绍81C55的两种工作方式。,56,57,图9-14 81C55状态字格式,57,58,1存储器方式 存储器方式用于对片内256B RAM单元进行读/写,若IO/ =0且 =0,则AT89S51可通过AD7AD0上的地址选择RAM存储器中任意单元读/写。 2I/O方式 分基本I/O和选通I/O两种方式,见表9-3。在I/O方式下,81C55可选择片内任意端口寄存器读/写,端口地址由A2、A1、A0三位决定(见表9-2)。 (1)基本I/O方式。本方式下,PA、PB、PC三口用作输入/输出,由图9-13的命令字决定。其中,PA、PB两口的输入/输出由D1、D0决定,PC口各位由D3、D2状态决,58,59,定。例如,若把02H的命令字送到81C55命令寄存器,则81C55的PA口和PC口各位设定为输入方式,PB口设定为输出方式。 (2)选通I/O方式。由命令字中D3、D2状态设定,PA口和PB口都可独立工作于这种方式。此时,PA口和PB口用作数据口,PC口用作A口和B口的应答联络控制。PC口各位应答联络线的定义是在设计81C55时规定的,其分配和命名见表9-3。,59,60,60,选通I/O方式又可分为选通I/O数据输入和选通I/O数据输出两种方式。 选通I/O数据输入 PA口和PB口都可设定为本方式。若命令字中D0=0且D3、D2=10,则PA口设定为本工作方式;若命令字中D1= 0且,61,D3、D2=11,则PB口设定为本工作方式。本工作方式和82C55的选通I/O输入情况类似,如图9-15(a)所示。 选通I/O数据输出 PA口和PB口都可设定为本方式。若命令字D0=1且D3、D2=10,则PA口设定为本工作方式;若命令字D1=1且D3、D2=11,则PB口设定为本工作方式。 选通I/O数据的输出过程也和82C55的选通I/O输出情况类似,图9-15(b)所示为选通I/O数据输出的示意图。,61,62,图9-15 选通I/O方式示意图,62,63,3内部计数器/计数器及使用 14位的计数器/计数器,CPU可通过软件来选择计数长度和计数方式。计数长度和计数方式由写入计数器的控制字来确定。计数器的格式如图9-16所示。 图9-16 81C55计数器的格式 其中,T13T0为计数器的计数位;M2、M1用来设置计数器的输出方式。81C55计数器的4种工作方式及对应的 引脚输出波形如图9-17所示。,63,64,64,图9-17 81C55计数器工作方式及 引脚输出波形,65,任何时候都可设置计数器长度和工作方式,将控制字写入控制寄存器。如果计数器正在计数,只有在写入启动命令后,计数器才接收新计数长度并按新的工作方式计数。 若写入计数器的初值为奇数, 引脚的方波输出是不对称的。例如,初值为9时,计数器的输出,在5个计数脉冲周期内为高电平,4个计数脉冲周期内为低电平,如图9-18所示。 图9-18 计数长度为奇数时的不对称方波输出(长度为9),65,66,注意,81C55的计数器初值不是从0开始,从2开始。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。显然,如果计数初值是0或1,就无法产生这种方波。因此81C55计数器的写入初值范围是3FFFH2H。 如果硬要将0或1作为初值写入,其效果将与送入初值2的情况一样。81C55复位后使计数器停止计数。 9.3.3 AT89S51单片机与81C55的接口设计及软件编程 1硬件接口电路 接口如图9-19所示。直接连接不需外加器件。,66,67,67,图9-19 AT89S51单片机与81C55的接口电路,68,在图9-19中,单片机P0口输出的低8位地址不需要另外加锁存器(81C55片内集成有地址锁存器),而直接与81C55的AD0AD7相连,既可作为低8位地址总线,又可作为数据总线,地址锁存控制直接用AT89S51发出的ALE信号。 81C55的 端接P2.7,IO/ 端与P2.0相连。当P2.7=0时,若P2.0=0,则访问81C55的RAM单元。由此可得到图9-19中81C55的各端口以及RAM单元的地址编码,见表9-4。,68,69,69,70,281C55的编程 根据图9-19接口,介绍对81C55的具体操作。 初始化程序设计 【例9-6】若PA口定义为基本输入方式,PB口定义为基本输出方式,对输入脉冲进行24分频(81C55计数器的最高计数频率为4MHz),则81C55的初始化程序如下START: MOV DPTR,7F04H;DPTR指针指向计数器低8位 MOV A,18H ;计数初值24送A MOVX DPTR,A ;计数初值低8位装入计数器 INC DPTR ;指向计数器高8位,70,71,MOV A,40H ;计数器为连续方波输出 MOVX DPTR,A ;计数初值高6位装入计数器 MOV DPTR,7F00H ;指向命令/状态口 MOV A,#0C2H ;设定命令控制字 MOVX DPTR,A;A口基本输入,B口基本输出,开启计数 【例9-7】读81C55的7EF1H单元。程序如下: MOV DPTR,#7EF1H;DPTR指针指向81C55的7EF1H单元 MOVX A,DPTR ;7EF1H单元内容A,71,72,【例9-8】将立即数41H写入81C55 RAM的7E20H单元。程序如下: MOV A,#41H ;立即数A MOV DPTR,#7E20H;DPTR指针指向81C55的7E20H单元 MOVX DPTR,A;立即数41H送81C55 RAM的7E20H单元 81C55既有RAM又有I/O口,此外,还有计数器。在同时需要扩展RAM 、I/O和计数器的系统中,选用81C55特别经济,是单片机系统中常用的外围接口芯片之一。,72,73,9.4 利用74LSTTL电路扩展并行I/O口 在单片机应用中,有些场合需要降低成本、缩小体积,这时采用TTL电路、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口。 如图9-20所示为一个利用74LS244和74LS273芯片,将P0口扩展成简单的输入/输出口的电路。 74LS244和74LS273的工作受AT89S51的P2.0、 、 3条控制线控制。74LS244作为扩展输入口,8个输入端分别接8个按钮开关。74LS273是8D锁存器扩展输出口,接8个LED发光二极管,以显示8个按钮开关状态。,73,74,图9-20 74LSTTL I/O扩展举例,75,当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。 该电路的工作原理如下。 当P2.0=0, =0( =1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51片内。,75,76,当P2.0 = 0, =1 ( = 0)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。 总之,在图9-20中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。,76,77,输入程序段: MOV DPTR,#0FEFFH ;I/O地址DPTR MOVX A,DPTR ; 为低,74LS244数据被读入A中 输出程序段: MOV A,#data ;数据#dataA MOV DPTR,#0FEFFH ;I/O地址#0FEFFHDPTR MOVX DPTR,A ; 为低,数据经74LS273口输出,77,78,【例9-9】 编写程序把按钮开关状态通过图9-20的发光二极管显示出来。程序如下: DDIS: MOV DPTR,#0FEFFH ;输入口地址DPTR LP: MOVX A,DPTR ;按钮开关状态读入A中 MOVX DPTR,A ;A中数据送显示输出口 SJMP LP ;反复连续执行 由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图9-20仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态功能,否则将影响总线的正常工作。,78,79,9.5 用AT89S51单片机的串行口扩展并行口 串口的方式0用于I/O扩展。方式0为同步移位寄存器工作方式,波特率为fosc/12。数据由RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。 9.5.1 用74LS165扩展并行输入口 图9-21串口扩展两个8位并行输入口。74LS165是8位并行输入串行输出的寄存器。当74LS165的S/ 端由高到低跳变,并行输入端的数据被置入寄存器;当S/ = 1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。,79,80,TXD与所有74LS165的CP相连;RXD与74LS165的串行输出端QH相连;P1.0与 S/ 相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。 图9-21 利用74LS165扩展并行输入口,80,81,【例9-10】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM 20H开始的单元。 MOV R7,#05H ;设置读入组数 MOV R0,#20H ;设置内部RAM数据区首址 START: CLR P1.0 ;并行置入数据,S/ =0 SETB P1.0 ;允许串行移位,S/ =1 MOV R2,#02H;设每组字节数, 即74LS165的个数 RXDATA:MOV SCON,#00010000H;设置串口方式0,允许 ;接收,启动接收过程,81,82,WAIT: JNB RI,WAIT ;未接收完一帧,循环等待 CLR RI ;RI标志清“0”,准备下次接收 MOV A,SBUF ;读入数据 MOV R0,A ;送至RAM缓冲区 INC R0 ;指向下一个地址 DJNZ R2,RXDATA ;未读完一组数据, 继续 DJNZ R7,START ;5组数据未读完重新并行置入 ;对数据进行处理,82,83,串行接收过程采用查询等待的方式,如必要,可改中断方式。 9.5.2 用74LS164扩展并行输出口 图9-22为串口外接两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。 图9-22 利用74LS164扩展并行输出口,83,84,当串口工作在方式0的发送,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。注意,由于74LS164无并行输出控制端,在串行输入中,其输出端的状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。 【例9-11】 将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。 START:MOV R7,#02H ;设置要发送的字节个数 MOV R0,#30H ;设置地址指针 MOV SCON,#00H ;设置串行口为方式0,84,85,SEND: MOV A,R0 MOV SBUF,A ;启动串行口发送过程 WAIT: JNB TI,WAIT ;一帧未发完,等待 CLR TI INC R0 ;取下一个数 DJNZ R7,SEND ;未发完,继续,从子程序返回 RET 9.6 用I/O口控制的声音报警接口 当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发出提醒人们警觉的声音报警。用I/O口很容易实现该功能。,85,86,9.6.1 蜂鸣音报警接口 购买市

    注意事项

    本文(第9章AT89S51单片机的IO扩展.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开