I/O口接口扩展----82C55

目录

一.扩展的I/O接口功能

二.端口的编址

1.独立编址

2.统一编制

三.I/O数据的传送方式

四.I/O接口电路----82C55

1.82C55的引脚及其内部结构

2.工作方式选择控制字及端口PC置位/复位控制字

3.82C55的三种工作方式

(1)方式0

(2)方式1

(3)方式2

4.AT89S52单片机与82C55的接口设计

(1)硬件接口电路

(2)82C55各端口地址的确定

五.I/O接口电路----利用74LSTTL电路扩展并行I/O口

六.I/O接口电路----用AT89S52单片机的串行口扩展并行口

1.用74LS165扩展并行输入口

2.用74LS164扩展并行输入口


一.扩展的I/O接口功能

扩展的I/O接口电路主要应满足以下功能要求:

1.实现和不同外设的速度匹配

大多数外设的速度很慢,无法和us量级的单片机速度相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备的前提下才能进行数据传送。

2.输出数据锁存

与外设比,单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。所以在扩展的I/O接口电路中应有输出数据锁存器,以保证输出数据能为慢速的接收设备所接收

3.输入数据三态缓冲

数据总线上可能“挂”有多个数据源,为使传送数据时不发生冲突只允许当前时刻正在接收数据的I/O接口使用数据总线,其余的I/O接口应处于隔离状态,为此要求O接口电路能为数据输入提供三态缓冲功能。

二.端口的编址

介绍I/O端口编址之前,首先要弄清楚/O接口和I/O端口的概念

I/O接口是单片机与外设间的连接电路的总称。

I/O端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。
每个I/O接口中的端口都要有地址,以便AT89S52通过读写端口来和外设交换信息。常用的I/O端口编址有两种方式:独立编址方式与统一编址方式

1.独立编址

I/O端口她址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。

2.统一编制

把I/O端口与数据存储器单元同等对待。I/O端口和外部数据存储器RAM统一编址。因此外部数据存储器空间也包括I/O端口在内。
优点是不需专门的I/O指令。缺点是需要把数据存储器单元地址与I/O端口的地址划分清楚,避免数据冲突。

三.I/O数据的传送方式

为了实现和不同外设的速度匹配,必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送方式有: 同步传送、异步传送和中断传送。
1. 同步传送
同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片机和外部数据存储器之间的数据传送

2.查询传送
又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但工作效率不高。

3.中断传送
为了提高单片机对外设的工作效率,通常采用中断传送方式,即利用AT89S51单片机本身的中断功能和I/O接口的中断功能来实现IO数据的传送单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。因此,采用中断方式可以大大提高单片机的工作效率。


四.I/O接口电路----82C55

目前常用的外围I/O接口芯片有:
(1) 82C55----可编程的通用并行接口电路(3个8位I/O口);

(2)81C55---可编程的IO/RAM扩展接口电路(2个8位IO口,1个6位I/O口,256个RAM字节单元,1个14位的减法计数器)。

这里只介绍82C55:

1.82C55的引脚及其内部结构

引脚:

D7~D0: 三态双向数据线,与单片机的PO口连接,用来与单片机之间传送数据信息

CS*:片选信号线,低电平有效,表示本芯片被选中

RD*:读信号线,用来读出82C55端口数据的控制信号

WR*:写信号线,用来向82C55写入端口数据的控制信号

Vcc: +5V电源

PA7~PA0:端口A输入/输出线

PB7~PB0:端口B输入/输出线

PC7~PCO:端口C输入/输出线

A1、A0:地址线,用来选择82C55内部的4个端口

RESET:复位引脚,高电平有效

内部结构:

82C55内部结构见图,包括3个并行数据输入/输出端口,两种工作方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器。图9-2中左侧的引脚与单片机相连,右侧的引脚与外设连接。各部件的功能如下:

(1)端口PA,PB,PC

82C55有3个8位并行口PA、PB和PC,它们都可选为输入/输出工作模式但在功能和结构上有些差异。

PA口:一个8位数据输出的锁存器和缓冲器;一个8位数据输入的锁存器。

