简易oled多级菜单实现

这篇具有很好参考价值的文章主要介绍了简易oled多级菜单实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

 

最近在学习如何实现oled多级菜单时,查看了大多数博主发的文章,大概似懂的文章内容可让我好一阵思考,于是我觉得应该有一篇更加简单易懂的文章能轻易上手;我们实现项目时一定先要准备以下知识点:1. 结构体 2.结构体数组 3.函数指针 (如果还有没有这方面的C语言知识,可以阅读相关博客学习,因为只有我们了解了这些知识后,才不会望而却步!)


一、定义一个结构体

定义一个结构体,结构体里面应当有你想要怎样操作界面的变量等,一般包括:1.当前索引号 ,2.下一个,3.确定,4.当前执行函数的函数指针 ;我这里使用两个按键,一个表切换下一个,一个表确定。

//定义一个结构体包含你想操作内容
typedef struct
{
	int current;
	int next;
	int enter;
	void (*current_operation)(void);
	
}Menu;

二、定义一个结构体数组

Menu table[13] = 
{
	//开始菜单
	{0,0,1,start},
	//1级菜单
	{1,2,4,one_meue1},
	{2,3,7,one_meue2},	
	{3,1,0,back1},	
	//2.1菜单
	{4,5,0,two_meue1},
	{5,6,0,two_meue2},	
	{6,4,1,back2},	
	//2.2菜单
	{7,8,0,two_meue11},
	{8,9,0,two_meue22},	
	{9,7,1,back22},	

};

   此次项目应该难点就在理解这个结构体数组以及如何填写参数的内容,首先我们先单独拿出一个数组元素拿来探讨,用一张图片对应他们的关系。

简易oled多级菜单实现

 

   上图很直观的表明了结构体数组里面一个元素对应的内容,接下来我们就探讨一下,结构体数组里面一个元素对应各个参数值的内容有何意义和它之间有什么联系?此时应当结合下面这段按键操作来一起解释一下。

void Menu_key_set(void)
{
	static int func_index = 0;
	void (*current_operation_index)(void);

	
	int Get_key_next = KEY0;
	int Get_key_enter = KEY1;
	
	if(Get_key_next == 0)//判断是否按下 下一个选项
	{
		func_index = table[func_index].next;
		OLED_Clear(); 
	}
	if(Get_key_enter == 0)//判断是否按下 确定选项
	{
		func_index = table[func_index].enter;
		OLED_Clear(); 
	}
	
	current_operation_index = table[func_index].current_operation;
	(*current_operation_index)();	
	
}

    其中第一0表示当前索引号,也就是可以访问table[0]里面的内容,第二0表示按下 下一个按键是跳转到当前界面下一个选项(因为我这里是开始菜单,即当前界面没有下一个选项,所以为0),第三1表示如果按下确定按钮后,当索引号就换成了1,就可以访问数组[1]的内容,第四(*start)表示执行当前索引值下的显示函数。

    理解上面的内容的话,我相信小伙伴们可以很简单知道填写下一个数组元素里面的内容,与增添更多级菜单,用一张图片简单表现它们之间的关系更加明了。

简易oled多级菜单实现


 

总结

   总的来说,实现这样一个简易的多级菜单,应该分有四个部分,定义操作结构体,定义菜单结构体数组,实现显示函数,按键操作显示函数。以上是我学习多级菜单的一些简单的看法,如果有什么错误,请小伙伴们及时指正!文章来源地址https://www.toymoban.com/news/detail-449132.html

到了这里,关于简易oled多级菜单实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32简易多级菜单(数组查表法)

    单片机开发中,有时会用到屏幕来显示内容,当需要逐级显示内容时,就需要使用多级菜单的形式了。 多级菜单的实现,大体分为两种设计思路: 通过双向链表实现 通过数组查表实现 总体思路都是把菜单的各个界面联系起来,可以从上级菜单跳到下级菜单,也可从下级菜单

    2024年02月02日
    浏览(62)
  • STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)

    本次的水墨屏幕项目需要做一个多级菜单的显示,所以写出来一起学习,本篇文章不单单适合于水墨屏,像0.96OLED屏幕也适用,区别就是修改显示函数。 多级菜单的实现,一般有两种实现的方法 1.通过双向链表实现 2.通过数组查表实现 两种方法的思路都是把所有的界面连接在

    2024年04月10日
    浏览(45)
  • 如何查询多级菜单(采用递归的方法)

    应用场景 1.京东 京东的页面就是这么显示的在家用电器下面有电视.空调.洗衣机然后再电视下面又有全面屏电视.教育电视等等 2.我们的后端管理系统 我们后端在页面上显示的很多也是通过层级目录的显示出来。 如何实现 我们这里parent_id为0的为我们的一级菜单 注意我们需要

    2024年02月14日
    浏览(45)
  • java实现多级菜单

    2024年02月14日
    浏览(32)
  • QT实现多级下拉列表导航菜单,可折叠(QTreewidget实现)

    目录 创建多级列表 在ui中拖入一个QTreewidget控件。 双击该控件,打开编辑树窗口部件。​编辑​编辑 进行列表控件设置: 在项目前添加图标: 效果: QT实现多级下拉列表,可折叠 做项目的时候需要实现一个可折叠的多级下拉列表,用QTreewidget就可以实现,而且直接在ui文件

    2024年02月16日
    浏览(52)
  • 【Android】【BUG】BRVAH3.x实现多级菜单中子菜单无法点击的问题

    使用BRVAH进行多级菜单效果实现时,子菜单的点击事件怎么也不行,根本无法获取点击事件。 子项的xml布局 修改为 这就解决了,这谁顶得住啊…

    2024年02月13日
    浏览(37)
  • el-menu使用递归组件实现多级菜单组件

    vue3+element plus版:点击此处 创建外层菜单 AsideMenu.vue 组件和子菜单项 AsideSubMenu.vue 组件,在 AsideSubMenu 中进行递归操作。 AsideMenu.vue文件内容如下: 判断高亮状态的activeMenu方法中的判断matchPath属性可以让多个路由不同的页面匹配同一个菜单高亮状态,因为菜单高亮状态是根据

    2023年04月12日
    浏览(43)
  • stm32实现0.96oled图片显示,菜单功能

    本期内容,我们将学习0.96寸oled的进阶使用,展示图片,实现菜单切换等功能,关于oled的基础内容,这里我不做介绍,大家可以学习 : 夜深人静学32系列17——OLED ,里面讲述了oled的基本知识并实现了一个简单页面的编写。 这个菜单一共有三个等级, 一级菜单:原神启动界

    2024年02月03日
    浏览(126)
  • stm32-OLED屏+RTC实现简易实时时钟(下篇)

    一、RTC简介 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可 提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒 后,R

    2024年01月18日
    浏览(46)
  • stm32-OLED屏+RTC实现简易实时时钟(上篇)

    oled屏选择ssd1306,使用RTC实现简易实时时钟 1、MCU接口选择 SSD1306单片机接口由8个数据引脚和5个控制引脚组成。通过BS[2:0]引脚上的硬件选择可以设置不同的MCU模式    通过控制BS[2:0]引脚可以设置MCU与OLED屏的通信方式。因为我使用的是正点原子的开发板,所以我用了适配的接

    2024年01月17日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包