51单片机-独立按键控制灯灯灯

news2024/11/29 4:41:57

       

目录

简介:

一. 1个独立按钮控制一个灯例子

二. 在加一个独立按键,控制第二个灯

三.  第一个开关 开灯, 第二个开关关灯

四. 点一下开灯,在点一下关灯

五. 总结


简介:

51 单片机具有强大的控制能力,而独立按键则提供了一种简单的输入方式。

当把独立按键与 51 单片机连接后,可以通过按键的按下和释放来触发相应的事件。

在这个场景中,通常会使用单片机的引脚与按键相连来检测按键状态。当按键被按下时,单片机可以检测到相应引脚的电平变化。

然后通过编程,根据不同的按键状态来控制连接在单片机上的灯的亮灭状态。比如,按下某个按键时,对应的灯亮起;再按一次,灯熄灭。

在编程方面,需要不断地检测按键状态,并根据状态执行相应的灯控制逻辑。可以采用轮询或者中断的方式来实现对按键的监测。

这种通过独立按键控制灯的方式简单而直接,非常适合初学者理解和掌握单片机的输入输出控制原理。同时,也可以在此基础上进行扩展和创新,实现更加复杂的功能和交互。

总之,51 单片机与独立按键的结合,为实现简单的人机交互和控制提供了有效的途径,在很多实际项目和实验中都有广泛的应用。

一. 1个独立按钮控制一个灯例子

                

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器

 sbit KEY1 = P3^1;  // 独立按键

 #define LED P2  // 指示灯

void main()
{
	while (1)
	{
		if(KEY1 ==0)
		{
			LED = 0XFE;
		}
		else
		{
            LED = 0XFF;
		}

	}
	
}

代码,中间犯了个错误导致一直仿真失败. 

可以这样写

还可以这样写

经过前面的例子,后面就可以随意发挥了.

二. 在加一个独立按键,控制第二个灯

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器

 sbit KEY1 = P3^1;  // 独立按键

 #define LED P2  // 指示灯

void main()
{
	while (1)                           
	{
		if((P3 & 0x01) == 0)
		{
			LED = 0XFE;
		}
		else
		{

		if((P3 & 0x02) == 0)
		{
			LED = 0XFD;
		}
		else
		{
            LED = 0XFF;
		}
		}
	

	}
	
}

简单点还可以这样写

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器

  sbit KEY1 = P3^0;  // 独立按键
  sbit KEY2 = P3^1;  // 独立按键

  sbit LED1 = P2^0;  // 指示灯1
  sbit LED2 = P2^1;  // 指示灯2

void main()
{
	while (1)                           
	{
		LED1 = KEY1;
		LED2 = KEY2;
	}
	
}

三.  第一个开关 开灯, 第二个开关关灯

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器

 sbit KEY1 = P3^0;  // 独立按键
  sbit KEY2 = P3^1;  // 独立按键

 #define LED P2  // 指示灯

void main()
{
	while (1)                           
	{
		if(KEY1 == 0)
		{
			LED = 0XFE;
		}

		if(KEY2 == 0)
		{
			LED = 0XFF;
		}
		

	}
	
}

四. 点一下开灯,在点一下关灯

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器
//#include <SiLABS\shared\si8051Basestdbool.h>


  sbit KEY1 = P3^0;  // 独立按键
 // sbit KEY2 = P3^1;  // 独立按键

  sbit LED1 = P2^0;  // 指示灯1
 // sbit LED2 = P2^1;  // 指示灯2

void main()
{
	bit firstIn = 1;
	while (1)                           
	{
		if (KEY1 == 0 && firstIn == 1)
		{ 
			firstIn = 0;
			LED1 =~LED1;
		}
		if (KEY1 == 1)
		{
			firstIn = 1;
		}
		//LED1 = KEY1;
		//LED2 = KEY2;
	}
	
}

习惯用bool的话, 还可以这样写.

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器
#include <SiLABS\shared\si8051Base\stdbool.h>


  sbit KEY1 = P3^0;  // 独立按键
 // sbit KEY2 = P3^1;  // 独立按键

  sbit LED1 = P2^0;  // 指示灯1
 // sbit LED2 = P2^1;  // 指示灯2

