微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第79节:通过主菜单移动光标来进入子菜单窗口的液晶屏程序

第79节:通过主菜单移动光标来进入子菜单窗口的液晶屏程序

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

  1. tic unsigned intuiKeyTimeCnt2=0; //按键去抖动延时计数器
  2. static unsigned char ucKeyLock2=0; //按键触发后自锁的变量标志
  3. static unsigned intuiKeyTimeCnt3=0; //按键去抖动延时计数器
  4. static unsigned char ucKeyLock3=0; //按键触发后自锁的变量标志
  5. static unsigned intuiKeyTimeCnt4=0; //按键去抖动延时计数器
  6. static unsigned char ucKeyLock4=0; //按键触发后自锁的变量标志
  7. if(key_sr1==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
  8. {
  9. ucKeyLock1=0; //按键自锁标志清零
  10. uiKeyTimeCnt1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
  11. }
  12. else if(ucKeyLock1==0)//有按键按下,且是第一次被按下
  13. {
  14. uiKeyTimeCnt1++; //累加定时中断次数
  15. if(uiKeyTimeCnt1>const_key_time1)
  16. {
  17. uiKeyTimeCnt1=0;
  18. ucKeyLock1=1;//自锁按键置位,避免一直触发
  19. ucKeySec=1; //触发1号键
  20. }
  21. }
  22. if(key_sr2==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
  23. {
  24. ucKeyLock2=0; //按键自锁标志清零
  25. uiKeyTimeCnt2=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
  26. }
  27. else if(ucKeyLock2==0)//有按键按下,且是第一次被按下
  28. {
  29. uiKeyTimeCnt2++; //累加定时中断次数
  30. if(uiKeyTimeCnt2>const_key_time2)
  31. {
  32. uiKeyTimeCnt2=0;
  33. ucKeyLock2=1;//自锁按键置位,避免一直触发
  34. ucKeySec=2; //触发2号键
  35. }
  36. }
  37. if(key_sr3==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
  38. {
  39. ucKeyLock3=0; //按键自锁标志清零
  40. uiKeyTimeCnt3=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
  41. }
  42. else if(ucKeyLock3==0)//有按键按下,且是第一次被按下
  43. {
  44. uiKeyTimeCnt3++; //累加定时中断次数
  45. if(uiKeyTimeCnt3>const_key_time3)
  46. {
  47. uiKeyTimeCnt3=0;
  48. ucKeyLock3=1;//自锁按键置位,避免一直触发
  49. ucKeySec=3; //触发3号键
  50. }
  51. }
  52. if(key_sr4==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
  53. {
  54. ucKeyLock4=0; //按键自锁标志清零
  55. uiKeyTimeCnt4=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
  56. }
  57. else if(ucKeyLock4==0)//有按键按下,且是第一次被按下
  58. {
  59. uiKeyTimeCnt4++; //累加定时中断次数
  60. if(uiKeyTimeCnt4>const_key_time4)
  61. {
  62. uiKeyTimeCnt4=0;
  63. ucKeyLock4=1;//自锁按键置位,避免一直触发
  64. ucKeySec=4; //触发4号键
  65. }
  66. }
  67. }
  68. void key_service(void) //按键服务的应用程序
  69. {
  70. switch(ucKeySec) //按键服务状态切换
  71. {
  72. case 1:// 加按键 对应朱兆祺学习板的S1键
  73. switch(ucWd)//在不同的窗口下,设置不同的参数
  74. {
  75. case 2://窗口2设置时间
  76. switch(ucWd2Part)//在窗口2下,根据不同的局部变量来设置不同的参数
  77. {
  78. case 1: //设置时间上限
  79. ucTimeH++;
  80. if(ucTimeH>99)
  81. {
  82. ucTimeH=99;
  83. }
  84. ucWd2Part1Update=1; //1代表更新显示,响应函数内部会清零
  85. break;
  86. case 2: //设置时间下限
  87. ucTimeL++;
  88. if(ucTimeL>99)
  89. {
  90. ucTimeL=99;
  91. }
  92. ucWd2Part2Update=1; //1代表更新显示,响应函数内部会清零
  93. break;
  94. }
  95. break;
  96. case 3://窗口3设置速度
  97. switch(ucWd3Part)//在窗口3下,根据不同的局部变量来设置不同的参数
  98. {
  99. case 1: //设置速度上限
  100. ucSpeedH++;
  101. if(ucSpeedH>99)
  102. {
  103. ucSpeedH=99;
  104. }
  105. ucWd3Part1Update=1; //1代表更新显示,响应函数内部会清零
  106. break;
  107. case 2: //设置速度下限
  108. ucSpeedL++;
  109. if(ucSpeedL>99)
  110. {
  111. ucSpeedL=99;
  112. }
  113. ucWd3Part2Update=1; //1代表更新显示,响应函数内部会清零
  114. break;
  115. }
  116. break;
  117. case 4://窗口4设置速度
  118. switch(ucWd4Part)//在窗口4下,根据不同的局部变量来设置不同的参数
  119. {
  120. case 1: //设置频率上限
  121. ucFreqH++;
  122. if(ucFreqH>99)
  123. {
  124. ucFreqH=99;
  125. }
  126. ucWd4Part1Update=1; //1代表更新显示,响应函数内部会清零
  127. break;
  128. case 2: //设置频率下限
  129. ucFreqL++;
  130. if(ucFreqL>99)

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

网站地图

Top