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

发布者:泉地水无痕最新更新时间:2015-12-31 来源: eefocus关键字: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逻辑器件接口。此外,开漏模式还可以方便地实现“线与”逻辑功能。

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

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

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

高阻态的典型应用:

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

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

上一篇:51单片机复位电路设计
下一篇:基于51单片机的 汽车速度时间表的毕业设计

推荐阅读最新更新时间:2024-03-16 14:42

如何利用51单片机实现一种超声波测距功能呢
利用51单片机实现超声波测距功能,利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,单片机检测到这个负跳变信号后,停止内部计时器计时,读取时间,计算距离,测量结果输出给LCD显示。 1.系统电路图 超声波测距仪由单片机AT89C51、超声波电路和显示电路还有警报电路,按键控制等组成,如图所示。单片机选用AT89C51,采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P3.5端口输出超声波换能器所需的40kHz的
[单片机]
如何利用<font color='red'>51单片机</font>实现一种超声波测距功能呢
基于AT89C2051单片机的纺纱断线自动检测系统的设计
引言 纺纱机器在绕线过程中,判断细线是否断线是十分重要,因此纺纱断线检测装置是根据实际需要应运而生的产品,它能对纺纱过程进行断线检测和监控。本文就根据实际需要设计了一多功能纺纱断线检测控制装置,能够自动检测纱断情况,并且在断纱时,停止电机转动,并进行报警,提醒工作人员,方便工作人员进行故障处理。该装置能给纺纱工带来无限的方便,免去了纺纱工一直观察纱线状态的麻烦,大大地为纺纱工减少了劳动强度,同时也提高了产品的质量,并且也给商家带来更大的价值。同时该装置不仅可以应用于纺纱机器,还可以用于生产类似纱线之类的某些生产厂家。 1 系统功能 基于纺纱断线检测装置的功能要求,纺纱断线检测控制装置的电路主要由以AT89C2051为核心的单片
[单片机]
基于AT89C20<font color='red'>51单片机</font>的纺纱断线自动检测系统的设计
基于51单片机的各种花样的流水灯c51程序
/*----------------------------------------------- 功能:流水灯对称移动闪烁(双闪烁) ------------------------------------------------*/ #include REG52.H #define uint unsigned int void delay(uint); main() { uint comp1=0xfe; uint comp2=0x80; P1=0x7e; delay(30000); while(1) { P1=0xff; comp1 =1;
[单片机]
ARM开发之用linux通用GPIO接口宏函数操作IO口
ARM开发板:S5PV210 驱动步骤: 1.定义一个cdev设备结构体变量 2.给cdev申请设备号 3.定义一个文件操作集 4.设备初始化 5.注册设备进内核 6.申请GPIO口 GPIO相关函数接口: 1.gpio_request(引脚,给引脚的名字) ----申请GPIO口 第一个参数: 在内核代码 \arch\arm\mach-s5pv210\include\mach\gpio.h 中有定义,如下图(部分) 如GPJ2寄存器的第一个引脚,就是 S5PV210_GPJ2(0) 第二个参数: 为管脚起一个名字而已。 例如: 申请GPJ2CON
[单片机]
ARM开发之用linux通用GPIO接口宏函数操作<font color='red'>IO口</font>
利用MCS51单片机驱动步进电机电路及程序
  在这里介绍一下用51单片机驱动步进电机的方法。   这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!!      该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。   采用51驱动ULN2003的方法进行驱动。      ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。   ;******************************************************************   ;*******************
[单片机]
利用MCS<font color='red'>51单片机</font>驱动步进电机电路及程序
51单片机学习笔记:使用DS1302芯片制作电子钟
百度ds1302 写道 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或V
[单片机]
<font color='red'>51单片机</font>学习笔记:使用DS1302芯片制作电子钟
51单片机STC89C52控制LED闪烁(将延时程序写成子函数有形参)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------端口/引脚定义区域----------------------*/ sbit LED=P2^0; //位定义P2.0引脚名为LED /*-----------------------函数声明区域---------------------------*/ void delay(unsigned int xms);//延时函数声明 /*-----------------------主函数区域-----
[单片机]
51单片机控制LCD12864显示汉字
程序: #include reg52.h #define DATA_PORT P0 sbit LCD12864_EN = P1^2; sbit LCD12864_RSET = P1^3; sbit LCD12864_RS = P1^0; sbit LCD12864_RW = P1^1; sbit LCD12864_PSB = P1^6; void delay(unsigned int xms) //延时// { unsigned char i,j; for(j = 0; j xms; j++) { for(i = 0;i 110;i++); } } bit LcdBus
[单片机]
<font color='red'>51单片机</font>控制LCD12864显示汉字
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved