水个OLED菜单

[复制链接]
查看1484 | 回复11 | 2023-10-15 11:15:06 | 显示全部楼层 |阅读模式
本帖最后由 lsrly 于 2023-10-15 11:16 编辑

1,先定义一个结构体,定义菜单相关项

typedef struct
{
    uint8_t Cur_Index;                           // 当前索引项
    uint8_t previous;                            // 上一页
    uint8_t next;                                // 下一页
    uint8_t enter;                               // 确认
    uint8_t back;                                // 返回
    void (*current_operation)(uint8_t, uint8_t); // 当前索引执行的函数(界面)
} Main_Menu;


2.定义相关变量

static uint8_t func_index = 0; // 当前页面索引值
static uint8_t last_index = 0; // 上一个界面索引值
static void (*current_operation_func)(uint8_t, uint8_t);



3.写入表中

// 菜单索引表,{当前界面的索引值,对应previous的索引值,对应next的索引值,对应enter的索引值,对应back的索引值,要执行的函数}
Main_Menu table[] = {
    // 设置菜单
    {0, 0, 0, 0, 0, (*test)}, // 设置菜单
};


4.写一个刷新函数,一直检测按键

void GUI_Refresh(void)
{
    keyvalue = tm1650_getkey();

    if (keyvalue == 255 || keyvalue == 0)
    {

        keyflag = 0;
    }
   
        if (keyvalue > 0 && keyvalue < 255 && keyflag == 0)
        {
            last_index = func_index; // 更新上一界面索引值
            if (keyvalue == 41 && keyflag == 0)
            { // 向上键
                func_index = table[func_index].previous;
                keyflag = 1; // 锁住按键,让按一次只能运行一次
                //};  // 更新索引值
            }

            func_index = func_index;
        }
    current_operation_func = table[func_index].current_operation;
    (*current_operation_func)(func_index, keyvalue);
    vTaskDelay(100 / portTICK_RATE_MS);
}



5.定义要显示的函数

void test(uint8_t, uint8_t)
{
    OLED_ShowNum(0, 0, 2023, 4, 16);
    OLED_ShowChar(32, 0, ':', 16);
    OLED_ShowNum(40, 0, 10, 2, 16);
    OLED_ShowChar(56, 0, ':', 16);
    OLED_ShowNum(64, 0, 15, 2, 16);
    OLED_ShowChar(80, 0, ' ', 16);

    OLED_ShowNum(85, 0, 10, 2, 16);
    OLED_ShowChar(101, 0, ':', 16);
    OLED_ShowNum(109, 0, miao, 2, 16);

}








好好学习,努力挣钱,专心
回复

使用道具 举报

bzhou830 | 2023-10-15 12:54:39 | 显示全部楼层
学习打卡
选择去发光,而不是被照亮
回复

使用道具 举报

iiv | 2023-10-15 21:23:51 | 显示全部楼层
很棒,点赞
回复

使用道具 举报

LV36 | 2023-10-16 15:44:04 | 显示全部楼层
学习
回复

使用道具 举报

ckdsx.cn | 2023-10-17 08:18:32 | 显示全部楼层
不错,但是还是直接能运行的代码更香!
回复 支持 反对

使用道具 举报

hu504011383 | 2023-11-10 13:10:15 | 显示全部楼层
菜单用switch语句更舒服吧
回复 支持 反对

使用道具 举报

总是忘记初始化 | 2023-11-11 19:34:06 | 显示全部楼层
学习一下
回复

使用道具 举报

干簧管 | 2023-11-15 12:04:21 | 显示全部楼层
顶顶
回复

使用道具 举报

lsrly | 2023-11-16 10:53:05 | 显示全部楼层
hu504011383 发表于 2023-11-10 13:10
菜单用switch语句更舒服吧

用switch是舒服,可是不知道怎么识别字符串呀!
好好学习,努力挣钱,专心
回复 支持 反对

使用道具 举报

san | 2024-1-12 23:27:15 | 显示全部楼层
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则