ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

stm32OLED多级菜单

2022-05-08 02:01:21  阅读:339  来源: 互联网

标签:index 菜单 menu 多级 char OLED func stm32OLED


今天实现了OLED多级菜单的显示。我用的是stm32f103ve,和四脚的OLED屏幕,用了三个按键。
话不多说,直接上代码。

点击查看代码
//先定义按键功能结构体
typedef struct 
{
	char current_menu;
	char up_menu;
	char down_menu;
	char Enter_menu;
	void (* operate)();
	
}Menu_Button;

//菜单
Menu_Button const table[9]= 
{
	{0,0,1,3,(*Menu1)},//1
	{1,0,2,5,(*Menu2)},
	{2,1,2,7,(*Menu3)},
	
	{3,0,4,8,(*Menu4)},//1.1
	{4,3,4,4,(*Menu5)},
	
	{5,1,6,5,(*Menu4)},//1.2
	{6,5,6,6,(*Menu5)},
	
	{7,2,7,7,(*Show2)},//1.3
	
	{8,3,8,8,(*Fun1)}//1.1.1
};

先解释一下意思: {0,x,y,z,(*函数名) 对于{0,0,1,3,(*Menu1)},//1,它的意思是,第一层菜单的第一条,第一个0,表示的数组的第0位,第二个0,根据结构体,表示上一级没有菜单,1,表示下一级是显示的是数组第1位的内容,也就是{1,0,2,5,(*Menu2)},,3表示进入,进入数组下标为3的内容,也就是{3,0,4,8,(*Menu4)},//1.1。 ![](https://www.icode9.com/i/l/?n=22&i=blog/2820930/202205/2820930-20220508012025489-1938749503.png) 理解这个之后,就可以写多级菜单啦,比起用if……else,switch……case简洁方便多啦。
点击查看代码

//按键处理函数
void Key_pro()
{
	static char flag = 1;
	if(flag &&(keyup == 1 || keydown == 1 || keyenter == 1 || keyenter == 0 ))
	{
		flag = 0;
		if(keyup == 1)
		{
			func_index = table[func_index].up_menu;
			OLED_Clear();
			return;
		}
		if(keydown == 1)
		{
			func_index = table[func_index].down_menu;
			OLED_Clear();
			return;
		}
		if(keyenter == 0)
		{
			func_index = table[func_index].Enter_menu;
			OLED_Clear();
			return;
		}
	}
	else if(keyup == 0 && keydown == 0)
	{
		flag = 1;
	}


}
这里面的按键,开发板的按键是默认按下是高电平,另一个自己拓展的keyenter是接地的,所以按下是低电平。 里面的一些函数就是自己使用OLED显示的内容和自己写的功能函数啦,这里就不给出啦。 [链接:https://pan.baidu.com/s/1SmTWKV1B148Bjro8HUBqaA ]() 提取码:lxt6 如有更好的建议可以评论分享,如有不对欢迎指出。

标签:index,菜单,menu,多级,char,OLED,func,stm32OLED
来源: https://www.cnblogs.com/loremmoqi/p/16244690.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有