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。

理解这个之后,就可以写多级菜单啦,比起用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
如有更好的建议可以评论分享,如有不对欢迎指出。
stm32OLED多级菜单的更多相关文章
- 前端开发css实战:使用css制作网页中的多级菜单
前端开发css实战:使用css制作网页中的多级菜单 在日常工作中,大家都会遇到一些显示隐藏类菜单,比如页头导航.二维码显示隐藏.文本提示等等......而这些效果都是可以使用纯css实现的(而且非常简 ...
- MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...
- java 24 - 7 GUI之 创建多级菜单窗体
需求: 创建多级菜单 步骤: A:创建窗体对象(并设置属性和布局) B:创建菜单栏 C:创建菜单和子菜单 D:逐步添加菜单(子菜单添加到菜单中,菜单添加到菜单栏中) E:窗体中设置菜单栏(菜单栏并不是 ...
- 单片机C语言下LCD多级菜单的一种实现方法
摘要: 介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑.实用的程序模型. 关键词: 液晶显示屏; 多级菜单; 单片机; C 语言; LCD 中 ...
- zTree下拉菜单多级菜单多选实现
惯例,先上图: 这是在一个项目中,为了满足样式美观.多级菜单以及多选而将zTree插件更改过后的效果. 在实际的开发过程中,本来zTree也是可以满足需求的,但是zTree多选的话需要checkbox ...
- Jquery多级菜单插件Slimmenu使用说明
Jquery多级菜单插件Slimmenu使用说明 现在扁平化设计逐渐的成为了趋势,不管是pc web,还是移动互联网的应用开发,都在研究和设计Flat ui, 这里有一篇文章说明扁平化的设计的一些想法 ...
- python作业设计:多级菜单,并可依次进入各级子菜单
'''作业三:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典 ''' data = { "北京":{ "昌平":{ "沙河&qu ...
- Python练习----多级菜单
多级菜单要求: 1.三级菜单 2.可依次选择进入各子菜单 3.可以返回上一层 4.输入'q'可以退出 脚本: zone = { '北京' : { ' ...
- 制作多级菜单hide()与show() toggle()
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Python作业之多级菜单
作业之多级菜单 菜单实现要求: 1. 列出菜单选择供选择 2. 选择对应内容进入下一级菜单 3. 任何时候都可以选择退出程序或返回上一级菜单 具体代码如下: goods = {'华为':{'A系':{ ...
随机推荐
- vue 路由守卫是否携带token
//整个实例出来 配置路由守卫 const router = new Router({ //这里面是路由配置哈 }) router.beforeEach((to, from, next) => ...
- Gin 框架介绍与快速入门
Gin 框架介绍与快速入门 目录 Gin 框架介绍与快速入门 一.Gin框架介绍 1. 快速和轻量级 2. 路由和中间件 3. JSON解析 4. 支持插件 5. Gin相关文档 二.基本使用 1.安 ...
- C/C++ 反汇编:多维数组与指针
反汇编即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解.外挂技术.病毒分析.逆向工程.软件汉化等领域,学习和理解反汇编对软件调试.系统漏洞挖掘.内核原理及理解高级语言代码都有相当大的帮助, ...
- C++ Boost库 实现命令行解析
Boost库中默认自带了一个功能强大的命令行参数解析器,以往我都是自己实现参数解析的,今天偶尔发现这个好东西,就来总结一下参数解析的基本用法,该库需要引入program_options.hpp头文件, ...
- Spring声明式事务控制配置
xml配置(配置文件) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- 俄大神 lopatkin Windows 精简优化系统 - 工具软件
昨天有个网友邮件我,说是想找个Tiny7 Rev2的ISO操作系统文件,但是我找了下,以前的那些文件有些已经删除了,所以就在网上搜到了俄大神 lopatkin Windows 精简优化系统,特此放到网 ...
- 教你用JavaScript实现进度条
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个进度条.进度条数字自动增加,条状图片动画演示进度完成度.通过实战我们将学会函数fun ...
- [奶奶看了都会]ChatGPT接入企业微信成为聊天机器人
1.聊天效果 上次给大家讲了ChatGPT接入个人微信的方法,但是个人微信容易被封号.这次就教大家接入企业微信,不会再被封号哦~ 话不多说,直接看机器人的聊天效果.基本能实现ChatGPT的聊天效果了 ...
- 《AI驱动下的开发者新生态》-2024长沙.NET技术社区活动-诚邀大家报名
回顾 2019年初,在.NET中文社区及包括苏州.广州.深圳等地区社区等大力推动.在众多企业的大力支持下,长沙地区的开发者们发起成立了长沙.NET技术社区,并组织了<2019年长沙开发者技术大会 ...
- 基于OpenTelemetry实现Java微服务调用链跟踪
本文分享自华为云社区<基于OpenTelemetry实现Java微服务调用链跟踪>,作者: 可以交个朋友. 一 背景 随着业务的发展,所有的系统都会走向微服务化体系,微服务进行拆分后,服务 ...