硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4699|回复: 9
收起左侧

[有问必答] bsp_tft_lcd.c中关于字库的相关疑问

[复制链接]

1

主题

8

回帖

1

积分

新手上路

积分
1
发表于 2015-10-22 13:34:35 | 显示全部楼层 |阅读模式
1.uint16_t LCD_GetStrWidth(char *_ptr, FONT_T *_tFont)函数中使用了:
            switch(_tFont->FontCode)
            {
                case FC_RA8875_16:
                    font_width = g_RA8875_Ascii16_width[code1 - 0x20];
                    break;
               
                case FC_RA8875_24:
                    font_width = g_RA8875_Ascii24_width[code1 - 0x20];
                    break;
               
                case FC_RA8875_32:
                    font_width = g_RA8875_Ascii32_width[code1 - 0x20];
                    break;
           }
想知道g_RA8875_Ascii16_width、 g_RA8875_Ascii24_width、 g_RA8875_Ascii32_width这三个数组是怎么生成的?

2.void _LCD_ReadAsciiDot(uint8_t _code, uint8_t _fontcode, uint8_t *_pBuf)中使用到的ASC12.c和ASC16.c这两个文件是怎么用的,这里面的数组
内容代表什么含义?应该怎样使用这个数组。解释下
    /* 将CPU内部flash中的ascii字符复制到buf */
    memcpy(_pBuf, &pAscDot[_code * (font_bytes / 2)], (font_bytes / 2));

谢谢咯,lcd驱动一直就困扰在这几个问题上。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107374
QQ
发表于 2015-10-22 15:08:47 | 显示全部楼层
1. 这个问题群主在群里面不是回复了吗。具体还真得请教他了。
2. 这个两个文件是来自ucdos的点阵字库文件。
     代表的是点阵数值。就是一个点一个点的像素点阵啊。
有个这个文件的,看了没,讲解已经比较清楚了:
1.png
回复

使用道具 举报

1

主题

8

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-10-22 15:15:06 | 显示全部楼层

回 eric2013 的帖子

eric2013:
1. 这个问题群主在群里面不是回复了吗。具体还真得请教他了。
2. 这个两个文件是来自ucdos的点阵字库文件。
     代表的是点阵数值。就是一个点一个点的像素点阵啊。
有个这个文件的,看了没,讲解已经比较清楚了:

.......
ASC12.C里面,点阵是从NULL开始的,还是从空格开始的?
回复

使用道具 举报

1

主题

8

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-10-22 15:17:18 | 显示全部楼层

回 fanruochen 的帖子

fanruochen:

ASC12.C里面,点阵是从NULL开始的,还是从空格开始的?
  
eric2013:
1. 这个问题群主在群里面不是回复了吗。具体还真得请教他了。
2. 这个两个文件是来自ucdos的点阵字库文件。
     代表的是点阵数值。就是一个点一个点的像素点阵啊。
有个这个文件的,看了没,讲解已经比较清楚了:

.......
ASC12.C里面,点阵是从NULL开始的,还是从空格开始的?

群主的这个文件,前面有12×33 个0x00,后面又添了个注释 // ‘ ’,难道这么多个0x00都指标是一个空格?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107374
QQ
发表于 2015-10-22 15:41:13 | 显示全部楼层

回 fanruochen 的帖子

fanruochen:ASC12.C里面,点阵是从NULL开始的,还是从空格开始的?

群主的这个文件,前面有12×33 个0x00,后面又添了个注释 // ‘ ’,难道这么多个0x00都指标是一个空格?
 (2015-10-22 15:17) 
这个asc12.c应该是后来改过一次吧,具体还得请教群主,或你研究一下
asc16.c是正常的,从空格开始。还有什么问题,继续交流下,

其实我自己已经很少看这些裸机代码了,基本都是群主做好后直接用。
没事,你要是有什么问题,我也可以看下是怎么个问题。
回复

使用道具 举报

1

主题

8

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-10-22 16:12:03 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个asc12.c应该是后来改过一次吧,具体还得请教群主,或你研究一下
asc16.c是正常的,从空格开始。还有什么问题,继续交流下,

其实我自己已经很少看这些裸机代码了,基本都是群主做好后直接用。
....... (2015-10-22 15:41) 
如果asc16.c是从空格开始的话,那这个lcd的代码里就有点问题。
    /* 将CPU内部flash中的ascii字符复制到buf */
    memcpy(_pBuf, &pAscDot[_code * (font_bytes / 2)], (font_bytes / 2));

    空格的ascii码是0x20,如果我现在要显示'A'(65),那么这个时候执行memcpy(_pBuf,&pAscDot[65* (32 / 2)],(32/2));得到的就是65+32 = 97(‘a’)咯。我刚才问群主,群主说asc12这个数组是从NULL字符开始的,就是按照标注的ascii码表来的,只不过把前面32个加上空格共计33个字符都做成了空格。那么asc12按照上面那个pAscDot[_code * (font_bytes / 2)],是能够正确的在数组中查询到对应的asc字符的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107374
QQ
发表于 2015-10-22 16:15:41 | 显示全部楼层

回 fanruochen 的帖子

fanruochen:如果asc16.c是从空格开始的话,那这个lcd的代码里就有点问题。
    /* 将CPU内部flash中的ascii字符复制到buf */
    memcpy(_pBuf, &pAscDot[_code * (font_bytes / 2)], (font_bytes / 2));

....... (2015-10-22 16:12)
一切按照群主说的为准,因为这些驱动都是群主在维护升级。
回复

使用道具 举报

1

主题

8

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-10-22 16:15:50 | 显示全部楼层

回 fanruochen 的帖子

fanruochen:如果asc16.c是从空格开始的话,那这个lcd的代码里就有点问题。
    /* 将CPU内部flash中的ascii字符复制到buf */
    memcpy(_pBuf, &pAscDot[_code * (font_bytes / 2)], (font_bytes / 2));

....... (2015-10-22 16:12) 
其实我看lcd和touch.c都是为了后面耍emWin打基础。呵呵。我买V4就是为了耍GUI啊。但是我看群主做的出厂程序,自己在lcd上模拟了那么多控件,按钮,觉得很强大,就想把它吃透。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107374
QQ
发表于 2015-10-22 16:17:56 | 显示全部楼层

回 fanruochen 的帖子

fanruochen:其实我看lcd和touch.c都是为了后面耍emWin打基础。呵呵。我买V4就是为了耍GUI啊。但是我看群主做的出厂程序,自己在lcd上模拟了那么多控件,按钮,觉得很强大,就想把它吃透。 (2015-10-22 16:15) 
这些跟emWin没关系,不需要这些知识。我是负责emWin的。
只要会打点和读点就够了。
回复

使用道具 举报

1

主题

8

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2015-10-22 16:36:21 | 显示全部楼层

回 eric2013 的帖子

eric2013:这些跟emWin没关系,不需要这些知识。我是负责emWin的。
只要会打点和读点就够了。 (2015-10-22 16:17) 
[s:151]刚才经过群主的解释,茅塞顿开。也只有平时上班能抽空看看代码,vxWorks也支持STM32了,不知道到时候和emWin能配合起来不?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-28 21:32 , Processed in 0.201740 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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