CTT117—TFTLCD-2.4寸显示汉字

1.LCD汉字显示是通过汉字取模软件将汉字转换成十六进制二维数组,控制LCD点阵的亮暗显示汉字。

2。这里所用的汉字取模软件是pctolcd2002

3.pctolcd2002的使用:

   

3. 1.选择模式为字符模式  3.2.选择选项配置  一般配置如图,每行点阵显示数调到最高,可使每行数组表示一个汉字。

3.3.上述配置完成后可在生成字模框中生成字模,并且可以调节字宽与字高,如图

4.代码实现

4.1,LCD驱动中的汉字显示函数(请确保LCD其他配置正确)

       

//在指定位置显示一个汉字
//x,y:起始坐标
//num:要显示的汉字数组的初始下标
//snum:要显示的汉字个数
//size:字体大小 12/16/24
//mode:叠加方式(1)还是非叠加方式(0)
void LCD_ShowChinese2(u16 x,u16 y,u8 num,u8 snum,u8 size,u8 mode)
{                                           
    u8 csize;
    u8 temp,t1,t,t2;    
    u16 y0=y;
    csize=(2*(size/8+((size%8)?1:0))*(size/2));        //得到字体一个字符对应点阵集所占的字节数    
    for(t2=0;t2<snum;t2++)
    {
    for(t=0;t<csize;t++)
    {   
        if(size==12)temp=chinese_12[num+t2][t];          //调用1206字体
        else if(size==16)temp=chinese_16[num+t2][t];    //调用1608字体
        else if(size==24)temp=chinese_24[num+t2][t];    //调用2412字体
        else return;                                //没有的字库
        for(t1=0;t1<8;t1++)
        {                
            if(temp&0x80)LCD_Fast_DrawPoint(x,y,TextColor);
            else if(mode==0)LCD_Fast_DrawPoint(x,y,BackColor);
            temp<<=1;
            y++;                                
            if(y>=TFT_Height)return;        //超区域了
            if((y-y0)==size)
            {
                y=y0;
                x++;
                if(x>=TFT_Width)return;    //超区域了
                break;
            }    
        }       
     } 
    }                                              
}

这里只配置12/16/24字体(即字模的宽高设置请保持一置)

新建字库.h文件把生成的字模数组保存在其中,数组名命名为chinese_24[][80],chinese_16[][80],chinese_12[][80],与驱动中调用字体数组名相同。

数组内容即保存的字模数组。(如图)

5.main()函数调用

只需在while(1)中调用汉字显示函数

 

6.下载实现

 

 7.程序中并未使用最初的<LCD汉字显示>数组,而是直接使用原先写的<LCD显示>数组,原理相同,学习之后可在字模软件中生成不同汉字,在LCD显示。

原文地址:https://www.cnblogs.com/6F3BUK/p/14051638.html