今年是本人第一年参加蓝桥杯的比赛,正是大一,还没有接触到一些专业课内容,以下内容是在备赛的过程中总结出来的,也做笔记实用。由于认识浅显且多有不足,如有错误或者更好的办法,望各位指正。
在准备第三届和第四届的省赛题的时候没有太大的难题,但是在第五届省赛开始,就断断续续遇到了一些棘手的问题。
个人认为第五届省赛的难点就在于矩阵按键输入数字的程序。这个要求的原理就类似于键盘输入。
要求:数码管S7 S6 S5 S4分别代表数字0 3 6 9,按下某个按键之后,数码管上显示对应的数字,并且依次向后显示。
解决办法:
先定义两个变量:uchar num,flag;
一个用来表示数字,一个用来表示按键被按下之后的标志位。我们给变量flag赋初值为0,当按键被按下之后flag的值变为1。
接着,我们在主函数的while循环内检测:数码管3关闭并且S7按键被按下时,显示S7对应的数字0,并且标志位恢复0.
If((three==0) && (flag==1)) {three=num;flag=0;}
后面的数码管就依次类推即可。