一、题目
以按键画出各个状态机的动作和变换:
由于按键控制着状态机的变换,程序主要分为两大部分,一部分以按键控制着状态机的运行,另一部分以程序运行在不同的状态机下,显示不同的数据和产生不同的动作
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)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?