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

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

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

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


独立按键控制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);
           
       }
   }
}


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

越努力越优秀!!!


相关文章
|
1月前
|
数据格式
用C51单片机制作LED流水的灯
用C51单片机制作LED流水的灯
46 0
|
3月前
|
芯片
毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计
毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计
|
4月前
|
物联网
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
STC51单片机-控制LED闪亮的仿真-物联网应用系统设计
44 0
|
4月前
|
物联网 人机交互 开发工具
STC51单片机-阵列LED显示-物联网应用系统设计项目开发
STC51单片机-阵列LED显示-物联网应用系统设计项目开发
80 0
|
4月前
|
物联网
STC51单片机-中断控制LED-物联网应用系统设计项目开发
STC51单片机-中断控制LED-物联网应用系统设计项目开发
53 0
|
1月前
51单片机实现led灯亮度变化!
51单片机实现led灯亮度变化!
12 0
|
1月前
|
传感器 物联网 C语言
单片机在智能家居中的应用:以LED灯控制为例
单片机在智能家居中的应用:以LED灯控制为例
56 0
单片机在智能家居中的应用:以LED灯控制为例
|
1月前
|
C语言
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
###51单片机学习-----如何通过C语言运用延时函数设计LED流水灯
73 0
|
8月前
单片机按键的使用
单片机按键的使用
125 0
|
8月前
|
C语言
单片机控制LED灯
单片机控制LED灯
215 0