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

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

       

目录

简介:

一. 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;  // 指示灯1sbit LED2 = P2^1;  // 指示灯2void 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;  // 指示灯2void 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;  // 指示灯2void 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 单片机和独立按键组成的灯控系统具有简洁、实用的特点,是学习和应用单片机技术的基础内容,为进一步开发更复杂的系统提供了良好的起点和思路。

相关文章:

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

目录 简介: 一. 1个独立按钮控制一个灯例子 二. 在加一个独立按键,控制第二个灯 三. 第一个开关 开灯, 第二个开关关灯 四. 点一下开灯,在点一下关灯 五. 总结 简介: 51 单片机具有强大的控制能力&#xff0c;而独立按键则提供了一种简单的输入方式。 当把独立按键与 …...

【C++】用红黑树封装map、set

用红黑树封装map、set 1. 红黑树1.1 模板参数的控制1.1.1 Value1.1.2 KeyOfValue 1.2 正向迭代器1.2.1 构造函数1.2.2 begin()end()1.2.3 operator()1.2.4 operator--()1.2.5 operator*()1.2.6 operator->()1.2.7 operator()1.2.8 operator!()1.2.9 总代码 1.3 反向迭代器1.…...

【中颖】SH79F9202 串口通信

头文件 uart.h #ifndef UART_H #define UART_H#include "SH79F9202.h" #include "LCD.h" #include "timer2.h" #include "timer5.h" #include "cpu.h" #include "key.h" #include "io.h" #include &qu…...

IDEA创建Maven项目

IDEA创建Maven项目 第一步&#xff1a;创建新项目 或者 第二步&#xff1a;创建maven模块 前提条件&#xff1a; File>>Settings&#xff0c;检查自己的maven是否已经安装配置好 创建maven模块 其中Archetype一般选择如下 点击创建后生成如下 需要在main目录下创…...

[每周一更]-(第100期):介绍 goctl自动生成代码

​ 在自己组件库中&#xff0c;由于部分设计会存在重复引用各个模板的文件&#xff0c;并且基础架构中需要基础模块内容&#xff0c;就想到自动生成代码模板&#xff0c;刚好之前有使用过goctl&#xff0c;以下就简单描述下gozero中goctl场景和逻辑&#xff0c;后续自己借鉴将自…...

碳素钢化学成分分析 螺纹钢材质鉴定 钢材维氏硬度检测

碳素钢的品种主要有圆钢、扁钢、方钢等。经冷、热加工后钢材的表面不得有裂缝、结疤、夹杂、折叠和发纹等缺陷。尺寸和允许公差必须符合相应品种国家标准的要求。 具体分类、按化学成分分类 &#xff1a; 碳素钢按化学成分&#xff08;即以含碳量&#xff09;可分为低碳钢、中…...

C++ list链表的使用和简单模拟实现

目录 前言 1. list的简介 2.list讲解和模拟实现 2.1 默认构造函数和push_back函数 2.2 迭代器实现 2.2.1 非const正向迭代器 2.2.2 const正向迭代器 2.2.3 反向迭代器 2.3 插入删除函数 2.3.1 insert和erase 2.3.2 push_back pop_back push_front pop_front 2.4 构…...

dependencies?devDependencies?peerDependencies

之前使用的npm包中&#xff0c;我用到了sass包。我当时没有在packagejson中添加依赖项&#xff0c;而是另外install的。这就引起了我的一个思考 初步想法&#xff1a; 我的npm包需要使用sass&#xff0c;那么我应该放在dependencies中&#xff0c;当使用的时候会直接下载 问题…...

在LUAT中使用MQTT客户端,游戏脚本,办公脚本自动操作

本文将介绍在LUAT中工程化使用MQTT客户端的方法及注意事项。实验平台为合宙AIR724UG&#xff0c;其固件版本为Luat_V4001_RDA8910_FLOAT_TMP。 面向对象 使用middleclass库为脚本提供基础面向对象支持&#xff0c;将此repo中的middleclass.lua文件添加到项目中即可使用。middl…...

如何解决maven中snapshot相关jar无法拉取问题

