微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第36节:带数码管显示的加法简易计算器

第36节:带数码管显示的加法简易计算器

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

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

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

网站地图

Top