PB口:一个8位数据输出的锁存器和缓冲器;一个8位数据输入的缓冲器。

PC口:一个8位数据输出的锁存器;一个8位数据输入的缓冲器。
通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件的控制下,作为两个4位端口,作为端口PA、PB选通方式操作时的状态控制信号。

(2)A组和B组控制电路
这是两组根据AT89S52单片机写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部 (PC7~PC4);B组控制PB口和PC口的下半部 (PC3~PCO),并可使用“命令字”来对端口PC的每-位实现按位置“1”或清“0”

(3)数据总线缓冲器
数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。


2.工作方式选择控制字及端口PC置位/复位控制字

向82C55控制寄存器写入两种不同的控制字。首先来介绍工作方式选择控制字。
(1)工作方式选择控制字

82C55的端口有如下3种基本工作方式: 
(1)方式0一基本输入/输出;
(2)方式1一选通输入/输出;
(3)方式2一双向传送 (仅PA口有此工作方式)。

端口的3种工作方式由写入控制寄存器的方式控制字来决定。方式控制字的格式如图所示。最高位D7=1,为本方式控制字的标志,以便与后面介绍的端口PC口置位/复位控制字相区别(端口PC置位/复位控制字的最高位D7=0)
3个端口中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。

(2)PC口按位置位/复位控制字

8位中的任何一位,可用一个写入82C55控制口的置位/复位控制字来对PC口按位置“1”或清“0”,这一功能主要用于位控。PC口按位置位/复位控制字的格式如图所示。

3.82C55的三种工作方式
(1)方式0

方式0是基本输入/输出方式。方式0下,单片机可对82C55进行I/O数据的无条件传送。例如,单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组LED指示灯的亮、灭。实现这些操作,并不需要任何条件,外设的IO数据可在82C55的各端口得到锁存和缓冲。因此,82C55的方式0称为基本输入/输出方式。
方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式0基本功能如下:

