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

采用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);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值