12864中英混顯,但是如果字符有每區xxFD的漢字時,比如“昌,除"就會出錯,高手幫看看哪里出問題了
單片機源程序如下:
//混顯
void OLED_ShowText(u8 x,u8 y,char* str,u8 size1,u8 mode)
{
char tempstr[2] = {'\0'};
while(*str != '\0')
{
if(*str & 0x80)
{
tempstr[0] = *str++;
tempstr[1] = *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[index].name[0]==str[0] && Hzk[index].name[1]==str[1])//對比漢字區碼位碼
{
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[index].dat[ i],OLED_DATA);//16x16字號
}
else
{
if(sizey==16)
OLED_WR_Byte(~Hzk[index].dat[ i],OLED_DATA);//16x16字號
}
}
}
}
}
|