找回密码
 立即注册
查看: 429|回复: 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
  • 打卡总天数:486
  • 最近打卡:2025-07-04 09:00:24
已绑定手机

81

主题

5277

回帖

9459

积分

超级版主

DebugLab

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-07-04 14:09:40
已绑定手机

21

主题

118

回帖

1104

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-07-04 07:58:29
已绑定手机

4

主题

405

回帖

1981

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:485
  • 最近打卡:2025-07-04 07:55:39
已绑定手机

19

主题

3233

回帖

5367

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-07-04 09:13:20

13

主题

97

回帖

336

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:563
  • 最近打卡:2025-07-03 07:52:42
已绑定手机

1

主题

838

回帖

1785

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-7-4 17:40 , Processed in 0.118243 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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