中景园电子墨水屏2.13寸黑白双色屏幕 屏幕显示错位(横屏方向起始点偏移)

本文介绍了一种解决特定屏幕显示错位的问题的方法。通过调整屏幕初始化代码中的地址设置参数,实现了不同屏幕类型间的正确显示。针对红黑白三色屏与双色屏之间的差异进行了详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

相同的程序在 红黑白三色 屏幕上不错位,

但是在双色屏幕就错位(如上图)

查DataSheet 之后在例程里找到

//初始化屏幕
void OLED_GUIInit(void)
{
  OLED_RES_Clr();  // Module reset      
  delay_ms(20); //At least 10ms delay 
  OLED_RES_Set(); 
  delay_ms(20); //At least 10ms delay  
    
  Epaper_READBUSY();   
  OLED_WR_REG(0x12);  //SWRESET
  Epaper_READBUSY();   
    
  OLED_WR_REG(0x01); //Driver output control      
  OLED_WR_DATA8(0x27);
  OLED_WR_DATA8(0x01);
  OLED_WR_DATA8(0x01);
	
  OLED_WR_REG(0x11); //data entry mode       
  OLED_WR_DATA8(0x01);

  OLED_WR_REG(0x44); //set Ram-X address start/end position   
  OLED_WR_DATA8(0x00);
  OLED_WR_DATA8(0x0F);    //0x0F-->(15+1)*8=128

  OLED_WR_REG(0x45); //set Ram-Y address start/end position          
  OLED_WR_DATA8(0x27);   //0xF9-->(249+1)=250 
  OLED_WR_DATA8(0x01);
  OLED_WR_DATA8(0x00);
  OLED_WR_DATA8(0x00); 

  OLED_WR_REG(0x3C); //BorderWavefrom
  OLED_WR_DATA8(0x05);  
       
  
  OLED_WR_REG(0x21); //  Display update control
  OLED_WR_DATA8(0x00);  
  OLED_WR_DATA8(0x80);  

  OLED_WR_REG(0x18); //Read built-in temperature sensor
  OLED_WR_DATA8(0x80); 

  OLED_WR_REG(0x4E);   // set RAM x address count to 0;
  OLED_WR_DATA8(0x00);
  OLED_WR_REG(0x4F);   // set RAM y address count to 0X199;
  OLED_WR_DATA8(0x27);
  OLED_WR_DATA8(0x01);
	
  Epaper_READBUSY();	
}

其中

  OLED_WR_REG(0x44); //set Ram-X address start/end position   
  OLED_WR_DATA8(0x00);
  OLED_WR_DATA8(0x0F);    //0x0F-->(15+1)*8=128
//值是对的,但是后一行可疑
  OLED_WR_REG(0x45); //set Ram-Y address start/end position          
  OLED_WR_DATA8(0x27);   //0xF9-->(249+1)=250 
  //但是后一行可疑

而这几行正是设置地址的设置

  OLED_WR_REG(0x4E);   // set RAM x address count to 0;
  OLED_WR_DATA8(0x00);
  OLED_WR_REG(0x4F);   // set RAM y address count to 0X199;
  OLED_WR_DATA8(0x27);

同样这也是相同的可疑之处

试了1小时终于把值试出来了(@中景园官方)

改为设置之内的值

就好了。。。。

改为如下

//初始化屏幕
void OLED_GUIInit(void)
{
  OLED_RES_Clr();  // Module reset      
  delay_ms(20); //At least 10ms delay 
  OLED_RES_Set(); 
  delay_ms(20); //At least 10ms delay  
    
  Epaper_READBUSY();   
  OLED_WR_REG(0x12);  //SWRESET
  Epaper_READBUSY();   
    
  OLED_WR_REG(0x01); //Driver output control      
  OLED_WR_DATA8(0x27);
  OLED_WR_DATA8(0x01);
  OLED_WR_DATA8(0x01);
	
  OLED_WR_REG(0x11); //data entry mode       
  OLED_WR_DATA8(0x01);

  OLED_WR_REG(0x44); //set Ram-X address start/end position   
  OLED_WR_DATA8(0x00);		//X address start L5B
  OLED_WR_DATA8(0x0F);    //X address end L5B 0x0F-->(15+1)*8=128

  OLED_WR_REG(0x45); //set Ram-Y address start/end position 
/*  黑白双色坐标	*/  
  OLED_WR_DATA8(0xF9);   	 
  OLED_WR_DATA8(0x01);		//Y End 0xF9-->(249+1)=250
  OLED_WR_DATA8(0x2E);		//Y Start 00
  OLED_WR_DATA8(0x00); 
/*  黑白红三色坐标	 
  OLED_WR_DATA8(0x27);   //0xF9-->(249+1)=250
  OLED_WR_DATA8(0x01);
  OLED_WR_DATA8(0x00);
  OLED_WR_DATA8(0x00); 
*/

  OLED_WR_REG(0x3C); //BorderWavefrom
  OLED_WR_DATA8(0x05);  
       
  
  OLED_WR_REG(0x21); //  Display update control
  OLED_WR_DATA8(0x00);  
  OLED_WR_DATA8(0x80);  

  OLED_WR_REG(0x18); //Read built-in temperature sensor
  OLED_WR_DATA8(0x80); 

  OLED_WR_REG(0x4E);   // set RAM x address count to 0;
  OLED_WR_DATA8(0x00);
  OLED_WR_REG(0x4F);   // set RAM y address count to 0X199;    
  OLED_WR_DATA8(0x27); //27 纸筒接缝处坐标
  OLED_WR_DATA8(0x01); //1
	
  Epaper_READBUSY();	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我常思聪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值