|
本帖最后由 爱学习 于 2022-1-11 11:24 编辑
相信很多朋友和我遇到过同样的困扰,就是满心欢喜的在某宝上淘到便宜的OLED屏,插到天问51的开发板上,下载程序后,显示的字体被拉长,无法显示想象中的那么多行字。今天我将我的方法贴出来希望能帮到有同样困扰的朋友,话不多说,上图:
![](https://haohaodada.com/new/bbs/forum.php?mod=image&aid=2350&size=300x300&key=d7a39f633c8b9896&nocache=yes&type=fixnone)
上图是我成功的效果
在字符编程界面右击“库文件管理”下的“lib”,会打开下拉菜单,双击”oled.h“进入文本编辑器进行修改,先看都需要修改哪里:
![](https://haohaodada.com/new/bbs/forum.php?mod=image&aid=2351&size=300x300&key=19f7521d67f38575&nocache=yes&type=fixnone)
上图是前两个需要修改的地方
1.#define OLED_MAX_ROW 32 把32改成64,将行数由32个点改成64个点
2.static uint8 xdata _oled_disbuffer[128][4]; 把4改成8,将显示缓存由4页改成8页
![](https://haohaodada.com/new/bbs/forum.php?mod=image&aid=2352&size=300x300&key=165ee3fe8c890843&nocache=yes&type=fixnone)
上图是中间两个需要修改的地方
//========================================================================
// 描述: 清屏
// 参数: 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);
}//更新显示
![](https://haohaodada.com/new/bbs/forum.php?mod=image&aid=2353&size=300x300&key=3bb3abba5fcc4ca2&nocache=yes&type=fixnone)
上图是最后需要修改的两处
//========================================================================
// 描述: 初始化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。
|
|