• 静态数码管显示+动态数码管显示——“51单片机”


    各位CSDN的uu们好呀,今天小雅兰的内容还是51单片机的知识,是为静态数码管显示和动态数码管显示,下面,让我们进入51单片机的世界吧!!!


    静态数码管显示

    动态数码管显示

    源代码


    静态数码管显示

    首先,我们得知道,数码管是一个什么样的东西:

    它就是51单片机最上面的那个看起来像显示屏的东西,断开电源的时候,是八个八的样式!!!

     

     

     

     

    然后这边还有C语言的一些小知识点:

     

      

     了解了上面这些知识之后,就可以开始来写一个我们的代码了!

    1. #include
    2. unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    3. void Nixie(unsigned char Location,unsigned char Number)
    4. {
    5. switch(Location)
    6. {
    7. case 1:
    8. P2_4=1;
    9. P2_3=1;
    10. P2_2=1;
    11. break;
    12. case 2:
    13. P2_4=1;
    14. P2_3=1;
    15. P2_2=0;
    16. break;
    17. case 3:
    18. P2_4=1;
    19. P2_3=0;
    20. P2_2=1;
    21. break;
    22. case 4:
    23. P2_4=1;
    24. P2_3=0;
    25. P2_2=0;
    26. break;
    27. case 5:
    28. P2_4=0;
    29. P2_3=1;
    30. P2_2=1;
    31. break;
    32. case 6:
    33. P2_4=0;
    34. P2_3=1;
    35. P2_2=0;
    36. break;
    37. case 7:
    38. P2_4=0;
    39. P2_3=0;
    40. P2_2=1;
    41. break;
    42. case 8:
    43. P2_4=0;
    44. P2_3=0;
    45. P2_2=0;
    46. break;
    47. }
    48. P0=NixieTable[Number];
    49. }
    50. void main()
    51. {
    52. Nixie(7,8);
    53. while(1)
    54. {}
    55. }

    修改一下Nixie的参数,就能改变数码管显示的数字和位置。

    #include

    unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    void Nixie(unsigned char Location,unsigned char Number)
    {
        switch(Location)
        {
        case 1:
            P2_4=1;
            P2_3=1;
            P2_2=1;
            break;
        case 2:
            P2_4=1;
            P2_3=1;
            P2_2=0;
            break;
        case 3:
            P2_4=1;
            P2_3=0;
            P2_2=1;
            break;
        case 4:
            P2_4=1;
            P2_3=0;
            P2_2=0;
            break;
        case 5:
            P2_4=0;
            P2_3=1;
            P2_2=1;
            break;
        case 6:
            P2_4=0;
            P2_3=1;
            P2_2=0;
            break;
        case 7:
            P2_4=0;
            P2_3=0;
            P2_2=1;
            break;
        case 8:
            P2_4=0;
            P2_3=0;
            P2_2=0;
            break;
        }
        P0=NixieTable[Number];
    }
    void main()
    {
        Nixie(2,5);
        while(1)
        {}
    }

     


    动态数码管显示

    1. #include
    2. unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    3. void Delay(unsigned char xms) //@12.000MHz
    4. {
    5. unsigned char data i, j;
    6. while(xms)
    7. {
    8. i = 2;
    9. j = 239;
    10. do
    11. {
    12. while (--j);
    13. } while (--i);
    14. xms--;
    15. }
    16. }
    17. void Nixie(unsigned char Location,unsigned char Number)
    18. {
    19. switch(Location)
    20. {
    21. case 1:
    22. P2_4=1;
    23. P2_3=1;
    24. P2_2=1;
    25. break;
    26. case 2:
    27. P2_4=1;
    28. P2_3=1;
    29. P2_2=0;
    30. break;
    31. case 3:
    32. P2_4=1;
    33. P2_3=0;
    34. P2_2=1;
    35. break;
    36. case 4:
    37. P2_4=1;
    38. P2_3=0;
    39. P2_2=0;
    40. break;
    41. case 5:
    42. P2_4=0;
    43. P2_3=1;
    44. P2_2=1;
    45. break;
    46. case 6:
    47. P2_4=0;
    48. P2_3=1;
    49. P2_2=0;
    50. break;
    51. case 7:
    52. P2_4=0;
    53. P2_3=0;
    54. P2_2=1;
    55. break;
    56. case 8:
    57. P2_4=0;
    58. P2_3=0;
    59. P2_2=0;
    60. break;
    61. }
    62. P0=NixieTable[Number];
    63. Delay(1);
    64. P0=0x00;
    65. }
    66. void main()
    67. {
    68. while(1)
    69. {
    70. Nixie(1,1);
    71. Nixie(2,2);
    72. Nixie(3,3);
    73. }
    74. }

     


    源代码

    静态数码管显示

    #include

    unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    void Nixie(unsigned char Location,unsigned char Number)
    {
        switch(Location)
        {
        case 1:
            P2_4=1;
            P2_3=1;
            P2_2=1;
            break;
        case 2:
            P2_4=1;
            P2_3=1;
            P2_2=0;
            break;
        case 3:
            P2_4=1;
            P2_3=0;
            P2_2=1;
            break;
        case 4:
            P2_4=1;
            P2_3=0;
            P2_2=0;
            break;
        case 5:
            P2_4=0;
            P2_3=1;
            P2_2=1;
            break;
        case 6:
            P2_4=0;
            P2_3=1;
            P2_2=0;
            break;
        case 7:
            P2_4=0;
            P2_3=0;
            P2_2=1;
            break;
        case 8:
            P2_4=0;
            P2_3=0;
            P2_2=0;
            break;
        }
        P0=NixieTable[Number];
    }
    void main()
    {
        Nixie(7,8);
        while(1)
        {}
    }

     

    动态数码管显示

    #include

    unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

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

    void Nixie(unsigned char Location,unsigned char Number)
    {
        switch(Location)
        {
        case 1:
            P2_4=1;
            P2_3=1;
            P2_2=1;
            break;
        case 2:
            P2_4=1;
            P2_3=1;
            P2_2=0;
            break;
        case 3:
            P2_4=1;
            P2_3=0;
            P2_2=1;
            break;
        case 4:
            P2_4=1;
            P2_3=0;
            P2_2=0;
            break;
        case 5:
            P2_4=0;
            P2_3=1;
            P2_2=1;
            break;
        case 6:
            P2_4=0;
            P2_3=1;
            P2_2=0;
            break;
        case 7:
            P2_4=0;
            P2_3=0;
            P2_2=1;
            break;
        case 8:
            P2_4=0;
            P2_3=0;
            P2_2=0;
            break;
        }
        P0=NixieTable[Number];
        Delay(1);
        P0=0x00;
    }
    void main()
    {
        while(1)
        {
            Nixie(1,1);
            Nixie(2,2);
            Nixie(3,3);
        }
    }


    好啦,静态数码管显示和动态数码管显示的内容就到这里啦,还要继续加油!!!

     

  • 相关阅读:
    【图像处理】模板匹配的学习笔记
    Blink SQL内置函数大全
    MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选
    在IDEA中如何使用tomcat部署项目
    Spring Cloud Alibaba Nacos注册中心(单机)
    1552_AURIX_TC275_时钟分发
    SAP UI5 FileUploader 的本地文件上传技术实现分享
    怎么给图片名称快速重命名?来跟我学着两个实用方法
    cpu设计和实现(总结篇)
    WebAssembly跨平台开发
  • 原文地址:https://blog.csdn.net/weixin_74957752/article/details/133485670