STM32OLED呈现主界面菜单任务的编程思路以及模板

这篇具有很好参考价值的文章主要介绍了STM32OLED呈现主界面菜单任务的编程思路以及模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、效果展示(按键控制界面切换)

二、编程模板

1.头文件

2.库文件

三、编程思路

四、使用说明


一、效果展示(按键控制界面切换)

OLED三级界面效果展示

二、编程模板

1.头文件

#ifndef __INTERFACE_H
#define __INTERFACE_H
#include "stm32f10x.h"

//任务的状态位
#define RUN 1
#define STOP 0
//任务宏
#define Task1 Temp_Task
#define Task2 Light_Task
//界面穷举
typedef enum
{
    Main_Interface = 0x10, //主界面
    Menu_Interface = 0x20, //菜单界面
    Task_Interface = 0x30, //任务界面
}Interface;
//任务穷举
typedef enum
{
    Task1 = 0x10, //任务1显示界面
    Task2 = 0x20, //任务2显示界面
}Task;
typedef struct 
{
	uint8_t Interface;    //界面选择位
	uint8_t Task_Mark;    //任务选择位
  uint8_t Task;         //任务运行启停位
}Mark;

void point(Mark *Mark_Sign);
void Mark_config(Mark *Mark_Sign);
void interface_show(Mark *Mark_Sign);
void interface_switch(Mark *Mark_Sign);
void interface_menu(Mark *Mark_Sign);
void interface_main(void);
void interface_temp(void);
void interface_light(void);
#endif /*__INTERFACE_H*/

2.库文件

#include "interface.h"
#include "key.h"

void Mark_config(Mark *Mark_Sign)
{
	Mark_Sign->Interface = Main_Interface;	//界面选择位
	Mark_Sign->Task = Task1;				//任务选择位
	Mark_Sign->Task_Mark = STOP;			//任务运行启停位
}
//显示界面内容
void interface_show(Mark *Mark_Sign)
{
	switch(Mark_Sign->Interface )
	{
		case Main_Interface:
				interface_main();//显示主界面
			break;
		case Menu_Interface:
				interface_menu(Mark_Sign);//显示菜单界面
			break;
		case Task_Interface:
		{
			//显示任务界面
			if(Mark_Sign->Task  == Task1)
				interface_temp();//显示任务1界面
			else if(Mark_Sign->Task  == Task2)
				interface_light();//显示任务2界面
			break;
		}
	default:
			break;
	}
}
//控制界面和任务
void interface_switch(Mark *Mark_Sign)
{
	//界面的切换
	if(KEY_2_Scan()==1)
	{
		OLED_Clear();
		switch(Mark_Sign->Interface)
		{
			case Main_Interface:
				Mark_Sign->Interface  = Menu_Interface;
					break;
			case Menu_Interface:
			{
				Mark_Sign->Interface  = Task_Interface;
					break;
			}
			case Task_Interface: Mark_Sign ->Task_Mark = RUN; break;
			default: break;
		}
	}
	if(KEY_0_Scan()==1)
	{
		OLED_Clear();
		switch(Mark_Sign->Interface)
		{
			case Menu_Interface:
			{
				Mark_Sign->Interface  = Main_Interface;
				break;
			}
			case Task_Interface:
			{
				Mark_Sign->Task_Mark  = STOP;
				Mark_Sign->Interface = Menu_Interface;
				break;
			}
			default: break;
		}
	}
	//菜单界面的任务选择
	if(Mark_Sign->Interface  == Menu_Interface)
	{
		//向上选择
		if(KEY_1_Scan()==1)
		{
			OLED_Clear();
			switch(Mark_Sign->Task)
			{
				case Task1:  break;
				case Task2: Mark_Sign->Task = Task1;break;
				default: break;
			}
		}
		//向下选择
		if(KEY_3_Scan()==1)
		{
			OLED_Clear();
			switch(Mark_Sign->Task)
			{
				case Task1: Mark_Sign->Task = Task2; break;
				case Task2: break;
				default: break;
			}
		}
	}
}
//以下函数为OLED显示
//菜单索引
void point(Mark *Mark_Sign)
{
	if(Mark_Sign->Task==Task1)
		OLED_ShowString(90,16,"<-",16,1);//<-
	else if(Mark_Sign->Task==Task2)
		OLED_ShowString(90,32,"<-",16,1);//<-
}
//菜单界面
void interface_menu(Mark *Mark_Sign)
{
//显示内容可自行编辑
}
//主界面
void interface_main(void)
{
}
//温度界面
void interface_temp(void)
{
}
//亮度界面
void interface_light(void)
{
}

三、编程思路

1.先填充好每一个要显示的界面,确保界面显示没问题。

2.确保条件能触发,我这里选择的是4个按键控制。