void main()
{
	bool firstIn = 1;
	while (1)                           
	{
		if (KEY1 == 0 && firstIn)
		{ 
			firstIn = false;
			LED1 =~LED1;
		}
		if (KEY1 == 1)
		{
			firstIn = true;
		}
		//LED1 = KEY1;
		//LED2 = KEY2;
	}
	
}

五. 总结

51 单片机搭配独立按键可实现对灯的灵活控制。

通过硬件连接,将按键与单片机引脚相连,单片机能实时检测按键状态的变化。

在编程方面,利用代码来持续监测按键动作,根据不同的按键按下情况执行相应的灯控制逻辑,如点亮、熄灭或切换不同的亮灯模式等。

其特点包括:

  • 原理简单易懂,适合初学者学习和实践。
  • 能直观展现输入与输出的控制关系。

应用场景多样:

  • 教学实验中帮助理解单片机的控制机制。
  • 一些简单的电子设备中用于便捷的人机交互控制。

总之,51 单片机和独立按键组成的灯控系统具有简洁、实用的特点,是学习和应用单片机技术的基础内容,为进一步开发更复杂的系统提供了良好的起点和思路。

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

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

相关文章

Go微服务: 分布式之通过本地消息实现最终一致性和最大努力通知方案

通过本地消息实现最终一致性 1 &#xff09;概述 我们的业务场景是可以允许我们一段时间有不一致的消息的状态的&#xff0c;并没有说必须特别高的这个消息的一致性比如说在TCC这个架构中&#xff0c;如果采用了消息的最终一致性&#xff0c;整体架构设计要轻松好多即便我们库…

设计模式-外观(门面)模式(结构型)

外观模式 外观模式又称门面模式&#xff08;结构型模式&#xff09;&#xff0c;它是一个可以屏蔽系统复杂性的设计模式。俗话说没有什么问题是加一层“介质”解决不了的&#xff0c;如果有那就在加一层。在开发过程中肯定封装过Utils类&#xff0c;我认为这就是一种门面模式&…

Python魔法之旅-魔法方法(23)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

【C++11数据结构与算法】C++ 栈

C 栈(stack) 文章目录 C 栈(stack)栈的基本介绍栈的算法运用单调栈实战题LC例题&#xff1a;[321. 拼接最大数](https://leetcode.cn/problems/create-maximum-number/)LC例题&#xff1a;[316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) 栈的基…

如何使用ERC-20与Sui Coin标准创建Token

区块链使用tokens作为传递价值的基本手段。它们可以是区块链的原生交换单位&#xff0c;也可以是应用中的交换单位&#xff0c;甚至可以在游戏世界中用作货币。tokens还支持Sui和其他区块链上的强大DeFi活动。 以太坊使用ERC-20标准来创建tokens&#xff0c;借用智能合约&…

VueRouter3学习笔记

文章目录 1&#xff0c;入门案例2&#xff0c;一些细节高亮效果非当前路由会被销毁 3&#xff0c;嵌套路由4&#xff0c; 传递查询参数5&#xff0c;命名路由6&#xff0c;传递路径参数7&#xff0c;路径参数转props8&#xff0c;查询参数转props9&#xff0c;replace模式10&am…

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个&#xff0c;一个是腾讯元宝&#xff0c;一个是通义千问。其它的豆包&#xff0c;Kimi&#xff0c;文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…

【安装笔记-20240608-Linux-动态域名更新服务之YDNS】

安装笔记-系列文章目录 安装笔记-20240608-Linux-动态域名更新服务之YDNS 文章目录 安装笔记-系列文章目录安装笔记-20240608-Linux-动态域名更新服务之YDNS 前言一、软件介绍名称&#xff1a;YDNS主页官方介绍 二、安装步骤测试版本&#xff1a;openwrt-23.05.3-x86-64注册填…

基于协调过滤算法商品推荐系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;商品管理&#xff0c;论坛管理&#xff0c;商品资讯管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;论坛&#xff0c;商品资讯&#xff0c;商家&#xff0c;商品 开发系统…

PyTorch学习6:多维特征输入

