极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21167|回复: 4

请教在 tft屏上显示中文的问题

[复制链接]
发表于 2015-12-13 23:09:32 | 显示全部楼层 |阅读模式
这个是我从tb上买的一块2.4寸 tft arduino模块,显示英文,画个圆什么的都有现成函数,直接调用即可,就是到现在我还没弄明白如何才能显示中文。查了许多许多的资料,取模软件也都有,但依然无法将这块知识联系起来,弄了3个晚上了,实在有些乱,在此求大神指点吧。
一、使用的是ILI9341_V2.0的库
假如取模出来的数组设为const unsigned char hanzi[????]{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00},

请问 hanzi[????]数组内部定义多少根据什么来算呢

二、卖家提供的资料中说下面代码是匹配的16*16的显示函数
       void Fast_DrawFont_GBK16(uint x, uint y, uint fc, uint bc, uchar *s)
{
        unsigned char i,j;
        unsigned short k;
        uint HZnum;
        HZnum=sizeof(hz16)/sizeof(typFNT_GBK16);
        while(*s)
        {       
                if((*s) >= 128)
                {               
                        for (k=0;k<HZnum;k++)
                        {
                          if ((hz16[k].Index[0]==*(s))&&(hz16[k].Index[1]==*(s+1)))
                          {         Lcd_SetRegion(x,y,x+16-1,y+16-1);
                                    for(i=0;i<16*2;i++)
                                    {
                                                for(j=0;j<8;j++)
                                            {
                                                        if(hz16[k].Msk[i]&(0x80>>j))        LCD_WriteData_16Bit(fc);
                                                        else
                                                        {
                                                        if (fc!=bc) LCD_WriteData_16Bit(bc);
                                                        }
                                                }
                                        }
                                       
                                       
                                }
                        }
                s+=2;x+=16;
                }
        }               
}               
                else
                s+=1;
               
        }
}
            问题1、这个代码理解起来有难度,大神可以简单帮我说几句理清一下思路吗,个人认为这个是扫描汉字(擦,你这说的不是废话吗!@?)
            问题2、这个代码如何与数组联系起来,直接调用Fast_DrawFont_GBK16函数就可以直接显示出一个汉字(高手勿喷,就不会这里的转化,有数组,有函数,怎么联系?)
           问题3、麻烦给一个只显示一个汉字的demo,我好照葫芦画瓢

问得有点多,先谢谢大家咯,问题三可以不回答,再次感谢
           

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2015-12-13 23:14:09 | 显示全部楼层
自己帮忙顶一下,7点多搞到11点多,辛苦了····
回复 支持 反对

使用道具 举报

发表于 2015-12-15 12:48:55 | 显示全部楼层
你好。你想显示什么东西。可以简单介绍一下吗?
回复 支持 反对

使用道具 举报

发表于 2015-12-16 20:00:03 | 显示全部楼层
大概看了看这个还是很简单的啊,显示的核心部分就是  if(hz16[k].Msk[i]&(0x80>>j))        LCD_WriteData_16Bit(fc);
                                                        else
                                                        {
                                                        if (fc!=bc) LCD_WriteData_16Bit(bc);
这里的方式跟LED点阵的驱动方法是一样的 fc应该是代表的 font color ;汉字 HZ16的意思 是字体字模的数组
HZnum=sizeof(hz16)/sizeof(typFNT_GBK16);//这句话是计算字的个数
hz16[k].Msk[i]&(0x80>>j)//这是取的第k-1个字的第一个uchar 然后进行显示
大概就是这样吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-20 22:56:04 | 显示全部楼层
天下无双 发表于 2015-12-16 20:00
大概看了看这个还是很简单的啊,显示的核心部分就是  if(hz16[k].Msk&(0x80>>j))        LCD_WriteData_16B ...

还是不太理解,大神能给一个简单的显示汉字的源程序吗,我好照葫芦画瓢
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 23:01 , Processed in 0.055980 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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