首页 > 代码库 > TFTLCD汉字显示

TFTLCD汉字显示

TFTLCD上显示汉字的相关准备工作:

1、硬件平台:STM32开发板、TFTLCD显示模块

2、代码编辑、编译:Keil uVision4

3、程序下载方法:使用“mcuisp”,利用串口助手将程序下载到开发板

4、取模工具:TFTLCD显示汉字需要用到的取模软件如下图

5、硬件电路设计:

LCD_LED 对应 PC10;
LCD_CS 对应 PC9;
LCD _RS 对应 PC8;
LCD _WR 对应 PC7;
LCD _RD 对应 PC6;
LCD _D[17:1] 对应 PB[15:0];


在这里只列出了硬件原理图,在显示汉字的时候会用到前面章节学习到的内容TFTLCD显示。这里只讲解汉字显示方法。接下来介绍与汉字显示相关的函数。



//画点
//x,y:坐标
//POINT_COLOR:此点的颜色

void LCD_DrawPoint(u16 x,u16 y)
{
LCD_SetCursor(x,y);//设置光标位置 
LCD_WriteRAM_Prepare();//开始写入GRAM
LCD->LCD_RAM=POINT_COLOR; 
}
   
//在LCD上的(x,y)处画点
//color:点的颜色

void LCD_Draw_Point(u16 x,u16 y,u16 color)
{
u16 temp;
temp=POINT_COLOR;
POINT_COLOR=color;
   
LCD_DrawPoint(x,y);
POINT_COLOR=temp;
}


//在指定位置 显示1个16*16的汉字
//(x,y):汉字显示的位置
//index:tfont数组里面的第几个汉字
//color:这个汉字的颜色
//

void LCD_Show_CH_Font16(u16 x,u16 y,u8 index,u16 color)
{  
   
u8 temp,t,t1;
u16 y0=y;  
    for(t=0;t<32;t++)//每个16*16的汉字点阵 有32个字节
    {   
if(t<16)temp=tfont16[index*2][t];      //前16个字节
else temp=tfont16[index*2+1][t-16];    //后16个字节                         
        for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//画实心点
else LCD_Draw_Point(x,y,BACK_COLOR);   //画空白点(使用背景色)
temp<<=1;
y++;
if((y-y0)==16)
{
y=y0;
x++;
break;
}
}   
    }          
}

//在指定位置 显示1个24*24的汉字
//(x,y):汉字显示的位置
//index:tfont数组里面的第几个汉字
//color:这个汉字的颜色

void LCD_Show_CH_Font24(u16 x,u16 y,u8 index,u16 color)
{  
   
u8 temp,t,t1;
u16 y0=y;  
    for(t=0;t<72;t++)//每个24*24的汉字点阵 有72个字节
    {   
if(t<24)temp=tfont24[index*3][t];           //前24个字节
else if(t<48)temp=tfont24[index*3+1][t-24]; //中24个字节                         
        else temp=tfont24[index*3+2][t-48];         //后24个字节
   for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//画实心点
else LCD_Draw_Point(x,y,BACK_COLOR);   //画空白点(使用背景色)
temp<<=1;
y++;
if((y-y0)==24)
{
y=y0;
x++;
break;
}
}   
    }          
}


注意:
1、该文章采用的是将取模后的汉字利用头文件保存到工程,然后编译下载到开发板。
这种方法所支持的汉字仅限头文件中包含的经过取模后的汉字。
2、显示汉字函数与取模方法是存在对应关系,取模方法不一样对应的汉字显示函数是不一样的。
本文章上面有取模软件的设置方法,而下面的汉字显示函数是与上面有取模软件的设置方法对应的。


TFTLCD汉字显示