当前位置: 首页 > 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);}}}
}

相关文章:

独立按键控制LED

目录 1.独立按键介绍 2.原理图 3.C51数据运输 解释&#xff1a;<< >> ​编辑 解释&#xff1a;& | 解释&#xff1a;^ ~ ​编辑 4.C51基本语句 5.按键的跳动 6.独立按键控制LED亮灭代码 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1…...

【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用

目录 一、getters 二、 mapState 三、 mapGetters 四、 mapMutations 五、 mapActions 学到这儿来个小总结&#xff1a;四个map方法的使用 总结不易~ 本章节对我有很大的收获&#xff0c; 希望对你也是&#xff01;&#xff01;&#xff01; 本节素材已上传至Gitee&…...

小程序初始化加载时间优化 步骤思考与总结

回想起来&#xff0c;正确的小程序初始加载时间优化步骤应该为&#xff1a; 一、梳理小程序初始化的步骤&#xff0c;以用户点击小程序为开始&#xff08;尽可能靠近&#xff09;&#xff0c;以页面渲染出来的时刻为结束—也就是用户感知到的时间。 二、页面渲染时&#xff0…...

前端弹性布局:用Flexbox构建现代网页的魔法指南

引言&#xff1a;布局的进化史 在网页设计的黑暗时代&#xff08;2010年前&#xff09;&#xff0c;开发者们用float、position和inline-block这些原始工具进行布局&#xff0c;就像用石器时代的工具建造摩天大楼。直到2012年W3C正式推出Flexbox规范&#xff0c;前端世界终于迎…...

Python基于Django的高校教室管理系统【附源码、文档说明】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践

金仓数据库在金融行业的两地三中心容灾架构实践 &#x1f31f;嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 引言 随着国家对信息技术应用创新&#xff0…...

利用多AI协作实现AI编辑器高效开发:创新架构与实践基本构想

在当今快速发展的科技领域&#xff0c;AI技术正以前所未有的速度重塑软件开发的流程和模式。传统的软件开发过程往往需要不同专业人员协同合作&#xff0c;从需求分析到产品设计&#xff0c;再到技术实现&#xff0c;每个环节都需要耗费大量的时间和人力。然而&#xff0c;随着…...

【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型

我们非常高兴地向大家介绍 Seed-Coder&#xff0c;它是一个功能强大、透明、参数高效的 8B 级开源代码模型系列&#xff0c;包括基础变体、指导变体和推理变体。Seed-Coder 通过以下亮点促进开放代码模型的发展。 以模型为中心&#xff1a;Seed-Coder主要利用大语言模型&#…...

C++GO语言微服务之gorm框架操作MySQL

目录 01 01-gorm介绍 02 02-MySQL操作回顾 03 03-gorm创建表 04 04-MySQL的init函数说明 05 05-gorm框架提供的MySQL连接池 06 06-gorm插入数据 07 07-gorm查询数据 08 08-gorm更新数据 09 09-gorm软删除-创建表 10 10-gorm软删除-实现 11 10-MySQL的8小时时区问题 …...

Webug4.0靶场通关笔记-靶场搭建方法(3种方法)

目录 一、虚拟机绿色版本 1. 开启phpstudy 2. 访问靶场 二、Docker版本 1.拉取镜像 2.启动镜像 三、源码安装版本 1. 搭建环境 &#xff08;1&#xff09;安装PHPStudy &#xff08;2&#xff09;WeBug4.0靶场源码 &#xff08;3&#xff09;安装Navicat &#xff…...

HTTP/3展望、我应该迁移到HTTP/2吗

1. HTTP/3展望 HTTP/3 基于 QUIC 协议&#xff0c;完全解决了“队头阻塞”问题&#xff0c;弱网环境下的表现会优于 HTTP/2&#xff1b;QUIC 是一个新的传输层协议&#xff0c;建立在 UDP 之上&#xff0c;实现了可靠传输&#xff1b;QUIC 内含了 TLS1.3&#xff0c;只能加密通…...

【Linux基础】系统监控和进程管理指令

目录 ps命令 top命令 kill命令 killall命令 1.1 命令介绍 1.2 命令格式 1.3 常用选项 1.4 示例 1.4.1 交互模式确认 1.4.2 指定信号 shutdown命令 ps命令 作用&#xff1a;查看当前进程信息。 常用选项&#xff1a; 作用 -e 显示所有进程&#xff0c;包括其他用户…...

【Linux实践系列】:进程间通信:万字详解共享内存实现通信

&#x1f525; 本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 人生就像一场马拉松&#xff0c;重要的不是起点&#xff0c;而是坚持到终点的勇气 ★★★ 本文前置知识&#xff1a; …...

无法更新Google Chrome的解决问题

