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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值