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

devtools/2024/9/24 12:28:53/

目的

当独立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博客》

六,效果


http://www.ppmy.cn/devtools/53664.html

相关文章

解决使用Jmeter进行测试时出现“302“,‘‘401“等用户未登录的问题

使用 JMeter 压力测试时解决登录问题的两种方法 在使用 JMeter 进行压力测试时&#xff0c;可能会遇程序存在安全验证&#xff0c;必须登录后才能对里面的具体方法进行测试&#xff1a; 如果遇到登录问题&#xff0c;通常是因为 JMeter 无法模拟用户的登录状态&#xff0c;导…

微信公众号绑定开发者后端,报错“系统发生错误,请稍后重试”的坑

一、问题描述 在公众号后端填写完基本配置&#xff0c;点击保存&#xff0c;发现提示“系统发生错误&#xff0c;请稍后重试”。联系公众号客服回复&#xff0c;涉及开发内容不给支持-_-|| 二、经多次百度&#xff0c;结合实际尝试&#xff0c;总结解决方案如下&#xff1a;…

MySQL学习——在用Connector/NET处理BLOB数据

MySQL的一个常见用途是将二进制数据存储在BLOB列中。MySQL支持四种不同的BLOB数据类型&#xff1a;TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB&#xff0c;所有这些都在BLOB and TEXT Types和 Data Type Storage Requirements中进行了描述。 存储在BLOB列中的数据可以使用MySQL Co…

C++回溯算法(2)

棋盘问题 #include<bits/stdc.h> using namespace std; void func(int,int); bool tf(int,int); void c(); int n,k; char a[110][110]; int cnt20; int main() {cin>>n>>k;for(int i0;i<n;i){for(int j0;j<n;j){cin>>a[i][j];}}func(0,0);cout…

Apache Calcite - 使用框架Reflective schema访问Java内存数据

前言 前文我们介绍了如何扩展实现自定义schema来访问Java内存数据&#xff0c;在Calcite框架中已提供了若干适配器&#xff0c;可用于访问不用来源的数据&#xff0c;简化我们的工作。 本节介绍 Reflective schema&#xff0c;通过这个适配器直接可以访问内存数据而不用额外扩…

常量池你了解多少

第1部分&#xff1a;引言 JVM简介 Java虚拟机&#xff08;JVM&#xff09;是一个可以执行Java字节码的虚拟计算机。它是Java平台的核心组成部分&#xff0c;允许Java程序在不同的操作系统和硬件平台上运行。JVM不仅提供了内存管理、垃圾回收等基础服务&#xff0c;还支持多种…

服务器被墙是什么原因,怎么解决服务器被墙

服务器被墙通常是由于以下几个原因&#xff1a; 网络监管&#xff1a;某些国家或地区会对网络进行严格的监管&#xff0c;包括对特定网站、应用程序或服务进行屏蔽或封锁。这种情况下&#xff0c;服务器可能会被封锁&#xff0c;导致无法访问。 安全问题&#xff1a;服务器被发…