微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第83节:矩阵键盘输入任意数字或小数点的液晶屏显示程序

第83节:矩阵键盘输入任意数字或小数点的液晶屏显示程序

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

  1. {
  2. uiKeyTimeCnt=0;
  3. ucKeyStep++; //切换到下一个运行步骤
  4. }
  5. break;
  6. case 3:
  7. if(key_sr1==1&&key_sr2==1&&key_sr3==1&&key_sr4==1)
  8. {
  9. ucKeyStep=1;//如果没有按键按下,返回到第一个运行步骤重新开始扫描
  10. ucKeyLock=0;//按键自锁标志清零
  11. uiKeyTimeCnt=0; //按键去抖动延时计数器清零,此行非常巧妙
  12. ucRowRecord++;//输出下一列
  13. if(ucRowRecord>4)
  14. {
  15. ucRowRecord=1; //依次输出完四列之后,继续从第一列开始输出低电平
  16. }
  17. }
  18. else if(ucKeyLock==0)//有按键按下,且是第一次触发
  19. {
  20. if(key_sr1==0&&key_sr2==1&&key_sr3==1&&key_sr4==1)
  21. {
  22. uiKeyTimeCnt++;//去抖动延时计数器
  23. if(uiKeyTimeCnt>const_key_time)
  24. {
  25. uiKeyTimeCnt=0;
  26. ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
  27. if(ucRowRecord==1)//第一列输出低电平
  28. {
  29. ucKeySec=1;//触发1号键 对应朱兆祺学习板的S1键
  30. }
  31. else if(ucRowRecord==2)//第二列输出低电平
  32. {
  33. ucKeySec=2;//触发2号键 对应朱兆祺学习板的S2键
  34. }
  35. else if(ucRowRecord==3)//第三列输出低电平
  36. {
  37. ucKeySec=3;//触发3号键 对应朱兆祺学习板的S3键
  38. }
  39. else //第四列输出低电平
  40. {
  41. ucKeySec=4;//触发4号键 对应朱兆祺学习板的S4键
  42. }
  43. }
  44. }
  45. else if(key_sr1==1&&key_sr2==0&&key_sr3==1&&key_sr4==1)
  46. {
  47. uiKeyTimeCnt++;//去抖动延时计数器
  48. if(uiKeyTimeCnt>const_key_time)
  49. {
  50. uiKeyTimeCnt=0;
  51. ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
  52. if(ucRowRecord==1)//第一列输出低电平
  53. {
  54. ucKeySec=5;//触发5号键 对应朱兆祺学习板的S5键
  55. }
  56. else if(ucRowRecord==2)//第二列输出低电平
  57. {
  58. ucKeySec=6;//触发6号键 对应朱兆祺学习板的S6键
  59. }
  60. else if(ucRowRecord==3)//第三列输出低电平
  61. {
  62. ucKeySec=7;//触发7号键 对应朱兆祺学习板的S7键
  63. }
  64. else //第四列输出低电平
  65. {
  66. ucKeySec=8;//触发8号键 对应朱兆祺学习板的S8键
  67. }
  68. }
  69. }
  70. else if(key_sr1==1&&key_sr2==1&&key_sr3==0&&key_sr4==1)
  71. {
  72. uiKeyTimeCnt++;//去抖动延时计数器
  73. if(uiKeyTimeCnt>const_key_time)
  74. {
  75. uiKeyTimeCnt=0;
  76. ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
  77. if(ucRowRecord==1)//第一列输出低电平
  78. {
  79. ucKeySec=9;//触发9号键 对应朱兆祺学习板的S9键
  80. }
  81. else if(ucRowRecord==2)//第二列输出低电平
  82. {
  83. ucKeySec=10;//触发10号键 对应朱兆祺学习板的S10键
  84. }
  85. else if(ucRowRecord==3)//第三列输出低电平
  86. {
  87. ucKeySec=11;//触发11号键 对应朱兆祺学习板的S11键
  88. }
  89. else //第四列输出低电平
  90. {
  91. ucKeySec=12;//触发12号键 对应朱兆祺学习板的S12键
  92. }
  93. }
  94. }
  95. else if(key_sr1==1&&key_sr2==1&&key_sr3==1&&key_sr4==0)
  96. {
  97. uiKeyTimeCnt++;//去抖动延时计数器
  98. if(uiKeyTimeCnt>const_key_time)
  99. {
  100. uiKeyTimeCnt=0;
  101. ucKeyLock=1;//自锁按键置位,避免一直触发,只有松开按键,此标志位才会被清零
  102. if(ucRowRecord==1)//第一列输出低电平
  103. {
  104. ucKeySec=13;//触发13号键 对应朱兆祺学习板的S13键
  105. }
  106. else if(ucRowRecord==2)//第二列输出低电平
  107. {
  108. ucKeySec=14;//触发14号键 对应朱兆祺学习板的S14键
  109. }
  110. else if(ucRowRecord==3)//第三列输出低电平
  111. {
  112. ucKeySec=15;//触发15号键 对应朱兆祺学习板的S15键
  113. }
  114. else //第四列输出低电平
  115. {

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

网站地图

Top