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

【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 = 0

2、独立按键对应顺序

  1. K1:P3_1
  2. K2:P3_0
  3. K3:P3_2
  4. 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&#xff1a;发光二极管 补&#xff1a;电阻读数 102 > 10 00 1k 473 > 47 000 2、Keil的使用 1、新建工程&#xff1a;Project > New Project Ctrl Shift N &#xff1a;新建文件夹 2、选型号&#xff1a;Atmel-AT89C52 3、xxx…...

package.json(2)

发布配置 和npm 项目包发布相关的配置。 private private 字段可以防止我们意外地将私有库发布到 npm 服务器。只需要将该字段设置为 true&#xff1a; "private": true preferGlobal preferGlobal 字段表示当用户不把该模块安装为全局模块时&#xff0c;如果设…...

Docker(2)——Docker镜像的基本命令

目录 一、简介 二、基本命令 1. Docker命令官方文档 2. 展示镜像 3. 搜索镜像 4. 下载镜像 5. 删除镜像 一、简介 本篇文章是Docker专栏的第二章&#xff0c;主要用于介绍Docker镜像的一些基本命令 二、基本命令 1. Docker命令官方文档 本篇博客仅记录常用的Docker镜…...

IT技术发展背景下的就业趋势:哪个领域最受欢迎?

IT技术发展背景下的就业趋势&#xff1a;哪个领域最受欢迎&#xff1f; 随着科技的不断进步和互联网的普及&#xff0c;IT行业正以惊人的速度蓬勃发展。在这个数字化时代&#xff0c;IT技术已经渗透到各个行业和领域中&#xff0c;为人们带来了巨大的便利和机遇。那么&#xf…...

日本移动支付Merpay QA团队的自动化现状

Merpay是日本最大的网购平台之一Mercari的无现金支付系统。Merpay 的主要功能是让用户在 Mercari的网站上购物&#xff0c;也可以在日本的许多实体店和餐厅使用它&#xff0c;也可以理解为日本的“支付宝”。以下为Merpay QA 团队在自动化方面的一些思考&#xff1a; 这几年&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自动配置的核心文件&#xff0c;它包含了各种自动配置类的注册信息。这个文件是Spring Boot根据应用程序的依赖关系和配置文件中的条件注解&#xff0c;自动加载和配置所需的Bean的依据。 在spring.fact…...

vue3视频大小适配浏览器窗口大小

目标&#xff1a;按浏览器窗口的大小&#xff0c;平铺视频&#xff0c;来适配屏幕的大小。 考虑使用 DPlayer.js、video.js、vue-video-player等视频插件&#xff0c;但报了各种各样的错&#xff1b;试过使用 js 对视频进行同比例放大&#xff0c;再判断其与窗口的大小取最小值…...

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文件格式&#xff0c;用于存储应用程序的配置信息和数据。PlistEdit Pro可以帮助用户轻松地编辑和管理Plist文件。 PlistEdit Pro具有直观的用户界面和丰富的功能。用户可以使用该软件打…...

CSS3网页布局基础

CSS布局始于第2个版本&#xff0c;CSS 2.1把布局分为3种模型&#xff1a;常规流、浮动、绝对定位。CSS 3推出更多布局方案&#xff1a;多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型&#xff0c;它们获得所有浏览器的全面、一致…...

【npm run dev 报错:error:0308010C:digital envelope routines::unsupported】

问题原因&#xff1a; nodejs版本太高&#xff08;nodejs v17版本发布了openSSL3.0对短发和密钥大小增加了更为严格的限制&#xff0c;nodejs v17之前版本没有影响&#xff0c;但之后的版本会出现这个错误&#xff0c;物品的node版本是20.9.0&#xff09; 解决方式&#xff1…...

Vue3.0 this,ref , $parent,$root组件通信 :VCA

1...

天猫商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)

要获取天猫商品评论接口&#xff0c;您需要使用天猫开放平台提供的API接口。以下是一些可能有用的步骤&#xff1a; 注册并登录天猫开放平台&#xff0c;获取开发者账号。在开发者中心创建一个应用&#xff0c;获取应用的App Key和App Secret。使用天猫开放平台的API接口&…...

redis数据库简介

Redis是什么 Redis是现在最受欢迎的NoSQL数据库之一&#xff0c;Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库&#xff0c;其具备如下特性&#xff1a; 基于内存运行&#xff0c;性能高效支持分布式&#xff0c;理…...

数据结构 - ArrayList - 动态修改的数组

目录 实现一个通用的顺序表 总结 包装类 装箱 / 装包 和 拆箱 / 拆包 ArrayList 与 顺序表 ArrayList基础功能演示 add 和 addAll &#xff0c;添加元素功能 ArrayList的扩容机制 来看一下&#xff0c;下面的代码是否存在缺陷 模拟实现 ArrayList add 功能 add ind…...

python爬虫实战——今日头条新闻数据获取

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 第三方库: requests >>> pip install requests 第三方模块安装&#xff1a; win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你…...

ardupilot开发 --- gdb 篇

环境 win11 vscode 1.81.0 wsl2 ardupilot 利用gdb工具在vsCode中实现 Ardupilot SITL的断点调试 优点&#xff1a;可在vsCode中实现断点调试。 参考文献&#xff1a;https://ardupilot.org/dev/docs/debugging-with-gdb-using-vscode.html 安装gdb工具 打开wsl&#xff0…...

在Vue项目中定义全局变量

在Vue项目中我们需要使用许多的变量来维护数据的流向和状态&#xff0c;这些变量可以是本地变量、组件变量、父子组件变量等&#xff0c;但这些变量都是有局限性的。在一些场景中&#xff0c;可能需要在多个组件中共享某个变量&#xff0c;此时全局变量就派上了用场。 定义全局…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...