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

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

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

  1. d led_update()//LED更新函数
  2. {
  3. if(ucLed_update==1)
  4. {
  5. ucLed_update=0; //及时清零,让它产生只更新一次的效果,避免一直更新。
  6. if(ucLed_dr1==1)
  7. {
  8. ucLedStatus08_01=ucLedStatus08_01|0x01;
  9. }
  10. else
  11. {
  12. ucLedStatus08_01=ucLedStatus08_01&0xfe;
  13. }
  14. if(ucLed_dr2==1)
  15. {
  16. ucLedStatus08_01=ucLedStatus08_01|0x02;
  17. }
  18. else
  19. {
  20. ucLedStatus08_01=ucLedStatus08_01&0xfd;
  21. }
  22. if(ucLed_dr3==1)
  23. {
  24. ucLedStatus08_01=ucLedStatus08_01|0x04;
  25. }
  26. else
  27. {
  28. ucLedStatus08_01=ucLedStatus08_01&0xfb;
  29. }
  30. if(ucLed_dr4==1)
  31. {
  32. ucLedStatus08_01=ucLedStatus08_01|0x08;
  33. }
  34. else
  35. {
  36. ucLedStatus08_01=ucLedStatus08_01&0xf7;
  37. }
  38. if(ucLed_dr5==1)
  39. {
  40. ucLedStatus08_01=ucLedStatus08_01|0x10;
  41. }
  42. else
  43. {
  44. ucLedStatus08_01=ucLedStatus08_01&0xef;
  45. }
  46. if(ucLed_dr6==1)
  47. {
  48. ucLedStatus08_01=ucLedStatus08_01|0x20;
  49. }
  50. else
  51. {
  52. ucLedStatus08_01=ucLedStatus08_01&0xdf;
  53. }
  54. if(ucLed_dr7==1)
  55. {
  56. ucLedStatus08_01=ucLedStatus08_01|0x40;
  57. }
  58. else
  59. {
  60. ucLedStatus08_01=ucLedStatus08_01&0xbf;
  61. }
  62. if(ucLed_dr8==1)
  63. {
  64. ucLedStatus08_01=ucLedStatus08_01|0x80;
  65. }
  66. else
  67. {
  68. ucLedStatus08_01=ucLedStatus08_01&0x7f;
  69. }
  70. if(ucLed_dr9==1)
  71. {
  72. ucLedStatus16_09=ucLedStatus16_09|0x01;
  73. }
  74. else
  75. {
  76. ucLedStatus16_09=ucLedStatus16_09&0xfe;
  77. }
  78. if(ucLed_dr10==1)
  79. {
  80. ucLedStatus16_09=ucLedStatus16_09|0x02;
  81. }
  82. else
  83. {
  84. ucLedStatus16_09=ucLedStatus16_09&0xfd;
  85. }
  86. if(ucLed_dr11==1)
  87. {
  88. ucLedStatus16_09=ucLedStatus16_09|0x04;
  89. }
  90. else
  91. {
  92. ucLedStatus16_09=ucLedStatus16_09&0xfb;
  93. }
  94. if(ucLed_dr12==1)
  95. {
  96. ucLedStatus16_09=ucLedStatus16_09|0x08;
  97. }
  98. else
  99. {
  100. ucLedStatus16_09=ucLedStatus16_09&0xf7;
  101. }
  102. if(ucLed_dr13==1)
  103. {
  104. ucLedStatus16_09=ucLedStatus16_09|0x10;
  105. }
  106. else
  107. {
  108. ucLedStatus16_09=ucLedStatus16_09&0xef;
  109. }
  110. if(ucLed_dr14==1)
  111. {
  112. ucLedStatus16_09=ucLedStatus16_09|0x20;
  113. }
  114. else
  115. {
  116. ucLedStatus16_09=ucLedStatus16_09&0xdf;
  117. }
  118. if(ucLed_dr15==1)
  119. {
  120. ucLedStatus16_09=ucLedStatus16_09|0x40;
  121. }
  122. else
  123. {
  124. ucLedStatus16_09=ucLedStatus16_09&0xbf;
  125. }
  126. if(ucLed_dr16==1)
  127. {
  128. ucLedStatus16_09=ucLedStatus16_09|0x80;
  129. }
  130. else
  131. {
  132. ucLedStatus16_09=ucLedStatus16_09&0x7f;
  133. }
  134. hc595_drive(ucLedStatus16_09,ucLedStatus08_01);//74HC595底层驱动函数
  135. }
  136. }
  137. void display_drive()
  138. {
  139. //以下程序,如果加一些数组和移位的元素,还可以压缩容量。但是鸿哥追求的不是容量,而是清晰的讲解思路
  140. switch(ucDisplayDriveStep)
  141. {
  142. case 1://显示第1位
  143. ucDigShowTemp=dig_table[ucDigShow1];
  144. if(ucDigDot1==1)
  145. {
  146. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  147. }
  148. dig_hc595_drive(ucDigShowTemp,0xfe);
  149. break;
  150. case 2://显示第2位
  151. ucDigShowTemp=dig_table[ucDigShow2];
  152. if(ucDigDot2==1)
  153. {
  154. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  155. }
  156. dig_hc595_drive(ucDigShowTemp,0xfd);
  157. break;
  158. case 3://显示第3位
  159. ucDigShowTemp=dig_table[ucDigShow3];
  160. if(ucDigDot3==1)
  161. {
  162. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  163. }
  164. dig_hc595_drive(ucDigShowTemp,0xfb);
  165. break;
  166. case 4://显示第4位
  167. ucDigShowTemp=dig_table[ucDigShow4];
  168. if(ucDigDot4==1)
  169. {
  170. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  171. }
  172. dig_hc595_drive(ucDigShowTemp,0xf7);
  173. break;
  174. case 5://显示第5位
  175. ucDigShowTemp=dig_table[ucDigShow5];
  176. if(ucDigDot5==1)
  177. {
  178. ucDigShowTemp=ucDigShowTemp|0x80;//显示小数点
  179. }
  180. dig_hc595_drive

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

网站地图

Top