OpenEdv-开源电子网

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

STM32 MINI 汉字显示实验问题 坐标Y的值为什么大于239就不好使了

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-4-14
在线时间
0 小时
发表于 2015-4-14 14:58:07 | 显示全部楼层 |阅读模式
5金钱
例如:
          Show_Str(90,239,"门锁设置",16,0);    这样就可以显示
          但是我想把这四个字放在最下方,于是就这样:
           Show_Str(90,280,"门锁设置",16,0);    

理论上x的范围0~239   Y的范围0~319,但是为什么这样就不好使了,而且显示出来的效果好像是乱码,好像有点类似于横屏显示。

附加上例程里的这个函数:
//在指定位置开始显示一个字符串    
//支持自动换行
//(x,y):起始坐标
//str :字符串
//size :字体大小
//mode:0,非叠加方式;1,叠加方式    
//正点原子@HYW
//CHECK:09/10/30   
void Show_Str(u8 x,u8 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==13)//换行符号
       {         
           y+=size;
x=0;
           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;//下一个汉字偏移    
        }  
    }   
}     

最佳答案

查看完整内容[请看2#楼]

代码的bug u8应该改为u16
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-14 14:58:08 | 显示全部楼层
代码的bug
u8应该改为u16
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-4-14
在线时间
0 小时
 楼主| 发表于 2015-4-15 09:15:52 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢站长!!!!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-4-14
在线时间
0 小时
 楼主| 发表于 2015-4-15 09:42:51 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我把那个函数改成这样Show_Str(u16 x,u16 y,u8*str,u8 size,u8 mode)。
问题依然没有得到解决
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-4-14
在线时间
0 小时
 楼主| 发表于 2015-4-15 09:57:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不好意思,是我傻了
把这个也变成u16就好使了
Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode)
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-4-14
在线时间
0 小时
 楼主| 发表于 2015-4-15 11:43:01 | 显示全部楼层
改成U16后,现在Y的最大值最多就能设置255了,郁闷。。。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 15:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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