当前位置:   article > 正文

数码管的动态显示_数码管动态显示代码

数码管动态显示代码

要理解数码管的显示,我们先理解其原理,我们先看它的原理图。

 

原理图中com引脚是表示选择数码管的位,a1- dp1是表示选择数码管的段。

  1. void ShowSMG(unsigned int value,unsigned int pos)
  2. {
  3. InitHC138(6);
  4. P0=0x01<<pos;
  5. InitHC138(7);
  6. P0=value;
  7. }

该段代码是表示要选择哪一位数码管亮,并且使其表示相应的数据。选通573锁存器6通道后,表示进行选择数码管的位操作,对P0口赋值0x01<<pos,是利用余辉效应使得人眼反应不过来,人眼看到的都是亮的。之后选通7,对相应的数码管进行段选赋值。

之后就可以随意让数码管表示数据了。例如,我们表示一个日期。

  1. void SMG()
  2. {
  3. ShowSMG(SMG_duanma[2],0);
  4. Delay(500);
  5. ShowSMG(SMG_duanma[0],1);
  6. Delay(500);
  7. ShowSMG(SMG_duanma[2],2);
  8. Delay(500);
  9. ShowSMG(SMG_duanma[3],3);
  10. Delay(500);
  11. ShowSMG(SMG_duanma[16],4);
  12. Delay(500);
  13. ShowSMG(SMG_duanma[16],5);
  14. Delay(500);
  15. ShowSMG(SMG_duanma[0],6);
  16. Delay(500);
  17. ShowSMG(SMG_duanma[4],7);
  18. Delay(500);
  19. }

接下来,看完整的代码。

  1. #include<stc15f2k60s2.h>
  2. sbit HC138_A=P2^5;
  3. sbit HC138_B=P2^6;
  4. sbit HC138_C=P2^7;
  5. unsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  6. 0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
  7. 0xbf,0x7f};
  8. void InitHC138(unsigned int n)
  9. {
  10. switch(n)
  11. {
  12. case 4:
  13. HC138_C=1;
  14. HC138_B=0;
  15. HC138_A=0;
  16. break;
  17. case 5:
  18. HC138_C=1;
  19. HC138_B=0;
  20. HC138_A=1;
  21. break;
  22. case 6:
  23. HC138_C=1;
  24. HC138_B=1;
  25. HC138_A=0;
  26. break;
  27. case 7:
  28. HC138_C=1;
  29. HC138_B=1;
  30. HC138_A=1;
  31. break;
  32. }
  33. }
  34. void Delay(unsigned int t)
  35. {
  36. while(t--);
  37. }
  38. void jing()
  39. {
  40. InitHC138(5);
  41. P0=0x00;
  42. }
  43. void ShowSMG(unsigned int value,unsigned int pos)
  44. {
  45. InitHC138(6);
  46. P0=0x01<<pos;
  47. InitHC138(7);
  48. P0=value;
  49. }
  50. void SMG()
  51. {
  52. ShowSMG(SMG_duanma[2],0);
  53. Delay(500);
  54. ShowSMG(SMG_duanma[0],1);
  55. Delay(500);
  56. ShowSMG(SMG_duanma[2],2);
  57. Delay(500);
  58. ShowSMG(SMG_duanma[3],3);
  59. Delay(500);
  60. ShowSMG(SMG_duanma[16],4);
  61. Delay(500);
  62. ShowSMG(SMG_duanma[16],5);
  63. Delay(500);
  64. ShowSMG(SMG_duanma[0],6);
  65. Delay(500);
  66. ShowSMG(SMG_duanma[4],7);
  67. Delay(500);
  68. }
  69. void main()
  70. {
  71. jing();
  72. while(1)
  73. {
  74. SMG();
  75. }
  76. }

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

闽ICP备14008679号