文章目录 前言一、模型说明二、示例1.求解步骤2.示例代码 总结 前言 介绍了如何处理多维特征的输入问题 一、模型说明 多维问题分类模型 二、示例 1.求解步骤 1.载入数据集&#xff1a;数据集用路径D:\anaconda\Lib\site-packages\sklearn\datasets\data下的diabetes.cs…

【C++ STL】模拟实现 string

标题&#xff1a;【C :: STL】手撕 STL _string 水墨不写bug &#xff08;图片来源于网络&#xff09; C标准模板库&#xff08;STL&#xff09;中的string是一个可变长的字符序列&#xff0c;它提供了一系列操作字符串的方法和功能。 本篇文章&#xff0c;我们将模拟实现STL的…

Polar Web【中等】写shell

Polar Web【中等】写shell Contents Polar Web【中等】写shell思路&探索EXP运行&总结 思路&探索 初看题目&#xff0c;预测需要对站点写入木马&#xff0c;具体操作需要在过程中逐步实现。 打开站点(见下图)&#xff0c;出现 file_put_contents 函数&#xff0c;其…

pdf文件如何防篡改内容

PDF文件防篡改内容的方法有多种&#xff0c;以下是一些常见且有效的方法&#xff0c;它们可以帮助确保PDF文件的完整性和真实性&#xff1a; 加密PDF文档&#xff1a; 原理&#xff1a;通过设置密码来保护PDF文档&#xff0c;防止未经授权的访问和修改。注意事项&#xff1a;密…

如何对stm32查看IO功能。

有些同学对于别人的开发板的资源&#xff0c;或者IO口&#xff0c;或者串口等资源不知道怎么分配。 方法1、看硬石、野火、正点原子的开发板&#xff0c;看下他们的例子&#xff0c;那个资源用什么。自己多看几个原理图&#xff0c;多看几个视频&#xff0c;做一下笔记。以后依…

通过无障碍控制 Compose 界面滚动的实战和原理剖析

前言 针对 Compose UI 工具包&#xff0c;开发者不仅需要掌握如何使用新的 UI 组件达到 design 需求&#xff0c;更需要了解和实现与 UI 的交互逻辑。 比如 touch 事件、Accessibility 事件等等。 Compose 中对 touch 事件的处理和原理&#xff0c;笔者已经在《通过调用栈快…

Point-LIO:鲁棒高带宽激光惯性里程计

1. 动机 现有系统都是基于帧的&#xff0c;类似于VSLAM系统&#xff0c;频率固定&#xff08;例如10Hz)&#xff0c;但是实际上LiDAR是在不同时刻进行顺序采样&#xff0c;然后积累到一帧上&#xff0c;这不可避免地会引入运动畸变&#xff0c;从而影响建图和里程计精度。此外…

NASA数据集——SARAL 近实时增值业务地球物理数据记录海面高度异常

SARAL Near-Real-Time Value-added Operational Geophysical Data Record Sea Surface Height Anomaly SARAL 近实时增值业务地球物理数据记录海面高度异常 简介 2020 年 3 月 18 日至今 ALTIKA_SARAL_L2_OST_XOGDR 这些数据是近实时&#xff08;NRT&#xff09;&#xff…

【稳定检索/投稿优惠】2024年材料科学与能源工程国际会议(MSEE 2024)

2024 International Conference on Materials Science and Energy Engineering 2024年材料科学与能源工程国际会议 【会议信息】 会议简称&#xff1a;MSEE 2024大会地点&#xff1a;中国苏州会议官网&#xff1a;www.iacmsee.com会议邮箱&#xff1a;mseesub-paper.com审稿结…

WPF音乐播放器 零基础4个小时左右

前言&#xff1a;winfrom转wpf用久的熟手说得最多的是,转回去做winfrom难。。当时不明白。。做一个就知道了。 WPF音乐播放器 入口主程序 FontFamily"Microsoft YaHei" FontSize"12" FontWeight"ExtraLight" 居中显示WindowStartupLocation&quo…

【越界写null字节】ACTF2023 easy-netlink

前言 最近在矩阵杯遇到了一道 generic netlink 相关的内核题&#xff0c;然后就简单学习了一下 generic netlink 相关概念&#xff0c;然后又找了一到与 generic netlink 相关的题目。简单来说 generic netlink 相关的题目仅仅是将用户态与内核态的交互方式从传统的 ioctl 变成…