在单片机体系的人机界面规划中,一般需求选用菜单的办法来与用户交互信息,而关于某些使用体系它的菜单结构比较特别,它每个菜单项的子项长度不一致,级数不一致,并且有些子项的操作具有必定的特别性;因而不能选用一种通用的菜单结构模板来进行菜单的规划,结合作者屡次菜单程序规划的工作经验,本文描绘了一种恣意菜单结构的规划办法,首要将菜单的结构目录树用图形描绘出来,再给每个不同的级和同级不同的项设定一个仅有的标志,这样咱们就能经过级标志位与项标志位的逻辑组合来得到一个仅有的方位,那么在代码的编写中只需对这些标志位依照图形的流程进行切换、读和写便可。
具体办法如下:
首要咱们将菜单结构的图形描绘出来,再依据菜单的级数来界说一个结构体,比方菜单最大有5级,则这样界说
typedef struct
{
unsigned char f;//菜单地点级数
unsigned char s1;//菜单第1级下的子项号
unsigned char s2;//菜单第2级下的子项号
unsigned char s3;//菜单第3级下的子项号
unsigned char s4;//菜单第4级下的子项号
unsigned char s5;//菜单第5级下的子项号
}Menu_TypeDef;
Menu_TypeDefmenu;
再将这些变量的值标定在制作的菜单图形中,如下图所示:
即menu.f=1并且menu.s1=0表明榜首级榜首项;
即menu.f=2并且menu.s1=3表明第二级第四项;
依此类推;
所以,菜单的每一个方位都会有一个仅有的值与之对应,当菜单的选项由用户切换时,咱们只需求依据菜单结构图形的流程来修正这些变量,而当需求查询当时菜单指针选中哪一项时,则只需查询这些变量的值即可。
由于各级菜单的变量都是独立的,因而对菜单的结构没有约束,适用于规划恣意结构的菜单,假如当菜单级数较多,界说的菜单变量较多时,也没关系,由于咱们的菜单规划是先制作菜单结构图形,再依据图形来编写代码,实际上便是依据图形的描绘往代码里填值算了。
经实践证明,选用以上办法能彻底适用于一切恣意结构菜单规划,并且该办法的长处在于,有了图形的描绘,不只减化了代码编写的难度,并且还有利于代码保护,进步代码的可读性。
符件里是一个不规则结构的菜单测验程序,根据AVR单片机,经过按键来挑选,菜单的图形界面在PC机的超级终端上显现,欢迎广阔网友测验,并评论。