解决问题&#xff1a;原文链接&#xff1a;【百分百成功】Window 10 Google Chrome无法启动更新检查&#xff08;错误代码为1&#xff1a;0x80004005&#xff09; google谷歌chrome浏览器无法更新Chrome无法更新至最新版本&#xff1f; 下载了 就是更新Google Chrome了...

CenOS7切换使用界面

永久切换 在开始修改之前&#xff0c;我们首先需要查看当前的启动模式。可以通过以下命令来实现&#xff1a; systemctl get-default执行此命令后&#xff0c;系统会返回当前的默认启动模式&#xff0c;例如graphical.target表示当前默认启动为图形界面模式。 获取root权限&…...

# YOLOv3:深度学习中的目标检测利器

YOLOv3&#xff1a;深度学习中的目标检测利器 引言 在计算机视觉领域&#xff0c;目标检测是一项核心任务&#xff0c;它涉及到识别图像或视频中的物体&#xff0c;并确定它们的位置。随着深度学习技术的快速发展&#xff0c;目标检测算法也在不断进步。YOLO&#xff08;You …...

2025数维杯数学建模A题完整参考论文(共36页)(含模型、可运行代码、数据)

2025数维杯数学建模A题完整参考论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、符号定义与说明 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题2模型…...

在 Flink + Kafka 实时数仓中,如何确保端到端的 Exactly-Once

在 Flink Kafka 构建实时数仓时&#xff0c;确保端到端的 Exactly-Once&#xff08;精确一次&#xff09; 需要从 数据消费&#xff08;Source&#xff09;、处理&#xff08;Processing&#xff09;、写入&#xff08;Sink&#xff09; 三个阶段协同设计&#xff0c;结合 Fli…...

Python数据分析

目录 一、数据分析的核心流程 &#xff08;一&#xff09;明确数据分析目标 &#xff08;二&#xff09;数据收集 &#xff08;三&#xff09;数据清洗 1. 处理缺失值 2. 去除重复值 3. 修正错误值和异常值 &#xff08;四&#xff09;数据探索与可视化 1. 计算描述性…...

Java单例模式总结

说明&#xff1a;单例模式的核心是确保一个类只有一个实例&#xff0c;并提供全局访问点。饿汉式和懒汉式是两种常见的实现方式 一、饿汉式和懒汉式 1. 饿汉式&#xff08;Eager Initialization&#xff09; public class EagerSingleton {// 类加载时直接初始化实例private…...

《P7167 [eJOI 2020] Fountain (Day1)》

题目描述 大家都知道喷泉吧&#xff1f;现在有一个喷泉由 N 个圆盘组成&#xff0c;从上到下以此编号为 1∼N&#xff0c;第 i 个喷泉的直径为 Di​&#xff0c;容量为 Ci​&#xff0c;当一个圆盘里的水大于了这个圆盘的容量&#xff0c;那么水就会溢出往下流&#xff0c;直到…...

Pycharm(二十)张量的运算与操作

一、张量的数据类型转换 1.演示data.type(trch.DoubleTensor) #1.创建张量对象 [6 6 6;6 6 6] datatorch.full([2,3],6) print(data.dtype)#默认为torch.int64(LongTensor) #2.转化为double类型 datadata.type(torch.DoubleTensor) print(data.dtype) #3.转换成int类型 datad…...

JVM之内存管理(二)

部分内容来源&#xff1a;JavaGuide二哥Java 说⼀下 JDK1.6、1.7、1.8 内存区域的变化&#xff1f; JDK1.6、1.7/1.8 内存区域发⽣了变化&#xff0c;主要体现在⽅法区的实现&#xff1a; JDK1.6 常量池在方法区 JDK1.7 JDK1.6 使⽤永久代实现⽅法区&#xff1a;JDK1.7 时发…...

蓝桥杯嵌入式第十一届省赛真题

&#xff08;一&#xff09;题目 首先要知道P37对应的CubeMx上面的引脚是PB15,给PB15设置成ADC采集。使用到的PA6和PA7的端口要进行定时器配置 100Hz80 000 000/800 *1000 200Hz80 000 000/400 *1000 ADC采集只需要选择好adc1、adc2 再选择好它的通道就可以了&#xff0c;不…...

LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读

LLMs之ChatGPT&#xff1a;《Connecting GitHub to ChatGPT deep research》翻译与解读 导读&#xff1a;这篇OpenAI帮助文档全面介绍了将GitHub连接到ChatGPT进行深度代码研究的方法、优势和注意事项。通过连接GitHub&#xff0c;用户可以充分利用ChatGPT强大的代码理解和生成…...

多环境开发

# 应用环境(公共环境,写一些公共配置) spring:profiles:active: dev --- # 设置环境 # 生产环境 spring:config:activate:on-profile: pro server:port: 80 --- # 开发环境 spring:config:activate:on-profile: dev server:port: 81 --- # 测试环境 spring:config:activate:on-…...

