- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2024-08-08 10:08:16
新手上路
- 积分
- 23
|
本帖最后由 KJY 于 2024-8-8 10:36 编辑
弄了个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,OLED_DATA);//16x16字号
}
else
{
if(sizey==16)
OLED_WR_Byte(~Hzk[index].dat,OLED_DATA);//16x16字号
}
}
}
}
}
|
|