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] ... 下一页 >>