您当前的位置: 首页 >  嵌入式

风间琉璃•

暂无认证

  • 0浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2019年嵌入式第十届省赛真题解析

风间琉璃• 发布时间:2022-02-21 16:44:01 ,浏览量:0

一、题目

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA57yW56iL5bCP54aK,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA57yW56iL5bCP54aK,size_20,color_FFFFFF,t_70,g_se,x_16 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA57yW56iL5bCP54aK,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA57yW56iL5bCP54aK,size_20,color_FFFFFF,t_70,g_se,x_16 

二、分析 

以按键画出各个状态机的动作和变换:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA57yW56iL5bCP54aK,size_20,color_FFFFFF,t_70,g_se,x_16

 由于按键控制着状态机的变换,程序主要分为两大部分,一部分以按键控制着状态机的运行,另一部分以程序运行在不同的状态机下,显示不同的数据和产生不同的动作

1.按键(状态机)
void Key_Proc(void)
{
	if((uwTick -  uwTick_Key_Set_Point) min_v)
				{
					state = 0;LCD_Clear(White);
					max = max_v*10;min=min_v*10;
					iic_24c02_write(&max, 0, 1);HAL_Delay(10);
					iic_24c02_write(&min, 1, 1);HAL_Delay(10);
					iic_24c02_write(&upp_led, 2, 1);HAL_Delay(10);
					iic_24c02_write(&low_led, 3, 1);HAL_Delay(10);
				}
				else  //否则返回不了
				{
					
				}
		}	
		
	}
	if(unKey_Down == 2)
	{
		if(state != 0)//防止在数据界面,按键2其作用
		{
			if(++state==5)state =1;
		}
	}	
	if(unKey_Down == 3)  //加
	{
		switch(state)
		{
			case 1:
				max_v += 0.3;  
				if((max_v + 0.3)>3.3)max_v=3.3;
				break;
			case 2:
				if((max_v - min_v) > 0.3) min_v += 0.3;
				break;
			case 3:
			
				if(++upp_led>8)upp_led=8;
				if(upp_led == low_led) //相等
				{
					//下限灯是8,则upp_led =7;
					if(low_led==8)upp_led=7;
					else //继续加1
						if(++upp_led>8)upp_led=8;
				}
				break;
			case 4:

				if(++low_led>8)low_led=8;
				if(upp_led==low_led) 
				{
					if(upp_led==8)
						low_led = 7;
					else
						if(++low_led>8)low_led=8;
				}
				break;
		}
	}
	if(unKey_Down == 4) //减
	{
		
		switch(state)
		{
			case 1:
				if((max_v-min_v)>0.3)max_v -= 0.3;
				break;
			case 2:
				min_v -= 0.3;
				if((min_v-0.3)8)low_led=8;
				}
				break;
		}
	}
	if(unKey_Down == 4) //减
	{
		
		switch(state)
		{
			case 1:
				if((max_v-min_v)>0.3)max_v -= 0.3;
				break;
			case 2:
				min_v -= 0.3;
				if((min_v-0.3)            
关注
打赏
1665385461
查看更多评论
0.0373s