目录
目的
一,STC单片机模块
二,独立按键
2.1 独立按键位置
2.2 独立按键电路图
三,创建Keil项目
四,代码
五,代码编译、下载到51单片机
六,效果
目的
当独立K1按键按下时LED D1 点亮,松开D1熄灭。
一,STC单片机模块
二,独立按键
2.1 独立按键位置
2.2 独立按键电路图
这里要注意一个设计的bug
P3_1 引脚对应是K1
P3_0 引脚对应是K2
我们也不用把按键的构造想太复杂 ,就当成一个普通的开关就好。
轻触(还是要多用点力,不是手机屏幕那种轻触)按下就导通,引脚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 <REGX52.H>
/*** 函 数:主函数* 参 数:无* 返 回 值:无*/
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博客》