4.2.3 TFT-LCD高级API函数编写
这里就例举几个常用的API函数,如清单4.5所示:
程序清单4.5 TFT-LCD高级函数编写
//在指定的坐标处开始显示字符串
// pcStr 字符串存放首地址 x0 起始坐标所在列的位置
// y0 起始坐标所在行的位置 color 字符串的显示颜色
void writeString(unsigned char *pcStr, unsigned short x0, unsigned short y0, unsigned short color)
{
unsigned short usIndex;
unsigned short usWidth = 0;
FNT_GB16 *ptGb16 = 0;
ptGb16 = (FNT_GB16 *)GBHZ_16;
while(1)
{
if(*pcStr == 0) {
break; /* 字符串结束 */
}
x0 = x0 + (usWidth); /* 调节字符串显示松紧度*/
if(*pcStr > 0x80) { /* 判断为汉字 */
if((x0 + 16) >= Gus_LCM_XMAX) { /* 检查剩余空间是否足够 */
x0 = 0;
y0 = y0 + 16; /* 改变显示坐标*/
if(y0 >= Gus_LCM_YMAX) { /* 纵坐标超出 */
y0 = 0;
}
}
usIndex = findHzIndex(pcStr);
usWidth = __writeOneHzChar((unsigned char *)&(ptGb16[usIndex].Msk[0]), x0, y0, color);
/* 显示字符 */
pcStr += 2;
} else { /* 判断为非汉字 */
if (*pcStr == '\r') { /* 换行 */
y0 = y0 + 16; /* 改变显示坐标 */
if(y0 >= Gus_LCM_YMAX) { /* 纵坐标超出 */
y0 = 0;
}
pcStr++;
usWidth = 0;
continue;
} else if (*pcStr == '\n') { /* 对齐到起点 */
x0 = 0;
pcStr++;
usWidth = 0;
continue;
} else {
if((x0 + 8) >= Gus_LCM_XMAX) { /* 检查剩余空间是否足够 */
x0 = 0;
y0 = y0 + 16; /* 改变显示坐标 */
if(y0 >= Gus_LCM_YMAX) { /* 纵坐标超出 */
y0 = 0;
}
}
usWidth = __writeOneASCII((unsigned char *)&ASCII[(*pcStr - 0x20)][0], x0, y0, color);/* ASCII码表21H的值对应区位码3区*/
pcStr += 1;
}
}
}
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>