发帖
11 0 1

水个OLED菜单

lsrly
论坛元老

15

主题

471

回帖

8526

积分

论坛元老

积分
8526
技术杂谈 2007 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);

}








──── 0人觉得很赞 ────

使用道具 举报

2023-10-15 12:54:39
学习打卡
2023-10-15 21:23:51
很棒,点赞
2023-10-16 15:44:04
学习
2023-10-17 08:18:32
不错,但是还是直接能运行的代码更香!
2023-11-10 13:10:15
菜单用switch语句更舒服吧
学习一下
2023-11-15 12:04:21
顶顶
2023-11-16 10:53:05
hu504011383 发表于 2023-11-10 13:10
菜单用switch语句更舒服吧

用switch是舒服,可是不知道怎么识别字符串呀!
2024-1-12 23:27:15
学习
您需要登录后才可以回帖 立即登录
高级模式
12下一页
统计信息
  • 会员数: 28708 个
  • 话题数: 40943 篇