微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第37节:数码管作为仪表盘显示跑马灯的方向,速度和状态

第37节:数码管作为仪表盘显示跑马灯的方向,速度和状态

时间:11-22 来源:互联网 点击:

  1. 9=0;//第9个灭
  2. ucLed_update=1;//更新显示
  3. ucLedStep_09_16=0; //返回上一个步骤
  4. }
  5. }
  6. break;
  7. case 2:
  8. if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
  9. {
  10. uiTimeCnt_09_16=0; //时间计数器清零
  11. if(ucLedDirFlag==0)//正方向
  12. {
  13. ucLed_dr10=0;//第10个灭
  14. ucLed_dr11=1;//第11个亮
  15. ucLed_update=1;//更新显示
  16. ucLedStep_09_16=3; //切换到下一个步骤
  17. }
  18. else//反方向
  19. {
  20. ucLed_dr9=1;//第9个亮
  21. ucLed_dr10=0;//第10个灭
  22. ucLed_update=1;//更新显示
  23. ucLedStep_09_16=1; //返回上一个步骤
  24. }
  25. }
  26. break;
  27. case 3:
  28. if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
  29. {
  30. uiTimeCnt_09_16=0; //时间计数器清零
  31. if(ucLedDirFlag==0)//正方向
  32. {
  33. ucLed_dr11=0;//第11个灭
  34. ucLed_dr12=1;//第12个亮
  35. ucLed_update=1;//更新显示
  36. ucLedStep_09_16=4; //切换到下一个步骤
  37. }
  38. else//反方向
  39. {
  40. ucLed_dr10=1;//第10个亮
  41. ucLed_dr11=0;//第11个灭
  42. ucLed_update=1;//更新显示
  43. ucLedStep_09_16=2; //返回上一个步骤
  44. }
  45. }
  46. break;
  47. case 4:
  48. if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
  49. {
  50. uiTimeCnt_09_16=0; //时间计数器清零
  51. if(ucLedDirFlag==0)//正方向
  52. {
  53. ucLed_dr12=0;//第12个灭
  54. ucLed_dr13=1;//第13个亮
  55. ucLed_update=1;//更新显示
  56. ucLedStep_09_16=5; //切换到下一个步骤
  57. }
  58. else//反方向
  59. {
  60. ucLed_dr11=1;//第11个亮
  61. ucLed_dr12=0;//第12个灭
  62. ucLed_update=1;//更新显示
  63. ucLedStep_09_16=3; //返回上一个步骤
  64. }
  65. }
  66. break;
  67. case 5:
  68. if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
  69. {
  70. uiTimeCnt_09_16=0; //时间计数器清零
  71. if(ucLedDirFlag==0)//正方向
  72. {
  73. ucLed_dr13=0;//第13个灭
  74. ucLed_dr14=1;//第14个亮
  75. ucLed_update=1;//更新显示
  76. ucLedStep_09_16=6; //切换到下一个步骤
  77. }
  78. else//反方向
  79. {
  80. ucLed_dr12=1;//第12个亮
  81. ucLed_dr13=0;//第13个灭
  82. ucLed_update=1;//更新显示
  83. ucLedStep_09_16=4; //返回上一个步骤
  84. }
  85. }
  86. break;
  87. case 6:
  88. if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
  89. {
  90. uiTimeCnt_09_16=0; //时间计数器清零
  91. if(ucLedDirFlag==0)//正方向
  92. {
  93. ucLed_dr14=0;//第14个灭
  94. ucLed_dr15=1;//第15个亮
  95. ucLed_update=1;//更新显示
  96. ucLedStep_09_16=7; //切换到下一个步骤
  97. }
  98. else//反方向
  99. {
  100. ucLed_dr13=1;//第13个亮
  101. ucLed_dr14=0;//第14个灭
  102. ucLed_update=1;//更新显示
  103. ucLedStep_09_16=5; //返回上一个步骤
  104. }
  105. }
  106. break;
  107. case 7:
  108. if(uiTimeCnt_09_16>=uiSetTimeLevel_09_16) //时间到
  109. {
  110. uiTimeCnt_09_16=0; //时间计数器清零
  111. if(ucLedDirFlag==0)//正方向
  112. {
  113. ucLed_dr15=0;//第15个灭
  114. ucLed_dr16=1;//第16个亮
  115. ucLed_update=1;//更新显示
  116. ucLedStep_09_16=0; //返回到开始处,重新开始新的一次循环
  117. }
  118. else//反方向
  119. {
  120. ucLed_dr14=1;//第14个亮
  121. ucLed_dr15=0;//第15个灭
  122. ucLed_update=1;//更新显示
  123. ucLedStep_09_16=6; //返回上一个步骤
  124. }
  125. }
  126. break;
  127. }
  128. }
  129. }
  130. void T0_time() interrupt 1
  131. {
  132. TF0=0;//清除中断标志
  133. TR0=0; //关中断
  134. if(uiTimeCnt_09_16<0xffff)//设定这个条件,防止uiTimeCnt超范围。
  135. {
  136. if(ucLedStartFlag==1)//此变量为1时代表启动
  137. {
  138. uiTimeCnt_09_16++;//累加定时中断的次数,
  139. }
  140. }
  141. key_scan(); //按键扫描函数
  142. if(uiVoiceCnt!=0)
  143. {
  144. uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停止鸣叫
  145. beep_dr=0;//蜂鸣器是PNP三极管控制,低电平就开始鸣叫。
  146. // beep_dr=1;//蜂鸣器是PNP三极管控制,低电平就开始鸣叫。
  147. }
  148. else
  149. {
  150. ; //此处多加一个空指令,想维持跟if括号语句的数量

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top