您的位置:首页 > 其它

emWin在STM32上移植OLED驱动问题(2)文字显示重叠的问题

2019-04-24 11:00 537 查看

采用emwin正常显示文本时,
GUI_SetTextMode(GUI_TEXTMODE_NORMAL);
发现OLED的显示中,文字显示都是重叠

发现还是平底层驱动的问题,打点函数有问题,直接采用
C4_Pixel[0]=C4_Pixel[0]|(c<<4); graysclale为0,该函数不起作用了,(汗~~~)
这种错误也会犯
增加清除像素,OK
切记要严谨!!!!

void Set_Dot(u16 x,u16 y,u16 grayscale)
{
unsigned char C4_Pixel[2] = {0}, x1 = x/4, y1 = y,c = grayscale& 0x0F;
u16 cs = CS1;

if(x>=256||y>=128) return ;	//超过了范围,直接返回
if(y >= 64)//上半屏
{
y1 = y - 64;
cs = CS2;
}
Set_Column_Address(OLED_Shift+x1, OLED_Shift+x1,cs); //设置列坐标
Set_Row_Address(y1,y1,cs);	 //设置行坐标
Set_Read_RAM(cs);	 	//写读指令
C4_Pixel[0]=OLED_RD_Byte(cs);//空读
C4_Pixel[0]=OLED_RD_Byte(cs);
C4_Pixel[1]=OLED_RD_Byte(cs);

switch (x%4)
{
case 0:
C4_Pixel[0]=C4_Pixel[0]&(0x0F);//需要先清除当前像素点,再写入
C4_Pixel[0]=C4_Pixel[0]|(c<<4);
break;
case 1:
C4_Pixel[0]=C4_Pixel[0]&(0xF0);
C4_Pixel[0]=C4_Pixel[0]|c;
break;
case 2:
C4_Pixel[1]=C4_Pixel[1]&(0x0F);
C4_Pixel[1]=C4_Pixel[1]|(c<<4);
break;
case 3:
C4_Pixel[1]=C4_Pixel[1]&(0x0F);
C4_Pixel[1]=C4_Pixel[1]|c;
}
//列写回
//Set_Column_Address(OLED_Shift+x1,OLED_Shift+x1,cs);
//Set_Row_Address(y1,y1,cs);
Set_Write_RAM(cs);
OLED_WR_Byte(C4_Pixel[0],OLED_DATA,cs);
OLED_WR_Byte(C4_Pixel[1],OLED_DATA,cs);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: