文章目录
- 一.OLED屏滚动显示命令
- 二.对将要显示的汉字进行取模
- 三.实现代码
- 四.总结
- 五.参考链接
一.OLED屏滚动显示命令
水平向左向右滚动
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); //开启滚动
垂直滚动
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); //开启滚动
更多命令请参考:https://blog.csdn.net/qq_43279579/article/details/111500137
二.对将要显示的汉字进行取模
显示:昨夜西风凋碧树,独上高楼,望尽天涯路。
推荐工具:
链接:https://pan.baidu.com/s/1EInMlOq8J4y0kcXMPFYUGQ
提取码:1234
使用汉字取模工具获取16*16点阵
点阵内容:
{0x01,0x01,0x79,0x49,0x4A,0x4A,0x4C,0x78,0x48,0x48,0x48,0x48,0x78,0x48,0x00,0x00},
{0x00,0x00,0x00,0xFE,0x80,0x80,0x80,0xF8,0x80,0x80,0x80,0xFC,0x80,0x80,0x80,0x80},/*"昨",0*/
{0x02,0x01,0xFF,0x08,0x08,0x10,0x11,0x31,0x52,0x95,0x11,0x10,0x10,0x10,0x11,0x16},
{0x00,0x00,0xFE,0x80,0x80,0xF8,0x08,0x48,0x28,0x10,0x10,0xA0,0x40,0xA0,0x18,0x06},/*"夜",1*/
{0x00,0xFF,0x04,0x04,0x04,0x3F,0x24,0x24,0x24,0x24,0x28,0x30,0x20,0x20,0x3F,0x20},
{0x00,0xFE,0x40,0x40,0x40,0xF8,0x48,0x48,0x48,0x48,0x38,0x08,0x08,0x08,0xF8,0x08},/*"西",2*/
{0x00,0x3F,0x20,0x20,0x28,0x24,0x22,0x22,0x21,0x21,0x22,0x22,0x24,0x48,0x40,0x80},
{0x00,0xF0,0x10,0x10,0x50,0x50,0x90,0x90,0x10,0x10,0x90,0x92,0x4A,0x4A,0x06,0x02},/*"风",3*/
{0x00,0x47,0x24,0x24,0x05,0x04,0x14,0x17,0x24,0xE5,0x25,0x25,0x25,0x24,0x24,0x08},
{0x00,0xFC,0x44,0x44,0xF4,0x44,0x44,0xFC,0x04,0xF4,0x14,0x14,0xF4,0x04,0x14,0x08},/*"凋",4*/
{0x00,0xFE,0x10,0x7C,0x10,0x1E,0xF0,0x00,0x7F,0x04,0x08,0x3F,0xC8,0x08,0x0F,0x08},
{0x20,0x40,0xFC,0x84,0xFC,0x84,0xFC,0x00,0xFC,0x00,0x00,0xF0,0x10,0x10,0xF0,0x10},/*"碧",5*/
{0x20,0x20,0x27,0x20,0xF8,0x24,0x22,0x72,0x69,0xA1,0xA2,0x22,0x24,0x28,0x20,0x20},
{0x04,0x04,0x84,0x84,0xBE,0x84,0x84,0xA4,0x14,0x14,0x84,0x84,0x84,0x04,0x14,0x08},/*"树",6*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",7*/
{0x00,0x44,0x28,0x11,0x29,0x49,0x89,0x09,0x19,0x29,0x48,0x88,0x08,0x0B,0x51,0x20},
{0x20,0x20,0x20,0xFC,0x24,0x24,0x24,0x24,0xFC,0x24,0x20,0x28,0x24,0xFE,0x02,0x00},/*"独",8*/
{0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFF,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00},/*"上",9*/
{0x02,0x01,0xFF,0x00,0x0F,0x08,0x08,0x0F,0x00,0x7F,0x40,0x4F,0x48,0x48,0x4F,0x40},
{0x00,0x00,0xFE,0x00,0xE0,0x20,0x20,0xE0,0x00,0xFC,0x04,0xE4,0x24,0x24,0xE4,0x0C},/*"高",10*/
{0x20,0x21,0x20,0x20,0xFB,0x20,0x21,0x72,0x68,0xA7,0xA0,0x21,0x21,0x20,0x21,0x26},
{0x20,0x24,0xA8,0x20,0xFE,0xA8,0x24,0x02,0x40,0xFE,0x88,0x08,0x90,0x60,0x98,0x04},/*"楼",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/
{0x10,0x08,0xFF,0x20,0x20,0x26,0x38,0x20,0x01,0x7F,0x01,0x01,0x3F,0x01,0x01,0xFF},
{0x00,0x7C,0x44,0x7C,0x44,0x7C,0x44,0x94,0x08,0xFC,0x00,0x00,0xF8,0x00,0x00,0xFE},/*"望",13*/
{0x00,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x23,0x20,0x40,0x8C,0x03,0x00,0x00},
{0x00,0xF8,0x08,0x08,0x08,0xF8,0x48,0x40,0x20,0x10,0x88,0x06,0x00,0x00,0x80,0x40},/*"尽",14*/
{0x00,0x3F,0x01,0x01,0x01,0x01,0xFF,0x01,0x02,0x02,0x04,0x04,0x08,0x10,0x20,0xC0},
{0x00,0xF8,0x00,0x00,0x00,0x00,0xFE,0x00,0x80,0x80,0x40,0x40,0x20,0x10,0x08,0x06},/*"天",15*/
{0x00,0x27,0x14,0x14,0x85,0x44,0x44,0x17,0x14,0x24,0xE4,0x25,0x24,0x28,0x2B,0x10},
{0x00,0xFE,0x20,0x20,0xFC,0x20,0x20,0xFE,0x00,0x20,0x20,0xFC,0x20,0x20,0xFE,0x00},/*"涯",16*/
{0x00,0x7C,0x44,0x44,0x45,0x7C,0x10,0x10,0x11,0x5C,0x50,0x50,0x50,0x5C,0xE0,0x00},
{0x40,0x40,0x78,0x88,0x50,0x20,0x50,0x88,0x06,0xF8,0x88,0x88,0x88,0x88,0xF8,0x88},/*"路",17*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"。",18*/
生成的点阵顺序是从左到右,从上到下,需要转换一下点阵:
"昨",0x01,0x00,0x01,0x00,0x79,0x00,0x49,0xFE,0x4A,0x80,0x4A,0x80,0x4C,0x80,0x78,0xF8,
0x48,0x80,0x48,0x80,0x48,0x80,0x48,0xFC,0x78,0x80,0x48,0x80,0x00,0x80,0x00,0x80,/*"昨",0*/
"夜",0x02,0x00,0x01,0x00,0xFF,0xFE,0x08,0x80,0x08,0x80,0x10,0xF8,0x11,0x08,0x31,0x48,
0x52,0x28,0x95,0x10,0x11,0x10,0x10,0xA0,0x10,0x40,0x10,0xA0,0x11,0x18,0x16,0x06,/*"夜",1*/
"西",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,/*"西",2*/
"风",0x00,0x00,0x3F,0xF0,0x20,0x10,0x20,0x10,0x28,0x50,0x24,0x50,0x22,0x90,0x22,0x90,
0x21,0x10,0x21,0x10,0x22,0x90,0x22,0x92,0x24,0x4A,0x48,0x4A,0x40,0x06,0x80,0x02,/*"风",3*/
"凋",0x00,0x00,0x47,0xFC,0x24,0x44,0x24,0x44,0x05,0xF4,0x04,0x44,0x14,0x44,0x17,0xFC,
0x24,0x04,0xE5,0xF4,0x25,0x14,0x25,0x14,0x25,0xF4,0x24,0x04,0x24,0x14,0x08,0x08,/*"凋",4*/
"碧",0x00,0x20,0xFE,0x40,0x10,0xFC,0x7C,0x84,0x10,0xFC,0x1E,0x84,0xF0,0xFC,0x00,0x00,
0x7F,0xFC,0x04,0x00,0x08,0x00,0x3F,0xF0,0xC8,0x10,0x08,0x10,0x0F,0xF0,0x08,0x10,/*"碧",5*/
"树",0x20,0x04,0x20,0x04,0x27,0x84,0x20,0x84,0xF8,0xBE,0x24,0x84,0x22,0x84,0x72,0xA4,
0x69,0x14,0xA1,0x14,0xA2,0x84,0x22,0x84,0x24,0x84,0x28,0x04,0x20,0x14,0x20,0x08,/*"树",6*/
",",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x20,0x00,0x00,0x00,/*",",7*/
"独",0x00,0x20,0x44,0x20,0x28,0x20,0x11,0xFC,0x29,0x24,0x49,0x24,0x89,0x24,0x09,0x24,
0x19,0xFC,0x29,0x24,0x48,0x20,0x88,0x28,0x08,0x24,0x0B,0xFE,0x51,0x02,0x20,0x00,/*"独",8*/
"上",0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF8,0x02,0x00,
0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xFE,0x00,0x00,/*"上",9*/
"高",0x02,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x0F,0xE0,0x08,0x20,0x08,0x20,0x0F,0xE0,
0x00,0x00,0x7F,0xFC,0x40,0x04,0x4F,0xE4,0x48,0x24,0x48,0x24,0x4F,0xE4,0x40,0x0C,/*"高",10*/
"楼",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,/*"楼",11*/
"望",0x10,0x00,0x08,0x7C,0xFF,0x44,0x20,0x7C,0x20,0x44,0x26,0x7C,0x38,0x44,0x20,0x94,
0x01,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,/*"望",13*/
"尽",0x00,0x00,0x1F,0xF8,0x10,0x08,0x10,0x08,0x10,0x08,0x1F,0xF8,0x10,0x48,0x10,0x40,
0x10,0x20,0x23,0x10,0x20,0x88,0x40,0x06,0x8C,0x00,0x03,0x00,0x00,0x80,0x00,0x40,/*"尽",14*/
"天",0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,/*"天",15*/
"涯",0x00,0x00,0x27,0xFE,0x14,0x20,0x14,0x20,0x85,0xFC,0x44,0x20,0x44,0x20,0x17,0xFE,
0x14,0x00,0x24,0x20,0xE4,0x20,0x25,0xFC,0x24,0x20,0x28,0x20,0x2B,0xFE,0x10,0x00,/*"涯",16*/
"路",0x00,0x40,0x7C,0x40,0x44,0x78,0x44,0x88,0x45,0x50,0x7C,0x20,0x10,0x50,0x10,0x88,
0x11,0x06,0x5C,0xF8,0x50,0x88,0x50,0x88,0x50,0x88,0x5C,0x88,0xE0,0xF8,0x00,0x88,/*"路",17*/
"。",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,/*"。",18*/
三.实现代码
在显示文字的代码基础上,修改main函数
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); //开启滚动
}
修改显示函数TEST_MainPage
void TEST_MainPage(void)
{
GUI_ShowCHinese(10,20,16,"昨夜西风凋碧树,独上高楼,望尽天涯路。欲寄彩笺兼尺素,山水长阔知何处。",1);
delay_ms(1500);
delay_ms(1500);
}
运行代码,结果显示:
四.总结
OLED屏滚动显示文字,在直接显示文字的基础上,只需添加滚动命令,只有在汉字取模写点阵时要耗费点功夫,其它过程都比较简单。
五.参考链接
https://blog.csdn.net/qq_43279579/article/details/111500137
完整代码:
https://github.com/Parallel-leaves/oledgundong