关于#OLED#的问题,如何解决?(标签-stm32|关键词-m3)

初次学 stm32 搞到OLED模块 有点不懂 想问下这个代码的作用是啥 和原理

img


求解答 谢谢

该回答引用ChatGPT4与博主@晓码自在合作编写:

这个代码是设置 OLED 显示屏的光标位置。

OLED 显示屏通常由屏幕的 x 轴和 y 轴坐标来标识光标位置。该函数 SetCursor() 就是用于设置光标在屏幕的 x 和 y 轴坐标。

代码原理是:

  1. 写入命令 0xBO,待机开启页选址控制。这是打开 Y 轴坐标寻址的命令。
  2. 写入命令 0x10 和 X 轴高 4 位数据。因为 X 轴坐标是 8 位,分高 4 位和低 4 位写入。
  3. 写入命令 0x00 和 X 轴低 4 位数据。写入 X 轴低 4 位,完成 X 轴坐标设定。
  4. 这样通过向 OLED 写入不同的 0xBO、高 4 位和低 4 位数据,我们就可以控制光标移动到屏幕的任意位置。

举例来说,如果我们要把光标移动到屏幕的 (2, 3) 位置,就需要:

c
SetCursor(3, 2);  // y = 3, x = 2
调用:
c
OLED WriteCommand(0xBO  3);  // Y = 3
OLED WriteCommand(0x10  0);   // X 高4位 = 0 
OLED WriteCommand(0x00  2);   // X 低4位 = 2

所以,这个函数的作用就是通过发送不同的命令和数据到 OLED 模块,来控制光标在屏幕的位置,实现定位功能。

希望这个说明能帮助你理解设置 OLED 光标位置的原理。OLED 显示屏的许多功能都是 built 在发送不同的控制命令来实现的,掌握命令表和数据传送过程是学习 OLED 的基础。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:关于OLED以及矩阵键盘接STM32的接线问题 也许有你想要的答案,你可以看看
  • 除此之外, 这篇博客: 基于STM32实现OLED屏显(显示数据、温湿度、滚动长字符)中的 (三)代码修改 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1.字模的存储代码
    将前文中复制的信息,添加到如下的位置
    在这里插入图片描述
    2.显示代码
    在test.c文件中,将此位置的代码更改为如下的代码,注意显示出的内容根据自己的需要进行替换

    void TEST_MainPage(void)
    {	
    	GUI_ShowString(28,0,"Uaena.&",16,1);
    	GUI_ShowString(12,16,"知恩老婆",16,1);
    	GUI_ShowString(4,48,"631907060113",16,1);
    	delay_ms(1500);		
    	delay_ms(1500);
    }
    

    在这里插入图片描述
    3.主函数
    在main.c文件中,修改主函数的代码

    int main(void)
    {	
    	delay_init();	    	       //延时函数初始化	  
    	OLED_Init();			         //初始化OLED  
    	OLED_Clear(0);             //清屏(全黑)
    	while(1) 
    	{	
    		TEST_MainPage();         //界面显示
    	}
    }
    

    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^