五、案例使用
5.1 读取GBK字库文件(LCD汉字显示)
产品开发中,如果设备带有LCD显示屏,一般会显示各种文字提示,或者机器操作说明,显示中文需要字库,为了方便字模的提取,可以将字库文件制作好之后放到SD NAND上,通过文件系统打开字库文件,读取字模进行显示。

下面贴出文件系统读取字模的核心代码:
/*
函数功能: 显示GBK字库数据
          u32 x  范围0~319
          u32 y  范围0~479
          u32 size  数据的宽度(必须是8的倍数)  是正方形
          u8 *p  中文
说明: 取模横向坐标必须保证是8的倍数
*/

void ILI9341_DisplayGBKData(u32 x,u32 y,u32 size,u8 *p)
{
                FIL fp;
                UINT br;
                u8 L,H;
          u32 Addr;
          u16 font_size=size/8*size; //字体占用的点阵码字节大小
          u8 *buff=NULL;
                H=*p;
                L=*(p+1);
                if(L<0x7f)L=L-0x40;
                else L=L-0x41;
                H=H-0x81;
                Addr=(190*H+L)*font_size; //中文在字库里的偏移量
                buff=malloc(font_size);   //使用的堆空间
                if(buff==NULL)return;

                switch(size)
                {
                        case 16:
                                if(f_open(&fp,"0:/font/gbk16.DZK",FA_READ)!=FR_OK)
                {
                      printf("f_open error.\r\n");
                }
                                f_lseek(&fp,Addr);
                                f_read(&fp,buff,font_size,&br);
                                f_close(&fp);

                                break;
                        case 24:
                f_open(&fp,"0:/font/gbk24.DZK",FA_READ);
                                f_lseek(&fp,Addr);
                                f_read(&fp,buff,font_size,&br);
                                f_close(&fp);
                                break;
                        case 32:
                               
                                break;
                }
                //显示中文
                ILI9341_DisplayData(x,y,size,size,buff);
               
                //释放空间
                free(buff);
}

这是读取字模,显示的效果:

(, 下载次数: 102)
继续阅读本篇相关更多标签
举报
您需要登录后才可以评论 登录 立即注册
全部回复 0
暂无评论,快来抢沙发吧