当前位置:   article > 正文

51单片机-数码管显示多个_51单片机多数码管同时显示

51单片机多数码管同时显示

目录

简介:

一. 简单全亮

二. 控制单个变化

三. 2024


书接上回 51单片机-数码管显示单个

http://t.csdnimg.cn/Ii6x0

简介:

51 单片机作为控制核心,可以与数码管相连接来实现数字的显示。

数码管通常有多个段,通过控制这些段的点亮和熄灭状态,可以显示不同的数字。当要显示多个数字时,需要合理地安排数码管的布局和控制逻辑。

在硬件方面,需要将 51 单片机的引脚与数码管的相应引脚进行连接,以实现数据和控制信号的传输。可能需要使用驱动电路来增强信号或实现多位数码管的控制。

在编程方面,需要根据数码管的特性和显示需求来编写代码。可以通过循环和逻辑判断来依次控制每个数码管显示相应的数字。比如,可以先确定要显示的数字序列,然后逐位地将数字转换为对应的段码,并输出到数码管上。

通过这种方式,可以在数码管上同时显示多个数字,实现诸如计数器、时钟显示等多种功能。它为数据的直观展示提供了一种简单而有效的方式,在很多电子设备和系统中都有广泛应用。

总之,利用 51 单片机控制数码管显示多个数字是一种常见且实用的技术手段,具有很大的灵活性和可扩展性。

一. 简单全亮

ps:有好几次没电亮,是没加阻值,看了这方面的基础要好好补补了.

这种是不需要控制哪个亮,全部接了电.直接用上一篇的代码,就可以每个都动态变化

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code leddata[]={
  6. 0x3F, //"0"
  7. 0x06, //"1"
  8. 0x5B, //"2"
  9. 0x4F, //"3"
  10. 0x66, //"4"
  11. 0x6D, //"5"
  12. 0x7D, //"6"
  13. 0x07, //"7"
  14. 0x7F, //"8"
  15. 0x6F, //"9"
  16. 0x77, //"A"
  17. 0x7C, //"B"
  18. 0x39, //"C"
  19. 0x5E, //"D"
  20. 0x79, //"E"
  21. 0x71, //"F"
  22. 0x76, //"H"
  23. 0x38, //"L"
  24. 0x37, //"n"
  25. 0x3E, //"u"
  26. 0x73, //"P"
  27. 0x5C, //"o"
  28. 0x40, //"-"
  29. 0x00 //熄灭
  30. };
  31. void DelayMS(uint x)
  32. {
  33. uchar t;
  34. while(x--)
  35. for(t=120;t>0;t--);
  36. }
  37. void main()
  38. {
  39. uchar i=0;
  40. P0=0x00;
  41. while(i<24)
  42. {
  43. P0=leddata[i];
  44. i++;
  45. DelayMS(400);
  46. }
  47. }

二. 控制单个变化

就是分别控制 1234引脚了

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code leddata[]={
  6. 0x3F, //"0"
  7. 0x06, //"1"
  8. 0x5B, //"2"
  9. 0x4F, //"3"
  10. 0x66, //"4"
  11. 0x6D, //"5"
  12. 0x7D, //"6"
  13. 0x07, //"7"
  14. 0x7F, //"8"
  15. 0x6F, //"9"
  16. 0x77, //"A"
  17. 0x7C, //"B"
  18. 0x39, //"C"
  19. 0x5E, //"D"
  20. 0x79, //"E"
  21. 0x71, //"F"
  22. 0x76, //"H"
  23. 0x38, //"L"
  24. 0x37, //"n"
  25. 0x3E, //"u"
  26. 0x73, //"P"
  27. 0x5C, //"o"
  28. 0x40, //"-"
  29. 0x00 //熄灭
  30. };
  31. void DelayMS(uint x)
  32. {
  33. uchar t;
  34. while(x--)
  35. for(t=120;t>0;t--);
  36. }
  37. void main()
  38. {
  39. uchar i=0;
  40. P0=0x00;
  41. P2 =0xfe;
  42. while(i<24)
  43. {
  44. P0=leddata[i];
  45. i++;
  46. DelayMS(400);
  47. }
  48. }

这样就可以做很多小显示了,比如2024;

三. 2024

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code leddata[]={
  6. 0x3F, //"0"
  7. 0x06, //"1"
  8. 0x5B, //"2"
  9. 0x4F, //"3"
  10. 0x66, //"4"
  11. 0x6D, //"5"
  12. 0x7D, //"6"
  13. 0x07, //"7"
  14. 0x7F, //"8"
  15. 0x6F, //"9"
  16. 0x77, //"A"
  17. 0x7C, //"B"
  18. 0x39, //"C"
  19. 0x5E, //"D"
  20. 0x79, //"E"
  21. 0x71, //"F"
  22. 0x76, //"H"
  23. 0x38, //"L"
  24. 0x37, //"n"
  25. 0x3E, //"u"
  26. 0x73, //"P"
  27. 0x5C, //"o"
  28. 0x40, //"-"
  29. 0x00 //熄灭
  30. };
  31. void DelayMS(uint x)
  32. {
  33. uchar t;
  34. while(x--)
  35. for(t=120;t>0;t--);
  36. }
  37. void delay(unsigned int t)
  38. {
  39. unsigned int i, j;
  40. for (i = 0; i < t; i++) {
  41. for (j = 0; j < 1275; j++) {
  42. ; // 空循环,等待时间过去
  43. }
  44. }
  45. }
  46. void main()
  47. {
  48. uchar i=0;
  49. P0=0x00;
  50. while(1)
  51. {
  52. for (i = 0; i < 5; i++)
  53. {
  54. switch (i)
  55. {
  56. case 0:
  57. P0 = 0x5B;
  58. P2 =0xFE; //1111 1110
  59. break;
  60. case 1:
  61. P0 = 0x3F;
  62. P2 =0xFD;//1111 1101
  63. break;
  64. case 2:
  65. P0 =0x5B;
  66. P2 =0xFB;//1111 1011
  67. break;
  68. case 3:
  69. P0 =0x66;
  70. P2 =0xF7;//1111 0111
  71. break;
  72. default:
  73. break;
  74. }
  75. delay(1);
  76. P0=0x00;
  77. }
  78. }
  79. }

四. 总结

以下是对 51 单片机控制数码管显示多个数字的总结:

51 单片机可用于驱动数码管实现多个数字的显示。数码管由多个段组成以显示数字。

硬件上,需将单片机引脚与数码管引脚相连,可能还需驱动电路。编程时,通过循环和逻辑处理来逐个让数码管显示相应数字。可用于实现如计数器、时钟显示等功能。

其优势在于:

  • 简单直观,能清晰展示数字信息。
  • 成本较低,易于实现。

应用广泛:

  • 在各类电子设备中用于数据的实时显示。
  • 在教学和实验中帮助理解单片机控制原理。

总之,51 单片机结合数码管实现多个数字显示,是一种实用且具有多种应用场景的技术组合,为数字信息的展示和简单系统的构建提供了便捷途径。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/736771
推荐阅读
相关标签
  

闽ICP备14008679号