找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1492|回复: 0
打印 上一主题 下一主题
收起左侧

求助 c51单片机数码管交通灯,循环之后最后一个数显示不正常

[复制链接]
跳转到指定楼层
楼主
题目要求是,20秒红,16秒绿,4秒黄。问题是在每次20秒循环之后,的最后一个数显示为00  和2   请问是哪里的问题。程序和电路图如下。

  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit LSA=P2^2;
  5. sbit LSB=P2^3;
  6. sbit LSC=P2^4;
  7. uchar num,num2,shi,ge,shi2,ge2;
  8. uchar num1=0;
  9. uint i;
  10. void diaplayw(uchar shi,uchar ge);
  11. void diaplayn(uchar shi,uchar ge);
  12. void delay(uint xms);
  13. void init();
  14. char code table[]={0x3f,0x06,0x5b,0x4f,
  15. 0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  16. 0x77,0x7c,0x39,0x5e,0x79,0x71};
  17. void main()
  18. {
  19. while(1)
  20. {
  21. num2=17;
  22. num=21;
  23. init();
  24. while(num>=1)
  25. {      
  26. if(num>=5)
  27. {
  28. diaplayn(shi,ge);
  29. diaplayw(shi2,ge2);
  30. P1=0xc6;
  31. }
  32. if(num<=4)
  33. {
  34. diaplayn(shi,ge);
  35. diaplayw(shi,ge);
  36. if(num%2==1)
  37. {
  38. P1=0Xa6;
  39. }
  40. else
  41. P1=0xe6;
  42. }
  43. }
  44. num2=17;
  45. num=21;
  46. init();
  47. while(num>=1)//¶«Î÷ÂìÄϱ±oì
  48. {      
  49. if(num>=5)
  50. {
  51. diaplayn(shi2,ge2);
  52. diaplayw(shi,ge);
  53. P1=0x63;
  54. }
  55. if(num<=4)
  56. {
  57. diaplayn(shi,ge);
  58. diaplayw(shi,ge);
  59. if(num%2==1)
  60. {
  61. P1=0X65;
  62. }
  63. else
  64. P1=0x67;
  65. }
  66. }
  67. }
  68. }
  69. void diaplayw(uchar shi,uchar ge)
  70. {
  71. LSA=1;LSB=0;LSC=0;
  72. P0=table[shi];
  73. delay(1);
  74. P0=0X00;
  75. LSA=0;LSB=0;LSC=0;
  76. P0=table[ge];
  77. delay(1);
  78. P0=0X00;
  79. }
  80. void diaplayn(uchar shi,uchar ge)
  81. {
  82. LSA=1;LSB=0;LSC=1;
  83. P0=table[shi];
  84. delay(1);
  85. P0=0X00;
  86. LSA=0;LSB=0;LSC=1;
  87. P0=table[ge];
  88. delay(1);
  89. P0=0X00;
  90. }
  91. void T1_time() interrupt 3
  92. {
  93. TH1=(65536-45872)/256;
  94. TL1=(65536-45872)%256;
  95. num1++;
  96. if(num1==20)
  97. {
  98. num1=0;
  99. num--;
  100. num2--;
  101. shi=num/10;
  102. ge=num%10;
  103. shi2=num2/10;
  104. ge2=num2%10;
  105. }
  106. }
  107. void delay(uint xms)
  108. {
  109. uint i,j;
  110. for(i=xms;i>0;i--)
  111. for(j=250;j>0;j--);
  112. }
  113. void init()
  114. {
  115. TMOD=0x10;
  116. TH1=(65536-45872)/256;
  117. TL1=(65536-45872)%256;
  118. EA=1;
  119. ET1=1;
  120. TR1=1;
  121. }
复制代码


交通灯.zip

23.05 KB, 下载次数: 6

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表