OpenEdv-开源电子网

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

LCD显示,得到字符对应点阵所占字节数式子的得来

[复制链接]

11

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-4-13
在线时间
17 小时
发表于 2015-4-25 17:35:02 | 显示全部楼层 |阅读模式
5金钱

图中 u8 csize=(size/8+((size%8)?1:0))*(size/2);

这个式子是怎么得到的?新手,还请原子哥耐心指点,谢谢!

最佳答案

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

楼主其实用几个数值代入式子计算一下,再看下对应的字符在数组中有多少个字节就知道了 比如16*8字体,将16代入式子中,得到(16 / 8 + ((16 % 8) ? 1:0)) * (16 / 2) = (2 + 0) * 8 = 16,所以在字符数组中此字符占用了16个字节空间
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-4-25 17:35:03 | 显示全部楼层
楼主其实用几个数值代入式子计算一下,再看下对应的字符在数组中有多少个字节就知道了

比如16*8字体,将16代入式子中,得到(16 / 8 + ((16 % 8) ? 1:0)) * (16 / 2) = (2 + 0) * 8 = 16,所以在字符数组中此字符占用了16个字节空间
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2013-1-23
在线时间
4 小时
发表于 2015-8-6 09:57:15 | 显示全部楼层
回复【2楼】八度空间:
---------------------------------
原子的公式针对的是长宽相等的点阵字符。你这样套公式有点不妥吧。

这样计算是否正确:csize = (size1*size2)/8 + ((size1*size2)%8?1:0)。
例如:16*8字体,csize = (16*8)/8+((16*8)%8?1:0)=16;

但是对于12*12字体,
原子的公式 = (12/8 + ((12%8)?1:0))*(12/2) = 12
我的公式 = (12*12)/8 + ((12*12)%8?1:0) = 18

我所说的计算公式是参考网上的,只是不知道为什么和原子的公式计算的不一样?
12*12的点阵字符难道不是占用18个字节吗?
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-8-6 22:12:35 | 显示全部楼层
回复【3楼】浮生长恨:
---------------------------------
宽度是高度的一半,这是原子哥或者大部分的用法,其他的琢磨一下即可,不过一般这样够用了,特殊除外
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

1

主题

374

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1326
金钱
1326
注册时间
2014-7-23
在线时间
421 小时
发表于 2015-8-7 09:48:48 | 显示全部楼层
回复【3楼】浮生长恨:
---------------------------------
字符是宽度是高度的一半,如果是汉字就相等。
不用盯着公式算,想想字符(你上面的字体1206),宽是6,也就是一个字节(8),高是12,也就是总共12*1个字节,所以等于12。
如果是长宽相等,12*12字体是应该是2*12,共24字节,而不是18。.
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2016-10-13
在线时间
4 小时
发表于 2016-10-13 22:30:43 | 显示全部楼层
?????
回复

使用道具 举报

yangyh80 该用户已被删除
发表于 2017-1-12 21:04:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

4

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2017-4-5
在线时间
24 小时
发表于 2017-4-8 17:40:52 | 显示全部楼层
不明白是啥意思
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-5
在线时间
10 小时
发表于 2017-7-7 16:00:08 | 显示全部楼层
u8 csize=(size/8+((size%8)?1:0))*(size);//得到字体一个字符对应点阵集所占的字节数
楼上的大神们,能帮我算算这个公式的值吗?字体是12号。
我把12带入公式,得到的值是30,这个数字很奇怪。
12号字体,用的是16*16点阵,我读数据肯定读16*16点阵数据啊,也就是2*16=32个字节的数据,
除非是特殊取模,按照标准就是读取32个字节。我们显示的汉字的点阵大小是12*12。
还请大神不惜赐教
回复

使用道具 举报

4

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2016-8-29
在线时间
128 小时
发表于 2017-8-16 16:05:09 | 显示全部楼层
yangyh80 发表于 2017-1-12 21:04
刚好看到,经过理解,结论如下:
1、字符宽度(size/2)=高度(size)一半。
2、字符取模为竖向取模,即每列 ...

解释得好到位
回复

使用道具 举报

17

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2018-4-28
在线时间
58 小时
发表于 2018-11-30 15:36:51 | 显示全部楼层
三三三 发表于 2017-7-7 16:00
u8 csize=(size/8+((size%8)?1:0))*(size);//得到字体一个字符对应点阵集所占的字节数
楼上的大神们,能帮 ...

16*16点阵,是16号字体,带入的size是16而不是12,    12号是电脑端转换的字体
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2019-8-17
在线时间
30 小时
发表于 2019-9-22 18:09:07 | 显示全部楼层
长16(有4bit无效,共2字节),宽6
2*6=12个字节,公式没毛病
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 21:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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