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

第77节:窗口里通过移动光标设置参数的液晶屏菜单程序

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

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

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

网站地图

Top