51单片机STC89C52RC——2.1 独立按键控制LED亮灭

作者 : admin 本文共897个字,预计阅读时间需要3分钟 发布时间: 2024-06-15 共1人阅读

目录

目的

一,STC单片机模块

二,独立按键 

2.1 独立按键位置

2.2 独立按键电路图

三,创建Keil项目

四,代码 

五,代码编译、下载到51单片机

六,效果


目的

当独立K1按键按下时LED   D1 点亮,松开D1熄灭。

一,STC单片机模块

51单片机STC89C52RC——2.1 独立按键控制LED亮灭插图

二,独立按键 

2.1 独立按键位置

51单片机STC89C52RC——2.1 独立按键控制LED亮灭插图(1)

2.2 独立按键电路图

 51单片机STC89C52RC——2.1 独立按键控制LED亮灭插图(2)

这里要注意一个设计的bug

P3_1 引脚对应是K1

P3_0 引脚对应是K2

51单片机STC89C52RC——2.1 独立按键控制LED亮灭插图(3) 我们也不用把按键的构造想太复杂 ,就当成一个普通的开关就好。

轻触(还是要多用点力,不是手机屏幕那种轻触)按下就导通,引脚P30就是高电平0(比如:按下按键K1,此时电路就接通GND接地了)。

松开时电路就断开,引脚P30是底电平1。

为什么这里设计成高电平0,低电平1呢?

芯片的每个引脚  都有寄存器 可读也可写。

也就是说我们既能让程序主动让每个引脚处于高电平或者低电平; 同时 引脚上处于高电平或低电平程序也能获取到。

比如:

我们用程序让引脚P3_0处于高电平,可以用 P3_0=0;

如果我们要检查P3_0 处于高电平还是电平。我们可以用 一个变量将其获取出来并打印出来

int P3_0_status=P3_0;//取引脚状态

printf(“%d”,P3_0_status);//打印状态值。

这里我们一直去检测这个引脚的状态就可以了。


		if(P3_1==0)	    //检测按键K1的状态;如果K1按键按下
		{
			P2_0=0;		//D1输出0,点亮
		}
		else
		{
			P2_0=1;		//D1输出1,熄灭
		}

三,创建Keil项目

详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客

四,代码 

#include 
/**
 * 函    数:主函数
 * 参    数:无
 * 返 回 值:无
 */
void main()
{
	while(1)
	{
		if(P3_1==0)	    //检测按键K1的状态;如果K1按键按下
		{
			P2_0=0;		//D1输出0,点亮
		}
		else			//如果K1按键松开
		{
			P2_0=1;		//D1输出1,熄灭
		}
	}
}

 

五,代码编译、下载到51单片机

代码编译请参考

《51单片机STC89C52RC——代码编译-CSDN博客》

代码下载请参考

《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》

六,效果

51单片机STC89C52RC——2.1 独立按键控制LED亮灭插图(4)

本站无任何商业行为
个人在线分享 » 51单片机STC89C52RC——2.1 独立按键控制LED亮灭
E-->