STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)

这篇具有很好参考价值的文章主要介绍了STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目背景

本次的水墨屏幕项目需要做一个多级菜单的显示,所以写出来一起学习,本篇文章不单单适合于水墨屏,像0.96OLED屏幕也适用,区别就是修改显示函数。
stm32多级菜单数组查表,STM32,水墨屏天气时钟,单片机,stm32,嵌入式硬件,单片机

设计思路

多级菜单的实现,一般有两种实现的方法
1.通过双向链表实现
2.通过数组查表实现
两种方法的思路都是把所有的界面连接在同一个连接中,上级菜单跳转下级菜单。
数组查表比较简单,此次的项目就用数组查表的方法。

实现代码

1.确定好菜单的逻辑,也就是菜单的显示关系。
stm32多级菜单数组查表,STM32,水墨屏天气时钟,单片机,stm32,嵌入式硬件,单片机

在开机的时候,显示开机界面,然后按下任意按键,就跳转到菜单显示,可以通过上按键,下按键和确认按键选择相对应的显示。
2.代码逻辑实现。
首先定义一个结构体,分别为上按键,下按键和确认按键,当前页面索引号,当前页面索引号执行的函数。

typedef struct
{
	uchar current;//当前页面索引号
	uchar up;     //向上翻索引号
	uchar down;   //向下翻索引号
	uchar enter;  //确认索引号
	void (*current_operation)();  //当前页面索引号执行的函数,指针函数
} key_table;

数组方法实现多级菜单的原理就是把每一个显示界面编上一个号码,称为当前页面索引号。比如开机显示界面为0,菜单显示为1。每当选择到一个号码,就去运行前页面索引号函数,也就是显示相对应的界面。例如下面的数组key_table table【】,当选择到0编码,就去运行(*fun_0)这个指针函数,把要显示的开机界面写在(*fun_0)就可以。

key_table table[30]=
{
	 //第0层
	{0,1,1,1,(*fun_0)},//开机界面
	
    //第1层
	{1,2,2, 2,(*fun_a1)},//主菜单界面
	{2,6,3, 7,(*fun_b1)},//显示WIFI下划线
	{3,2,4, 8,(*fun_c1)},//显示万年历下划线
	{4,3,5, 9,(*fun_d1)},//显示时钟下划线
	{5,4,6, 10,(*fun_e1)},//显示小说下划线
	{6,5,2, 0,(*fun_f1)},//显示返回下划线
		
    //第2层
	{7,7,7,1,(*fun_a21)},	//连接WIFI
	{8,8,8,1,(*fun_b21)},	//显示时间
	{9,9,9,1,(*fun_c21)},	//倒计时
							
};
//开机界面
void fun_0()
{
    u2_printf("hello world\r\n");
	Refresh();//刷新屏幕
    EPD_ShowString(125,55,"Hello",24,BLACK);	
	EPD_PartDisplay(Image_BW);
	delay_ms(20);
}

那么是怎么实现上级菜单跳转到下级菜单的尼,比如初始显示欢迎界面的状态下,按下不同按键后,通过数组查表,确定要跳转到的索引号,然后根据索引号,通过函数指针执行索引号对应的显示函数,即实现了一次页面切换。然后,就是在新的页面状态,收到下一个按钮指令,再切换到下一个显示状态。
我们看下key_table table[30]数组里面的元素。

	 //第0层
	{0,1,1,1,(*fun_0)},//开机界面
	 //第1层
	{1,2,2, 2,(*fun_a1)},//主菜单界面
	{2,6,3, 7,(*fun_b1)},//显示WIFI下划线
	{3,2,4, 8,(*fun_c1)},//显示万年历下划线
	{4,3,5, 9,(*fun_d1)},//显示时钟下划线
	{5,4,6, 10,(*fun_e1)},//显示小说下划线
	{6,5,2, 0,(*fun_f1)},//显示返回下划线
	//第2层
	{7,7,7,1,(*fun_a21)},	//连接WIFI
	{8,8,8,1,(*fun_b21)},	//显示时间
	{9,9,9,1,(*fun_c21)},	//倒计时

元素是一开始我们定义好的结构体,依次为当前页面索引号,上按键,下按键,确认按键,执行的函数。当我们在索引号1的主菜单界面按上按键,下按键,确认按键,都会跳转到索引号2的显示WIFI下划线界面,然后按上按键,就去跳转到索引号6的显示返回下划线界面,或者按下按键跳转到索引号3的显示WIFI下划线界面,按确认键就跳转到第2层的连接WIFI。在索引号7的连接WIFI界面中,按上按键和下按键都是跳到当前索引号7,从而显示按键按下不跳其他界面的功能,只有按确认按键才会跳到当前索引号1的主菜单界面。
通过分析,不难发现,这些数组在空间上的关系:

stm32多级菜单数组查表,STM32,水墨屏天气时钟,单片机,stm32,嵌入式硬件,单片机

