共2条
1/1 1 跳转至页
LCD 我想做一个LCD的菜单,下面是我的思路。请各位大侠指点。

问
输入设备是一个脉冲编码器,可以正旋、反旋和确定开关。
通过脉冲计数得到菜单的ID,确认后进入下一级菜单或执行菜单的命令。
通过一个指针数组将所有的一级菜单ID(结构数组的指针)存放起来,二级菜单采用结构数组进行区分。
/*…结构定义如下….*/
typedef struct MENU_ITEM
{ uint a;
uchar b;
uchar c[];
}
MENU_ITEM code Menu1[]={ //MenuID=0
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu2_1[]={ //MenuID=1
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu2_2[]={ //MenuID=2
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu2_3[]={ //MenuID=3
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu3_1[]={ //MenuID=4
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu3_2[]={ //MenuID=5
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu3_3[]={ //MenuID=6
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code *Menu[]={
Menu1,
Menu2_1,
Menu2_2,
Menu2_3,
Menu3_1,
Menu3_2,
Menu3_3,
};
具体思路是,画面开始后,出现第一级菜单,如果按下确认按钮的话,进入Menu1[]的子菜单;如果计数值为1时,进入Menu2_1[];如果计数值为2时,进入Menu2_2];以此类推。
但是这个思路只能适用于二级菜单,要是三级、四级或多级菜单应该如何往下扩展?
各位大侠多多指点。
答 1: re给你提供一个思路,用这样的程序结构你看行不行
switch(display_state)
{
case 0:
加入你要做的显示菜单;
display_state=1;
break;
case 1:
加入你要做的下一级显示菜单;
display_state=1;
break;
::::::
::::::
default:
break;
}
} 答 2: 菜单这东西太费存储器 答 3: luhuaren的状态机方法是嵌入式开发的王道!!! 答 4: 王道:古时指以仁义统治天下的政策。多谢几位大侠指点。
通过脉冲计数得到菜单的ID,确认后进入下一级菜单或执行菜单的命令。
通过一个指针数组将所有的一级菜单ID(结构数组的指针)存放起来,二级菜单采用结构数组进行区分。
/*…结构定义如下….*/
typedef struct MENU_ITEM
{ uint a;
uchar b;
uchar c[];
}
MENU_ITEM code Menu1[]={ //MenuID=0
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu2_1[]={ //MenuID=1
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu2_2[]={ //MenuID=2
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu2_3[]={ //MenuID=3
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu3_1[]={ //MenuID=4
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu3_2[]={ //MenuID=5
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code Menu3_3[]={ //MenuID=6
{0x,1,“???”},
{0x,2, “???”},
{0x,3,“???”}
};
MENU_ITEM code *Menu[]={
Menu1,
Menu2_1,
Menu2_2,
Menu2_3,
Menu3_1,
Menu3_2,
Menu3_3,
};
具体思路是,画面开始后,出现第一级菜单,如果按下确认按钮的话,进入Menu1[]的子菜单;如果计数值为1时,进入Menu2_1[];如果计数值为2时,进入Menu2_2];以此类推。
但是这个思路只能适用于二级菜单,要是三级、四级或多级菜单应该如何往下扩展?
各位大侠多多指点。
答 1: re给你提供一个思路,用这样的程序结构你看行不行
switch(display_state)
{
case 0:
加入你要做的显示菜单;
display_state=1;
break;
case 1:
加入你要做的下一级显示菜单;
display_state=1;
break;
::::::
::::::
default:
break;
}
} 答 2: 菜单这东西太费存储器 答 3: luhuaren的状态机方法是嵌入式开发的王道!!! 答 4: 王道:古时指以仁义统治天下的政策。多谢几位大侠指点。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 |