51单片机IO端口的四种输入输出模式

合集下载

51单片机 IO 口输入输出方式

51单片机 IO 口输入输出方式

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逻辑器件接口。

此外,开漏模式还可以方便地实现线与逻辑功能。

对于上面疑问的解释,有这样一个资料:高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。

STC51单片机IO口模式快速设置

STC51单片机IO口模式快速设置

S T C51单片机I O口模式快速设置-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANSTC51单片机IO口模式的快速设置新型51单片机STC系列,较传统51单片机在性能和速度上有根本性的提高。

速度提高8—12倍;片上RAM大量增加;片上外围模块大量增加,等等。

其中IO口的模式增加为4种(传统51只有1中),以P0口为例:这里,每个端口新增两个寄存器PxM0, PxM1(x=0,1,2,3)。

在设置每一个IO端的模式时都需要对这两个寄存器进行操作。

比如:要将设为推挽输出,设为准双向口,设为高阻输入;设为开路模式,都设为准双向口,那么需要如下的代码:IO_Init(){P0M0=0x30;//0011 0000P0M1=0x90;//1001 0000}这样的设置不便于记忆,很容易写错,且写好的代码可读性差,为此,我们可以通过一个宏定义来解决,具体如下:#define PORT0 0#define PORT1 1#define PORT2 2#define PORT3 3#define BIT0 0#define BIT1 1#define BIT2 2#define BIT3 3#define BIT4 4#define BIT5 5#define BIT6 6#define BIT7 7#define STANDARD 0#define PP_OUT 1#define Z_IN 2#define OD 3#define IOMODE(Port,bit_n,mode) { \switch(Port)\{\case 0:\switch(mode) { \case STANDARD: P0M0&=~(1<<bit_n); P0M1&=~(1<<bit_n); break; \case PP_OUT: P0M0&=~(1<<bit_n); P0M1|= (1<<bit_n); break; \case Z_IN: P0M0|=(1<<bit_n); P0M1&=~(1<<bit_n); break; \case OD: P0M0|=(1<<bit_n); P0M1|=(1<<bit_n); break; \} \break;\case 1:\switch(mode) { \case STANDARD: P1M0&=~(1<<bit_n); P1M1&=~(1<<bit_n); break; \case PP_OUT: P1M0&=~(1<<bit_n); P1M1|= (1<<bit_n); break; \case Z_IN: P1M0|=(1<<bit_n); P1M1&=~(1<<bit_n); break; \case OD: P1M0|=(1<<bit_n); P1M1|=(1<<bit_n); break; \} \break;\case 2:\switch(mode) { \case STANDARD: P2M0&=~(1<<bit_n); P2M1&=~(1<<bit_n); break; \case PP_OUT: P2M0&=~(1<<bit_n); P2M1|= (1<<bit_n); break; \case Z_IN: P2M0|=(1<<bit_n); P2M1&=~(1<<bit_n); break; \case OD: P2M0|=(1<<bit_n); P2M1|=(1<<bit_n); break; \} \break;\case 3:\switch(mode) { \case STANDARD: P3M0&=~(1<<bit_n); P3M1&=~(1<<bit_n); break; \case PP_OUT: P3M0&=~(1<<bit_n); P3M1|= (1<<bit_n); break; \case Z_IN: P3M0|=(1<<bit_n); P3M1&=~(1<<bit_n); break; \case OD: P3M0|=(1<<bit_n); P3M1|=(1<<bit_n); break; \} \break;\}\}有了上面的宏定义,在初始化程序中可以直接这样写IO_Init(){IOMODE(PORT0,BIT7,PP_OUT)IOMODE(PORT0,BIT6, STANDARD)IOMODE(PORT0,BIT5, Z_IN)IOMODE(PORT0,BIT4, OD)IOMODE(PORT0,BIT3, STANDARD)IOMODE(PORT0,BIT2, STANDARD)IOMODE(PORT0,BIT1, STANDARD)IOMODE(PORT0,BIT0, STANDARD)}。

单片机IO口输出模式

单片机IO口输出模式
4、模拟输入_AIN:模拟输入是指传统方式的输入,可以用作ADC输入。
5、推挽输出_OUT_PP: 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。
6、开漏输出_OUT_OD:输出端相当于三极管的集电极。 要得到高电平状态需要上拉电阻才行。 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。
7、复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)
8、复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS
1、上拉输入_IPU:上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻钳位在高电平!电阻同时起限流作用!弱强只是上拉电阻的阻值不同,没有什么严格区分。
2、下拉输入_IPD:就是把电压拉低,拉到GND。与上拉原理相似。
3、浮空输入_IN_FLOATING:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也ቤተ መጻሕፍቲ ባይዱ接低电平。一般实际运用时,引脚不建议悬空,易受干扰。

