微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第44节:从机的串口收发综合程序框架

第44节:从机的串口收发综合程序框架

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

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

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

网站地图

Top