I/O口,I代表Inpout,O代表Output。前面的所讲的点亮LED,是单片机输出高低电平,从而达到控制LED;这一讲将会通过按键输入电平,单片机检测到输入高低电平,将会有对应的动作。
STC89C52的输入电平识别。
独立按键
按键的一端接单片的I/O口,另一端接GND或者VCC(接VCC的时候需要注意,电压是需要单片机能够识别的输入的电压。) ,下图是接GND的连接方式。
当独立按键按下时,高低电平(VCC或者GND)会直接到达I/O口,此时单片机可以检测到该I/O口是高电平(1)或者低电平(0),然后做独立按键被按下的对应处理。
现在有一个功能需求,当按下按键时LED被点亮,手松开时LED熄灭。代码应该如何写呢?
#include"reg52.h"//引入头文件sbit led1 = P2^0;//位定义led1,可以直接通过位控制led亮灭sbit key1 = P3^1;//位定义key1,可以通过位控制检测该I/O口的状态voidmain(){//循环while(1) {if(key1==0) {//判断I/O口状态,如果为0led1 =0;//点亮Lled}else{ led1 =1;//熄灭led} } }
总结:独立按键一端连接I/O口,另一端连接GND或者VCC,当按键被按下GND或者VCC的电平直接到I/O口。通过检测I/O口电压可以判断按键是否被按下,进而触发不同的程序行为。
全部0条评论
快来发表一下你的评论吧 !