查看: 725|回复: 1

天问51开发板使用oled12864屏幕

[复制链接]

2

主题

2

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2022-1-11 10:25:15 | 显示全部楼层 |阅读模式
本帖最后由 爱学习 于 2022-1-11 11:24 编辑

相信很多朋友和我遇到过同样的困扰,就是满心欢喜的在某宝上淘到便宜的OLED屏,插到天问51的开发板上,下载程序后,显示的字体被拉长,无法显示想象中的那么多行字。今天我将我的方法贴出来希望能帮到有同样困扰的朋友,话不多说,上图:

上图是我成功的效果
在字符编程界面右击“库文件管理”下的“lib”,会打开下拉菜单,双击”oled.h“进入文本编辑器进行修改,先看都需要修改哪里:


上图是前两个需要修改的地方
1.#define OLED_MAX_ROW  32        把32改成64,将行数由32个点改成64个点
2.static uint8 xdata _oled_disbuffer[128][4];    把4改成8,将显示缓存由4页改成8页



上图是中间两个需要修改的地方
//========================================================================
// 描述: 清屏
// 参数: none.
// 返回: none.
//========================================================================
void oled_clear()  
{  
uint8 y,x;
for(y=0;y<4;y++)       //(32)4  (64)8     清屏由清除4页改为清除8页
{
  for(x=0;x<128;x++)
  {
   _oled_disbuffer[x][y]=0x00;
  }
}
}
//========================================================================
// 描述: 更新显示
// 参数: none.
// 返回: none.
//========================================================================
void oled_display()  
{  
    uint8 x,y;
for(y=0;y<4;y++) //(32)4  (64)8       更新显示由更新4页改为更新8页
{  
  oled_wr_byte (0xb0+y,OLED_CMD);    //设置页地址(0-7)
  oled_wr_byte (0x00,OLED_CMD);      //设置显示位置-列低地址
  oled_wr_byte (0x10,OLED_CMD);      //设置显示位置-列高地址  
  for(x=0;x<128;x++)oled_wr_byte(_oled_disbuffer[x][y],OLED_DATA);
}
    oled_wr_byte(0xaf,OLED_CMD);
}//更新显示



上图是最后需要修改的两处
//========================================================================
// 描述: 初始化OLED
// 参数: none.
// 返回: none.
//========================================================================
void oled_init()
{  
hardiic_init();
    delay(100);
    oled_wr_byte(0xAE,OLED_CMD);//关闭显示

oled_wr_byte(0x40,OLED_CMD);//---set low column address
oled_wr_byte(0xb0,OLED_CMD);//---set high column address
oled_wr_byte(0xC8,OLED_CMD);//-not offset

oled_wr_byte(0x81,OLED_CMD);//设置对比度
oled_wr_byte(0xff,OLED_CMD);
oled_wr_byte(0xa1,OLED_CMD);//段重定向设置
oled_wr_byte(0xa6,OLED_CMD);//

oled_wr_byte(0xa8,OLED_CMD);//设置驱动路数
oled_wr_byte(0x1f,OLED_CMD);  //默认(32)0x1f (64)0x3f

oled_wr_byte(0xd3,OLED_CMD);
oled_wr_byte(0x00,OLED_CMD);

oled_wr_byte(0xd5,OLED_CMD);
oled_wr_byte(0xf0,OLED_CMD);

oled_wr_byte(0xd9,OLED_CMD);
oled_wr_byte(0x22,OLED_CMD);

oled_wr_byte(0xda,OLED_CMD);
oled_wr_byte(0x02,OLED_CMD);    //(32)0x02 (64)0x12  屏幕分辨率

oled_wr_byte(0xdb,OLED_CMD);
oled_wr_byte(0x49,OLED_CMD);

oled_wr_byte(0x8d,OLED_CMD);
oled_wr_byte(0x14,OLED_CMD);

//oled_wr_byte(0xaf,OLED_CMD);
oled_clear();
}  

完成以上操作就可以了,不过需要注意,天问51默认的是只读模式,需要在“编辑”菜单下将“设为只读”前的√去掉,才能正常编辑。
以上6处修改是可逆的,只要修改回来,仍旧是12832。
回复

使用道具 举报

19

主题

80

帖子

631

积分

版主

Rank: 7Rank: 7Rank: 7

积分
631
发表于 2022-1-11 14:27:17 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-3-29 23:42 , Processed in 0.319613 second(s), 22 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表