这段代码的意思不太理解,具体问题在代码后面标注了

void ShowChar(unsigned char pos,unsigned char c)
{
unsigned char p;
if (pos>=0x10)
p=pos+0xb0; //为什么不是POS+0XC0呢?
else
p=pos+0x80;
WriteCommand (p);//write command
WriteData (c); //write data
}

void ShowString (unsigned char line,char ptr)
{
unsigned char l,i;
l=line<<4; //不明白为什么左移四位就能实现16个字符的循环显示?
for (i=0;i<16;i++)
ShowChar (l++,
(ptr+i));
}

这个函数是这样的,你调用的时候要.要输入是在第一行显示数据还是第二行显示(pos值),
第一行则pos值为0x00,
第二行则为0x10.
所以如果是 第一行显示则 P=0x00+0x80;//p值为0x80
第二行显示则 P=0x10+0xb0; //p值为0xc0 液晶的命令中

img