標(biāo)題: 單片機(jī)OLED12864中英混顯 如果字符有每區(qū)xxFD的漢字出錯 [打印本頁]

作者: KJYOU    時間: 2024-8-8 11:11
標(biāo)題: 單片機(jī)OLED12864中英混顯 如果字符有每區(qū)xxFD的漢字出錯
12864中英混顯,但是如果字符有每區(qū)xxFD的漢字時,比如“昌,除"就會出錯,高手幫看看哪里出問題了

單片機(jī)源程序如下:
//混顯

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])//對比漢字區(qū)碼位碼
                {
                 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 發(fā)表于 2024-8-8 15:48

謝謝
作者: KJYOU    時間: 2024-8-8 17:48
謝了
作者: coody_sz    時間: 2024-8-9 11:01
0xfd補(bǔ)丁,用過KEIL的都應(yīng)該知道。
作者: mengsiu    時間: 2024-8-23 14:20
我的Keil是打了FD補(bǔ)丁的,目前使用沒什么問題。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1