蓝桥杯第九届彩灯(键盘控制)

月明Mo的博客_CSDN博客-蓝桥杯单片机,Opencv,Proteus8领域博主

大峰哥~的博客_CSDN博客-领域博主

关键知识点:用状态机键盘——长按S4显示数码管,松开不显示数码管

unsigned char()
{
	u8 temp,val;
	temp=P3&0x0f;
    switch(temp) //1111 -8421   
	{
	case 0x0e:	val=7; break;
	case 0x0d:	val=6; break;
    case 0x0b:	val=5; break;
	case 0x07:  val=4; break;
	default:  val=0; break;
	}
	return val;
}
void scan_key()  //每10ms扫描一次
{
	u8 up,down,temp;
	static u8 old=0;
	temp=read_key();
	down=temp&(old^temp);
	up =~temp&(old^temp);
	old=temp;

	if(down)//按下执行
	{  if(smg_mode==0&&temp==4) //按下s4,且当前界面在0,
        smg_mode=3;             //切换到界面3
    }
	if(up)//按下松开执行
	{
		if(smg_mode==3)  //当前界面在3,
		smg_mode=0;      //切换到原来界面0
        else keyval=up;  

	}
}

猜你喜欢

转载自blog.csdn.net/qq_56095985/article/details/129959379