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中Vue.set()和this.$forceUpdate()的使用
1.给对象添加一个key值 成功的 <template> <div> <p>{{userInfo.name}}</p> <p>{{userI ...
- nodejs的npm改为国内源和参数
npm源改为国内 此方法不需要安装cnpm也可以使用淘宝镜像,提高国内访问速度 由于 Node 的官方模块仓库网速太慢,模块仓库需要切换到阿里的源. npm config set registry h ...
- BigDecimal详解和精度问题
JavaGuide :「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识. BigDecimal 是大厂 Java 面试常问的一个知识点. <阿里巴巴 Java 开发 ...
- 手把手带你上手swagger3
配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox& ...
- TfrxReport.Clear。尽量慎用。
for MyXuHaoKey in MyXuHaoJianRongSanJieKouDataDicApi.KeySortList do begin //标记下打印编号,吸入淘打的客户 MyTradeA ...
- 如何使用graalvm为带有反射功能的java代码生成native image
译自Configure Native Image with the Tracing Agent graal官方文档 , 以下所有命令需要在linux环境下操作,graalvm也支持windows. 要 ...
- ABC 313
前三题过水. D题 与 5+*的题解 注意:交互题每输出一次,就要 fflush(stdout); 一次 E 其实不是太难,但是赛时一直在搓 D 还没搓出来 首先如果有两个大于 \(1\) 的数相邻, ...
- NC16671 [NOIP2006]金明的预算方案
题目链接 题目 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算, ...
- CentOS7中搭建GitLab踩坑实录
今晚闲来无事,尝试了下自己搭建一台git服务器,很多人可能不明白平时自己随手就可以提交代码,为什么还要自己搭建服务器呢?首先你有没有考虑过你是怎么能把代码提交上去的?如果公司突然有一天需要你来负责搭建 ...
- Linux进程通信 | 信号
一.什么是信号? 信号就像是一个突然的电话铃声,它会打断正在进行的程序并引起其注意. 在Linux系统中,信号是一种软件中断,它通常是异步发生的,可以用来通知进程某个事件已经发生..每个信号都有一个唯 ...