MCS51单片机输出输入型外设与51的IO口
- 格式:ppt
- 大小:617.50 KB
- 文档页数:19
51单片机IO口工作原理一、概述51单片机是一种广泛应用于嵌入式系统的微控制器,其IO口是其最基本和重要的功能之一。
IO口可以用于输入和输出信号,实现与外部设备的数据交互。
本文将详细介绍51单片机IO口的工作原理。
二、IO口的结构51单片机的IO口由多个引脚组成,每一个引脚都有特定的功能和工作模式。
通常,一个IO口引脚可以配置为输入模式或者输出模式,具体的配置由相应的寄存器控制。
三、IO口的输入模式当一个IO口引脚配置为输入模式时,它可以接收外部设备发送的信号。
在输入模式下,引脚的电平可以是高电平(1)或者低电平(0),这取决于外部设备发送的信号。
在51单片机中,可以通过P1口和P3口来配置引脚为输入模式。
当一个引脚配置为输入模式时,相应的寄存器会设置为1,表示该引脚为输入状态。
此时,我们可以通过读取相应的寄存器值来获取引脚的电平状态。
四、IO口的输出模式当一个IO口引脚配置为输出模式时,它可以向外部设备发送信号。
在输出模式下,引脚的电平可以是高电平(1)或者低电平(0),这取决于我们设置的值。
在51单片机中,可以通过P0口、P1口、P2口和P3口来配置引脚为输出模式。
当一个引脚配置为输出模式时,相应的寄存器会设置为0,表示该引脚为输出状态。
此时,我们可以通过写入相应的寄存器值来控制引脚的电平状态。
五、IO口的工作原理在51单片机中,IO口的工作原理是通过寄存器的读写操作来实现的。
通过读取或者写入相应的寄存器值,我们可以配置引脚的工作模式和控制引脚的电平状态。
对于输入模式,我们可以通过读取相应的寄存器值来获取引脚的电平状态。
通过读取P1口和P3口的寄存器值,我们可以判断引脚的电平是高电平还是低电平。
对于输出模式,我们可以通过写入相应的寄存器值来控制引脚的电平状态。
通过写入P0口、P1口、P2口和P3口的寄存器值,我们可以将引脚的电平设置为高电平或者低电平。
六、IO口的应用场景51单片机的IO口广泛应用于各种嵌入式系统中,如电子设备、家用电器、工业控制等。
51单片机IO口工作原理51单片机(英文名为8051 Microcontroller)是一种由Intel公司于1980年推出的8位单片机,广泛应用于嵌入式系统中。
作为一种高性能、低功耗的单片机,其周围有多个IO口(Input/Output ports),可以用来实现数字输入、输出、模拟输入、输出等功能。
下面将详细介绍51单片机IO口的工作原理。
1.51单片机的IO口介绍51单片机共有4个8位的IO口,依次为P0、P1、P2和P3、每个IO 口都是一个8位的寄存器,称为端口寄存器(port register),用于和外部设备进行数据通信。
其中,P0是一个具有双重输入和输出特性的端口,可以配置为输入口或输出口;P1和P3是纯输出端口;P2是输入输出混合端口。
2.IO口的工作模式IO口的工作模式由P0、P1、P2和P3的寄存器位来配置。
每个IO口的寄存器位都有对应的功能和控制位,通过设置这些位可以控制IO口的工作模式和输出状态。
2.1输入模式在输入模式下,IO口作为输入口,接受来自外部器件的信号。
通过将对应的寄存器位设置为1,可以将IO口配置为输入模式。
在输入模式下,端口寄存器的位对应的为悬空状态,可以通过主动上拉或下拉方法来确保IO口的状态。
2.2输出模式在输出模式下,IO口作为输出口,通过控制寄存器位的值可以输出高电平或低电平信号。
将对应的寄存器位设置为0,可以将IO口配置为输出模式。
在输出模式下,直接修改端口寄存器的位即可改变IO口的输出状态。
对于纯输出端口,即P1和P3,更方便地改变IO口的状态可以通过直接操作对应的位。
2.3产生中断IO口还可以通过设置为中断产生源的方式来实现中断功能。
在输入模式下,将对应的寄存器位设置为1,即可配置IO口为中断输入。
当IO口检测到中断触发条件(例如边沿触发、电平触发等),会触发相应的中断服务程序(ISR)。
3.IO口的读取和写入操作为了读取和写入IO口的状态,可以直接访问相应的寄存器。
单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。
一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。
由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
图1 单片机P0口内部一位结构图图2 单片机P0口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。
二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。
51单片机IO端口的四种输入输出模式 (by wuleisly)单片机I O口的使用对所有单片机玩家来说都是“家常便饭”,但是你真的了解I O口吗?你真的能按你的需要配置I O口吗?一、准双向口输出准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。
这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。
当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。
(准双向口有3个上拉晶体管适应不同的需要)准双向口读外部状态前,要先锁存为‘1’,才可读到外部正确的状态.二、强推挽输出推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。
推挽模式一般用于需要更大驱动电流的情况。
三、仅为输入(高阻)输入口带有一个施密特触发输入以及一个干扰抑制电路。
四、开漏输出配置(若外加上拉电阻,也可读)当口线锁存器为0时,开漏输出关闭所有上拉晶体管。
当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到Vc c。
如果外部有上拉电阻,开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O 口。
这种方式的下拉与准双向口相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。
关于I/O口应用注意事项:1.有些是I/O口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可。
因为1T的8051单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就有可能读不对,正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读就对了.有些实际没有损坏,加上拉电阻就O K了有些是外围接的是NP N三极管,没有加上拉电阻,其实基极串多大电阻,I/O口就应该上拉多大的电阻,或者将该I/O口设置为强推挽输出.2.驱动L E D发光二极管没有加限流电阻,建议加1K以上的限流电阻,至少也要加470欧姆以上做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现2个I/O口均输出为低,并且在按键按下时,短接在一起,我们知道一个C MOS电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1~10K),如果不加上拉电阻R1~10K),建议R2的值在15K以上,或用强推挽输出。
2.3 MCS-51单片机输入/输出(I/O)口在MCS-51单片机中有4个双向的8位I/O口P0~P3,在无片外存储器的系统中,这四个I/O口的每一位都可以作为准双向通用I/O口使用。
在具有片外存储器的系统中,P0口作为地址线的低8位以及双向数据总线,P2口作为高8位地址线。
这4个口除了按字节寻址外,还可以按位寻址。
2.3.1 P0口图2.6给出了P0口的逻辑结构,它由一个锁存器、两个三态输入缓冲器、一个多路复用开关以及控制电路和驱动电路等组成。
图2.6 P0口位结构P0口可以作为输入输出口,在实际应用中它通常作为地址/数据复用总线。
在访问外部存储器时,P0口为真正的双向口。
由图2.6,当P0口输出地址/数据信息时,此时控制信号为高电平“1”,模拟开关MUX将地址/数据线与场效应管T2接通,同时与门输出有效,于是输出的地址/数据信息通过与门后将去驱动T1,同时通过反相器后驱动T2。
若地址/数据线为“1”,则T1导通,T2截止,P0口输出为“1”,反之T1截止,T2导通,P0口输出为“0”。
当数据从P0口输入时,读引脚使三态缓冲器打开,端口上的数据经缓冲器后送到内部总线。
当P0口作为通用I/O口时,CPU向端口输出数据,此时MUX开关与锁存器的相连,写信号与触发器的时钟线相连,于是内部总线上的数据经反相后出现在端,再经T2反相后输出到P0端口,输出数据经过两次倒相后相位不变,但是由于T2为漏极开路输出,故此时必须外接上拉电阻。
当P0口作输入时,由于信号即加载在T2上由被送入三态缓冲器,若该接口此前刚锁存过数据“0”,则T2是导通的,T2的输出被钳位在“0”电平,此时输入的“1”无法读入,所以当P0口作为通用I/O口时,在输入数据前,必须向端口写“1”,使T2截止。
不过当在访问外部存储器时,CPU会自动向P0口写“1”。
有时我们需要先将端口的数据读入,经过修改后再输出到端口,如果此时P0口的负载正好是晶体管的基极,并且其输出为“1”,这必然导致该引脚为低,若此时读取引脚信号,则会将刚输出的“1”误读为“0”,为了避免这类误读的错误,于是单片机还提供了读锁存器的功能。
51单片机IO口应用详解MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照单片机引脚图:这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。
P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
ALE 地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。
参见图2(8051扩展2KB EEPROM电路,在图中ALE与4LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。
由于ALE是以晶振六分之一的固定频率输出的正脉冲,当系统中未使用外部存储器时,ALE脚也会有六分之一的固定频率输出,因此可作为外部时钟或外部定时脉冲使用。
学习笔记之-51单片机IO口详解前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。
51单片机每个IO端口结构都有差异,都各有各的特点。
在平时的应用中,特别是设计外围硬件的时候,如果不了解其内部结构的话设计起来也许会有问题(特别是用到P0口),所以好好了解每个端口的结构是非常有必要的。
再有一点是51单片机的引脚不像STM32那样可以支持重映射,所以硬件布局的时候也要注意这一点。
下面就是在网上找的一点资料,整理如下:51单片机I/O口内部结构1.1P0端口的结构及工作原理 P0端口8位中的一位结构图 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。
图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。
下面,我们先介绍一下组成P0口的每个单元部份:- 输入缓冲器:在P0口中,有两个三态的缓冲器,三态门有三个状态,即在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态)。
要读取D锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为‘读锁存器’端)有效。
下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为‘读引脚’的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。
- D锁存器:构成一个锁存器,通常要用一个时序电路,一个触发器可以保存一位的二进制数(即具有保持功能),在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。
上图中的D锁存器,D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。
对于D触发器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(也就是时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端Q非的。
51 单片机IO 口输入输出方式传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。
灌电流方式:LED正极接VCC,负极接IO口。
IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,LED点亮。
但是当你吧LED正极接在IO接口,负极接GND时,将IO接口置于高电平,LED会亮,但因为IO 接口上拉能力不足而使亮度不理想,可以用下面介绍的方式解决这个问题。
推挽工作方式:LED正负极分别接在两个IO口上,然后设置正极IO接口为推挽输出,负极IO接口为标准双向灌电流输入。
推挽方式具有强上拉能力,可以实现高电平驱动LED。
IO口的四种使用方法从I/O口的特性上看,标准51的P0口在作为I/O口使用时,是开漏结构,在实际应用中通常要添加上拉电阻;P1、P2、P3都是准双向I/O,内部有上拉电阻,既可作为输入又可以作为输出。
而LPC900系列单片机的I/O口特性有一定的不同,它们可以被配置成4种不同的工作模式:准双向I/O、推挽输出、高阻输入、开漏。
准双向I/O模式与标准51相比,虽然在内部结构上是不同的,但在用法上类同,比如要作为输入时都必须先写1置成高电平,然后才能去读引脚的电平状态。
!!!!!为什么是这样子?见下面分析。
推挽输出的特点是不论输出高电平还是低电平都能驱动较大的电流,比如输出高电平时可以直接点亮LED(要串联几百欧限流电阻),而在准双向I/O模式下很难办到。
高阻输入模式的特点是只能作为输入使用,但是可以获得比较高的输入阻抗,这在模拟比较器和ADC应用中是必需的。
开漏模式与准双向模式相似,但是没有内部上拉电阻。
开漏模式的优点是电气兼容性好,外部上拉电阻接3V电源,就能和3V逻辑器件接口,如果上拉电阻接5V电源,又可以与5V逻辑器件接口。
此外,开漏模式还可以方便地实现线与逻辑功能。
对于上面疑问的解释,有这样一个资料:高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。
51单片机io口工作的基本原理单片机(Microcontroller)是一种集成电路芯片,它包含了一个完整的计算机系统,可被程序控制。
在单片机中,IO口(Input/Output Port)是指用于与外部设备进行数据交互的接口。
本文将介绍51单片机IO口工作的基本原理。
一、IO口概述IO口是单片机的重要组成部分,它提供了与外部设备进行数据通信的能力。
在51单片机中,通常使用的IO口是P0、P1、P2和P3。
每个IO口都包含了8个引脚,可以用来连接各种外设,如LED、按键、传感器等。
二、IO口的输入输出模式1. 输入模式:当IO口设置为输入模式时,它可以接收来自外部设备的信号。
在51单片机中,通过将IO口对应的bit位设置为1,可以将该IO口设置为输入模式。
2. 输出模式:当IO口设置为输出模式时,它可以向外部设备发送信号。
在51单片机中,通过将IO口对应的bit位设置为0,可以将该IO口设置为输出模式。
当IO口为输出模式时,我们可以通过设置IO口的电平状态(高电平或低电平)来控制外部设备。
三、IO口的控制方法1. 单独控制:我们可以通过直接对IO口进行操作来实现对外部设备的控制。
在51单片机中,通过修改IO口的电平状态,从而改变引脚的电压值,来达到控制的目的。
2. 组合控制:在某些情况下,我们可能需要同时控制多个IO口,使它们协同工作。
在51单片机中,我们可以通过设置特定的寄存器来实现对多个IO 口的同时控制。
例如,使用P0或P2口作为数据总线,通过设置P0CON或P2CON寄存器来实现对该总线上的多个引脚的控制。
四、IO口的中断功能在实际应用中,我们常常需要根据外部设备的状态来触发特定的操作。
为了实现这一功能,51单片机提供了IO口中断功能。
通过设置中断触发方式和中断掩码,当IO口的电平状态发生变化时,可以触发相应的中断服务程序。
五、IO口的工作原理1. 数据方向控制:在51单片机中,通过特定的寄存器来控制IO口的数据方向。