标题: 单片机OLED12864中英混显 如果字符有每区xxFD的汉字出错 [打印本页]

作者: KJYOU    时间: 2024-8-8 11:11
标题: 单片机OLED12864中英混显 如果字符有每区xxFD的汉字出错
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字号
        
                   }
                  }
          }                        
        }               
}

作者: lkc8210    时间: 2024-8-8 15:48


作者: KJYOU    时间: 2024-8-8 17:46
lkc8210 发表于 2024-8-8 15:48

谢谢
作者: KJYOU    时间: 2024-8-8 17:48
谢了
作者: coody_sz    时间: 2024-8-9 11:01
0xfd补丁,用过KEIL的都应该知道。
作者: mengsiu    时间: 2024-8-23 14:20
我的Keil是打了FD补丁的,目前使用没什么问题。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1