找回密码
 立即注册
查看: 334|回复: 6

OLED中英混显

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-08 10:08:16

1

主题

0

回帖

23

积分

新手上路

积分
23
发表于 2024-8-8 10:33:57 | 显示全部楼层 |阅读模式
本帖最后由 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字号
        
                   }
                  }
          }                        
        }               
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-05-07 09:00:58
已绑定手机

77

主题

4863

回帖

8480

积分

超级版主

DebugLab

积分
8480
发表于 2024-8-8 12:04:00 | 显示全部楼层
汉字后面加\xFD
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:473
  • 最近打卡:2025-05-07 09:22:30
已绑定手机

20

主题

106

回帖

745

积分

高级会员

积分
745
发表于 2024-8-8 13:29:19 | 显示全部楼层
FD显示异常是个Keil的BUG,加个\xFD即可解决。
尽量不要在代码里出现中文可能会出现编码异常,中文或日文全部用\xHH编码(H表示十六进制数字)。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:303
  • 最近打卡:2025-05-07 07:49:46
已绑定手机

4

主题

343

回帖

1640

积分

金牌会员

积分
1640
发表于 2024-8-8 15:01:00 | 显示全部楼层
又学到一点
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:428
  • 最近打卡:2025-05-07 00:13:45
已绑定手机

19

主题

3194

回帖

4948

积分

论坛元老

积分
4948
发表于 2024-8-8 15:14:05 来自手机 | 显示全部楼层
打补丁后应该不要输入\xFD
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-01 11:24:23

13

主题

95

回帖

294

积分

中级会员

积分
294
发表于 2024-8-17 09:10:00 | 显示全部楼层
数据手册中有提到这个问题
截图202408170909459326.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:508
  • 最近打卡:2025-05-07 07:34:14
已绑定手机

1

主题

836

回帖

1521

积分

金牌会员

积分
1521
发表于 2024-8-17 11:21:41 | 显示全部楼层
0xFD问题,手册里面专门有一章进行详细说明
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 11:47 , Processed in 0.126468 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表