当前位置: 首页 > ops >正文

独立按键控制LED

目录

1.独立按键介绍

2.原理图

3.C51数据运输

解释:<< >>

​编辑

解释:& |

解释:^ ~

​编辑

4.C51基本语句

5.按键的跳动

6.独立按键控制LED亮灭代码

第一步:

第二步:

第三步:

第四步:

最终代码:

7.独立按键控制LED状态

第一步:

第二步:

第三步:

最终代码:

8.独立按键控制LED显示二进制

第一步:

第二步:

第三步:

最终代码:

9.独立按键控制LED移位

第一步:

第二步:

第三步:

第四步:

最终代码:


1.独立按键介绍

相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开

2.原理图

3.C51数据运输

解释:<< >>

解释:& |

解释:^ ~

4.C51基本语句

5.按键的跳动

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

6.独立按键控制LED亮灭代码

第一步:

MCU一端接GND,另一端接IO口,单片机上电,所有io口默认都是高电平,没按下高电平,按下低电频

第二步:

把上面的头文件加上X就可以单独设置

第三步:

如下,单独设置

第四步:

K1接P3_1(看芯片网络标号RXD对应的引脚)上得到对应连接


按下亮松开灭第一个,P3_1是控制开关的,P2_0控制灯

最终代码:

#include <REGX52.H>void main()
{while(1){if(P3_1==0 || P3_0==0){P2_0 = 0;	}else{P2_0 = 1;}}	
}

7.独立按键控制LED状态

第一步:

消抖,消除抖动的方法,延时代码生成

第二步:

粘贴到main函数上方,修改延时代码如下

第三步:

实现一个LED灯亮灭未用按键

监测按下按键是否松手,一直按着要一直监测,松手了才操作,像鼠标点击关闭浏览器,点到X的位置,不松还没关闭,松手了才关闭:(28行代码取反的意思,原来亮,取反就是不亮)

最终代码:

#include <REGX52.H>
void Delay(unsigned int xms)
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}}void main()
{while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);P2_0 = ~P2_0;}}
}

8.独立按键控制LED显示二进制

第一步:

通过工具,生成延时函数,复制到mian.c文件

第二步:

修改延时函数,将延时设置为可改变的,带参数函数

第三步:

主函数调用延时函数,实现LED灯亮灭,P3_1为控制按钮,P2控制灯亮灭,LEDNum控制移动

最终代码:

#include <REGX52.H>void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);	}}void main()
{unsigned char LEDNum = 0;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;P2=~LEDNum;}}
}

9.独立按键控制LED移位

第一步:

把前面的延迟函数复制过来,延迟函数放在main函数前面,也可以放到后面,如果放到后面要把下面选中的蓝色部分复制到到现在的位置加分号“;”

第二步:

延时函数在后面时,代码如下,要在前面声明

第三步:

位移的情况,下面是左移<<

左移操作实现

第四步:

板上的操作实现,只控制第一个按钮,按其他没用,灯往箭头方向移动

实现右移操作(看行数,接第四步代码)

最终代码:

#include <REGX52.H>void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);	}}
unsigned char LEDNum;
void main()
{P2=~0x01;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;if(LEDNum>=8){LEDNum=0;}P2=~(0x01<<LEDNum);}if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);if(LEDNum==0){LEDNum=7;}else{LEDNum--;P2=~(0x01<<LEDNum);}}}
}
http://www.xdnf.cn/news/5179.html

相关文章:

  • [杂谈随感-13]: 人的睡眠,如何布置床的位置比较有安全?感?
  • HashMap中put()方法的执行流程
  • Python数据分析案例74——基于内容的深度学习推荐系统(电影推荐)
  • libwebsockets:高性能跨平台WebSocket库实践指南
  • C++——继承
  • 线程安全 1_线程安全
  • Ubuntu22.04怎么退出Emergency Mode(紧急模式)
  • Python环境搭建指南
  • 【redis 初阶】linux 上安装 redis
  • 电池的寿命(不清楚是什么类型/虽然有标明是贪心)
  • NVMe控制器IP设计之接口模块
  • 机器学习 day02
  • PD快充诱骗协议芯片XSP04D与主板共用一个Type-C和电脑传输数据
  • 关于Spring
  • 小刚说C语言刷题—1078求恰好使s=1+1/2+1/3+…+1/n的值大于X时n的值
  • 巡检机器人数据处理技术的创新与实践
  • 【Redis】string
  • Git 时光机:修改Commit信息
  • Java零组件实现配置热更新
  • gitkraken 使用教程
  • ai agent(智能体)开发 python3基础14:在python 中 总能看到方法里面套方法,那什么时候用这种方式合适呢?
  • Python常见面试题
  • LWIP的IP协议笔记
  • 通俗的理解MFC消息机制
  • 理解计算机系统_并发编程(2)_基于I/O复用的并发(一):select浅解
  • 如何理解编程中的递归、迭代与回归?
  • Shell 脚本编程1(常用命令+概述)
  • 在 Elasticsearch 中删除文档中的某个字段
  • Web自动化测试入门详解
  • 【深入理解SpringCloud微服务】手写实现一个微服务分布式事务组件