当前位置:   article > 正文

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

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

目录

目的

一,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);//打印状态值。

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

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

三,创建Keil项目

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

四,代码 

  1. #include <REGX52.H>
  2. /**
  3. * 函 数:主函数
  4. * 参 数:无
  5. * 返 回 值:无
  6. */
  7. void main()
  8. {
  9. while(1)
  10. {
  11. if(P3_1==0) //检测按键K1的状态;如果K1按键按下
  12. {
  13. P2_0=0; //D1输出0,点亮
  14. }
  15. else //如果K1按键松开
  16. {
  17. P2_0=1; //D1输出1,熄灭
  18. }
  19. }
  20. }

 

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

代码编译请参考

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

代码下载请参考

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

六,效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/726959
推荐阅读
相关标签
  

闽ICP备14008679号