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 单片机具有强大的控制能力,而独立按键则提供了一种简单的输入方式。 当把独立按键与 …...
【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项目 第一步:创建新项目 或者 第二步:创建maven模块 前提条件: File>>Settings,检查自己的maven是否已经安装配置好 创建maven模块 其中Archetype一般选择如下 点击创建后生成如下 需要在main目录下创…...
[每周一更]-(第100期):介绍 goctl自动生成代码
在自己组件库中,由于部分设计会存在重复引用各个模板的文件,并且基础架构中需要基础模块内容,就想到自动生成代码模板,刚好之前有使用过goctl,以下就简单描述下gozero中goctl场景和逻辑,后续自己借鉴将自…...
碳素钢化学成分分析 螺纹钢材质鉴定 钢材维氏硬度检测
碳素钢的品种主要有圆钢、扁钢、方钢等。经冷、热加工后钢材的表面不得有裂缝、结疤、夹杂、折叠和发纹等缺陷。尺寸和允许公差必须符合相应品种国家标准的要求。 具体分类、按化学成分分类 : 碳素钢按化学成分(即以含碳量)可分为低碳钢、中…...
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包中,我用到了sass包。我当时没有在packagejson中添加依赖项,而是另外install的。这就引起了我的一个思考 初步想法: 我的npm包需要使用sass,那么我应该放在dependencies中,当使用的时候会直接下载 问题…...
在LUAT中使用MQTT客户端,游戏脚本,办公脚本自动操作
本文将介绍在LUAT中工程化使用MQTT客户端的方法及注意事项。实验平台为合宙AIR724UG,其固件版本为Luat_V4001_RDA8910_FLOAT_TMP。 面向对象 使用middleclass库为脚本提供基础面向对象支持,将此repo中的middleclass.lua文件添加到项目中即可使用。middl…...
如何解决maven中snapshot相关jar无法拉取问题
Maven中的SNAPSHOT版本是指正在开发中的版本,这些版本可能会频繁地更新。在使用Maven构建项目时,有时会遇到无法拉取SNAPSHOT相关jar的问题。以下是几种常见的解决方案: 1. 检查Maven配置文件(settings.xml) 确保你的M…...
类似crossover的容器软件有哪些 除了crossover还有什么 Mac虚拟机替代品
CrossOver是Mac用来运行exe文件的一款软件,但是并不是所有的exe文件CrossOver都支持运行。想要在Mac上运行exe文件的方法并不是只有使用CrossOver这一种,那么有没有类似的软件也可以实现exe文件在Mac上运行呢? CrossOver类似软件有哪些 1、Pl…...
以sqlilabs靶场为例,讲解SQL注入攻击原理【54-65关】
【Less-54】 与前面的题目不同是,这里只能提交10次,一旦提交超过十次,数据会重新刷新,所有的步骤需要重来一次。 解题步骤: 根据测试,使用的是单引号闭合。 # 判断字段的数量 ?id1 order by 3 -- aaa# …...
详解 Flink 的时间语义和 watermark
一、Flink 时间语义类型 Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳Ingestion Time :是数据进入 Flink…...
Unreal Engine项目结构与关卡设置详解
引言 Unreal Engine 是一款功能强大的游戏引擎,为开发者提供了丰富的工具来创建和管理游戏项目。本文将详细介绍一个基本的 Unreal Engine 项目结构,并讲解如何在 Unreal 编辑器中进行关卡设置与操作。 Unreal Engine 项目结构 一个基本的 Unreal Eng…...
Access数据中的SQL偏移注入
使用场景: 目标数据表的字段较多,无法一一获取的时候,尝试使用偏移注入的方式实现SQL注入。 原理: 例如:一个表有6个字段,而你想获取的目标表admin的字段不知道,此时可以使用联合查询的方式获…...
Unity 编辑器扩展,获取目录下所有的预制件
先看演示效果 实现方案 1创建几个用于测试的cube 2,创建一个Editor脚本 3,编写脚本内容 附上源码 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编程中,ValueError 是一个常见的异常类…...
政安晨【零基础玩转各类开源AI项目】解析开源:gradio:改进真实虚拟试穿的扩散模型
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Gradio 是一个开源 Python 软件包,可以让你…...
深入解读Prometheus Adapter:云原生监控的核心组件
一、引言 Prometheus Adapter的背景与重要性 在现代的云原生架构中,微服务和容器化技术得到了广泛的应用。这些技术带来了系统灵活性和扩展性的提升,但同时也增加了系统监控和管理的复杂度。Prometheus作为一款开源的监控系统,因其强大的指标…...
【计算机视觉】数字图像处理基础:以像素为单位的图像基本运算(点运算、代数运算、逻辑运算、几何运算、插值)
0、前言 在上篇文章中,我们对什么是数字图像、以及数字图像的组成(离散的像素点)进行了讲解🔗【计算机视觉】数字图像处理基础知识:模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类。 我们知道&a…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
