OpenEdv-开源电子网

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

MiniSTM32 7寸屏 字库问题

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-7-16
在线时间
2 小时
发表于 2013-7-16 20:16:10 | 显示全部楼层 |阅读模式
    用MiniSTM2的开发板  在原例程上增加了GBK24的字体,字体可以更新  但显示的时候就成图片那样了    设置的是最后俩行用24的字体  前面的都没改      增加了GBK24的字库   没有修改UNIGBK是不是这个原因    UNIGBK要怎么修改?
IMAG0265.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-7-16
在线时间
0 小时
发表于 2013-7-16 20:22:43 | 显示全部楼层
根据我修改字体的经验:
1、第一步加上你的字体的字模
2、第二步修改一下例程中的Show_Char()函数中调用字体的那部分
附注(修改的函数需要根据你的字体大小来说明的,原子哥的例程是按行来取字模的,并且一行最多8个)
晴喧o(︶︿︶)o
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-16 21:33:06 | 显示全部楼层
回复【楼主位】zm92009:
---------------------------------
和unigbk无关.
我们的例程显示汉字只支持12和16,要支持其他汉字,就得改底层代码.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-7-16
在线时间
2 小时
 楼主| 发表于 2013-7-16 23:29:05 | 显示全部楼层
回复【3楼】正点原子:
------------------------------
原子哥  这个要怎么改?   屏这么大字体实在太小了
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-7-16
在线时间
2 小时
 楼主| 发表于 2013-7-16 23:35:00 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
还有  为什么原来前面的16也会出错?
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-7-16
在线时间
2 小时
 楼主| 发表于 2013-7-16 23:38:41 | 显示全部楼层
回复【2楼】慧(^o^)/羽:
---------------------------------
你修改过吗? 有修改过的例程吗? 第一次做这个不太明白 有的话发我一份963912944@qq.com 对比研究比较快一些  谢谢了
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2013-7-17 00:02:47 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

10

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-7-16
在线时间
0 小时
发表于 2013-7-17 13:41:56 | 显示全部楼层
回复【6楼】zm92009:
---------------------------------
资料是有,改的地方不好找我直接放这里吧,代码如下(这是用PCtoLCD2000 中48*48大小来按行取字模的):
if (size==48)  
{
temp=asc2_2020[num][pos];
temp2=asc2_2020[num][pos+1];
pos+=1;
while(zcount<16)
{
if (zcount<8)
 temp4=temp;
 else 
 temp4=temp2;
for(t=0;t<8;t++)
    {                 
        if(temp4&0x01)POINT_COLOR=colortemp;
else OINT_COLOR=BACK_COLOR;
LCD_DrawPoint(x,y);
temp4>>=1; 
x++;
zcount++;
    }
}
zcount=0;
x=x0;
y++;
}
其实很简单就是一个一个像素点画上去就行啦。
晴喧o(︶︿︶)o
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-7-16
在线时间
2 小时
 楼主| 发表于 2013-7-17 16:59:29 | 显示全部楼层
回复【8楼】慧(^o^)/羽:
---------------------------------
可不可以注释一下主要语句   还有那个asc2_2020数组是怎样产生的    字库是用ts3生成的吗?  谢谢了
回复 支持 反对

使用道具 举报

10

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2013-7-16
在线时间
0 小时
发表于 2013-7-17 18:38:32 | 显示全部楼层
回复【6楼】zm92009:
---------------------------------:
if (size==48)  
{
temp=asc2_2020[num][pos];       //这个数组是用PCtoLCD2000取模出来的因为取模出来的更正一下取的是48*32
temp2=asc2_2020[num][pos+1];
pos+=1;
while(zcount<16)                       //因为取模出来的字模是按照一个像素1bit  然后按照8bit 一个数排列的如0X85
{                                                //而实际上48*32的像素为48*16 就是说按行取模其实一行2个bytes 即16bit
if (zcount<8)                              //接下来就是按行一像素一个像素画  按原子哥的例程改的
 temp4=temp;
 else 
 temp4=temp2;
for(t=0;t<8;t++)
    {                 
        if(temp4&0x01)POINT_COLOR=colort
......
---------------------------------
晴喧o(︶︿︶)o
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2013-7-17 18:47:06 | 显示全部楼层
感谢分享了
回复 支持 反对

使用道具 举报

9

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2012-6-9
在线时间
0 小时
发表于 2013-8-12 11:38:08 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
12的好你也出错呢,原子,还要改哪里吗。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 07:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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