51单片机学习(4)-----独立按键进一步控制LED灯

news2024/12/24 0:10:04

 

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。

 

 

目录

一.  独立按键灵活控制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++;   //移动的位数逐渐增加来实现逐次控制不同LED
			if(LEDNUM>=8)
			{
				LEDNUM=0;   //当移动的位数超过8时重新令位数为0,从而实现不断的逐次循环
			}
			P2=~(0x01<<LEDNUM);  //0x01本应该是第一个LED亮,但是这里马上进行了位运算,所以第一个点亮的为第二个LED然后依次被控制点亮。
		}
	}
}

 

三.  实验视频 

 

51单片机独立按键依次控制LED

感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1468603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P6354 [COCI2007-2008#3] TAJNA

题目传送门 题目描述 使用一种加密算法。 设字符串的长度为 n&#xff0c;则构造一个矩阵&#xff0c;使得 rcn 且在 r≤c 的情况下使得 r 尽量大。 然后把给定的明文按照由上到下&#xff0c;从左到右的顺序填充这个 rc 的矩阵。 得到的密文就是把矩阵按照从左到右&#…

链表和顺序表的优劣分析及其时间、空间复杂度分析

链表和顺序表的优劣分析及其时间、空间复杂度分析 一、链表和顺序表的优劣分析二、算法复杂度<font face "楷体" size 5 color blue>//上面算法的执行次数大致为&#xff1a;F&#xff08;N&#xff09; N^22*N10;   N 10,F(10) 1002010 130次   N 1…

LeetCode LCR 085.括号生成

正整数 n 代表生成括号的对数&#xff0c;请设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2&#xff1a; 输入&#x…

详解Megatron中的数据混合算法(BlendableDataset)

&#x1f9d1;‍&#x1f4bb; 本文主要讲解Megatron早期版本中的数据混合算法。 目录 1. 数据混合2. 源码解析3. 证明部分&讨论4. 进一步优化 1. 数据混合 在谈源码之前&#xff0c;我们有必要先了解一下Megatron中的数据混合思想。 给定 n n n 个数据集 D 1 , D 2 , …

【加密周报】中美非“出手”压制比特币?以太坊飙涨震醒沉睡8年巨鲸!“AI热潮”刺激相关代币集体拉涨!

回顾本周&#xff0c;中美非三国出现压制加密货币行动&#xff0c;比特币空头暂获胜利&#xff0c;币价最低触及50521美元。以太币表现跑赢比特币&#xff0c;牛市回归下震醒沉睡8年的ICO巨鲸。美国人工智能(AI)热潮下&#xff0c;刺激世界币(Worldcoin)突破历史新高&#xff0…

美团外卖流程解析:便捷、高效、安全的美食配送

美团外卖作为中国最大的外卖平台之一&#xff0c;提供了丰富多样的美食选择&#xff0c;并通过高效的配送服务将美食送到用户手中。本文将深入探讨美团外卖的流程&#xff0c;从下单到送达&#xff0c;揭秘背后的便捷、高效、安全的运营体系。 1. 下单与支付 美团外卖的下单过…

成功解决No module named ‘sklearn‘(ModuleNotFoundError)

成功解决No module named ‘sklearn’(ModuleNotFoundError) &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您…

【前端素材】推荐优质后台管理系统Qovex平台模板(附源码)

一、需求分析 1、定义 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理…

MATLAB环境下使用滤波自适应算法进行主动噪声消除

滤波作为自适应滤波系统中信号处理等研究领域的重要组成模块&#xff0c;主要被应用于信道均衡、系统识别、声学回波抵消、生物医学、雷达、波束形成等模块。在自适应滤波系统中&#xff0c;当信息数据统计方面的相关先验知识是已知的情况下&#xff0c;滤波器才能处理相关的输…

vulnhub靶场之driftingblues-1

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email (it should be on my profile) for troubleshooting or questions. 2.靶场下载 https://www.vulnhub.…

新版Java面试专题视频教程——虚拟机篇①

新版Java面试专题视频教程——虚拟机篇① 1 JVM组成1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f;1.2 什么是程序计数器&#xff1f;1.3 你能给我详细的介绍Java堆吗?1.3.1 1.7和1.8 堆的区别1.3.2 元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.4.1 堆和栈的区…

二进制部署k8s集群之cni网络插件

目录 k8s的三种网络模式 pod内容器之间的通信 同一个node节点中pod之间通信 不同的node节点的pod之间通信 flannel网络插件 flannel的三种工作方式 VxLAN host-GW UDP Flannel udp 模式 Flannel VXLAN 模式 flannel插件的三大模式的总结 calico网络插件 k8s 组网…

Python urllib、requests、HTMLParser

HTTP协议 HTTP 协议&#xff1a;一般指HTTP(超文本传输)协议。 HTTP是为Web浏览器和Web服务器之间的通信而设计的&#xff0c;基于TCP/IP通信协议嘞传递数据。 HTTP消息结构 客户端请求消息 客户端发送一个HTTP请求到服务器的请求消息包括以下格式 请求行(request line)请求…

排列组合(附10道题目及解析)

一、认识C,P,A: A.排列 A(x,y)(x!)/[(x-y)!]x(x-1)...(x-y1) P.排列 P(x,y)A(x,y) C.组合 C(x,y)A(x,y)(y!)x(x-1)...(x-y1)/(y!)(x!){(y!)[(x-y)!]} 例&#xff1a;C(5,2)(54)(21)10 例&#xff1a;A(5,2)5420 例&#xff1a;P(5,2)5420 二、特殊情况 C…

Linux: yum查看、安装、删除软件包

Linux: yum安装删除软件包 yum查找软件包yum 安装软件yum 卸载软件 yum查找软件包 在Linux中提供一条yum list指令用于查看当前系统中已存在和可以安装的软件包&#xff0c;但由于软件包的数量过多&#xff0c;所以我们可以通过grep指令来过滤出我们需要查找的软件包。 yum l…

欧拉函数性质和快速幂算法及python实现

目录 欧拉函数 快速幂算法 快速模幂算法 欧拉函数 两个不同的正整数a,b&#xff0c;若gcd(a,b)1,则a和b互质&#xff0c;1与任何正整数都互质 欧拉函数的意义 φ(n) 表示小于或等于正整数n的所有正整数中与n互质的数的个数 如φ(32) 16&#xff0c;即小于32的数中有16个…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(8)模型训练

好吧&#xff0c;搞了半天&#xff0c;都是围绕数据在干活&#xff0c;这也就验证了&#xff0c;我们说的&#xff0c;数据准备等工作&#xff0c;要占到机器学习项目一半以上的工作量和时间。而且数据决定了模型的天花板&#xff0c;算法只是去达到上限。 我们今天来学习模型…

优秀实践| 运营商核心系统国产数据库迁移实践

作者介绍 陕西移动信息技术部 张云川 陕西移动信息技术部 王永强 新炬网络中北三部 张建 随着国家对自主可控战略的深入推进&#xff0c;笔者所在省份聚焦数据库国产化替换&#xff0c;全面加速数据库国产化替换进程。以核心系统带动周边系统&#xff0c;成功在能力运营中…

EasyRecovery易恢复16软件最新中文版本下载

一、主要功能与特点 EasyRecovery易恢复16是一款专业的数据恢复软件&#xff0c;其主要功能和特点包括&#xff1a; 全面的数据恢复&#xff1a;支持恢复因误删除、格式化、系统崩溃、病毒攻击等多种原因丢失的数据。深度扫描技术&#xff1a;对于严重损坏或格式化的存储设备…

【坑】Spring Boot整合MyBatis,一级缓存失效

一、Spring Boot整合MyBatis&#xff0c;一级缓存失效 1.1、概述 MyBatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xf…