STM32
直播中

陈铮

7年用户 198经验值
私信 关注
[问答]

汉字显示实验中Show_Str函数如何改进

void Show_Str(u8 x,u16 y,u8*str,u8 size,u8 mode)
{                 
    u8 bHz=0;     //字符或者中文                        
    while(*str!=0)//数据未结束
    {
        if(!bHz)
        {
         if(*str>0x80)bHz=1;//中文
         else              //字符
         {      
                if(x>(LCD_W-size/2))//换行
    {      
     y+=size;
     x=0;   
    }           
          if(y>(LCD_H-size))break;//越界返回      
          if(*str==10)//换行符号 'n'        //这里修改了 可以向使用printf(“n”);一样换行了
          {     
              y+=size;
     x=0;
              str++;
     continue;                //这里修改了,因为换行后直接判断下一个字符,因为后面还有个str++
          }  
          else LCD_ShowChar(x,y,*str,size,mode);//有效部分写入
    str++;
          x+=size/2; //字符,为全字的一半
         }
        }else//中文
        {     
            bHz=0;//有汉字库   
            if(x>(LCD_W-size))//换行
   {     
    y+=size;
    x=0;   
   }
         if(y>(LCD_H-size))break;//越界返回            
         Show_Font(x,y,str,size,mode); //显示这个汉字,空心显示
         str+=2;
         x+=size;//下一个汉字偏移     
        }      
    }   
}
附录:ASCII码表 http://moodle.hsshn.pudong-edu.sh.cn/file.php/99/resource/ASCII.htm

回帖(1)

胡劝侨

2020-6-9 07:14:26
不错.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分