OpenEdv-开源电子网

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

制作点阵字库遇到问题,大字体为什么只显示左半边?例如80X80的字体,而60X60的完美显示,求解

[复制链接]

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
发表于 2015-8-25 18:41:02 | 显示全部楼层 |阅读模式
5金钱
制作点阵字库遇到问题,大字体为什么只显示左半边?例如80X80的字体,而60X60的完美显示,求解

最佳答案

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

回复【7楼】owww: --------------------------------- 问题很简单,csize 溢出了。60你是侥幸成功的。80 超255,你需要定义成 u16
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-25 18:41:03 | 显示全部楼层
回复【7楼】owww:
---------------------------------
问题很简单,csize 溢出了。60你是侥幸成功的。80 超255,你需要定义成 u16
有软件开发经验,从0硬件基础学习STM32开发。
回复

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-25 18:41:03 | 显示全部楼层
还有t也别忘了。
有软件开发经验,从0硬件基础学习STM32开发。
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
 楼主| 发表于 2015-8-25 19:51:19 | 显示全部楼层
又没人做过啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-25 22:08:27 | 显示全部楼层
说明你的代码/字库有问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
 楼主| 发表于 2015-8-25 22:51:19 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
字库是没问题的,我制作60以下的字体就没问题,60以上的就每个数字都只显示一边,是不是要改程序才能用?应该怎么改?
回复

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-25 22:58:41 | 显示全部楼层
回复【4楼】owww:
---------------------------------
贴出来程序,才好知道怎么改呀
有软件开发经验,从0硬件基础学习STM32开发。
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
 楼主| 发表于 2015-8-25 23:08:01 | 显示全部楼层
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{    
    u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2); //得到字体一个字符对应点阵集所占的字节数
//设置窗口   
num=num-' ';//得到偏移后的值
for(t=0;t<csize;t++)
{   
if(size==12)temp=asc2_1206[num][t]; //调用1206字体
else if(size==16)temp=asc2_1608[num][t]; //调用1608字体
else if(size==24)temp=asc2_2412[num][t]; //调用2412字体
else if(size==60)temp=asc2_6030[num][t];//6030字体
else if(size==80)temp=asc2_8040[num][t];
else return; //没有的字库
for(t1=0;t1<8;t1++)
{    
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
temp<<=1;
y++;
if(x>=lcddev.width)return; //超区域了
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)return; //超区域了
break;
}
}    
}  
}   

60X60那个字体是可以用的,但是80X80只显示左半边。。。搜索别人的帖子,好像要改程序才能用更大的字体?
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
 楼主| 发表于 2015-8-25 23:08:39 | 显示全部楼层
回复【5楼】dragon7799:
---------------------------------
好,贴出来了,在楼下帮忙看看
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
 楼主| 发表于 2015-8-25 23:25:14 | 显示全部楼层




第一张是没改之前的
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2015-1-26
在线时间
1 小时
 楼主| 发表于 2015-8-25 23:27:38 | 显示全部楼层
回复【9楼】dragon7799:
---------------------------------
完美!成功了,非常感谢哈
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-15
在线时间
1 小时
发表于 2019-12-15 23:50:48 | 显示全部楼层
我也遇到这样的问题,还没解决
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-15
在线时间
1 小时
发表于 2019-12-15 23:51:49 | 显示全部楼层
我也遇到这样的问题,哈hi没解决
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 17:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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