游戏引擎学习第269天:清理菜单绘制

回顾并为今天的工作设定目标 昨天我们对调试系统中的菜单处理做了一些清理工作&#xff0c;今天我想继续对它们的展示和使用方式进行一些打磨和改进。今天的计划还不完全确定&#xff0c;我还没有完全决定要做什么&#xff0c;但是我希望能够完成这部分工作&#xff0c;所以我…...

《解锁React Native与Flutter:社交应用启动速度优化秘籍》

React Native和Flutter作为当下热门的跨平台开发框架&#xff0c;在优化应用启动性能方面各有千秋。今天&#xff0c;我们就深入剖析它们独特的策略与方法。 React Native应用的初始包大小对启动速度影响显著。在打包阶段&#xff0c;通过精准分析依赖&#xff0c;去除未使用的…...

Web3 初学者的第一个实战项目:留言上链 DApp

目录 &#x1f4cc; 项目简介&#xff1a;留言上链 DApp&#xff08;MessageBoard DApp&#xff09; &#x1f9e0; 技术栈 &#x1f536; 1. Solidity 智能合约代码&#xff08;MessageBoard.sol&#xff09; &#x1f537; 2. 前端代码&#xff08;index.html script.js…...

Innovus 25.1 版本更新:助力数字后端物理设计新飞跃

在数字后端物理设计领域&#xff0c;每一次工具的更新迭代都可能为项目带来巨大的效率提升与品质优化。今天&#xff0c;就让我们一同聚焦 Innovus 25.1 版本&#xff08;即 25.10 版本&#xff09;的更新要点&#xff0c;探寻其中蕴藏的创新能量。 一、核心功能的强势进 AI…...

Git简介和发展

Git 简介 Git是一个开源的分布式版本控制系统&#xff0c;跨平台&#xff0c;支持Windows、Linux、MacOS。主要是用于项目的版本管理&#xff0c;是由林纳斯托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。 起因 在2002年至2005年间&#xff0c;Linux内核开发团队使…...

adb 实用命令汇总

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 基础adb命令 # 重启adb adb kill-server# 查看已连接的设备 adb devices# 进入命令行 adb shell# 使用 -s 参数来指定设备 adb -s <设备序列号> shell…...

DAX 权威指南1:DAX计算、表函数与计算上下文

参考《DAX 权威指南 第二版》 文章目录 二、DAX简介2.1 理解 DAX 计算2.2 计算列和度量值2.3 变量2.3.1 VAR简介2.3.2 VAR的特性 2.4 DAX 错误处理2.4.1 DAX 错误类型2.4.1.1 转换错误2.4.1.2 算术运算错误2.4.1.3 空值或 缺失值 2.4.2 使用IFERROR函数拦截错误2.4.2.1 安全地进…...

使用fdisk 、gdisk管理分区

用 fdisk 管理分区 fdisk 命令工具默认将磁盘划分为 mbr 格式的分区 命令&#xff1a; fdisk 设备名 fdisk 命令以交互方式进行操作的&#xff0c;在菜单中选择相应功能键即可 [rootlocalhost ~]# fdisk /dev/sda # 对 sda 进行分区 Command (m for help): # 进入 fdis…...

Python----神经网络(《Deep Residual Learning for Image Recognition》论文和ResNet网络结构)

一、论文 1.1、论文基本信息 标题&#xff1a;Deep Residual Learning for Image Recognition 作者&#xff1a;Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun 单位&#xff1a;Microsoft Research 会议&#xff1a;CVPR 2016 主要贡献&#xff1a;提出了一种深度残…...

PostgreSQL 的 pg_collation_actual_version 函数

PostgreSQL 的 pg_collation_actual_version 函数 pg_collation_actual_version 是 PostgreSQL 中用于检查排序规则实际版本信息的函数&#xff0c;主要与 ICU (International Components for Unicode) 排序规则相关。 函数基本概念 函数定义 pg_collation_actual_version(…...

使用Simulink开发Autosar Nvm存储逻辑

文章目录 前言Autosar Nvm接口设计模型及接口生成代码及arxmlRTE接口mappingRTE代码分析总结 前言 之前介绍过Simulink开发Dem故障触发逻辑&#xff0c;本文接着介绍另外一个常用的功能-Nvm存储的实现。 Autosar Nvm接口 Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获…...

嵌入式STM32学习——继电器

继电器模块引脚说明 VCC&#xff08;&#xff09;&#xff1a; 供电正极。连接此引脚到电源&#xff08;通常是直流电源&#xff09;&#xff0c;以提供继电器线圈所需的电流。 GND&#xff08;-&#xff09;&#xff1a; 地。连接此引脚到电源的负极或地。 IN&#xff08;或…...