Maven中的SNAPSHOT版本是指正在开发中的版本&#xff0c;这些版本可能会频繁地更新。在使用Maven构建项目时&#xff0c;有时会遇到无法拉取SNAPSHOT相关jar的问题。以下是几种常见的解决方案&#xff1a; 1. 检查Maven配置文件&#xff08;settings.xml&#xff09; 确保你的M…...

类似crossover的容器软件有哪些 除了crossover还有什么 Mac虚拟机替代品

CrossOver是Mac用来运行exe文件的一款软件&#xff0c;但是并不是所有的exe文件CrossOver都支持运行。想要在Mac上运行exe文件的方法并不是只有使用CrossOver这一种&#xff0c;那么有没有类似的软件也可以实现exe文件在Mac上运行呢&#xff1f; CrossOver类似软件有哪些 1、Pl…...

以sqlilabs靶场为例,讲解SQL注入攻击原理【54-65关】

【Less-54】 与前面的题目不同是&#xff0c;这里只能提交10次&#xff0c;一旦提交超过十次&#xff0c;数据会重新刷新&#xff0c;所有的步骤需要重来一次。 解题步骤&#xff1a; 根据测试&#xff0c;使用的是单引号闭合。 # 判断字段的数量 ?id1 order by 3 -- aaa# …...

详解 Flink 的时间语义和 watermark

一、Flink 时间语义类型 Event Time&#xff1a;是事件创建的时间。它通常由事件中的时间戳描述&#xff0c;例如采集的日志数据中&#xff0c;每一条日志都会记录自己的生成时间&#xff0c;Flink 通过时间戳分配器访问事件时间戳Ingestion Time &#xff1a;是数据进入 Flink…...

Unreal Engine项目结构与关卡设置详解

引言 Unreal Engine 是一款功能强大的游戏引擎&#xff0c;为开发者提供了丰富的工具来创建和管理游戏项目。本文将详细介绍一个基本的 Unreal Engine 项目结构&#xff0c;并讲解如何在 Unreal 编辑器中进行关卡设置与操作。 Unreal Engine 项目结构 一个基本的 Unreal Eng…...

Access数据中的SQL偏移注入

使用场景&#xff1a; 目标数据表的字段较多&#xff0c;无法一一获取的时候&#xff0c;尝试使用偏移注入的方式实现SQL注入。 原理&#xff1a; 例如&#xff1a;一个表有6个字段&#xff0c;而你想获取的目标表admin的字段不知道&#xff0c;此时可以使用联合查询的方式获…...

Unity 编辑器扩展,获取目录下所有的预制件

先看演示效果 实现方案 1创建几个用于测试的cube 2&#xff0c;创建一个Editor脚本 3&#xff0c;编写脚本内容 附上源码 using UnityEditor; using UnityEngine;public class GetPrefeb : EditorWindow {private string folderPath "Assets/Resources"; // 指定预…...

【Python】解决Python报错:ValueError: not enough values to unpack (expected 2, got 1)

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 函数返回值解包2.2 遍历含有不同长度元组的列表 3. 解决方案3.1 检查和调整返回值3.2 安全的解包操作 4. 预防措施4.1 使用异常处理4.2 单元测试 结语 引言 在Python编程中&#xff0c;ValueError 是一个常见的异常类…...

政安晨【零基础玩转各类开源AI项目】解析开源:gradio:改进真实虚拟试穿的扩散模型

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; Gradio 是一个开源 Python 软件包&#xff0c;可以让你…...

深入解读Prometheus Adapter:云原生监控的核心组件

一、引言 Prometheus Adapter的背景与重要性 在现代的云原生架构中&#xff0c;微服务和容器化技术得到了广泛的应用。这些技术带来了系统灵活性和扩展性的提升&#xff0c;但同时也增加了系统监控和管理的复杂度。Prometheus作为一款开源的监控系统&#xff0c;因其强大的指标…...

【计算机视觉】数字图像处理基础:以像素为单位的图像基本运算(点运算、代数运算、逻辑运算、几何运算、插值)

0、前言 在上篇文章中&#xff0c;我们对什么是数字图像、以及数字图像的组成&#xff08;离散的像素点&#xff09;进行了讲解&#x1f517;【计算机视觉】数字图像处理基础知识&#xff1a;模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类。 我们知道&a…...