51单片机资料-单片机IO口介绍

51单片机资料-单片机IO口介绍
P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制
20
综上所述:当P0作为I/O口使用时,特别是作 为输出时,输出级属于开漏电路,必须外接 上拉电阻才会有高电平输出;如果作为输入, 必须先向相应的锁存器写“1”,才不会影响 输入电平。
DQ CLK Q
T1
T2 MUX
P0.n P0口 引脚
读引脚
5
驱动场效应管T2栅极接通。故内部总线与P0口同相。由 于输出驱动级是漏极开路电路,若驱动NMOS或其
它拉流负载时,需要外接上拉电阻。P0的输出级可驱动
8个LSTTL负载。
读锁存器
地址/数据 VCC 控制
内部总线 写锁存器
DQ CLK Q
读锁存器
地址/数据 VCC 控制
内部总线 写锁存器
DQ CLK Q
T1
P0.n P0口
T2
引脚
MUX
读引脚
9
P0口必须接上拉电阻;
在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口 称为准双向口;
三态输入缓冲器的作用:
VCC
(ANL P0,A)
OUTPUT
Q1
P0i
9 01 3
GND
①P1口的一位的结构
它由一个输出锁存器、两个三态输入缓冲器和输出驱
动电路组成----准双向口。
VCC
读锁存器
内部总线 写锁存器
DQ CLK Q
R
P1.n P1口
T
引脚
读引脚

51单片机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口的状态,可以直接访问相应的寄存器。

MCS-51单片机IO口详解

MCS-51单片机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。

MCS-51系列单片机的基本IO口.

MCS-51系列单片机的基本IO口.
Copyright 2006
MCS-51单片机P3口的第二功能
引脚 P3.0 P3.1 P3.2 第二功能 RXD(串行口输入) TXD(串行口输出) INT0(外部中断0输入)
P3.3
P3.4 P3.5 P3.6 P3.7
INT1(外部中断1输入)
P1可以驱动4个标准的TTL负载电路; 注意在P1口作为通用的I/O口使用时,在从I/O端口读入数据时,应该首 先向相应的I/O口内部锁存器写“1”。 举例:从P1口的低四位输入数据 MOV MOV P1,#00001111b ;;先给P1口底四位写1 A,P1 ;;再读P1口的底四位
Copyright 2006
并行输入和输出端口P2
P2 口作为通用 I/O 时,准 双向输入输出端口。 P2口作为高8位地址总线 ,AB8-AB15。
P2 口与 P0 一起构成单片 机与外电路相连接的扩展端 口。通常可以用来扩展存储 器、及与其它总线型连接方 式的外设。
P2可以驱动4个标准的TTL 负载电路。
· P3.6外部数据存储器写选通(WR)
· P3.7外部数据存储器读选通(RD)
Copyright 2006
P3口电路中包含有一个数据输出锁存器、两个三态数据输入 缓冲器、一个数据输出的驱动电路和一个输出控制电路。 P3口的功能和驱动能力 P3口可以作为通用的I/O口使用; 可以作为单片机系统的第二功能的输入和输出。 P3口可以驱动4个标准的TTL负载电路。 注意在P3口的使用时,首先要考虑第二功能的要求。 初学者可能对P3口的第二功能的用法有些疑惑,在他们看:
并行输入和输出端口P3
P3 口作为通用 I/O 时,为准双向输入输出 端口。 P3口的第二功能。 · P3.0 串行输入口(RXD) · P3.1 串行输出口(TXD) · P3.2外中断0(INT0) · P3.3外中断1(INT1) · P3.4定时/计数器0的外部输入口(T0) · P3.5定时/计数器1的外部输入口(T1)

单片机常见输入输出模式

单片机常见输入输出模式

单片机的io分为输入输出模式,输出模式如下图:
常见的四种输出模式:
(1)High-impedance output
高阻输出,可以理解为悬空输出,输出状态有外部条件决定;
(2)P-channel open drain output
P沟道开漏输出,输出高电平(1)有驱动能力,输出低电平(0)时,相当于断开。

原因是P沟道MOS,未开启时,电流从漏极(D)通过续流二极管到源极(S),因为漏极为输出电流方向,所以输出高电平(1)驱动能力强。

(3)N-channel open drain output
N沟道开漏输出,输出低电平(0)有驱动能力,输出高电平(1)时,相当于断开。

