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

news/2024/11/22 15:49:44/

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灯从第一个灯依次到第八个灯亮,然后再从第八个灯亮到第一个灯(倒着)


http://www.ppmy.cn/news/29392.html

相关文章

对称锥规划:对称锥的增广拉格朗日乘子法(Semi-Smooth Newton Method解无约束优化子问题)

文章目录对称锥规划&#xff1a;对称锥的增广拉格朗日乘子法&#xff08;Semi-Smooth Newton Method解无约束优化子问题&#xff09;对称锥的增广拉格朗日函数Semi-Smooth Newton Method半光滑牛顿法广义雅可比半光滑性半光滑牛顿算法参考文献对称锥规划&#xff1a;对称锥的增…

【微服务】Nacos注册中心

目录 1.服务间如何进行远程调用 2.什么是服务治理 3.常见注册中心 4.Nacos 简介 5.Nacos实战入门 1.服务间如何进行远程调用 上篇文章搭建了订单服务和商品服务【微服务】-微服务环境搭建_MXin5的博客-CSDN博客&#xff0c;商品微服务已经提供了数据接⼝了&#xff0c;订单…

C语言函数阐述

C 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() &#xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的&#xff0c;但在逻辑上&#xff0c…

【项目实战】32G的电脑启动IDEA一个后端服务要2min,谁忍的了?

一、背景 本人电脑性能一般&#xff0c;但是拥有着一台高性能的VDI&#xff08;虚拟桌面基础架构&#xff09;&#xff0c;以下是具体的配置 二、问题描述 但是&#xff0c;即便是拥有这么高的性能&#xff0c;每次运行基于Dubbo微服务架构下的微服务都贼久&#xff0c;以下…

如何用Python把篮球和鸡联系起来

文章目录画个球让球转起来画个球 不管篮球和不和鸡联系起来&#xff0c;都首先得有个球&#xff0c;或者说要有一个球面&#xff0c;用参数方程可以表示为 xrcos⁡ϕcos⁡θyrcos⁡ϕsin⁡θzrsin⁡ϕ\begin{aligned} x & r\cos\phi\cos\theta\\ y & r\cos\phi\sin\th…

JavaSe第4次笔记

1.转义字符和编程语言无关。 2.斜杠(\)需要转义&#xff0c;反斜杠(/)不需要转义。 3.不能做switch的参数的数据类型&#xff1a;long float double boolean( String可以)。 4.输入的写法&#xff1a;Scanner(回车自动带头文件(import java.util.Scanner;)) Scanner scan …

经验分享-如何使用http调用chatGPT-3.5-turbo模型API

今天上午&#xff0c;就在工作群里收到了关于openAI发布chatGPT官方模型的消息分享。openAI这次的动作真的很快啊&#xff0c;没想到这么快就直接发布了chatGPT目前所使用的模型api。据Open AI在官方消息&#xff0c;本次开放了ChatGPT和Whisper的模型API&#xff0c;可以供用户…

【相关分析-高阶绘图】MATLAB实现皮尔逊相关分析-散点直方图

虽然皮尔逊相关分析很常见,但如何更好的展现相关性、散点分布、柱状分布,以提升研究结果的美感和冲击感呢?本文拟通过MATLAB绘制包含散点分布、柱状分布、线性展示的散点直方图,有助于审稿人眼前一亮。 1、Pearson相关系数原理 Pearson相关系数(Pearson Correlation Co…