【51单片机】LED与独立按键(学习笔记)
一、点亮一个LED
1、LED介绍
LED:发光二极管
补:电阻读数
102 => 10 00 = 1k
473 => 47 000
2、Keil的使用
1、新建工程:Project => New Project
Ctrl + Shift + N :新建文件夹
2、选型号:Atmel-AT89C52
3、xxx提示?选否
4、Source Group => 右键 => Add New Item … => C文件"main.c"
5、设置勾选创建HEX File文件
6、编译
3、单片机控制硬件的原理
CPU通过对寄存器的控制,寄存器通过驱动器、引脚控制硬件设备

4、代码的编写
#include <REGX52.H>
void main() {while(1){P2=0xFE; //1111 1110}
}
5、程序的下载
STC-ISP软件
单片器型号:STC89C52
串口号:USB…
打开程序文件:*.hex
下载进单片机
二、LED的闪烁
利用STC-ISP软件生成Delayxxxms()延时函数
#include <REGX52.H>
void main() {while(1){P2=0xFE; //1111 1110Delay500ms();P2=0xFF; //1111 1111Delay500ms();}
}
三、 独立按键实现LED亮灭
1、轻触按键
独立按键:按下接通、松开断开
2、代码实现
1、
P2 = 0xFE相当于P2_0 = 02、独立按键对应顺序
- K1:P3_1
- K2:P3_0
- K3:P3_2
- K4:P3_3
#include <REGX52.H>
void main() {while(1){if(P3_1 == 0) {P2_0 = 0;} else {P2_0 = 1;}}
}
四、独立按键控制LED状态
1、按键的抖动
机械开关断开和闭合时会产生抖动
消抖:硬件过滤、软件算法(Delay)
2、代码实现
#include <REGX52.H>
void main() {while(1){if(P3_1 == 0) {Delay(20); // 消除前抖动while(P3_1 == 0); // 等待松手Delay(20); // 消除后抖动P2_0 = ~P2_0;}}
}
五、独立按键控制LED显示二进制
#include <REGX52.H>
void main() {unsigned char LEDNum = 0;while(1){if(P3_1 == 0) {Delay(20); // 消除前抖动while(P3_1 == 0); // 等待松手Delay(20); // 消除后抖动LEDNum++;P2_0 = ~LEDNum;}}
}
六、独立按键控制LED位移
#include <REGX52.H>
void main() {P2 = ~0x01;unsigned char LEDNum = 0;while(1){if(P3_1 == 0) {Delay(20); // 消除前抖动while(P3_1 == 0); // 等待松手Delay(20); // 消除后抖动LEDNum++;if(LEDNum >= 8) LEDNum = 0;P2 = ~(0x01 << LEDNum);}if(P3_0 == 0) {Delay(20); // 消除前抖动while(P3_1 == 0); // 等待松手Delay(20); // 消除后抖动if(LEDNum == 0) LEDNum = 7;else LEDNum--;P2 = ~(0x01 << LEDNum);}}
}
相关文章:
【51单片机】LED与独立按键(学习笔记)
一、点亮一个LED 1、LED介绍 LED:发光二极管 补:电阻读数 102 > 10 00 1k 473 > 47 000 2、Keil的使用 1、新建工程:Project > New Project Ctrl Shift N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx…...
package.json(2)
发布配置 和npm 项目包发布相关的配置。 private private 字段可以防止我们意外地将私有库发布到 npm 服务器。只需要将该字段设置为 true: "private": true preferGlobal preferGlobal 字段表示当用户不把该模块安装为全局模块时,如果设…...
Docker(2)——Docker镜像的基本命令
目录 一、简介 二、基本命令 1. Docker命令官方文档 2. 展示镜像 3. 搜索镜像 4. 下载镜像 5. 删除镜像 一、简介 本篇文章是Docker专栏的第二章,主要用于介绍Docker镜像的一些基本命令 二、基本命令 1. Docker命令官方文档 本篇博客仅记录常用的Docker镜…...
IT技术发展背景下的就业趋势:哪个领域最受欢迎?
IT技术发展背景下的就业趋势:哪个领域最受欢迎? 随着科技的不断进步和互联网的普及,IT行业正以惊人的速度蓬勃发展。在这个数字化时代,IT技术已经渗透到各个行业和领域中,为人们带来了巨大的便利和机遇。那么…...
日本移动支付Merpay QA团队的自动化现状
Merpay是日本最大的网购平台之一Mercari的无现金支付系统。Merpay 的主要功能是让用户在 Mercari的网站上购物,也可以在日本的许多实体店和餐厅使用它,也可以理解为日本的“支付宝”。以下为Merpay QA 团队在自动化方面的一些思考: 这几年&am…...
EasyExcel复杂表头数据导入
目录 表头示例导入代码数据导出 表头示例 导入代码 Overridepublic void importExcel(InputStream inputStream) {ItemExcelListener itemExcelListener new ItemExcelListener();EasyExcel.read(inputStream, ImportItem.class, itemExcelListener).headRowNumber(2).sheet()…...
【Redis】Redis安装教程基本操作语法
【Redis】Redis安装教程&基本操作语法 一、Redis简介1.1.什么是Redis1.2.Redis与传统数据库的区别主要 二、Linux安装Redis2.1.安装Redis2.2.解压安装包2.3.解压后执行安装gcc2.4.编译Redis2.5.修改Redis为守护进程2.6.启动Redis服务2.7.配置密码且外部连接2.8.重启服务器2…...
spring-boot-autoconfigure.jar/META-INF/spring.factories介绍
spring-boot-autoconfigure.jar/META-INF/spring.factories是Spring Boot自动配置的核心文件,它包含了各种自动配置类的注册信息。这个文件是Spring Boot根据应用程序的依赖关系和配置文件中的条件注解,自动加载和配置所需的Bean的依据。 在spring.fact…...
vue3视频大小适配浏览器窗口大小
目标:按浏览器窗口的大小,平铺视频,来适配屏幕的大小。 考虑使用 DPlayer.js、video.js、vue-video-player等视频插件,但报了各种各样的错;试过使用 js 对视频进行同比例放大,再判断其与窗口的大小取最小值…...
Nignx安装负载均衡动静分离以及Linux前端项目部署将域名映射到特定IP地址
目录 一、nginx简介 1.1 定义 1.2 背景 1.3 作用 二、nginx搭载负载均衡提供前后分离后台接口数据 2.1 nginx安装 2.1.1 下载依赖 2.1.2 下载并解压安装包 2.1.3 安装nginx 2.1.4 启动nginx服务 2.2 tomcat负载均衡 2.2.1 负载均衡所需服务器准备 2.2.2 配置修改 …...
Plist编辑软件 PlistEdit Pro mac中文版功能介绍
PlistEdit Pro mac是一款功能强大的Plist文件编辑软件。Plist文件是苹果公司开发的一种XML文件格式,用于存储应用程序的配置信息和数据。PlistEdit Pro可以帮助用户轻松地编辑和管理Plist文件。 PlistEdit Pro具有直观的用户界面和丰富的功能。用户可以使用该软件打…...
CSS3网页布局基础
CSS布局始于第2个版本,CSS 2.1把布局分为3种模型:常规流、浮动、绝对定位。CSS 3推出更多布局方案:多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型,它们获得所有浏览器的全面、一致…...
【npm run dev 报错:error:0308010C:digital envelope routines::unsupported】
问题原因: nodejs版本太高(nodejs v17版本发布了openSSL3.0对短发和密钥大小增加了更为严格的限制,nodejs v17之前版本没有影响,但之后的版本会出现这个错误,物品的node版本是20.9.0) 解决方式࿱…...
天猫商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)
要获取天猫商品评论接口,您需要使用天猫开放平台提供的API接口。以下是一些可能有用的步骤: 注册并登录天猫开放平台,获取开发者账号。在开发者中心创建一个应用,获取应用的App Key和App Secret。使用天猫开放平台的API接口&…...
redis数据库简介
Redis是什么 Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性: 基于内存运行,性能高效支持分布式,理…...
数据结构 - ArrayList - 动态修改的数组
目录 实现一个通用的顺序表 总结 包装类 装箱 / 装包 和 拆箱 / 拆包 ArrayList 与 顺序表 ArrayList基础功能演示 add 和 addAll ,添加元素功能 ArrayList的扩容机制 来看一下,下面的代码是否存在缺陷 模拟实现 ArrayList add 功能 add ind…...
python爬虫实战——今日头条新闻数据获取
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 第三方库: requests >>> pip install requests 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你…...
ardupilot开发 --- gdb 篇
环境 win11 vscode 1.81.0 wsl2 ardupilot 利用gdb工具在vsCode中实现 Ardupilot SITL的断点调试 优点:可在vsCode中实现断点调试。 参考文献:https://ardupilot.org/dev/docs/debugging-with-gdb-using-vscode.html 安装gdb工具 打开wsl࿰…...
在Vue项目中定义全局变量
在Vue项目中我们需要使用许多的变量来维护数据的流向和状态,这些变量可以是本地变量、组件变量、父子组件变量等,但这些变量都是有局限性的。在一些场景中,可能需要在多个组件中共享某个变量,此时全局变量就派上了用场。 定义全局…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
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 可以冶炼出 …...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
