发新帖我要提问
12
返回列表
打印
[其他ST产品]

STM32结合OLED进行屏显应用实例

[复制链接]
楼主: 过期的塔头
手机看帖
扫描二维码
随时随地手机跟帖
21
过期的塔头|  楼主 | 2023-3-29 12:20 | 只看该作者 回帖奖励 |倒序浏览
2)代码
在添加文字字模代码->oledfont.h文件
OLED显示函数test.c

使用特权

评论回复
22
过期的塔头|  楼主 | 2023-3-29 12:20 | 只看该作者
void TEST_MainPage(void)
{       
        GUI_ShowCHinese(10,20,16,"故人西辞黄鹤楼",1);
        delay_ms(1500);               
        delay_ms(1500);
}

使用特权

评论回复
23
过期的塔头|  楼主 | 2023-3-29 12:20 | 只看该作者
main.c文件
#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);        //开启滚动
}

使用特权

评论回复
24
过期的塔头|  楼主 | 2023-3-29 12:21 | 只看该作者
3、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);        //开启滚动
1
2
3
4
5
6
7
8
9

使用特权

评论回复
25
过期的塔头|  楼主 | 2023-3-29 12:21 | 只看该作者
垂直和水平滚动
OLED_WR_Byte(0x2e,OLED_CMD);        //关闭滚动
OLED_WR_Byte(0x29,OLED_CMD);        //水平垂直和水平滚动左右 29/2a
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);        //终止页 1
OLED_WR_Byte(0x01,OLED_CMD);        //垂直滚动偏移量
OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动

使用特权

评论回复
26
过期的塔头|  楼主 | 2023-3-29 12:21 | 只看该作者
2)代码
添加文字字模代码到oledfont.h文件中

"故",0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x80,0xFE,0xFE,0x11,0x08,0x12,0x88,0x10,0x88,
0x7C,0x88,0x44,0x50,0x44,0x50,0x44,0x20,0x44,0x50,0x7C,0x88,0x45,0x04,0x02,0x02,
"人",0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,
0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10,0x10,0x20,0x08,0x40,0x04,0x80,0x02,
"西",0x00,0x00,0xFF,0xFE,0x04,0x40,0x04,0x40,0x04,0x40,0x3F,0xF8,0x24,0x48,0x24,0x48,
0x24,0x48,0x24,0x48,0x28,0x38,0x30,0x08,0x20,0x08,0x20,0x08,0x3F,0xF8,0x20,0x08,
"辞",0x08,0x40,0x1C,0x20,0x70,0x20,0x11,0xFC,0x10,0x00,0xFC,0x88,0x10,0x50,0x11,0xFE,
0x7C,0x20,0x44,0x20,0x45,0xFC,0x44,0x20,0x44,0x20,0x7C,0x20,0x44,0x20,0x00,0x20,
"黄",0x04,0x40,0x3F,0xF8,0x04,0x40,0x04,0x40,0xFF,0xFE,0x01,0x00,0x1F,0xF0,0x11,0x10,
0x11,0x10,0x1F,0xF0,0x11,0x10,0x11,0x10,0x1F,0xF0,0x04,0x40,0x08,0x20,0x10,0x10,
"鹤",0x08,0x10,0x08,0x20,0x7F,0x7C,0x55,0x44,0x12,0x64,0x3F,0x54,0x64,0x44,0xA4,0x4C,
0x3F,0x40,0x24,0x7E,0x24,0x02,0x3F,0x02,0x24,0x7A,0x24,0x02,0x3F,0x0A,0x20,0x04,
"楼",0x20,0x20,0x21,0x24,0x20,0xA8,0x20,0x20,0xFB,0xFE,0x20,0xA8,0x21,0x24,0x72,0x02,
0x68,0x40,0xA7,0xFE,0xA0,0x88,0x21,0x08,0x21,0x90,0x20,0x60,0x21,0x98,0x26,0x04,

使用特权

评论回复
27
过期的塔头|  楼主 | 2023-3-29 12:21 | 只看该作者
OLED显示函数test.c
void TEST_MainPage(void)
{       
        GUI_ShowCHinese(10,20,16,"故人西辞黄鹤楼",1);
        delay_ms(1500);               
        delay_ms(1500);
}

使用特权

评论回复
28
过期的塔头|  楼主 | 2023-3-29 12:22 | 只看该作者
main.c
#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);        //开启滚动
}

使用特权

评论回复
29
过期的塔头|  楼主 | 2023-3-29 12:22 | 只看该作者
六、总结
通过此次实验基本熟练掌握了STM32结合OLED的操作显示。OLED是一个比较有意思的外设,在之后完成更多硬件项目时,可以利用OLED进行调试显示,帮助会很大,所以要好好掌握OLED的使用,多加练习,受益匪浅。

使用特权

评论回复
30
bqyj| | 2023-3-29 19:33 | 只看该作者
OLED_WR_Byte(0x2e,OLED_CMD);        //关闭滚动
OLED_WR_Byte(0x29,OLED_CMD);        //水平垂直和水平滚动左右 29/2a
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);        //终止页 1
OLED_WR_Byte(0x01,OLED_CMD);        //垂直滚动偏移量
OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动

使用特权

评论回复
31
bqyj| | 2023-3-29 19:33 | 只看该作者
没看懂,能解释下吗

使用特权

评论回复
32
eda516| | 2024-11-15 09:32 | 只看该作者
谢谢分享,不错的资料

使用特权

评论回复
33
zhjb1| | 2024-11-15 15:01 | 只看该作者
驱显汉字不如采用一片汉字库芯片,按照您的方法只需要将选址改到汉字库选完后送显即可。

使用特权

评论回复
34
dreamCar| | 2024-11-15 18:46 | 只看该作者
STM32与OLED结合,实现屏显应用。编程控制,显示动态图像和文字信息。示例代码简洁,操作便捷,显示效果流畅。

使用特权

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

本版积分规则