硬汉嵌入式论坛

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

[客户分享] 分享一个在V5开发板上读取 RA8875 内置字库子模的程序,对字体要求高的可以看看

[复制链接]

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
发表于 2021-4-3 11:10:17 | 显示全部楼层 |阅读模式
本帖最后由 雷鹏 于 2021-4-6 08:31 编辑

/*
*********************************************************************************************************
*        函 数 名: DispADInitFace
*        功能说明: 显示初始界面
*        形    参: 无
*        返 回 值: 无
*********************************************************************************************************
*/
static void DispMainMenuInitFace(void)
{
        char DispStr[32];
        
  static char DispChar='A';
        uint16_t Pn_x=100;
        uint16_t Pn_y=100;
        uint16_t font_width;
        uint16_t font_height;
        uint16_t char_width; /*字符宽度*/
        uint16_t i,j;
        uint16_t pixel;
        
        uint16_t count=0; /*计数器*/
        uint16_t FontData=0; /*字模数据*/
        
        char ProData[]={" !\"#$%&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"};
        //char ProData[]={"ABC"};
        uint16_t ProCount=0;
        FONT_T tFont;                        /* 定义一个字体结构体变量,用于设置字体参数 */
        /* 设置字体参数 */
        {
                tFont.FontCode = FC_RA8875_32;                /* 字体代码 16点阵 */
                tFont.FrontColor = CL_BLACK;        /* 字体颜色 */
                tFont.BackColor = CL_WHITE;                /* 文字背景颜色 */
                tFont.Space = 0;                                /* 文字间距,单位 = 像素 */
        }
        
        /*设置读取的高宽*/
        switch(tFont.FontCode)
        {
               
                case FC_RA8875_24 :
                        font_width=24;
                        font_height=24;
                  Pn_y=Pn_x;
                break;
               
                case FC_RA8875_32 :
                        font_width=32;
                        font_height=32;
                  Pn_y=Pn_x;
                break;
        }
               
               
        
        
        while(ProData[ProCount])
        {
                DispChar=ProData[ProCount++];
                sprintf(DispStr,"%c",DispChar);
                LCD_DispStrEx(Pn_x, Pn_x, DispStr, &tFont, 100,ALIGN_LEFT);        
               
                printf("\r\n0x%02x,// %c  \r\n" ,DispChar,DispChar );
               
                /*读出字体数据*/
                /**/
                char_width=0;
                for(i=0;i<font_height;i++)
                {
                        /*打印字模*/
                        count=0;
                        FontData=0;
                        
                        for(j=0;j<font_width;j++)
                        {
                                pixel=LCD_GetPixel(Pn_x+j, Pn_y+i);
                                if(pixel>100)
                                {
                                        //printf(".");
                                }
                                else
                                {
                                        FontData=FontData+1;
                                        if(char_width<=j)
                                                char_width++;
                                }
                                count++;
                                if(count==8)
                                {
                                        count=0;
                                        //printf("0x%02x,",FontData);
                                        FontData=0;
                                }
                                else
                                {
                                        FontData=FontData<<1;
                                }
                        }
                }
                char_width=char_width+1;
                printf("0x%02x,//宽度= 0x%02d\r\n",char_width,char_width);
               
        
               
                /*读出字体数据*/
                /**/
                char_width=0;
                for(i=0;i<font_height;i++)
                {
                        /*打印字模*/
                        count=0;
                        FontData=0;
                        
                        for(j=0;j<font_width;j++)
                        {
                                pixel=LCD_GetPixel(Pn_x+j, Pn_y+i);
                                if(pixel>100)
                                {
                                        //printf(".");
                                }
                                else
                                {
                                        FontData=FontData+1;
                                        if(char_width<=j)
                                                char_width++;
                                }
                                count++;
                                if(count==8)
                                {
                                        count=0;
                                        printf("0x%02x,",FontData);
                                        FontData=0;
                                }
                                else
                                {
                                        FontData=FontData<<1;
                                }
                        }

                        printf("//%02d ",i);
                        /*打印字模图形*/
                        for(j=0;j<font_height;j++)
                        {
                                pixel=LCD_GetPixel(Pn_x+j, Pn_y+i);
                                if(pixel>100)
                                        printf(".");
                                else
                                        printf("@");
                        }
                        
                        printf("\r\n");        
                }
                //printf("字模宽度= 0x%02x\r\n",char_width);               
                printf("\r\n");        
        //DispChar++; /*自++ 方便下次转换*/
        }
}

武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-4-4 10:04:59 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-4-6 06:57:08 | 显示全部楼层
补充之前专门做的例子:

V5开发板RA8875屏和ili9488屏之裸机方式汉字显示----小字库,NOR Flash和RA8875屏自带字库
http://www.armbbs.cn/forum.php?m ... 4909&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
 楼主| 发表于 2021-5-9 10:13:27 | 显示全部楼层
eric2013 发表于 2021-4-6 06:57
补充之前专门做的例子:

V5开发板RA8875屏和ili9488屏之裸机方式汉字显示----小字库,NOR Flash和RA8875 ...

我这个是想把 RA8875 自带字库的字模读出来 放到429的板子上显示。
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 10:26 , Processed in 0.172277 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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