uint16_t num=sizeof(CH_BUF)/3;//求出数组中共有多少个汉字(一个汉字+'\0'共占3个字节)
for(i=0;i<num;i++)
{
font=i*32;//每个汉字有32个像素点
if( (ch[0] == CH_BUF[i][0]) && (ch[1]== CH_BUF[i][1])) //在数组查找有这个汉字
{
for(j=0;j<16;j++)//一个字分共两部分,一部分16个像素点
{
for(t=0;t<8;t++)//8个字节
{
point.x = x;
point.y = y;
if(chinese[font]&1<<t)
{
DrawPoint(&point, pointColor);//画点函数
}
else
{
DrawPoint(&point, backColor);
}
x++;//像素加
}
font++;//指向下一个字节
for(t=0;t<8;t++)
{
point.x = x;
point.y = y;
if(chinese[font]&1<<t)
{
DrawPoint(&point, pointColor);
}
else
{
DrawPoint(&point, backColor);
}
TFT_LCD_WriteData(color); //16位
x++;
}
x=x0;//从头显示
y++;
font++;
}
}
}
//画点
void DrawPoint(POINT *point, uint16_t color)
{
SetAddress(point->x, point->y, point->x, point->y);
TFT_LCD_WriteData(color);
}
//设置光标位置
static void SetAddress(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{
WriteReg(0x2A);//列地址设置
WriteData8(x1 >> 8);
WriteData8(x1);
WriteData8(x2 >> 8);
WriteData8(x2);
WriteReg(0x2B);//行地址设置
WriteData8(y1 >> 8);
WriteData8(y1);
WriteData8(y2 >> 8);
WriteData8(y2);
WriteReg(0x2C); //内存写入
}
汉字取模方式为逐行式