OLED中英混显
本帖最后由 KJY 于 2024-8-8 10:36 编辑弄了个12864中英混显,但是如果字符有每区xxFD的汉字时,比如“昌,除"就会出错,高手帮看看哪里出问题了
//混显
void OLED_ShowText(u8 x,u8 y,char* str,u8 size1,u8 mode)
{
char tempstr = {'\0'};
while(*str != '\0')
{
if(*str & 0x80)
{
tempstr = *str++;
tempstr = *str++;
OLED_ShowChinese(x,y,tempstr,size1,mode);
x+=16;if(x>=127){y+=size1/8;x=0;}
}
else
{
OLED_ShowChar(x,y,*str++,size1,mode);
x+=8;if(x>=127){y+=size1/8;x=0;}
}
}
}
//显示汉字
void OLED_ShowChinese(u8 x,u8 y,u8* str,u8 sizey,u8 mode)
{
u16 index = 0;
u16 i,size1=(sizey/8+((sizey%8)?1:0))*sizey;
for(index =0;index <sizeof(Hzk)/34;index++)
{
if(Hzk.name==str && Hzk.name==str)//对比汉字区码位码
{
for(i=0;i<size1;i++)
{
if(i%sizey==0) OLED_Set_Pos(x,y++);
if(mode==1)
{
if(sizey==16)
OLED_WR_Byte(Hzk.dat,OLED_DATA);//16x16字号
}
else
{
if(sizey==16)
OLED_WR_Byte(~Hzk.dat,OLED_DATA);//16x16字号
}
}
}
}
}
汉字后面加\xFD FD显示异常是个Keil的BUG,加个\xFD即可解决。
尽量不要在代码里出现中文可能会出现编码异常,中文或日文全部用\xHH编码(H表示十六进制数字)。 又学到一点{:titter:} 打补丁后应该不要输入\xFD 数据手册中有提到这个问题 0xFD问题,手册里面专门有一章进行详细说明
页:
[1]