原因是N沟道MOS,未开启时,电流从源极(S)通过续流二极管到漏极(D),因为漏极为吸收电流方向,所以输出低电平(0)驱动能力强。

(4)CMOS output
CMOS输出:这种模式下,无论输出高低电平都有较强的驱动能力
三种输出模式
(1)High-impedance input
高阻输入:无上拉和无下拉,对外表现出电平不确定性.。

这种方式只用于输入读取。

何元器件,高阻输入不可取,功耗大。

(2)Input with a pull-down resistor
下拉输入:在无外部输入是时,讲电压钳制在低电平;
(3)Input with a pull-up resistor
上拉输入:在无外部输入是时,讲电压钳制在高电平;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机IO端口的四种输入输出模式(by wuleisly)
单片机I O口的使用对所有单片机玩家来说都是“家常便饭”,但是你真的了解I O 口吗?你真的能按你的需要配置I O口吗?
一、准双向口输出
准双向口输出类型可用作输出和输入功能而不需重新配置
口线输出状态。

这是因为当口线
输出为1时驱动能力很弱,允许外部装置将其拉低。

当引脚输出为低时,它的驱动能力很强,
可吸收相当大的电流。

(准双向口有3个上拉晶体管适应不同的需要)
准双向口读外部状态前,要先锁存为…1‟,才可读到外部正确的状态.
二、强推挽输出
推挽输出配置的下拉结构与开漏输出以及准双向口的下拉
结构相同,但当锁存器为1时提供持续的强上拉。

推挽模式一般用于需要更大驱动电流的情况。

三、仅为输入(高阻)
输入口带有一个施密特触发输入以及一个干扰抑制电路。

四、开漏输出配置(若外加上拉电阻,也可读)
当口线锁存器为0时,开漏输出关闭所有上拉晶体管。

当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到V c c。

如果外部有上拉电阻,开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O口。

这种方式的下拉与准双向口相同。

开漏端口带有一个施密特触发输入以及一个干扰抑制电路。

关于I/O口应用注意事项:
1.有些是I/O口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可。

因为1T的8051单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就有可能读不
对,正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读就对了.
有些实际没有损坏,加上拉电阻就OK了
有些是外围接的是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(3.3K~10K),如果不加上拉电阻R1(3. 3K~10K),
建议R2的值在15K以上,或用强推挽输出。

典型发光二极管控制电路:
推挽/强上拉口,用拉电流驱动发光二极管
弱上拉/准双向口,用灌电流驱动发光二极管限流电阻尽量大于1K,最小不要小于470Ω
混合电压供电系统3V/5V器件I/O口互连
5V单片机连接 3.3V器件时,为防止 3.3V器件承受不了5V,可将相应的5V单片机I/O口先串一个330Ω的限流电阻到 3.3V器件I/O口,程序初始化时将5V器件的I/O口设置成开漏配置,断开内部上拉电阻,相应的 3.3V器件I/O口外部加10K上拉电阻到 3.3V器件的Vc c,这样高电平是 3.3V,低电平是
0V,输入输出一切正常。

3V单片机连接5V器件时,为防3V器件承受不了5V,如果相应的I/ O口是输入,可在该I/O口上串接一个隔离二极管,隔离高压部分。

外部信号电压高于单片机工作电压时截止,I/O口因内部上拉到高电平,所以读I/O口
状态是高电平;外部信号电压为低时导通,I/O口被钳位在0.7V,小于0.8V时单片机读I/O口状态是低电平。

3V单片机连接5V器件时,为防止3V器件承受不了5V,如果相应的I/O 口是输出,可用一个N P N三极管隔离
如何让I/O口上电复位时为低电平
普通8051单片机上电复位时普通I/O口为弱上拉高电平输出,而很多实际应用要求上电时某
些I/O口为低电平输出,否则所控制的系统(如马达)就会误动作,现S TC12系列单片机由于既有弱
上拉输出又有强推挽输出,就可以很轻松的解决此问题。

现可在S TC12系列单片机I/O口上加一个下拉电阻(1K/2K/3 K),这样上电复位时,虽然单片
机内部I/O口是弱上拉/高电平输出,但由于内部上拉能力有限,而外部下拉电阻又较小,无法
将其拉高,所以该I/O口上电复位时外部为低电平。

如果要将此I/O口驱动为高电平,可将此I/O
口设置为强推挽输出,而强推挽输出时,I/O口驱动电流可达20
mA,故肯定可以将该口驱动为高
电平输出。

PWM输出时I/O口的状态(针对ST C系列)。

相关文档
最新文档