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

独立按键控制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);}}}
}

相关文章:

  • C++(6):逻辑运算符
  • 基于C语言的TCP通信测试程序开发指南
  • [ctfshow web入门] web71
  • 对话 BitMart 新任 CEO Nenter (Nathan) Chow:技术创新、全球扩张和社区赋能
  • TIME - MoE 模型代码 3.3——Time-MoE-main/time_moe/datasets/time_moe_window_dataset.py
  • 【排错】dify1.3.1插件市场安装报错问题
  • 协议路由更改路径配置
  • 计算机设计大赛山东省赛区软件开发赛道线上答辩复盘
  • 记录一次window2012r2安装配置oracle11g的过程-出现的错误以及解决方法
  • GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系
  • 嵌入式学习笔记 - 运算放大器的共模抑制比
  • Java 原生实现代码沙箱之Java 程序安全控制(OJ判题系统第2期)——设计思路、实现步骤、代码实现
  • Java基础:代理
  • JavaScript篇:async/await 错误处理指南:优雅捕获异常,告别失控的 Promise!
  • Linux系统下安装mongodb
  • ensp的华为小实验
  • JavaSE核心知识点02面向对象编程02-06(泛型)
  • Metasploit 4.22.7:企业级渗透测试新突破
  • Open CASCADE学习|管道壳体生成
  • AI Coding的发展之路:从概念到改变世界的旅程
  • 中美经贸高层会谈将在午餐后继续
  • 本周看啥|喜欢二次元的观众,去电影院吧
  • 吉林市马拉松5月18日开赛,奖牌、参赛服公布
  • 东莞“超级”音乐节五一出圈背后:文旅热力何以澎湃经济脉动
  • 紧盯大V、网红带货肉制品,整治制售假劣肉制品专项行动开展
  • 上海市委常委会扩大会议传达学习习近平总书记考察上海重要讲话和在部分省区市“十五五”时期经济社会发展座谈会上的重要讲话精神