51单片机学习(4)-----独立按键进一步控制LED灯
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。
目录
一. 独立按键灵活控制LED
程序一:单个独立按键控制多个LED灯
程序二:多个独立按键同时控制LED
二. 独立按键实现LED的位移控制
1.位运算介绍:
2.具体运用:
三. 实验视频
一. 独立按键灵活控制LED
对于独立按键的具体介绍可以参考:51单片机学习(3),这里我们借助一些算术运算符以及一些逻辑运算符来实现不同的控制。
运算符如下:
例如:
程序一:单个独立按键控制多个LED灯
#include <REGX52.H>void Delay(unsigned int xms) //@11.0592MHz
{unsigned char data i, j;while(xms){i = 2;j = 199;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, P2_1=~P2_1; //实现K1控制LED1和LED2}}
}
程序二:多个独立按键同时控制LED
#include <REGX52.H>void Delay(unsigned int xms) //@11.0592MHz //延时函数设置
{unsigned char data i, j;while(xms){i = 2;j = 199;do{while (--j);} while (--i);xms--;}
}
void main()
{while(1) //while循环语句{if(P3_1==0||P3_0==0) //if语句,并且运用逻辑或{Delay(20); //延时20ms,去除第一段抖动while(P3_1==0||P3_0==0);Delay(20); //去除第二段抖动P2_0=~P2_0; //按位取反,即对应的LED状态改变}}
}
二. 独立按键实现LED的位移控制
1.位运算介绍:
按位与(&): 按位与为双位运算符,其作用于将两个二进制数逐位相与,即只要对应的两个二进制都为1时,结果为1,否则为0。
例如:1&1=1,1&0=0,0&0=0。
按位或(|):按位或也为双目运算符,其作用于将两个二进制数逐位相或,即只要对应的两个二进制中有一个为1,其结果为1,否则为0。
例如:1|1=1,1|0=1,0|0=0。
按位异或(^):进行异或运算时,当两个二进制表示不同时为1,相同则为0。
例如:1^1=0,1^0=1。
按位取反(~):按位取反即对于二进制的每一位都取反。
例如:假设1的二进制为0000 0001,则按位取反后为1111 1110。
按位左移(<<):将操作数的二进制所有位向左移动指定的位数。
例如:1的二进制0000 0001,0000 0001<<2即1的二进制数按位左移动2位,则为0000 0100。
按位右移(>>):将操作数的二进制所有位向左移动指定的位数。
例如:10的二进制为0000 1010,0000 1010>>2即10的二进制数按位右移动2位,则为0000 0010(右移两位时高位补0即右移后的第一位补0)。
注意:这里的按位左移与右移均只对于正数而言,且左移时为低位补0,右移时为高位补0。
2.具体运用:
源程序:
#include <REGX52.H>
void Delay(unsigned int xms) //@11.0592MHz
{unsigned char data i, j;while(xms){i = 2;j = 199;do{while (--j);} while (--i);xms--;}
}void main()
{unsigned int LEDNUM=0; //定义移动的位数while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNUM++; //移动的位数逐渐增加来实现逐次控制不同LEDif(LEDNUM>=8){LEDNUM=0; //当移动的位数超过8时重新令位数为0,从而实现不断的逐次循环}P2=~(0x01<<LEDNUM); //0x01本应该是第一个LED亮,但是这里马上进行了位运算,所以第一个点亮的为第二个LED然后依次被控制点亮。}}
}
三. 实验视频
51单片机独立按键依次控制LED
感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。
相关文章:

51单片机学习(4)-----独立按键进一步控制LED灯
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 独立按键灵活控制LED 程序一:单个独立按键控制多个…...
Redis 学习笔记 3:黑马点评
Redis 学习笔记 3:黑马点评 准备工作 需要先导入项目相关资源: 数据库文件 hmdp.sql后端代码 hm-dianping.zip包括前端代码的 Nginx 启动后端代码和 Nginx。 短信登录 发送验证码 PostMapping("code") public Result sendCode(RequestP…...

电脑恢复删除数据的原理和方法
在恢复数据的时候,很多人都会问,为什么删除的数据还能恢复?本篇和大家一起了解下硬盘上数据的存储方式,文件被删除的时候具体发生了什么,帮助大家理解数据恢复的基本原理。最后还会分享一个好用的数据恢复工具并附上图…...

SpringBoot和SpringCloud的区别,使用微服务的好处和缺点
SpringBoot是一个用于快速开发单个Spring应用程序的框架,通过提供默认配置和约定大于配置的方式,快速搭建基于Spring的应用。让程序员更专注于业务逻辑的编写,不需要过多关注配置细节。可以看成是一种快速搭建房子的工具包,不用从…...

32单片机基础:GPIO输出
目录 简介: GPIO输出的八种模式 STM32的GPIO工作方式 GPIO支持4种输入模式: GPIO支持4种输出模式: 浮空输入模式 上拉输入模式 下拉输入模式 模拟输入模式: 开漏输出模式:(PMOS无效,就…...

【linux】查看openssl程序的安装情况
【linux】查看openssl程序的安装情况 1、查看安装包信息 $ rpm -qa |grep openssl 2、安装路径 $ rpm -ql openssl $ rpm -ql openssl-libs $ rpm -ql openssl-devel 3、相关文件和目录 /usr/bin/openssl /usr/include/openssl /usr/lib64/libssl.so.* /usr/lib64/libcrypto…...
高防服务器主要运用在哪些场景?
高防服务器主要是用来防御DDOS攻击的服务器,能够为客户提供安全维护,高防服务器能够帮助网站拒绝服务攻击,定时扫描网络主节点,进行查找可能会出现的安全漏洞的服务类型,高防服务器也会根据不同的IDC机房环境来提供硬防…...
Eureka:微服务中的服务注册与发现机制
引言 在微服务架构中,由于服务数量巨大并且各个服务的实例可能会频繁上下线,因此服务注册和发现机制至关重要。 那么,有什么工具或技术可以帮助我们解决这个问题呢? 答案就是Eureka。 一、Eureka简介 Eureka是Netflix公司开源的…...

python程序设计基础:字符串与正则表达式
第四章:字符串与正则表达式 4.1字符串 最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码采用1个字节来对字符进行编码,最多只能表示256个符号。 随着信息技…...

华为配置WDS手拉手业务示例
配置WDS手拉手业务示例 组网图形 图1 配置WDS手拉手业务示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户通过WLAN接入网络,以满足移动办公的最基本需求。但企业考虑到AP通过有线部署的成本较高,所以通过建立…...

Apache celeborn 安装及使用教程
1.下载安装包 https://celeborn.apache.org/download/ 测0.4.0时出现https://github.com/apache/incubator-celeborn/issues/835 2.解压 tar -xzvf apache-celeborn-0.3.2-incubating-bin.tgz 3.修改配置文件 cp celeborn-env.sh.template celeborn-env.shcp log4j2.xml.…...
数据保护:如何有效应对.BecSec-P-XXXXXXXX勒索病毒的威胁
导言: 随着网络安全威胁的不断增加,勒索软件成为了网络犯罪分子的一种常见手段之一。.BecSec-P-XXXXXXXX勒索病毒(简称.BecSec勒索病毒)作为其中之一,对用户的数据安全构成了严重威胁。本文91数据恢复将介绍.BecSec勒…...
流畅的Python(十二)-继承的优缺点
一、核心要义 1. 子类化内置类型的缺点 2.多重继承和方法解析顺序 二、代码示例 1. 子类化内置类型的缺点 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2024/2/24 7:29 # Author : Maple # File : 01-子类化内置类型的问题.py # Software: PyCharm fr…...
机器学习基础(三)监督学习的进阶探索
导语:上一节我们深入地探讨监督学习和非监督学习的知识,重点关注它们的理论基础、常用算法及实际应用场景,详情可见: 机器学习基础(二)监督与非监督学习-CSDN博客文章浏览阅读769次,点赞15次&a…...
avidemux-一个免费的视频编辑器,用于剪切、过滤和编码项目
avidemux-一个免费的视频编辑器,用于剪切、过滤和编码项目 avidemux-一个免费的视频编辑器,用于剪切、过滤和编码项目avidemux下载avidemux源代码参考资料 avidemux-一个免费的视频编辑器,用于剪切、过滤和编码项目 avidemux下载 avidemux …...

RisingWave最佳实践-利用Dynamic filters 和 Temporal filters 实现监控告警
心得的体会 刚过了年刚开工,闲暇之余调研了分布式SQL流处理数据库–RisingWave,本人是Flink(包括FlinkSQL和Flink DataStream API)的资深用户,但接触到RisingWave令我眼前一亮,并且拿我们生产上的监控告警…...

【Qt学习】QRadioButton 的介绍与使用(性别选择、模拟点餐)
文章目录 介绍实例使用实例1(性别选择 - 单选 隐藏)实例2(模拟点餐,多组单选) 相关资源文件 介绍 这里简单对QRadioButton类 进行介绍: QRadioButton 继承自 QAbstractButton ,用于创建单选按…...

基于java springboot的图书管理系统设计和实现
基于java springboot的图书管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…...

自定义类型:联合和枚举
目录 1. 联合体 1.1 联合体类型的声明及特点 1.2 相同成员的结构体和联合体对比 1.3 联合体大小的计算 1.4 联合体的应用举例 2. 枚举类型 2.1 枚举类型的声明 2.2 枚举类型的优点 1. 联合体 1.1 联合体类型的声明及特点 像结构体一样,联合体也是由一个或…...

每日一学—由面试题“Redis 是否为单线程”引发的思考
文章目录 📋 前言🌰 举个例子🎯 什么是 Redis(知识点补充)🎯 Redis 中的多线程🎯 I/O 多线程🎯 Redis 中的多进程📝 结论🎯书籍推荐🔥参与方式 &a…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...

向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...