单片机端口对LED灯的控制方法
1、拉电流:图中第(1)个连接方式中,单片机输出高电平时,电流方向由单片机输出到外部,称为拉电流,电流由单片机提供,我理解为“外部元件从单片机取电”。
2、灌电流:图中第(2)个连接方式中,单片机输出低电平时,电流方向由外部进入单片机,称为灌电流,电流由外部电源提供。
默认的 51单片机所有初始化电平信号 都是高电平的
为什么必须使用低电平点亮LED灯?
- P0口作通用I/O用,由于漏极开路,需外接上拉电阻。而P1~P3口内部有30kΩ左右上拉电阻。
- 与P1、P2、P3口相比,P0口每位可驱动8个LSTTL输入,而P1~P3口每一位驱动能力,只有P0口一半。
- 当P0口某位为高电平时,可提供400µA的拉电流;当P0口某位为低电平(0.45V)时,可提供3.2mA的灌电流,而P1~P3口内有30kΩ左右上拉电阻,如高电平输出,则从P1、P2和P3口输出的拉电流Id仅几百µA,驱动能力较弱,亮度较差,见图(a)。
- 如端口引脚为低电平,能使灌电流Id从单片机外部流入内部,则将大大增加流过的灌电流值,见图(b)。
- 任一端口要想获得较大的驱动能力,要用低电平输出。如一定要高电平驱动,可在单片机与发光二极管间加驱动电路,如74LS04、74LS244等。
程序和仿真
#include ”reg52.h“ //引用51头文件
sbit LED = P2^0 ; //位定义
void main() //主函数
{
while(1)
{
LED = 0;//点亮P2.0上的LED
}
}
目前主流的单片机的电源一般是5V和3.3V。
一般的LED正向导通电压是1.8 ~ 2.2V,工作电流一般在1~ 20mA之间,当电流超过20mA时,LED就可能烧坏了。电流越大,烧坏的可能越大。所以常加一电阻,限制整条通路的电流大小。用I=U/R计算。