联系方式 Contact


苏州高沃电子有限公司

SUZHOU GOVO TEK LIMITED


地址:苏州市吴中经济开发区天鹅荡路2号友新工业园B3栋4楼

邮编:215000

电话:0512-66035036

传真:0512-66035035

手机:吴先生 15851445511

邮件:sales@govotek.com

网址:http://www.govotek.com

搜索 Search
你的位置:首页 > 新闻动态 > 专题报道

TFTLCD上显示汉字

2018-11-20 16:53:16点击:
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;
}
}    
    }          
}