|
|
主程序調(diào)用部分:
Lcd12864_Write16CnCHAR(0, i, "司公限有技科中普");
這個(gè)顯示程序其實(shí)我能大概理解,但是對(duì)于顯示順序卻不理解,
1.為什么是從右到左呢?
2.如果是LCD鏡像顯示所以導(dǎo)致從右到左,但是這個(gè)程序是向?qū)?yīng)的頁(yè)以及列數(shù)地址去寫(xiě)數(shù)據(jù),這也有點(diǎn)說(shuō)不通
希望各位幫幫我,有時(shí)并不需要太多的解釋?zhuān)粌删浣鹧员隳芙忾_(kāi)困擾小弟許久的問(wèn)題,多謝大家
先上程序:
uchar Lcd12864_Write16CnCHAR(uchar x, uchar y, uchar *cn)
{
uchar j, x1, x2, wordNum;
//--Y的坐標(biāo)只能從0到7,大于則直接返回--//
if(y > 7)
{
return 0;
}
//--X的坐標(biāo)只能從0到128,大于則直接返回--//
if(x > 128)
{
return 0;
}
y += 0xB0; //求取Y坐標(biāo)的值
//--設(shè)置Y坐標(biāo)--//
LcdSt7565_WriteCmd(y);
while ( *cn != '\0') //在C語(yǔ)言中字符串結(jié)束以‘\0’結(jié)尾
{
//--設(shè)置Y坐標(biāo)--//
LcdSt7565_WriteCmd(y);
x1 = (x >> 4) & 0x0F; //由于X坐標(biāo)要兩句命令,分高低4位,所以這里先取出高4位
x2 = x & 0x0F; //去低四位
//--設(shè)置X坐標(biāo)--//
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2); //低4位
for (wordNum=0; wordNum<50; wordNum++)
{
//--查詢(xún)要寫(xiě)的字在字庫(kù)中的位置--//
if ((CN16CHAR[wordNum].Index[0] == *cn)
&&(CN16CHAR[wordNum].Index[1] == *(cn+1)))
{
for (j=0; j<32; j++) //寫(xiě)一個(gè)字
{
if (j == 16) //由于16X16用到兩個(gè)Y坐標(biāo),當(dāng)大于等于16時(shí),切換坐標(biāo)
{
//--設(shè)置Y坐標(biāo)--//
LcdSt7565_WriteCmd(y + 1);
//--設(shè)置X坐標(biāo)--//
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2); //低4位
}
LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);
}
x += 16;
}//if查到字結(jié)束
} //for查字結(jié)束
cn += 2;
} //while結(jié)束
return 1;
}
|
|