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


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

越努力越优秀!!!


相关文章
|
4月前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
357 1
|
4月前
【51单片机】在LCD1602上显示时间:包含按键进行校准时间+闹钟功能:按键设置闹钟响铃时间,以及响铃的时间长度
【51单片机】在LCD1602上显示时间:包含按键进行校准时间+闹钟功能:按键设置闹钟响铃时间,以及响铃的时间长度
111 4
|
4月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
142 3
|
4月前
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】Kn独立按键控制【LED亮灭】【LED状态】【LED二进制式显示】【LED不断移位】(4)
【51单片机】Kn独立按键控制【LED亮灭】【LED状态】【LED二进制式显示】【LED不断移位】(4)
|
7月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
定时器+按键控制LED流水灯模式+定时器时钟——“51单片机”
|
7月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
59 1
|
7月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
110 1