51单片机中并行I/O口的使用
2013-08-06韩彩霞
韩彩霞
(江汉大学文理学院,湖北 武汉 430056)
1.8位并行I/O口P0口的使用
我们通过如下实例来说明P0口使用中需要注意的问题。
如:在51单片机的P 0.7上接开关,P2.3上接LED,开关控制LED的点亮和熄灭(开关闭合,LED点亮;开关断开,LED熄灭)。电路如图1所示。主程序如下:
#include
sbit K1=P0^7;
sbit LED=P2^3;
voidmain(void)
{while(1)
{if(K1==0)
{LED=1; //灯亮
}
else{LED=0; //灯灭
}
}
}

图1 开关控制LED图(不接上拉电阻)
把上述程序在KeilC软件中进行编译没有错误后,生成HEX文件。然后进行proteus软件仿真。仿真结果如图2所示。

图2 开关控制LED仿真图(不接上拉电阻)
由图2(a)可以看出,当开关断开时P0.7引脚电平为灰色显示,表示是高阻抗状态(这里可以把它看作是低电平)。由图2(b)可知:仿真开始后(开关从(a)图变化到(b)图的状态)无论开关断开或闭合,LED的状态都没有变化,也就是说开关根本没有控制LED的点亮或熄灭。
下面我们把图1改成图3的形式,即在P0.7引脚上外接一个上拉电阻R1,程序没有变化,同样进行如上的proteus软件仿真,仿真结果如图3(a)、(b)所示。

图3 开关控制LED仿真图(接上拉电阻)
由图3(a)可以看出,当开关断开时P0.7引脚旁电平为红色显示,表示为高电平。由图3(b)可知:仿真开始后(开关从(a)图变化到(b)图的状态)开关断开,LED熄灭;开关闭合,LED点亮。实现了开关闭合或断开控制LED点亮或熄灭。
出现上面的情况是由于51单片机P0口内部结构决定的。
因为51单片机P0口内部没有上拉电阻,所以图2(a)中P0.7为高阻抗状态(低电平),要使开关断开P0.7呈现高电平,须外接上拉电阻,如图3所示,这样在P0口才能有真正的高电平输出。
那么是不是使用P0口时都需要外接上拉电阻呢?通过以下分析来说明这个问题。……
