• 独立按键控制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亮,松手,就熄灭。

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

    1. #include
    2. void main()
    3. {
    4. while(1)
    5. {
    6. if(P3_1==0)
    7. {
    8. P2_0=0;
    9. }
    10. else
    11. {
    12. P2_0=1;
    13. }
    14. }
    15. }

     

     

     

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

    1. #include
    2. void main()
    3. {
    4. while(1)
    5. {
    6. if(P3_1==0&&P3_0==0)
    7. {
    8. P2_0=0;
    9. }
    10. else
    11. {
    12. P2_0=1;
    13. }
    14. }
    15. }

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

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

    1. #include
    2. void main()
    3. {
    4. while(1)
    5. {
    6. if(P3_1==0||P3_0==0)
    7. {
    8. P2_0=0;
    9. }
    10. else
    11. {
    12. P2_0=1;
    13. }
    14. }
    15. }

     


    独立按键控制LED状态

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

    1. #include
    2. void Delay(unsigned int xms) //@12.000MHz
    3. {
    4. unsigned char data i, j;
    5. while(xms)
    6. {
    7. i = 2;
    8. j = 239;
    9. do
    10. {
    11. while (--j);
    12. } while (--i);
    13. xms--;
    14. }
    15. }
    16. void main()
    17. {
    18. while(1)
    19. {
    20. if(P3_1==0)
    21. {
    22. Delay(20);
    23. while(P3_1==0);//循环什么也不做
    24. Delay(20);
    25. P2_0=~P2_0;
    26. }
    27. }
    28. }

     

     


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

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

    代码就应该得这样写:

    1. #include
    2. void Delay(unsigned int xms) //@12.000MHz
    3. {
    4. unsigned char data i, j;
    5. while(xms)
    6. {
    7. i = 2;
    8. j = 239;
    9. do
    10. {
    11. while (--j);
    12. } while (--i);
    13. xms--;
    14. }
    15. }
    16. void main()
    17. {
    18. unsigned char LEDNum=0;
    19. while(1)
    20. {
    21. if(P3_1==0)
    22. {
    23. Delay(20);
    24. while(P3_1==0);
    25. Delay(20);
    26. LEDNum++;
    27. P2=~LEDNum;
    28. }
    29. }
    30. }

     

     


     独立按键控制LED移位

     

    1. #include
    2. void Delay(unsigned int xms) //@12.000MHz
    3. {
    4. unsigned char data i, j;
    5. while(xms)
    6. {
    7. i = 2;
    8. j = 239;
    9. do
    10. {
    11. while (--j);
    12. } while (--i);
    13. xms--;
    14. }
    15. }
    16. void main()
    17. {
    18. unsigned char LEDNum=0;
    19. P2=~0x01;
    20. while(1)
    21. {
    22. if(P3_1==0)
    23. {
    24. Delay(20);
    25. while(P3_1==0);
    26. Delay(20);
    27. LEDNum++;
    28. if(LEDNum>=8)
    29. {
    30. LEDNum=0;
    31. }
    32. P2=~(0x01<
    33. }
    34. }
    35. }

     

     

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

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

    1. #include
    2. void Delay(unsigned int xms) //@12.000MHz
    3. {
    4. unsigned char data i, j;
    5. while(xms)
    6. {
    7. i = 2;
    8. j = 239;
    9. do
    10. {
    11. while (--j);
    12. } while (--i);
    13. xms--;
    14. }
    15. }
    16. void main()
    17. {
    18. unsigned char LEDNum=0;
    19. P2=~0x01;
    20. while(1)
    21. {
    22. if(P3_1==0)
    23. {
    24. Delay(20);
    25. while(P3_1==0);
    26. Delay(20);
    27. LEDNum++;
    28. if(LEDNum>=8)
    29. {
    30. LEDNum=0;
    31. }
    32. P2=~(0x01<
    33. }
    34. if(P3_0==0)
    35. {
    36. Delay(20);
    37. while(P3_0==0);
    38. Delay(20);
    39. if(LEDNum==0)
    40. {
    41. LEDNum=7;
    42. }
    43. else
    44. {
    45. LEDNum--;
    46. }
    47. P2=~(0x01<
    48. }
    49. }
    50. }

    源代码

    独立按键控制LED亮灭

    #include

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

     独立按键控制LED状态

    #include

    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

    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

    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<             
            }
        }
    }


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

     

    越努力越优秀!!! 

  • 相关阅读:
    数据重整:用Java实现精准Excel数据排序的实用策略
    Go编程项目实战教程
    物联网设备通过MQTT接入华为iot平台
    GPT-4 Turbo:OpenAI发布旗舰版GPT-4模型,更便宜|更强大|128K上下文|支持多模态
    grblHAL的代码学习笔记和解读
    前端代码规范神器之f2elint的使用教程
    c++ 模板 指针类型偏特化
    Git 详细教程之五:SSH 免密登陆 GitHub
    面试面经|Java面试Hibernate面试题
    【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)
  • 原文地址:https://blog.csdn.net/weixin_74957752/article/details/133464016