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

目的

当独立K1按键按一下(立即松开),LED D1点亮。再按一下K1(立即松开)LED  D1熄灭

与前一节《51单片机STC89C52RC——2.1 独立按键控制LED亮灭》当独立K1按键按下时LED   D1 点亮,松开D1熄灭 效果不一样。

一,STC单片机模块

二,独立按键 

2.1 独立按键位置

2.2 独立按键电路图

 

这里要注意一个设计的bug

P3_1 引脚对应是K1

P3_0 引脚对应是K2

 要实现按一下点亮、再按一下熄灭,我们就需要分析按键上的电压变化。 

 

对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会立即断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动 。如上图。

具体在程序上我们就需要按照这个图做相应的处理。

		if(P3_1==0)			//如果K1按键按下
		{
			Delay(15);		//延时消抖
			while(P3_1==0);	//松手检测
			Delay(15);		//延时消抖			
			P2_0=~P2_0;		//LED1取反
		}

三,创建Keil项目

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

四,代码 

#include <REGX52.H>

/**
 * 函    数:延时函数 毫秒
 * 参    数:ms 延时多少毫秒
 * 返 回 值:无
 */
void Delay_ms(int ms)	//@12.000MHz
{
	unsigned char data i, j;
	while(ms--)
	{ 
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}
/**
 * 函    数:主函数
 * 参    数:无
 * 返 回 值:无
 */
void main()
{
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay_ms(15);		//延时消抖
			while(P3_1==0);	//松手检测 一直按着没松手
			Delay_ms(15);		//延时消抖			
			P2_0=~P2_0;		//LED1取反
		}
	}
}

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

代码编译请参考

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

代码下载请参考

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

六,效果

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 09:24:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 09:24:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 09:24:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 09:24:03       20 阅读

热门阅读

  1. mysql对VARCHAR和int的误解

    2024-06-17 09:24:03       7 阅读
  2. 保密工作应党而生、伴党而行、为党而兴

    2024-06-17 09:24:03       6 阅读
  3. KindleUnpack - Python解压Amazon / Kindlegen生成的电子书

    2024-06-17 09:24:03       8 阅读
  4. 数据增强 cutout改进imbalance

    2024-06-17 09:24:03       6 阅读
  5. ActiViz中的交互类Widget

    2024-06-17 09:24:03       8 阅读
  6. 安全智能体的前沿技术研究与实践

    2024-06-17 09:24:03       6 阅读
  7. 【Python入门与进阶】Python 中的正则表达式

    2024-06-17 09:24:03       10 阅读
  8. 代码随想录 day37|day38|day39

    2024-06-17 09:24:03       10 阅读
  9. Django 中间件

    2024-06-17 09:24:03       7 阅读
  10. C++240611

    C++240611

    2024-06-17 09:24:03      7 阅读
  11. Android 数据库

    2024-06-17 09:24:03       7 阅读
  12. grep binary file matches on text file

    2024-06-17 09:24:03       8 阅读
  13. 二叉树的遍历

    2024-06-17 09:24:03       10 阅读
  14. 查看 RK3568 Android SDK 版本的详细指南

    2024-06-17 09:24:03       8 阅读
  15. 网络安全实战:剖析ThinkPHP 5.1.X反序列化漏洞

    2024-06-17 09:24:03       7 阅读