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系':{ ...
随机推荐
- 让你彻底理解Typescript中静态成员和抽象方法
1.Typescript中static详解 静态成员:在类中通过 static 修饰的属性或者方法 那么就是静态的属性静态方法 也称之为:静态成员(静态成员包含静态属性和静态方法) 静态成员在使用的时 ...
- sass中使用穿透属性(deep)修改第三方组件样似
<el-form-item> <el-button class="save-btn" type="primary" @click=" ...
- 【JS 逆向百例】猿人学系列 web 比赛第五题:js 混淆 - 乱码增强,详细剖析
逆向目标 猿人学 - 反混淆刷题平台 Web 第五题:js 混淆,乱码增强 目标:抓取全部 5 页直播间热度,计算前 5 名直播间热度的加和 主页:https://match.yuanrenxue.c ...
- NextJs 与 Tailwind 入门开发笔记
前言 距离上次更新已经过去好久了,之前我在 StarBlog 博客2023年底更新一览的文章里说要使用 Next.js 来重构博客前端,最近也确实用 next.js 做了两个小项目,一个是单点认证项目 ...
- 从零开始配置vim(30)——DAP的其他配置
很抱歉这么久才来更新这一系列,主要是来新公司还在试用期,我希望在试用期干出点事来,所以摸鱼的时间就少了.加上前面自己阳了休息了一段时间.在想起来更新就过去一个多月了.废话不多说了,让我们开始进入正题. ...
- TienChin 渠道管理-配置字典常量
在字典管理当中添加渠道状态 channel_status:渠道状态 分别为: 正常,键值为1,回显样式为 success 禁用,键值为0,回显样式为 info !> 有个注意点:Vue3 当中 ...
- AspnetCore接入Nacos配置中心
一.什么是nacos Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现.配置管理 ...
- 【1】Anaconda安装超简洁教程,配置环境、创建虚拟环境、添加镜像源
相关文章: [1]Anaconda安装超简洁教程,瞬间学会! [2]Anaconda下:ipython文件的打开方式,Jupyter Notebook中运行.py文件,快速打开ipython文件的方法 ...
- C/C++ 获取自身IP与域名片段
判断大端序小端序: 通常情况下,数值在内存中存储的方式有两种,一种是大尾字节序,另一种是小尾,比如0x01020304这样一个数值,如果用大尾方式存储,其存储方式为01 02 03 04而用小尾方式存 ...
- Softmax偏导及BP过程的推导
Softmax求导 其实BP过程在pytorch中可以自动进行,这里进行推导只是强迫症 A Apart证明softmax求导和softmax的BP过程 本来像手打公式的,想想还是算了,引用部分给出la ...