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

51单片机入门————LED灯的控制

LED的电路图

通过原理图看出,LED灯是接单片机芯片的P20~P27的
一共有8个LED,51单片机也是8字节的
P2=0x01
0xFE————1111 1110
P2=0xFE可以表示把在P2端的第一个灯点亮

1 表示高电平
0表示低电平
当为0的时候形成一个完整回路,电流从高电平流向低电平
所以我们要把LED灯对应的引脚置为0,这样就可以点亮LED灯了

点亮第一个LED灯

我们知道了点亮LED灯需要把对应的引脚置为0,下面我们来通过代码实现

从图片我们可以看出,我们确实点亮了第一个LED灯
那么我们点亮全部的LED灯的操作一个是 0000 0000 对应的16进制是0x00

我们现在通过控制P2端的8个位来控制LED灯,我们也可以通过控制一个位来控制灯的亮灭

这两个操作,都可以将第五个LED灯点亮

LED灯的闪烁

通常我们在大街小巷可以看到闪烁的LED灯,然后他们的闪烁周期也不相同,我们如何通过单片机控制

我们引入时间延时的概念

时间延时的设置我们可以在STC-ISP生成

我们来演示一下

生成了代码我们拷贝到软件上

这个代码就可以不停的闪烁我们的第五个LED灯

我们设计不同周期的闪烁每次都去STC-ISP生成会比较麻烦,那么我们是不是可以设计一个自定义的函数来实现你想要的闪烁时间

自定义延时的设计

首先我们在STC-ISP生成一个1毫秒的延时

void Delay1ms()        //@12.000MHz
{unsigned char i, j;i = 2;j = 239;do{while (--j);} while (--i);
}

我们通过修改这个1毫秒的延时来实现

#include <REGX52.H>void Delay(long xms)        //@12.000MHz
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void main()
{while(1){P2_4=0;Delay(500);P2_4=1;Delay(500);}}

我们怎么设计的呢,通过传一个常量,常量表示多少毫秒,然后传入1毫秒的函数,让这个函数循环1毫秒的延时,这样就可以做到,自定义延时了

独立按键

了解按键工作的时候,我们先看看它的电路原理图

通俗的说就是当你摁下开关,开关接通,松开开关,开关断开

下面我们来编写程序来实现利用独立按键控制灯的亮灭

这个程序的作用就是按一下独立按钮然后第一个灯就亮了

上面就是独立按钮和LED灯的使用

我们如何避免按键的抖动呢,我们可以通过时间延时来消除,按键抖动时的不稳定接通

void Delay(long xms)        //@12.000MHz
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void main()
{while(1){P2_0=1;if(P3_1==0){Delay(10);while(P3_1==0);Delay(5);P2_0=0;Delay(500);}}
}