更换内存条会影响电脑的IP地址吗?——全面解析

在日常电脑维护和升级过程中&#xff0c;许多用户都会遇到需要更换内存条的情况。与此同时&#xff0c;不少用户也担心硬件更换是否会影响电脑的网络配置&#xff0c;特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系&#xff0c;帮助读者理解这两者之间的本质…...

AWS SNS:解锁高并发消息通知与系统集成的云端利器

导语 在分布式系统架构中&#xff0c;如何实现高效、可靠的消息通知与跨服务通信&#xff1f;AWS Simple Notification Service&#xff08;SNS&#xff09;作为全托管的发布/订阅&#xff08;Pub/Sub&#xff09;服务&#xff0c;正在成为企业构建弹性系统的核心组件。本文深度…...

【Java ee初阶】网络编程 TCP

TCP的socket api 两个核心的类 ServerSocket 创建一个这样的对象&#xff0c;就相当于打开了一个socket文件。 这个socket对象是给服务器专门使用的 这个类本身不负责发送接收。 主要负责“建立连接” Socket 创建一个这样的对象&#xff0c;也就相当于打开了一个socket文…...

达索MODSIM实施成本高吗?哪家服务商靠谱?

在数字化转型的浪潮中&#xff0c;越来越多的制造企业开始关注达索系统的MODSIM技术。记得去年参加行业峰会时&#xff0c;一位来自汽车零部件企业的技术总监向我倾诉了他的困扰&#xff1a;"我们都知道MODSIM能提升研发效率&#xff0c;但听说实施成本很高&#xff0c;又…...

ISP接口隔离原则

任何层次的软件设计如果依赖了它并不需要的东西&#xff0c;就会带来意料之外的麻烦。ISP强调使用多个特定的接口&#xff0c;而不是一个总接口&#xff0c;避免依赖不需要的接口。即不需要则不应该知道。 ISP特点 降低耦合度&#xff1a;客户端只依赖它需要的接口&#xff0…...

AI Agent(8):安全与伦理考量

引言 AI Agent作为具有一定自主性的智能系统,其行为可能产生深远影响。确保这些系统安全、可靠、符合伦理标准,并遵守相关法规,不仅是技术挑战,也是社会责任。 随着AI Agent能力的增强,其潜在风险也在增加,从数据泄露到决策偏见,从自主性滥用到责任归属不清,这些问题…...

Python3虚拟环境与包管理:项目隔离的艺术

Python3虚拟环境与包管理 为什么需要虚拟环境&#xff1f;虚拟环境工具&#xff1a;你的岛屿建设者一、使用venv创建虚拟环境创建虚拟环境激活虚拟环境退出虚拟环境 二、 包管理&#xff1a;岛上的补给系统2.1 pip&#xff1a;Python的包安装工具基本用法依赖管理 2.2 高级包管…...

23、DeepSeekMath论文笔记(GRPO)

DeepSeekMath论文笔记 0、研究背景与目标1、GRPO结构GRPO结构PPO知识点**1. PPO的网络模型结构****2. GAE&#xff08;广义优势估计&#xff09;原理****1. 优势函数的定义**2.GAE&#xff08;广义优势估计&#xff09; 2、关键技术与方法3、核心实验结果4、结论与未来方向关键…...

Python自动化-python基础(下)

六、带参数的装饰器 七、函数生成器 运行结果&#xff1a; 八、通过反射操作对象方法 1.添加和覆盖对象方法 2.删除对象方法 通过使用内建函数: delattr() # 删除 x.a() print("通过反射删除之后") delattr(x, "a") x.a()3 通过反射判断对象是否有指定…...

用Python绘制动态彩色ASCII爱心:技术深度与创意结合

引言 在技术博客的世界里&#xff0c;代码不仅仅是解决问题的工具&#xff0c;更可以是表达创意的媒介。今天我将分享一个独特的Python爱心代码项目&#xff0c;它结合了数学之美、ASCII艺术和动态效果&#xff0c;展示了Python编程的无限可能。这个项目不仅能运行展示出漂亮的…...

【C++】红黑树

1.红黑树的概念 是一种二叉搜索树&#xff0c;在每个节点上增加一个存储位表示节点的颜色&#xff0c;Red或black&#xff0c;通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;确保没有一条路径会比其他路径长出俩倍&#xff0c;是接近平衡的。 2.红黑树…...

链表头插法的优化补充、尾插法完结!

头插法的优化补充 这边我们将考虑到可以将动态创建链表&#xff0c;和插入新链表到链表头前方&#xff0c;成为新链表头的方法分开&#xff0c;使其自由度上升&#xff0c;在创建完链表后&#xff0c;还可以添加链表元素到成为新的链表头。 就是说可以单独的调用这个insertHea…...