产品概述

51单片机 输入输出 51单片机IO口的四种使用方法

小编 2024-11-24 产品概述 23 0

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口使用时,是开漏结构,在实际应用中通常要添加上拉电阻1、P2、P3都是准双向I/O,内部有上拉电阻,既可作为输入又可以作为输出。而LPC900系列单片机的I/O口特性有一定的不同,它们可以被配置成4种不同的工作模式:准双向I/O、推挽输出、高阻输入、开漏。

准双向I/O模式与标准51相比,虽然在内部结构上是不同的,但在用法上类同,比如要作为输入时都必须先写“1”置成高电平,然后才能去读引脚的电平状态。!!!!!为什么是这样子?见下面分析。

推挽输出的特点是不论输出高电平还是低电平都能驱动较大的电流,比如输出高电平时可以直接点亮LED(要串联几百欧限流电阻),而在准双向I/O模式下很难办到。

高阻输入模式的特点是只能作为输入使用,但是可以获得比较高的输入阻抗,这在模拟比较器和ADC应用中是必需的。

开漏模式与准双向模式相似,但是没有内部上拉电阻。开漏模式的优点是电气兼容性好,外部上拉电阻接3V电源,就能和3V逻辑器件接口,如果上拉电阻接5V电源,又可以与5V逻辑器件接口。此外,开漏模式还可以方便地实现“线与”逻辑功能。

对于上面疑问的解释,有这样一个资料:

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

电路分析时高阻态可做开路理解。你可以把它看作输出(输入)电阻非常大。他的极限可以认为悬空。

高阻态的典型应用:

1、在总线连接的结构上。总线上挂有多个设备,设备与总线以高阻的形式连接。这样在设备不占用总线时自动释放总线,以方便其他设备获得总线的使用权。

2、大部分单片机I/O使用时都可以设置为高阻输入,如凌阳,AVR等等。高阻输入可以认为输入电阻是无穷大的,认为I/O对前级影响极小,而且不产生电流(不衰减),而且在一定程度上也增加了芯片的抗电压冲击能力。

51单片机简单的输入输出(LED和按键)

IO输出与输入 是单片机编程最基本的逻辑控制操作,我们以N76E003为例讲解最基本的编程。

如上图,P15为IO输出,输出高电平时,LED灯亮,输出低电平时,LED灭。

P04作为输入,因为没有外部上拉,所以此处需要配置为内部上拉,配置为准双向模式,并且使能内部上拉。测试时用杜邦线将P04短接到GND模拟按键触发(P04引脚低电平时),不短接到GND就是高电平,不触发。

当P04为低电平时,LED亮;当P04为高电平时,LED灭。通过简单的例程来测试输入输出控制。

#include "N76E003.h"

#include "Function_define.h"

#include "SFR_Macro.h"

#define LEDP15//高电平亮

#define KEYP04//按键,按下为低电平

void main(void)

{

/*设置P15为输出推挽模式 */

P15_PushPull_Mode;

/* 默认灯灭*/

P15 = 0;

/* 设置P04为准双向模式 */

P04_Quasi_Mode;

/*并且输出高电平,打开内部上拉功能 */

P04 = 1;

while(1)

{

/* 如果按键按下,点亮LED灯*/

if(KEY == 0)

{

LED = 1;

}

/* 否则熄灭LED */

else

{

LED = 0;

}

}

}

视频加载中...

以上的按键采用查询的方式,在主循环里每次循环都去扫描下P04的电平状态。

我们都知道,输入触发还可以通过中断事件来捕获,那么该怎么配置IO输入中断呢?同样我们以P04被拉低作为触发条件(从高电平到低电平,下降沿触发),当触发中断时,LED亮灭切换。

#include "typedef.h"

#include "N76E003.h"

#include "Function_define.h"

#include "SFR_Macro.h"

#define LEDP15//高电平亮

#define KEYP04//按键,按下为低电平

void PinInterrupt_ISR (void) interrupt 7

{

if(PIF == (1<<4))/* Pin4 */

{

LED = !LED;/* LED控制取反*/

}

PIF = 0x00; /* 清除中断标志 */

}

void main(void)

{

P15_PushPull_Mode;/*设置P15为输出推挽模式 */

LED = 0;/* 默认灯灭*/

P04_Quasi_Mode;/* 设置P04为准双向模式 */

P04 = 1;/*并且输出高电平,打开内部上拉功能 */

Enable_INT_Port0;/*配置P0端口 中断*/

Enable_BIT4_FallEdge_Trig;/*下降沿触发*/

PIF = 0;/* 清除中断标志*/

set_EPI;/* 使能IO输入中断*/

set_EA;/* 使能总中断 */

while(1)

{

}

}

在新唐003芯片,输入中断这里,所有IO输入中断都共享一个中断入口 。进入中断里再判断是哪一个引脚触发的。

另外,不得不说,新唐挖了个坑,同一时刻 只能有一个端口使能中断 ,要么P0口,要么P1口,或者P2.0/P3.0引脚。所以在设计电路时特别要注意,不要将用于中断的IO布置在不同端口(输入中断唤醒功能在低功耗应用时经常用到)。切记,切记,切记!

还有P20引脚只能用作输入,并且是与RST外部复位复用的,使用时要先配置,使用时当心。

(END)

感谢观看

相关问答

51单片机 有几个 输出输入 端口?

有4个I/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为P0~P3...

51单片机 按键对应的端口?

51单片机所有的lO口都可以作为输入或者输出,按键作为输入可以接任何lO口为了简单独立按键一般直接接于IO引脚和地之间,利用内部上拉电阻如果接于IO和电源VCC...

51单片机 p口 输出 电压多少伏?

答:51单片机输出低电平驱动能力很强,至少可达20mA~50mA。高电平驱动能力很弱,电流在5mA以下。带动4~8个TTL负载是指一个输出类的IO口可与4~8个TTL的输入引脚相...

基于 51单片机 怎么让pcf8591 输出 正弦波形?

pcf8591是一个有4个模拟输入,一个模拟输出,这个芯片与单片机之间的通信是通过IIC实现的,单片机可以控制一个模拟输出,将模拟输出等时的一位一位的增加后一位...

MCS- 51单片机 有几个并行I/O口,它们作为 输入 口时应注意哪些问题?

一般来说,51单片机的IO作为输入没有太多需要注意的,唯一需要注意的就是P0口需要加上上拉电阻。一般来说,51单片机的IO作为输入没有太多需要注意的,唯一需要注...

如何利用 51单片机输出 PWM波?

提供思路:定义一个静态变量,程序每次进入定时器的中断函数中时判断是否满足你说要求的占空比,没达到就继续对变量值进行累加直到满足条件后使输出PWM波的那个...

51单片机 怎么 输入 程序?

要输入51单片机的程序,首先需要使用一个集成开发环境(IDE)来编写代码。常用的IDE有KeilC51和SDCC等。在IDE中,你可以使用C语言或汇编语言编写程序。编写好程...

其功能是.4、MCS- 51单片机 有组工作寄存器,它们的地址范围...

[最佳回答]不全会.

51单片机 可以 输出 锯齿信号吗?

根据51单片机产生锯齿波c语言,单片机产生方波、锯齿波、三角波程序#include#defineucharunsignedchar#defineuintunsignedin...51单片机可...

单片机 驱动交流接触器的方法

[回答]电磁继电器是在在输入电路内电流的作用下,由机械部件的相对运动产生预定响应的一种继电器。它包括直流电磁继电器、交流电磁继电器、磁保持继电器...

猜你喜欢