LED灯的使用与按钮
#include <REGX52.H>void Delay(long xms)        //@12.000MHz
{unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void main()
{while(1){int i=0;int j=0;int ret1=1;int ret2=0x80;for(i=0;i<8;i++){P2=~(ret1<<i);Delay(500);}for(j=0;j<8;j++){P2=~(ret2>>j);Delay(500);}}
}

功能:LED灯从第一个灯依次到第八个灯亮,然后再从第八个灯亮到第一个灯(倒着)

相关文章:

51单片机入门————LED灯的控制

LED的电路图通过原理图看出&#xff0c;LED灯是接单片机芯片的P20~P27的一共有8个LED&#xff0c;51单片机也是8字节的P20x010xFE————1111 1110P20xFE可以表示把在P2端的第一个灯点亮1 表示高电平0表示低电平当为0的时候形成一个完整回路&#xff0c;电流从高电平流向低电平…...

J - 二进制与、平方和(线段树 + 维护区间1的个数)

2023河南省赛组队训练赛&#xff08;二&#xff09; - Virtual Judge (vjudge.net) 请你维护一个长度为 n 的非负整数序列 a1, a2, ..., an&#xff0c;支持以下两种操作&#xff1a; 第一种操作会将序列 al, al  1, ..., ar 中的每个元素&#xff0c;修改为各自和 x…...

BertTokenizer的使用方法(超详细)

导入 from transformers import BertTokenizer from pytorch_pretrained import BertTokenizer以上两行代码都可以导入BerBertTokenizer,transformers是当下比较成熟的库&#xff0c;pytorch_pretrained是google提供的源码(功能不如transformers全面) 加载 tokenizer BertT…...

深度学习编译器CINN(3):编译过程中遇到的问题总结

目录 问题一:No module named XXXX 问题描述 分析与解决方案 问题二:catastrophic error: cannot open source file "float16.h"...

yum 安装mysql8数据全过程

mysql8安装方式&#xff1a;&#xff08;使用官方yum仓库&#xff09; 1. wget https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm 安装 yum install mysql80-community-release-el7-4.noarch.rpm 2、生成yum源缓存 每次当我们编写了&#xff0c…...

内网vCenter部署教程一

PS:因为交换机链路为trunk,安装先登录ESXI,将端口组改为管理vlan ID(1021) 一、双击镜像,打开文件夹,目录为F:\vcsa-ui-installer\win32,双击installer.exe 二、先设置语言为中文 三、点击下一步 四、选择需要安装esxi的主机。 五、设置Vcenter虚拟机的密码...

java 进阶—线程的常用方法

大家好&#xff0c;通过java进阶—多线程&#xff0c;我们知道的什么是进程&#xff0c;什么是线程&#xff0c;以及线程的三种创建方式的选择 今天&#xff0c;我们来看看线程的基础操作 start() 开启线程 public class Demo implements Runnable {Overridepublic void run…...

hadoop的运行模式

作者简介&#xff1a;大家好我是小唐同学(๑>؂<๑&#xff09;&#xff0c;好久不见&#xff0c;为梦想而努力的小唐又回来了&#xff0c;让我们一起加油&#xff01;&#xff01;&#xff01; 个人主页&#xff1a;小唐同学(๑>؂<๑&#xff09;的博客主页 目前…...

服务器(centos7.6)已经安装了宝塔面板,想在里面安装一个SVN工具(subversion),应该如何操作呢?

首先&#xff0c;在登录进入宝塔面板&#xff0c;然后点击左侧终端&#xff0c;进入终端界面&#xff0c;如下图&#xff1a;------------------------------------------如果是第一次使用会弹出输入服务器用户名和密码&#xff0c;此时输入root账号和密码&#xff0c;即可进入…...

从智能进化模型看用友BIP的AI平台化能力

随着人工成本的上升&#xff0c;智能和自动化技术的成熟&#xff0c;企业在越来越多的场景开始应用自动化技术来替代相对标准及有规则的工作&#xff0c;同时利用智能算法来优化复杂工作及决策&#xff0c;获得竞争优势。 不同于阅读、聊天、搜索等面向终端用户的应用场景&…...

项目管理的主要内容包括哪些?盘点好用的项目管理系统软件

阅读本文您将了解&#xff1a;1、项目管理的主要内容包括哪些2、好用的项目管理软件 项目管理是为了实施一个特定目标&#xff0c;所实施的一系列针对项目要素的管理过程&#xff0c;包括过程、手段以及技术等。 通过项目管理&#xff0c;我们能够提前安排和控制项目的时间、…...

Allegro如何查看PCB上器件的库路径操作指导

Allegro如何查看PCB上器件的库路径操作指导 在做PCB设计的时候,有时需要检查PCB上器件使用的库的路径是否正确,Allegro支持快速将PCB上所有器件的库路径都列出来 如下图 如何显示这个报表,具体操作如下 点击Tools点击Report...

笔记【尚硅谷】大数据Canal教程丨Alibaba数据实时同步神器

视频教程&#xff1a;【尚硅谷】大数据Canal教程丨Alibaba数据实时同步神器教程资料&#xff1a;https://pan.baidu.com/s/1VhGBcqeywM6jyXJxtytd1w?pwd6666&#xff0c;提取码&#xff1a;6666本套教程以Canal的底层原理展开讲解&#xff0c;细致地介绍了Canal的安装部署及常…...

如何重定向命令行日志信息到指定txt文件?

如果你想把命令行的输出重定向到指定的txt文件&#xff0c;你可以使用一些符号来实现。例如&#xff0c;你可以在命令后面加上>或>>符号&#xff0c;然后指定文件名。例如&#xff1a; command > output.txt 这样就会把command的标准输出保存到output.txt文件中&…...

物理机不能访问虚拟机kali的web服务解决方案记录

目录 环境 问题描述 解决方案 知识补充 效果测试 其他思路 环境 kali&#xff08;nat模式&#xff09;&#xff0c;物理机&#xff0c;可互ping 问题描述 kali的web服务器不能在物理机上访问。 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web …...

服务器配置 | 在Windows本地显示远程服务器绘图程序

文章目录方法1&#xff1a;在MobaXterm的终端输入指令方法2&#xff1a;在Pycharm中运行前提概要&#xff0c;需要在本地Windows端显示点云的3d可视化界面 对于点云的3d可视化一般有两种方法&#xff0c;open3d显示或者是mayavi显示。这两个库都可以使用pip install来实现安装…...

高级信息系统项目管理(高项 软考)原创论文——质量管理(2)

<...

从0开始学python -47

Python CGI编程 -2 GET和POST方法 浏览器客户端通过两种方法向服务器传递信息&#xff0c;这两种方法就是 GET 方法和 POST 方法。 使用GET方法传输数据 GET方法发送编码后的用户信息到服务端&#xff0c;数据信息包含在请求页面的URL上&#xff0c;以"?"号分割…...

【数据结构】八大经典排序总结

文章目录一、排序的概念及其运用1.排序的概念2.常见排序的分类3.排序的运用二、常见排序算法的实现1.直接插入排序1.1排序思想1.2代码实现1.3复杂度及稳定性1.4特性总结2.希尔排序2.1排序思想2.3复杂度及稳定性2.4特性总结3.直接选择排序3.1排序思想3.2代码实现3.3复杂度及稳定…...

BI的能力边界:能解决的企业问题和不擅长的领域

数字化转型本就需要借助信息化相关技术、思想来完成&#xff0c;所以说信息化建设同样是数字化转型过程中非常重要的一环&#xff0c;而这就是商业智能BI和数字化转型的关系 BI 能解决的企业问题 数据是企业的重要资产&#xff0c;也是企业商业智能BI的核心要求。通常&#x…...

华为eNSP模拟器实战:用VRRP+MSTP给公司网络做个高可用冗余(附完整配置命令)

华为eNSP企业级网络高可用架构实战&#xff1a;VRRP与MSTP深度协同设计 当一家中型企业的终端规模突破500台时&#xff0c;网络架构的脆弱性往往会突然暴露——某个交换机的意外宕机可能导致整个部门断网&#xff0c;核心链路的拥塞会让关键业务卡顿不已。这时仅靠基础的STP和…...

Network-AI:解决多智能体协作竞态与状态冲突的协调层

1. 项目概述&#xff1a;Network-AI&#xff0c;一个解决多智能体“内讧”的协调器如果你正在用LangChain、CrewAI或者AutoGen构建AI智能体应用&#xff0c;大概率遇到过这样的场景&#xff1a;你部署了两个智能体&#xff0c;一个负责分析数据&#xff0c;一个负责生成报告。它…...

从习题到实战:掌握随机变量及其分布的5个核心场景

1. 从杯子分球看离散型随机变量 想象你面前有4个空杯子和3个乒乓球&#xff0c;随手把球扔进杯子里会发生什么&#xff1f;这个看似简单的游戏&#xff0c;其实是理解离散型随机变量的绝佳案例。X代表"杯子中球的最大个数"&#xff0c;它可能取值为1、2、3——这就是…...

别再只跟 AI 聊天了,教它干活才是正经事

摘要大模型只会聊天&#xff1f;那你可能用错了方式。函数调用让 AI 从"说"变成"做"&#xff0c;能真正执行任务。本文分享我搭建 AI Agent 的实战经验&#xff0c;包括工具设计、参数校验、错误处理等核心环节&#xff0c;帮你避开那些我踩过的坑。开篇引…...

如何零成本测试ZPL标签?Virtual ZPL Printer终极解决方案揭秘

如何零成本测试ZPL标签&#xff1f;Virtual ZPL Printer终极解决方案揭秘 【免费下载链接】Virtual-ZPL-Printer An ethernet based virtual Zebra Label Printer that can be used to test applications that produce bar code labels. 项目地址: https://gitcode.com/gh_mi…...

京东数据利器:掌握详情与评论资源

在电商高速发展的今天&#xff0c;数据是了解市场、洞察用户需求、优化产品策略的核心利器。京东作为国内领先的电商平台&#xff0c;其商品详情与用户评论数据承载了大量价值信息。掌握这些资源&#xff0c;不仅可以帮助商家、品牌方优化产品策略&#xff0c;还能辅助内容创作…...

Linux小白避坑指南:Resilio Sync安装后权限配置与Web界面访问失败的常见问题解决

Linux权限迷宫&#xff1a;Resilio Sync安装后的深度避坑实战 当8888端口沉默时&#xff1a;一次真实的故障排查记录 上周五晚上11点&#xff0c;我正准备将团队的设计素材库同步到本地开发环境。按照官方文档&#xff0c;我在Ubuntu 22.04上顺利安装了Resilio Sync&#xff0c…...

从零到一:Lmbench 性能测试实战与结果深度解读

1. 为什么你需要Lmbench性能测试 第一次听说Lmbench时&#xff0c;我也和大多数新手一样困惑&#xff1a;系统性能测试工具那么多&#xff0c;为什么非要选这个老古董&#xff1f;直到在服务器部署项目时连续遇到三次性能瓶颈&#xff0c;我才真正理解它的价值。那次我们用某款…...

基于RAG与LangChain的AI阅读助手BookWith架构与实现

1. 项目概述&#xff1a;当AI成为你的阅读伙伴作为一名深度阅读爱好者和技术实践者&#xff0c;我一直在寻找一种能真正“理解”内容&#xff0c;并与我进行深度对话的阅读工具。传统的电子书阅读器&#xff0c;无论是Kindle还是其他应用&#xff0c;本质上都只是将纸质书数字化…...

别再只会用IP核了!手把手教你用Verilog从零实现一个16阶FIR滤波器(附完整代码)

从零构建16阶FIR滤波器&#xff1a;Verilog实战指南与工程思维解析 在FPGA开发领域&#xff0c;FIR&#xff08;有限脉冲响应&#xff09;滤波器是数字信号处理的基础模块&#xff0c;但大多数工程师习惯直接调用厂商提供的IP核&#xff0c;这就像只会开自动挡汽车的司机——虽…...