打印
[其他ST产品]

基于STM32的OLED显示屏显示数据

[复制链接]
460|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、SPI简介
1、什么是SPI

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是由 Motorola 公司提出的一种高速的,全双工,同步的通信总线,被广泛地使用在 ADC、LCD 等设备与 MCU 间要求通讯速率较高的场合。SPI总线系统可直接与各个厂家生产的多种标准外围器件连接,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线C/S(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。

使用特权

评论回复
评论
鱿鱼丝 2023-3-27 10:27 回复TA
———————————————— 版权声明:本文为CSDN博主「一只白虫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_58807717/article/details/128680861 
沙发
鱿鱼丝|  楼主 | 2023-3-27 10:27 | 只看该作者
2、SPI优缺点

优点:

支持全双工通信
通信简单
数据传输速率块

缺点:

没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据
可靠性上有一定的缺陷。

使用特权

评论回复
板凳
鱿鱼丝|  楼主 | 2023-3-27 10:27 | 只看该作者
二、OLED显示数据
1、取字模

利用取字模网站:

点阵生成软件|字模提取(支持中文) - LED、OLED、LCD、单片机在线取模、中文点阵取模软件、在线显示屏取模 - Arduino|STM32|STM8 - 文字或图片点阵生成软件


使用特权

评论回复
地板
鱿鱼丝|  楼主 | 2023-3-27 10:28 | 只看该作者
取得字模
 
"雷",0x00, 0x00, 0x3f, 0xf8, 0x01, 0x00, 0x7f, 0xfe, 0x41, 0x02, 0x9d, 0x74, 0x01, 0x00, 0x1d, 0x70, 0x00, 0x00, 0x3f, 0xf8, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8,
"岩",0x01, 0x00, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x04, 0x00, 0x04, 0x00, 0x0f, 0xf8, 0x18, 0x08, 0x28, 0x08, 0xc8, 0x08, 0x0f, 0xf8, 0x08, 0x08

使用特权

评论回复
5
鱿鱼丝|  楼主 | 2023-3-27 10:28 | 只看该作者
将字模放在oledfont.h,结构体typFNT_GB16中

使用特权

评论回复
6
鱿鱼丝|  楼主 | 2023-3-27 10:28 | 只看该作者
二、修改代码

显示代码
void TEST_MainPage(void)
{       
        GUI_ShowCHinese(28,20,16,"雷岩",1);
        GUI_ShowString(4,48,"632007090128",16,1);
        delay_ms(1500);               
        delay_ms(1500);
}

使用特权

评论回复
7
鱿鱼丝|  楼主 | 2023-3-27 10:28 | 只看该作者
main函数
int main(void)
{       
        delay_init();                           //延时函数初始化          
        OLED_Init();                                 //初始化OLED  
        OLED_Clear(0);             //清屏(全黑)
        while(1)
        {       
                TEST_MainPage();         //界面显示
        }
}

使用特权

评论回复
8
鱿鱼丝|  楼主 | 2023-3-27 10:29 | 只看该作者
三、OLED实现滑动显示数据
1、添加滑动命令

水平滑动
OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动
OLED_WR_Byte(0x26,OLED_CMD);        //水平向左或者右滚动 26/27
OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7
OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节
OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动

使用特权

评论回复
9
鱿鱼丝|  楼主 | 2023-3-27 10:29 | 只看该作者
2、main函数
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{       
        delay_init();                           //延时函数初始化          
        NVIC_Configuration();            //设置NVIC中断分组2:2位抢占优先级,2位响应优先级        
        OLED_Init();                                 //初始化OLED  
        OLED_Clear(0);             //清屏(全黑)
        OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动
    OLED_WR_Byte(0x27,OLED_CMD);        //水平向左或者右滚动 26/27
    OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
        OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
        OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
        OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7
        OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
        OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节
        TEST_MainPage();
        OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动
}

使用特权

评论回复
10
鱿鱼丝|  楼主 | 2023-3-27 10:29 | 只看该作者
3、总显示函数
void TEST_MainPage(void)
{       
       
        //GUI_ShowCHinese(28,20,16,"",1);
        GUI_ShowString(0,0,"Do not go gentle into that good night.",16,1);
       
        //GUI_ShowString(40,48,"Rage, rage against the dying of the light.",16,1);
       
        //GUI_ShowString(4,48,"www.lcdwiki.com",16,1);
        delay_ms(1500);               
        delay_ms(1500);
}

使用特权

评论回复
11
51xlf| | 2023-5-10 21:50 | 只看该作者
stm32oled光标移动怎么实现

使用特权

评论回复
12
wilhelmina2| | 2023-5-10 22:07 | 只看该作者
在STM32中,可以使用HAL库或者第三方库函数(如u8glib、Adafruit_SSD1306等)来控制OLED屏幕的显示。

使用特权

评论回复
13
tifmill| | 2023-5-11 16:08 | 只看该作者
stm32怎样才能同时驱动OLED和LCD两个屏

使用特权

评论回复
14
sesefadou| | 2023-5-11 18:31 | 只看该作者
怎么用stm32cubemx配置oled显示的参数

使用特权

评论回复
15
bartonalfred| | 2023-5-11 19:02 | 只看该作者

stm32调试OLED液晶,显示不稳定,需要多次复位才可以

使用特权

评论回复
16
tifmill| | 2023-5-11 20:08 | 只看该作者
在开发过程中需要关注OLED屏幕的分辨率、颜色深度、驱动芯片型号等参数,以确保程序与硬件的匹配和兼容。

使用特权

评论回复
17
loutin| | 2023-5-11 21:02 | 只看该作者

如何在oled屏上实时显示湿度

使用特权

评论回复
18
pixhw| | 2023-5-11 21:58 | 只看该作者
将OLED屏幕的引脚与STM32芯片的GPIO引脚相连,包括VCC(电源正极)、GND(电源负极)、SCL(时钟信号线)、SDA(数据信号线)等引脚。

使用特权

评论回复
19
jonas222| | 2023-5-11 22:14 | 只看该作者
OLED显示屏,怎么显示字符串变量?

使用特权

评论回复
20
Jacquetry| | 2023-5-11 22:52 | 只看该作者
要显示汉字的话必须要给所有字取模吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

387

帖子

0

粉丝