独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

本文主要是介绍独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

各位CSDN的uu们你们好呀,今天依旧是小雅兰的51单片机的内容,内容主要是:独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位,下面,让我们进入51单片机的世界吧!!!

如果对C语言的知识有不懂的话,可以看看小雅兰的C语言的专栏!!!

https://blog.csdn.net/weixin_74957752/category_12188777.html?spm=1001.2014.3001.5482 


独立按键控制LED亮灭

独立按键控制LED状态

独立按键控制LED显示二进制

独立按键控制LED移位

源代码


独立按键控制LED亮灭

首先,我们需要知道独立按键是一个什么东西:

在单片机上,也是标明了独立按键了的,是最下面的四个黑色的按钮。

这边的意思是:按下K1建,第一个LED亮,松手,就熄灭。

下面,就可以开始写代码啦!!!

#include <REGX52.H>void main()
{while(1){if(P3_1==0){P2_0=0;}else{P2_0=1;}}
}

 

 

 

知道了上述知识点后,如果我们想要K1和K2同时按下时再点亮第一个LED的话,应该是这么写:

#include <REGX52.H>void main()
{while(1){if(P3_1==0&&P3_0==0){P2_0=0;}else{P2_0=1;}}
}

如果是想要按下K1点亮第一个LED,按下K2也点亮第一个LED,同时按下也会点亮第一个LED,只有当两个按钮都没有按下时,才不会点亮第一个LED。

那么,这个代码应该是这么写:

#include <REGX52.H>void main()
{while(1){if(P3_1==0||P3_0==0){P2_0=0;}else{P2_0=1;}}
}

 


独立按键控制LED状态

 这个的意思是:按下K1键时,第一个LED不亮,然后松开之后,LED亮了。然后再按下,LED亮,松手,LED不亮。

#include <REGX52.H>void Delay(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void main()
{while(1){if(P3_1==0){Delay(20);while(P3_1==0);//循环什么也不做Delay(20);P2_0=~P2_0;}}
}

 

 


独立按键控制LED显示二进制

这边的意思是:从1开始,显示它的二进制代码序列对应的LED亮,如果是1,那么它的二进制代码序列就是0001,也就是第一个LED亮,如果是2,它的二进制代码序列是0010,那么就是第二个LED亮,如果是3,则它的二进制代码序列为0011,也就是第一个LED和第二个LED同时亮,以此类推!!!

代码就应该得这样写:

#include <REGX52.H>void Delay(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void main()
{unsigned char LEDNum=0;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;P2=~LEDNum;}}
}

 

 


 独立按键控制LED移位

 

#include <REGX52.H>void Delay(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void main()
{unsigned char LEDNum=0;P2=~0x01;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;if(LEDNum>=8){LEDNum=0;}P2=~(0x01<<LEDNum);}}
}

 

 

上面这个代码只是按了K1,就让LED从第一个移到第二个、第三个......

那如果是想要按下K1,让LED从第一个移到第二个、第三个......按下K2,让LED从第八个移到第七个、第六个......那么,这个功能又应该怎么实现呢?

#include <REGX52.H>void Delay(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void main()
{unsigned char LEDNum=0;P2=~0x01;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_0==0);Delay(20);if(LEDNum==0){LEDNum=7;}else{LEDNum--;}P2=~(0x01<<LEDNum);}}
}

源代码

独立按键控制LED亮灭

#include <REGX52.H>

void main()
{
    while(1)
    {
        if(P3_1==0)
        {
            P2_0=0;
        }
        else
        {
            P2_0=1;
        }
    }
}

 独立按键控制LED状态

#include <REGX52.H>

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

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 Delay(unsigned int xms)    //@12.000MHz
{
    unsigned char data i, j;
    while(xms)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
        xms--;
    }
}

void main()
{
    unsigned char LEDNum=0;
    while(1)
    {
        if(P3_1==0)
        {
            Delay(20);
            while(P3_1==0);
            Delay(20);
            
            LEDNum++;
            P2=~LEDNum;
        }
    }
}

 

 独立按键控制LED移位

#include <REGX52.H>

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

void main()
{
    unsigned char LEDNum=0;
    P2=~0x01;
    while(1)
    {
        if(P3_1==0)
        {
            Delay(20);
            while(P3_1==0);
            Delay(20);
            
            LEDNum++;
            if(LEDNum>=8)
            {
                LEDNum=0;
            }
            P2=~(0x01<<LEDNum);
            
        }
    }
}


好啦,小雅兰今天的学习内容就到这里啦,还要继续加油呀!!!

 

越努力越优秀!!! 

这篇关于独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/509

相关文章

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【