微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第47节:操作AT24C02利用定时器延时改善数码管的闪烁

第47节:操作AT24C02利用定时器延时改善数码管的闪烁

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

  1. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  2. }
  3. if(uiSetData1<100)
  4. {
  5. ucDigShow3=10;//如果小于100,百位显示无
  6. }
  7. else
  8. {
  9. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  10. }
  11. if(uiSetData1<10)
  12. {
  13. ucDigShow2=10;//如果小于10,十位显示无
  14. }
  15. else
  16. {
  17. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  18. }
  19. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  20. }
  21. break;
  22. case 2://显示P--2窗口的数据
  23. if(ucWd2Update==1)//窗口2要全部更新显示
  24. {
  25. ucWd2Update=0;//及时清零标志,避免一直进来扫描
  26. ucDigShow8=12;//第8位数码管显示P
  27. ucDigShow7=11;//第7位数码管显示-
  28. ucDigShow6=2;//第6位数码管显示2
  29. ucDigShow5=10; //第5位数码管显示无
  30. ucTemp4=uiSetData2/1000; //分解数据
  31. ucTemp3=uiSetData2%1000/100;
  32. ucTemp2=uiSetData2%100/10;
  33. ucTemp1=uiSetData2%10;
  34. if(uiSetData2<1000)
  35. {
  36. ucDigShow4=10;//如果小于1000,千位显示无
  37. }
  38. else
  39. {
  40. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  41. }
  42. if(uiSetData2<100)
  43. {
  44. ucDigShow3=10;//如果小于100,百位显示无
  45. }
  46. else
  47. {
  48. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  49. }
  50. if(uiSetData2<10)
  51. {
  52. ucDigShow2=10;//如果小于10,十位显示无
  53. }
  54. else
  55. {
  56. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  57. }
  58. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  59. }
  60. break;
  61. case 3://显示P--3窗口的数据
  62. if(ucWd3Update==1)//窗口3要全部更新显示
  63. {
  64. ucWd3Update=0;//及时清零标志,避免一直进来扫描
  65. ucDigShow8=12;//第8位数码管显示P
  66. ucDigShow7=11;//第7位数码管显示-
  67. ucDigShow6=3;//第6位数码管显示3
  68. ucDigShow5=10; //第5位数码管显示无
  69. ucTemp4=uiSetData3/1000; //分解数据
  70. ucTemp3=uiSetData3%1000/100;
  71. ucTemp2=uiSetData3%100/10;
  72. ucTemp1=uiSetData3%10;
  73. if(uiSetData3<1000)
  74. {
  75. ucDigShow4=10;//如果小于1000,千位显示无
  76. }
  77. else
  78. {
  79. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  80. }
  81. if(uiSetData3<100)
  82. {
  83. ucDigShow3=10;//如果小于100,百位显示无
  84. }
  85. else
  86. {
  87. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  88. }
  89. if(uiSetData3<10)
  90. {
  91. ucDigShow2=10;//如果小于10,十位显示无
  92. }
  93. else
  94. {
  95. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  96. }
  97. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  98. }
  99. break;
  100. case 4://显示P--4窗口的数据
  101. if(ucWd4Update==1)//窗口4要全部更新显示
  102. {
  103. ucWd4Update=0;//及时清零标志,避免一直进来扫描
  104. ucDigShow8=12;//第8位数码管显示P
  105. ucDigShow7=11;//第7位数码管显示-
  106. ucDigShow6=4;//第6位数码管显示4
  107. ucDigShow5=10; //第5位数码管显示无
  108. ucTemp4=uiSetData4/1000; //分解数据
  109. ucTemp3=uiSetData4%1000/100;
  110. ucTemp2=uiSetData4%100/10;
  111. ucTemp1=uiSetData4%10;
  112. if(uiSetData4<1000)
  113. {
  114. ucDigShow4=10;//如果小于1000,千位显示无
  115. }
  116. else
  117. {
  118. ucDigShow4=ucTemp4;//第4位数码管要显示的内容
  119. }
  120. if(uiSetData4<100)
  121. {
  122. ucDigShow3=10;//如果小于100,百位显示无
  123. }
  124. else
  125. {
  126. ucDigShow3=ucTemp3;//第3位数码管要显示的内容
  127. }
  128. if(uiSetData4<10)
  129. {
  130. ucDigShow2=10;//如果小于10,十位显示无
  131. }
  132. else
  133. {
  134. ucDigShow2=ucTemp2;//第2位数码管要显示的内容
  135. }
  136. ucDigShow1=ucTemp1;//第1位数码管要显示的内容
  137. }
  138. break;
  139. }
  140. }
  141. void key_scan(void)//按键扫描函数 放在定时中断里
  142. {
  143. if(key_sr1==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
  144. {
  145. ucKeyLock1=0; //按键自锁标志清零
  146. uiKeyTimeCnt1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
  147. }
  148. e

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

网站地图

Top