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口的状态
void main() {
//循环
while(1) {
if(key1==0) { //判断I/O口状态,如果为0
led1 = 0; //点亮Lled
}
else {
led1 = 1; //熄灭led
}
}
}
总结:独立按键一端连接I/O口,另一端连接GND或者VCC,当按键被按下GND或者VCC的电平直接到I/O口。通过检测I/O口电压可以判断按键是否被按下,进而触发不同的程序行为。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6001文章
43973浏览量
620840 -
51单片机
+关注
关注
269文章
5649浏览量
120700 -
GND
+关注
关注
2文章
512浏览量
38055 -
独立按键
+关注
关注
1文章
44浏览量
11464
发布评论请先 登录
相关推荐
求解惑:使用51单片机的独立按键实现数码管的显示控制,代码无报错,但是运行结果是错的
求解答:使用51单片机数码管的前两位显示一个十进制数,变化范围是00~59,开始时显示00,每按下s2键一次,数值增加一次,每按下s3键一次,数值减一,每按下s4键一次,数值归0,每按下s5键一次
发表于 08-08 23:47
C51单片机实现独立按键点亮LED灯
:stc-isp-15xx-v6.85H.exe驱动:ch341ser(适用于win10操作系统)实验部分1、C51单片机实现流水灯实验2、美化你的流水灯(自加)3、C51
发表于 12-13 06:37
评论