(1)具有两个8位端口 (PA、PB)和两个4位端口 (PC的上半部分和下半部分);
(2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合。
82C55的PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字(见图9-3),来规定各端口为输入或输出方式。

(2)方式1

方式1是采用应答联络的输入/输出工作方式。PA口和PB口皆可独立地设置成这种工作方式。方式1下,PA口和PB口通常用于IO数据的传送,PC口用作PA口和PB口的应答联络信号线,以实现采用中断方式来传送I/O数据PC口的PC7~PC0的应答联络线是在设计82C55时规定好的,其各位分配如图9-5和图9-7所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用。

•方式1输入
当任意端口工作于方式1输入时,各应答联络信号如图9-5所示。其中STB*与IBF为一对应答联络信号。图9-5中各应答联络信号的功能如下:
STB*----是由输入外设发给82C55的选通输入信号,低电平有效。

IBF----输入缓冲器满,应答信号。82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高电平有效。

INTR----由82C55向单片机发出的中断请求信号,高电平有效。

INTEA----控制PA口是否允许中断的控制信号,由PC4的置位/复位来控制。

INTEB----控制PB口是否允许中断的控制信号,由PC2的置位复位来控制。

工作流程如下:

外设向PC4询问(0信号),是否能传数据,并且将数据传到PA7~PA0寄存器中(暂存),如果寄存器存满了,PC5向两端发送1信号,并且PC4的信号变为1信号,这时PC4的信号变为1,则INTEA也会输出1,经过与门后,1&1=1,则INTRA也会输出1,再经过1个非门,产生低电平的外部中断响应,使单片机进入中断。最后D0~D7将数据传到P0.7~P0.0

•方式1输出

当PA口、PB口按照方式1输出时,应答联络信号如图9-7所示。

OBF*与ACK*构成了一对应答联络信号,图9-7中各应答联络信号的功能如下:

OBF*:端口输出缓冲器满信号,低电平有效,它是82C55发给外设的联络信号,表示单片机已经把数据输出到82C55的指定端口,外设可以将数据取走。
ACK*:外设的应答信号,低电平有效。表示外设已把82C55端口的数据取走。

工作流程如下:

首先单片机通过P0将数据存到82C55的D0~D7口,PC1发出选通信号,数据从82C55发送到输出外部设备中,外部设备收到后,发送应答信号,上面的选通也就结束了,返回到1信号,PC1也会向内部输出”1“信号,应答完毕后,INTEB也会向内部输出一个“1”信号,这样再通过与门1&1=1,通过非门,通知单片机发送结束,单片机产生中断响应。

(3)方式2

只有PA口才能设定为方式2。图9-9所示为方式2下的工作过程示意图。方式2实质上是方式1输入和方式1输出的组合。在方式2下,PA7~PA0为双向I/O总线。当作为输入端口使用时,PA7~PA0受OBFA*和IBFA控制,其工作过程和方式1输入时相同;当作为输出端口使用时,PA7~PA0受OBFA*ACKA*控制,其工作过程和方式1输出时相同。

方式2特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需要把单片机发出的数据通过PA口送给显示器显示。

4.AT89S52单片机与82C55的接口设计
(1)硬件接口电路

图9-10所示为AT89S52单片机扩展一片82C55的电路图。图中74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1A0连接;P0.7经74LS373与片选端相连,其它地址线悬空;82C55的控制线RD*、WR*直接与AT89S52单片机的RD*和WR*端相连:单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。

(2)82C55各端口地址的确定

图9-10中82C55只有3条线与单片机的地址线相接,片选端CS*、端口地址选择端A1、A0,分别接与P0.7、P0.1、P00相连的8 D锁存器的输出端Q7、Q1、Q0,其他地址线全悬空。显然只要保证P0.7为低电平时,即可选中82C55;若P0.1、P0.0再为“00”,则选中82C55的PA口。同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。
若端口地址用16位表示,其他未用端全设为“1”(也可把无用端全设为“0”,但一般习惯上把未用端置“1”),则82C55的PA、PB、PC及控制口地址分别为FE7CH、F57DH、 FF7EH、FF7FH6

(3)软件编程

[例9-4]要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,则程序如下:

[例9-5]对端口PC的置位/复位

82C55的PC口8位中的任意一位,均可用指令来置位或复位。例如,如果想把PC口的PC5置“1”,相应的控制字为00001011B=0BH(关于82C55的PC置位/复位的控制字说明见图9-4)。程序段如下:

五.I/O接口电路----利用74LSTTL电路扩展并行I/O口

在单片机应用系统中,有些场合需要降低成本、缩小体积,这时采用TTL,CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口。通常这种I/O都是通过P0口扩展。由于P0口只能分时复用,故构成输出口时,接口芯片应具有锁存功能; 构成输入口时,要求接口芯片应能三态缓冲输入,而数据的输入、输出则由单片机的读/写信号控制。
图9-12所示为一个利用74LS244(缓冲输入驱动器)和74LS273(8D锁存器) 芯片,将P0口扩展成简单的输入/输出口的电路。

74LS244和74LS273的工作受单片机的P2.0、3条控制线控制。

74LS244作为扩展输入口,它的8个输入端分别接8个按钮开关。74LS273的输出端接8个LED发光二极管,以显示8个按钮开关状态。当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光从而显示出按下的按钮开关的位置。
该电路的工作原理如下:
当P2.0=0,RD*=0(WR*=1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过PO口数据线被读入AT89S51单片机片内。
当P2.0=0,WR*=0(RD*=1) 时,选中74LS273芯片,CPU通过PO口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。
总之,在图9-12中只要保证P2.0为“0”,其他地址位或“0”或“1”即可如地址用FEFFH(无效位全为“1”,或用0000H(无效位全为“0”)都可。

由以上程序可以看出,对于所扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图9-12仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态输入缓冲功能,否则将影响总线的正常工作。

六.I/O接口电路----用AT89S52单片机的串行口扩展并行口

AT89S52单片机串行口的方式0用于I/O扩展。在方式0时,串行口为同步移位寄存器工作方式,其波特率是固定的,为fosc/12 (fosc为系统的振荡器频率)。数据由RXD端(P3.0)输入,同步移位时钟由TXD端 (P3.1)输出。发送、接收的数据是8位,低位在先。

1.用74LS165扩展并行输入口

74LS165的时钟禁止端 (第15脚) 接地,表示允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾 (QH与SIN) 相连。

图9-13所示为串行口外接两片74LS165扩展两个8位并行输入口的接口电路。
74LS165是8位并行输入串行输出的寄存器。当74LS165的S/L*端由高到低跳变时,并行输入端的数据被置入寄存器;当S/L=1,且时钟禁止端(第15脚)为低电平时,允许TXD (P3.1)移位时钟输入,这时在时钟脉冲作用下,数据由右向左方向移动。
在图9-13中,TXD(P31)作为移位脉冲输出与所有74LS165的移位脉冲输入端CP相连;RXD(P3.0)作为串行数据输入端与74LS165的串行输出端QH相连;P1.0与S/L*相连,用来控制74LS165的串行移位或并行输入;

上面程序中串行接收过程采用的是查询等待的控制方式,如有必要,也可改用中断方式。从理论上讲,按图9-13方法扩展的输入口几乎是无限的,但扩展越多,口的操作速度也就越慢。

2.用74LS164扩展并行输入口

图9-14所示为串行口外接两片74LS164扩展两个8位并行输出口的接口电路。74LS164是8位串入并出移位寄存器。
当AT89S52单片机串行口工作在方式0的发送状态时,串行数据由P3.0(RXD)送出,移位时钟由P3.1 (TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从P3.0移入74LS164中。需要指出的是,由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在74LS164的输出端应加接输出三态门控制以便保证串行输入结束后再输出数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/215871.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树_完全二叉树节点个数

//给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 // // 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位…

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳?

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「安卓开发资料从专业入门到高级教程工具包」,点个关注&…

华为OD机试 - 园区参观路径(Java JS Python C)

题目描述 园区某部门举办了Family Day,邀请员工及其家属参加; 将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角; 家属参观园区时,只能向右和向下园区前进,求从起始园区到终点园区会有多少条不同的参观路径。 输入描述 第一行为园区的长和宽; 后…

王炸cpu-龙芯3A6000

国产 CPU 性能媲美 Intel 酷睿这事儿,可能真的已经实现了。 没错,那颗有着多次爆料拉满大家期待值的龙芯 3A6000,终于正式发布。 就在今天上午,龙芯中科在 2023 年龙芯产品发布暨用户大会上正式带来了这颗 CPU。 整场发布会 PPT …

windows11 调整鼠标灵敏度方法

首先 我们打开电脑设置 或者在 此电脑/此计算机/我的电脑 右击选择属性 然后 有的电脑 左侧菜单中 直接就有 设备 然后在设备中直接就可以找到 鼠标 选项 调整光标速度即可 如果操作系统和我的一样 可以直接搜索鼠标 然后 选择 鼠标设置 然后 调整上面的鼠标指针速度即可

「C++」C++11新特性

💻文章目录 📄前言右值引用概念右值引用的意义移动构造和移动赋值完美转发 lambada表达式包装器function包装器bind包装器 📓总结 📄前言 C标准10年磨一剑,于2011年迎来了它真正意义上的第二个标准,C11能更…

备忘录不小心删了怎么办?如何找回我的备忘录?

如果你的记性不太好,或者每天需要记住、完成的事情很多,那么养成随手记事的好习惯是非常有必要的。因为手机是每个成年人都会随身携带的电子设备,所以直接在手机上记录事情比较简单、便捷。而手机备忘录、便签、笔记等工具类软件,…

Docker快速理解及简介

docker快速理解及简介 1.Docker为什么出现? 迁移一个项目时,运行文档、配置环境、运行环境、运行依赖包、操作系统发行版、内核等都需要重新安装配置,比较麻烦。 2.Docker是什么? Docker是基于Go语言实现的云开源项目。解决了运行…

ToDesk优惠码来了,需要的不容错过

最近发现Todesk也有活动了,很多小伙伴不知道,除了中秋国庆双节,ToDesk另有专享优惠码,输入优惠码最高立减25元,即使是活动日也能折上折,不影响此优惠码的折扣力度! Todesk作为国内优良的远程控制…

ssm土家风景文化管理平台源码和论文答辩PPT

摘要 土家风景文化管理平台是土家风景文化管理必不可少的一个部分。在风景文化管理的整个过程中,平台担负着最重要的角色。为满足如今日益复杂的管理需求,各类土家风景文化管理平台也在不断改进。本课题所设计的土家风景文化管理平台,使用jav…

LED恒流开关调节器FP7123,提供稳定电流,提升LED产品效果!

目录 一、FP7123概述 二、FP7123功能 LED恒流开关调节器FP7123的优势不仅仅在于提供稳定的电流,还包括以下几个方面: 三、应用领域 随着科技的不断发展,LED照明产品已经成为人们生活中不可或缺的一部分。然而,LED的亮度和稳定性…

mac M系列芯片安装chatGLM3-6b模型

1 环境安装 1.1 mac安装conda. 下载miniconda,并安装 curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh sh Miniconda3-latest-MacOSX-arm64.sh1.2 创建虚拟环境并激活 创建名为chatglm3的虚拟环境,python版本为3.10…

环形链表 2:找出入环的第一个节点

题目描述: 给定一个链表返回链表开始入环的第一个点。如果链表无环,则返回NULL。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。…

Autosar标准解析

AUTOSAR( Automotive Open System Architecture )——汽车开放系统架构,是一家致力于制定汽车电子软件标准的联盟(宝马、博世、大陆、戴姆勒、福特、标志雪铁龙、丰田和大众),成立于2003年,是一…

关于自动化测试框架pytest的Fixture固件

什么是固件 Fixture 翻译成中文即是固件的意思。它其实就是一些函数,会在执行测试方法/测试函数之前(或之后)加载运行它们,常见的如接口用例在请求接口前数据库的初始连接,和请求之后关闭数据库的操作。 我们之前在A…

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)

Unity 在开发的时候如果数据量比较大&#xff0c;或者一部分数据需要存在云端&#xff0c;那么就需要一些数据库 轻量型到大型的包括&#xff1a; 数组-内存存储读取 列表-内存存储读取 List<T> tList new List<T>(); XML-硬盘存储读取 JSON-硬盘存储读取 …

SoC with CPLD and MCU ?

AG32 MCU 产品支持多种接口外设&#xff0c;具备与业界主流产品的兼容性&#xff0c;并内置额外的2K FPGA 可编程逻辑。 产品支持 LQFP-48&#xff0c;LQFP-64&#xff0c;LQFP-100 &#xff0c;QFN-32等不同封装。其所有可用 IO 都可以任意地进行映射和互换&#xff0c;以灵活…

2024版软件测试面试100问(答案+文档)

软件测试面试百题 1、问&#xff1a;你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一个bug&#xff0c;你应该怎样解决? 首先&#xff0c;将问题提交到缺陷管理库里面进行备案。 然后&#xff0c;要获取判断的依据和标准&#xff1a; 根据需求说明书、产品说…

二阶变系数线性微分方程

1、变量替换法 欧拉方程 是常数&#xff0c;是已知的函数。 二阶欧拉方程 (1) 当时&#xff0c;令,则 代入&#xff08;1&#xff09;中&#xff0c; .这样就把欧拉方程&#xff0c;化成了二阶常系数非齐次微分方程 当x<0时&#xff0c;令, 例题 解:令,则 代入上面的推…

Tenda 路由器 uploadWewifiPic后台RCE漏洞复现

0x01 产品简介 腾达路由器是一款高效实用的路由器,致力于为家庭用户提供舒适、便捷、自然的智慧家庭体验。简单便捷的部署在家庭中,彻底解决家庭用户的网络接入问题。 0x02 漏洞概述 腾达路由器后台 uploadWewifiPic 路由存在命令执行漏洞,攻击者可利用漏洞执行任意命令获取…