菜单界面的切换。比如初始显示欢迎界面的状态下,按下不同按键后,通过数组查表,确定要跳转到的索引号,然后根据索引号,通过函数指针执行索引号对应的显示函数,即实现了一次页面切换。
然后,就是在新的页面状态,收到下一个按钮指令,再切换到下一个显示状态。

效果可以看看视频

多级菜单演示

代码链接:https://pan.baidu.com/s/1XddINn6Qos5-4r5XtIuwXQ?pwd=z754
提取码:z754文章来源地址https://www.toymoban.com/news/detail-847058.html

到了这里,关于STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32使用ESP8266模块AT指令连接心知天气API获取天气信息

    由于之前使用STM32单片机来开发一些物联网的小项目,接触到了WIFI模块ESP8266,所以写下来记录一下。 本文主要介绍的是STM32通过发送AT指令集来控制ESP8266 WIFI模块连接WiFi并与心知天气API建立TCP连接获取天气信息。 ESP8266我使用的是正点原子的ATK-ESP8266,已经提前烧录好AT指令集

    2023年04月08日
    浏览(58)
  • 物联网小项目——墨水屏时钟(STM32+ESP8266实现)

    无意间在网上看到开源的使用墨水屏打造的桌面时钟,当个桌面小摆件可谓是十分优雅,于是就萌生出了自己DIY一个的想法。这个墨水屏时钟具有以下特点 时间日期的显示和自动校准 自动获取实时天气 半夜自动进入休眠 支持微信智能配网 目前已经实现软件功能,但是硬件

    2024年02月09日
    浏览(46)
  • 从零开始制作一个基于STM32和ESP8266-01S的智能时钟(3)ESP8266-01S模块(上)

    提示:这里可以添加本文要记录的大概内容:之前在忙着,现在继续补充完整,然后这次的ESP-01S的典型应用图是没有连接RST引脚的,但是我的项目是用到了RST引脚的,所以需要使用跳线连接一下RST引脚。 本项目需要基础的stm32单片机知识,这里我推荐 链接:https://www.bilibil

    2024年02月03日
    浏览(43)
  • ESP8266 模块简易驱动程序 -- 基于 STM32F103 及原子云固件实现云功能

    本简易驱动程序是基于 正点原子 的ESP8266模块,主要用于实现连接 原子云 的功能。MCU选用的是 STM32F103ZET6 注:原子云固件添加了 AT+ATKCLDSTA 和 AT+ATKCLDCLS 两条指令 用于连接正点原子自家的原子云平台,原厂的AT指令不受任何影响 本程序主要实现了如下功能: 设定工作模式 连

    2023年04月23日
    浏览(40)
  • 【ESP8266物联网天气时钟】解决太极创客物联网天气时钟二三页出现NA的问题——新版和风天气API以及gzip数据解压

      前几天想要找一个开源项目做一下,然后一番搜索后找到了太极创客在B站发布的一个物联网小项目制作:“物联网天气时钟粉丝数显示oled小电视”。   这个项目主要用到的资源就是一块 ESP01S 和一块四脚的0.96寸 OLED 屏幕,正好手头也有,就打算复刻下这个项目,原项

    2024年02月05日
    浏览(35)
  • esp32+lvgl--桌面多功能天气时钟

    功能: 1、通过网络获取日期、时间以及当地天气温度 2、有模拟时钟、背景切换、语言切换等功能 esp32+lvgl桌面时钟天气 一、准备材料 esp32开发板、1.28寸圆屏幕(非触摸)。 二、软件开发过程 1、获取网络天气和时间。 esp32自带2.4gwifi功能。使用wifi功能需包含头文件WiFi.h,

    2024年02月02日
    浏览(38)
  • STM32_OLED多级菜单

    程序实现 多级菜单显示实则是多个界面的跳转,这个版本更加适合初学者。我使用了两个按键,一个用来选择下一项,另一个用来确定选项。所以我们暂时叫他next键和enter键。先定义一个结构体,结构体里面有四个变量,分别代表当前索引号,next键,enter键和当前执行函数。

    2024年02月11日
    浏览(37)
  • STM32+OLED屏多级菜单显示(三)

            前面两章实现了OLED屏幕显示的基本功能,这一章就做一个多级菜单显示功能         单片机选择STM32F103C8T6最小系统板,OLED屏选择0.96寸OLED显示器,除了单片机和OLED屏之外,还需要三个按键(下一位键、确认键和返回键),当然一个按键也可以(单击、双击和长击

    2024年02月03日
    浏览(29)
  • STM32+esp8266,让你的STM32开发板连接网络-----esp8266

    分享一下,STM32开发板连接网络的第一种方法:连接esp8266。 esp8266与STM32利用串口通信连接,esp8266连接网络,把收到的数据通过串口的方式传输给STM32,之后STM32接收到消息做出对应的反应。 使用到的开发板如图:esp-12和正点原子stm32f103zet6. 首先,我们先掌握一下什么事串口通

    2024年02月02日
    浏览(38)
  • 毕业分享 STM32智能桌面天气预报时钟系统

    文章目录 0 前言 1 设计内容 2 软件设计 3 关键代码 4 最后 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及

    2024年02月06日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包