计算机毕业设计springboot校园外卖系统 基于Spring Boot的高校餐饮配送服务平台 Spring Boot框架下的校园在线订餐与配送管理系统

计算机毕业设计springboot校园外卖系统n322b9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的日益成熟和普及&#xff0c;网络已经深度融入人们的日常生活&…...

Awoo Installer:破解Switch玩家的终极全能游戏安装引擎

Awoo Installer&#xff1a;破解Switch玩家的终极全能游戏安装引擎 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 在Nintendo Switch破解生态中&a…...

如何快速将Blender模型导入Unreal Engine?免费Datasmith插件完整指南

如何快速将Blender模型导入Unreal Engine&#xff1f;免费Datasmith插件完整指南 【免费下载链接】bl_datasmith Blender addon to export UE4 Datasmith format 项目地址: https://gitcode.com/gh_mirrors/bl/bl_datasmith Blender Datasmith Export是一款开源免费的Bl…...

告别臃肿OS!手把手教你将Zephyr蓝牙协议栈移植到资源受限MCU(基于Polling轮询架构)

从零构建极简蓝牙协议栈&#xff1a;Zephyr Polling架构在资源受限MCU的实战指南 当智能手环的PCB面积被压缩到硬币大小&#xff0c;当电子价签需要依靠纽扣电池运行三年&#xff0c;传统蓝牙协议栈的"豪华配置"突然成了奢侈品。在深圳华强北的某个研发实验室里&…...

终极指南:RealChar语音识别技术深度对比——Whisper、Google Speech与本地部署方案

终极指南&#xff1a;RealChar语音识别技术深度对比——Whisper、Google Speech与本地部署方案 【免费下载链接】RealChar &#x1f399;️&#x1f916;Create, Customize and Talk to your AI Character/Companion in Realtime (All in One Codebase!). Have a natural seaml…...

超实用AI教材写作攻略!低查重工具助你快速完成教材编写!

AI教材编写工具&#xff1a;解决传统困境&#xff0c;开启高效新时代 编写教材需要丰富的资料支持&#xff0c;但传统的资料整合方法已经无法满足现代需求。以往&#xff0c;我们从课标、学术资料到教学案例&#xff0c;这些信息分散在知网和教研平台等多个渠道&#xff0c;需…...

B2B企业获客技术瓶颈:矩阵跃动龙虾机器人+GEO,精准捕捉采购端搜索流量

在数字化转型深度渗透、AI技术全面重构行业逻辑的当下&#xff0c;B2B行业的获客模式已从传统粗放式的展会、电话陌拜&#xff0c;转向精细化、智能化、数据化的精准获客赛道。不同于C端流量的泛化传播&#xff0c;B2B采购决策链路长、决策人群集中&#xff08;采购负责人、技术…...

别再死记硬背了!用‘快递寄送’和‘跨国通话’的比喻,5分钟搞懂OSI七层模型与TCP/IP五层模型

快递与越洋电话&#xff1a;用生活场景拆解网络分层模型 想象一下&#xff0c;你网购的商品从深圳工厂到北京家门口&#xff0c;要经过打包、装车、跨省运输、本地配送多个环节——这和网络数据传输的层层封装如出一辙。而当你给海外亲友视频通话时&#xff0c;双方手机自动协商…...

Golang面试避坑指南:这5个并发问题90%的人答不对

Golang面试避坑指南&#xff1a;这5个并发问题90%的人答不对 刚接触Go语言的开发者往往会被其简洁的语法和高效的并发模型所吸引&#xff0c;但真正深入使用后才会发现&#xff0c;并发编程中隐藏着许多意想不到的陷阱。特别是在技术面试中&#xff0c;面试官常常会通过精心设计…...

机器视觉中的坐标系转换:从像素到世界的无缝衔接

1. 机器视觉中的坐标系基础概念 第一次接触机器视觉时&#xff0c;最让我困惑的就是各种坐标系之间的关系。记得当时调试工业相机时&#xff0c;明明在图像上看到了目标物体&#xff0c;但机械臂就是抓不准位置。后来才发现&#xff0c;问题出在没有正确理解像素坐标系和世界坐…...