LCD12864 菜单部分编写

需要创建一个菜单的结构体,以便建立链表

typedef struct menu {
     //定义一个菜单
    uint8_t range_from,range_to; //当前显示的项开始及结束序号
    uint8_t itemCount;//项目总数
    uint8_t selected;//当前选择项
    char menuItems[SUBMENUS][17];//菜单项目
    struct menu *subMenus[SUBMENUS];//子菜单
    struct menu *parent;//上级菜单 ,如果是顶级则为null
    int (*func[SUBMENUS])(void);//选择相应项按确定键后执行的函数
    float funcValue[SUBMENUS];
    uint32_t menuId[SUBMENUS];
}Menu;

创建一些基本的函数

/*
 * 添加下级单项菜单函数
 * menu:        菜单指针
 * submenus:    下级单项菜单
 * index:       索引值
 * return:索引值 error:-1  
 */
int Menu_addItem(Menu *menu, Menu * subMenu, uint8_t index) {
   
    if (menu == NULL) {
   
        DEBUGOUT("menu is null");
        return -1;
    }
    
    if (index > menu->itemCount) {
   
        DEBUGOUT("index too big");
        return -2;
    }
   
    //menu的下级菜单索引值[i]为subMenu
    menu->subMenus[index] = subMenu; 
    menu->menuId[index+1] = (menu->menuId[0] << 4) | (index + 1);
    subMenu->menuId[0] = menu->menuId[index+1];
    //subMenu的上级菜单为menu
    subMenu->parent = menu;
    //printf("menu->id=%02x, submenu->id=%02x\r\n", menu->menuId[0], subMenu->menuId[0]);
    return index;
}

这个函数是进行下级菜单的插入,进行菜单的深度插入。
同时,将下级菜单的父级菜单绑定到当前菜单上,这样使用返回的时候,可以跳转到本机菜单。



char Menu_addFunc(Menu * menu, int(*fun)(void), uint8_t index) {
   
    if (menu == NULL) {
   
        DEBUGOUT("menu is null");
        return 0;
    }
    
    if (index > menu->itemCount) {
   
        DEBUGOUT("index is too big");
        return 0;
    }
    
    if (fun == NULL
  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: LCD12864多级菜单实现是通过显示上的不同菜单来实现用户与设备交互和操作的过程。具体实现方式如下: 1. 初始化LCD12864幕:首先需要初始化LCD12864幕,确保其能正常显示。 2. 设计菜单结构:根据实际需求,设计多级菜单的结构,包括主菜单和子菜单。主菜单是一级菜单,子菜单可以有多级,组成多级菜单。 3. 显示主菜单:将主菜单的选项显示在LCD12864幕上,使用幕上的光标选择相应的选项。 4. 用户选择选项:通过按键或触摸等输入设备,用户可以选择不同的菜单选项。 5. 显示子菜单:根据用户选择的菜单选项,在LCD12864幕上显示对应的子菜单选项。 6. 用户选择子菜单选项:用户可以通过光标或触摸幕等输入设备选择子菜单中的具体选项。 7. 执行操作:根据用户选择的子菜单选项,执行相应的操作,例如显示特定信息、设置参数、执行功能等。 8. 返回上级菜单:用户可以通过按返回键返回上一级菜单,或者通过选择特定的返回选项返回。 9. 循环操作:循环执行上述步骤,使用户可以在不同菜单之间切换和操作。 通过以上步骤,LCD12864多级菜单实现可以提供用户友好的界面,使用户能够方便地进行操作和配置设备。在实际应用中,还可以根据需要进行其他功能的拓展,例如增加菜单项、添加快捷操作等。 ### 回答2: LCD12864多级菜单的实现主要分为以下几个步骤: 1. 初始化LCD幕:将LCD幕模式设置为128x64点阵模式,并清空幕内容。 2. 定义菜单数据结构:根据实际需求定义菜单的结构体,包括菜单名称、菜单项数目、菜单项内容等信息。可以使用数组、链表等数据结构存储菜单数据。 3. 显示主菜单:根据菜单数据结构,显示主菜单菜单项。可以使用LCD幕的绘图函数将菜单项逐个显示出来,同时通过光标或其他标记方式来确定当前选中的菜单项。 4. 处理菜单项选择:通过按键、遥控器等输入方式来选择菜单项。根据不同的输入方式,可以监听对应的按键或遥控器指令,并根据当前选中的菜单项进行相应的操作。 5. 处理上下级菜单切换:当选择某个菜单项时,根据当前菜单项的类型(菜单项还是功能项)进行不同的处理。如果是菜单项,需要切换到下一级菜单,更新菜单数据结构,并重新显示菜单项。如果是功能项,执行对应的功能代码。 6. 返回上一级菜单:在下一级菜单中,可以通过返回按钮或其他指令返回上一级菜单。返回操作需要更新菜单数据结构,重新显示上一级菜单菜单项。 7. 退出菜单系统:当用户退出菜单系统时,清空LCD幕内容,并进行必要的资源释放。 通过以上步骤,我们可以实现LCD12864多级菜单的功能,实现用户友好的菜单操作界面,方便用户进行选择和操作。同时,根据具体需求,可以进行个性化的定制和扩展。 ### 回答3: LCD12864多级菜单实现的基本思路是利用LCD12864显示和控制器的特性,通过设置不同的菜单层级和相关操作进行菜单的切换和功能的实现。 首先,需要确定菜单的层级结构,可以分为一级菜单、二级菜单等。每一级菜单都有相应的菜单选项和功能操作。 接下来,需要定义菜单切换的条件和方式。通常可以使用按钮、旋钮等控制器来进行菜单项的选择和切换。根据控制器的信号,可以判断当前所处的菜单层级和菜单项,并显示在LCD12864上。 在菜单的实现过程中,需要编写相应的代码逻辑。可以通过判断当前所处的菜单层级和菜单项来执行相应的功能操作。例如,当选择某个菜单项后,可以进入下一级菜单或执行相应的功能操作,如打开某个功能模块、进行一些设置操作等。不同菜单层级和菜单项之间的切换和操作都需要根据具体需求进行编写。 最后,需要在LCD12864上显示当前的菜单和选项内容。可以使用适当的图形和文字来实现清晰易懂的显示效果。在显示的同时,还可以根据需要进行一些动态效果的增加,如闪烁、滚动等,以增强用户的交互体验。 综上所述,LCD12864多级菜单的实现涉及到层级结构的定义、菜单切换的控制、代码逻辑的编写LCD12864的显示设置等方面。只要根据具体需求和硬件特性进行相应的配置和编码工作,就可以实现一个功能完善的LCD12864多级菜单系统。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值