OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5299|回复: 3

汉字显示实验

[复制链接]

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-6-6 22:57:40 | 显示全部楼层 |阅读模式
void Show_Str(u16 x,u16 y,u16 width,u16 height,u8 *str,u8 size,u8 mode)  
{
 u16 x0=x;
 u16 y0=y;           
    u8 bHz=0;     //字符或者中文
 while(*str!=0)
 {
  if(!bHz)
  {
   if(*str>0x80)bHz=1;
   else
   {
    if(x>(x0+width-size/2))
    {
     y+=size;
     x=x0;
    }
    if(y>(y0+height-size))break;
    if(*str==10)
    {
     printf("回车\r\n");
     y+=size;
     x=x0;
     str++;
     continue; 
    }
    else
    {
     ShowChar(x,y,*str,size,mode);
    }
    str++;
    x+=size/2; 
   }
  }
  else
  {
   bHz=0;
   if(x>(x0+width-size))
   {
    y+=size;
    x=x0;
   }
   if(y>(y0+height-size))break;
   Show_Font(x,y,str,size,mode);
   str+=2;
   x+=size; 
  }
 }
}
上面红色的部分  原子哥是这样写的
if(*str==13)
{         
         y+=size;
         x=x0;   
         str++;  
}    没实现换行功能     我测试了一下  \n的值为10   ,我就改成了if(*str==10)   然后又加了个continue;  才实现换行的功能
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
 楼主| 发表于 2013-6-6 23:01:35 | 显示全部楼层
Show_Str(0,40,200,50,"我叫李艳超\n来自内蒙古",16,1);    在主函数写了个这么个东西  


回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-6 23:10:41 | 显示全部楼层
\r\n,也给接了,干脆实现个printf到液晶的函数,比较有意思..
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
 楼主| 发表于 2013-6-6 23:11:57 | 显示全部楼层
回复【2楼】liyanchao153:
---------------------------------
每次发完帖子发现按错了    \r\n才是回车   

但是程序得改成这样str+=2; continue;  

if(*str==13)
{
printf("回车\r\n");
y+=size;
x=x0;
str+=2;
continue;
}

如果是这样
if(*str==13)//换行符号,回车符的十进制表示
{         
y+=size;
x=x0;   
str++;  
}  
else LCD_ShowChar(x,y,*str,size,mode);

str++;  
x+=size/2;
那么回车之后显示时候就会出现  x!=x0    而是x+=size/2;     那么就与上一行的字不对齐
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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