根据OLED内置SSD1306芯片手册编写:SSD1780 (lcdwiki.com)
- 水平滚动
下列代码中 第 5 行 到 第 11 行 就是按照图中所设置的,这个顺序应当是不能变的。
//OLED水平滚动
void OLED_horizontal_scroll()
{
OLED_WR_Byte(0x2E,OLED_CMD); //关闭滚动
OLED_WR_Byte(0x27,OLED_CMD); //水平向右或者左滚动 26/27
OLED_WR_Byte(0x00,OLED_CMD); //A: 虚拟字节
OLED_WR_Byte(0x00,OLED_CMD); //B: 起始页 0
OLED_WR_Byte(0x07,OLED_CMD); //C: 滚动间隔 2帧
OLED_WR_Byte(0x07,OLED_CMD); //D: 终止页 7
OLED_WR_Byte(0x00,OLED_CMD); //E: 虚拟字节
OLED_WR_Byte(0xFF,OLED_CMD); //F: 虚拟字节
OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动
}
- 水平垂直滚动
图中的红框部分说明了:没有可利用的垂直滚动函数
下列代码中 第 5 行 到 第 10 行 就是按照图中所设置的,这个顺序应当是不能变的。
//OLED水平垂直滚动
void OLED_vertical_scroll()
{
OLED_WR_Byte(0x2E,OLED_CMD); //关闭滚动
OLED_WR_Byte(0x29,OLED_CMD); //垂直和水平向右或左滚动 29/2a
OLED_WR_Byte(0x00,OLED_CMD); //A: 虚拟字节
OLED_WR_Byte(0x00,OLED_CMD); //B: 起始页 0
OLED_WR_Byte(0x07,OLED_CMD); //C: 滚动间隔 2帧
OLED_WR_Byte(0x07,OLED_CMD); //D: 终止页 7
OLED_WR_Byte(0x01,OLED_CMD); //E: 垂直滚动偏移量 1行
OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动
}
上述代码只是给个参考,自己灵活配置即可。
具体查看手册。