3.先编写界面的横向切换,如下图所示。

stm32oled菜单,一些简单的模块分享,单片机,stm32,嵌入式硬件

 4.再变写菜单里纵向的任务选择,并搭配上索引。

四、使用说明

我的模板是仿照STM32标准库写的,所以使用前要先初始化

使用的时候把界面内容填充一下,任务宏改一下就可以了。文章来源地址https://www.toymoban.com/news/detail-604107.html

#include "stm32f10x_conf.h"

int main(void)
{
	Mark interface_mark;
	KEY_Init();	//初始化按键
	delay_init();//初始化延时函数
	OLED_Init(); //oled屏幕初始化
	OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
	Mark_config(&interface_mark);//记录位结构体初始化
	while(1)
	{
		interface_show(&interface_mark);
		interface_switch(&interface_mark);
	}
}

到了这里,关于STM32OLED呈现主界面菜单任务的编程思路以及模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于STM32的OLED多级菜单GUI实现(简化版智能手表)

             前言: 本文的 OLED多级菜单UI 为一个 综合性 的STM32 小项目 ,使用 多传感器 与 OLED显示屏 实现 智能终端 的效果。项目中的多级菜单UI使用了较为常见的 结构体索引法 去实现功能与功能之间的来回切换,搭配 DHT11,RTC,LED,KEY 等器件实现高度智能化一体化操作

    2024年02月03日
    浏览(38)
  • STM32 OLED 显示原理的讲解以及OLED显示汉字与图片的代码

    本文主要涉及OLED显示原理的讲解以及OLED显示汉字与图片的代码。 OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display,OELD) 。 OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板

    2024年02月04日
    浏览(37)
  • STM32 实现简单定时任务调度器,动态创建任务,两种思路实现流水灯

    代码实现和硬件没关系,所以并不限于STM32,Arduino 之类的其他地方也能用,只要有一个能获取时间的函数就行,或者说,只要有一个会随着时间自动增加的变量就行,时间单位无所谓,所以确实想的话,拿到电脑上也能用。后面会用跑马灯程序来说明定时任务的玩法,可以直

    2024年02月10日
    浏览(30)
  • STM32连接OV2640摄像头串口方式在PyQt5界面上展示视频界面 以及使用MQTT方式进行展示

    STM32连接OV2640 视频源接入到PyQt5界面中 作为AI模型的输入,视频流是非常重要的。在本文中,我们将介绍如何将STM32连接到OV2640摄像头,并将视频流接入到PyQt5界面中。 硬件连接 首先,我们需要将OV2640摄像头连接到STM32上。我们可以使用以下连接方式: OV2640 | STM32 ------|------

    2024年02月06日
    浏览(47)
  • STM32——OLED实验

    OLED,即有机发光二极管 OLED引脚说明 引脚说明: 1、CS:OLED片选信号(低电平有效) 2、WR:向OLED写入数据 3、RD:向OLED读取数据 4、D[7:0]:8位双向数据线,有8个引脚,每个引脚传一位数据 5、RST(RES):硬复位OLED(低电平有效) 6、DC:数据/命令标志(0,命令;1,数据) 驱动

    2024年01月16日
    浏览(25)
  • STM32——OLED(2)

    目录 一、OLED显示屏介绍 引脚说明: 二、OLED驱动 1. 基本认识 2. OLED 驱动原理 及过程 三、SSD1306工作时序 (8080时序) 1. 8080并口读/写过程 2. SSD1306工作时序 (8080时序) 四、屏幕显示 1. GRAM 补: 2. 画点原理 3. 显示字符 显示步骤: 具体操作:(使用的软件:PCtoLCD2002) 五、OLED基

    2024年02月19日
    浏览(29)
  • 【STM32】学习笔记(OLED)

    2024年02月10日
    浏览(26)
  • STM32之OLED显示

    一、模块介绍 1、常见的显示设备 LED、数码管、点阵、LCD屏(1602/12864)、OLED屏(消费电子) 2、OLED屏的概述 OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。因为具备 轻薄、省电等 特性,因此从2003 年开始,这种显示

    2024年01月17日
    浏览(33)
  • stm32+OLED显示数据

    理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名; 显示AHT20的温度和湿度; 上下或左右的滑动显示长字符。 OLED(Organic Light Emitting Display,中文名有机发光显示器)是指有机半导体材料和发光材料在电场驱动下,通过载流子注

    2024年02月02日
    浏览(25)
  • STM32外设系列—OLED

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! OLED是开发时常用的显示器件,这里介绍的是0.96寸的四针脚OLED,IIC控制。 供电电压在3V~5V,用3.3V即可。 I2C通信接口由从地址位DC、I2C总线数据信号SDA(输出SDAOUT/D2输出,SD

    2024年02月13日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包