蓝桥杯键盘分独立键盘和矩阵键盘两种,电路图如下
跳帽接1 2引脚做矩阵键盘用,接2 3 引脚做独立键盘用
在省赛中经常会遇到按键的操作要求,第八届的按键要求如下
S7 S6 定义两种工作模式 :时钟设置 闹钟设置
S5 S4 在两种工作模式下有不同功能
S5 S4 只在有具体地工作模式下起作用,否则按下没有操作(即不必写)
于是需要有模式参数 state
具体代码过于麻烦,我将在后续综合训练中补充,这里以仅LED说明思路
S7 S6 定义两种工作模式 :控制L3 L4或者L5 L6
S5 S4 在两种工作模式下有不同功能 :例如S5 在模式1控制L3在模式2控制L5
S5 S4 只在有具体地工作模式下起作用,否则按下没有操作(即不必写)
于是需要有模式参数 state
void keys()
{
if(S7 == 0)
{
Delaykey(100);
if(S7 == 0)
{
if(state == 0)
{
L1 = 0;
state = 1;
}
else if(state == 1)
{
L1 = 1;
state = 0;
}
while(S7 == 0);//尤其注意,不加这句,按键只要处于按下状态会不停执行程序,状态一直切换,写上这句后,一按一松,只执行一次,效果稳定
}
}
if(S6 == 0)
{
Delaykey(100);
if(S6 == 0)
{
if(state == 0)
{
L2 = 0;
state = 2;
}
else if(state == 2)
{
L2 = 1;
state = 0;
}
while(S6 == 0);
}
}
if(S5 == 0)
{
Delaykey(100);
if(S5 == 0)
{
if(state == 1)
{
L3 = 0;
while(S5 == 0);
L3 = 1;
}
else if(state == 2)
{
L5 = 0;
while(S5 == 0);
L5 = 1;
}
}
}
if(S4 == 0)
{
Delaykey(100);
if(S4 == 0)
{
if(state == 1)
{
L4 = 0;
while(S4 == 0);
L4 = 1;
}
else if(state == 2)
{
L6 = 0;
while(S4 == 0);
L6 = 1;
}
}
}
}