whjfordream 发表于 2015-12-13 23:09:32

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

这个是我从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.Index==*(s))&&(hz16.Index==*(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.Msk&(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,我好照葫芦画瓢

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

whjfordream 发表于 2015-12-13 23:14:09

自己帮忙顶一下,7点多搞到11点多,辛苦了····:):'(:$

dantian 发表于 2015-12-15 12:48:55

你好。你想显示什么东西。可以简单介绍一下吗?

天下无双 发表于 2015-12-16 20:00:03

大概看了看这个还是很简单的啊,显示的核心部分就是if(hz16.Msk&(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.Msk&(0x80>>j)//这是取的第k-1个字的第一个uchar 然后进行显示
大概就是这样吧

whjfordream 发表于 2015-12-20 22:56:04

天下无双 发表于 2015-12-16 20:00 static/image/common/back.gif
大概看了看这个还是很简单的啊,显示的核心部分就是if(hz16.Msk&(0x80>>j))      LCD_WriteData_16B ...

还是不太理解,大神能给一个简单的显示汉字的源程序吗,我好照葫芦画瓢
页: [1]
查看完整版本: 请教在 tft屏上显示中文的问题