该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
图放楼下
#ifdef CHAR_CODE
#include"charcode.h"
uchar Lcd12864_Write16CnCHAR(uchar x, uchar y, uchar *cn)
{
uchar j, x1, x2, wordNum;
y += 0xB0; //求取Y坐标的值
//--设置Y坐标--//
LcdSt7565_WriteCmd(y);
while ( *cn != '\0') //在C语言中字符串结束以‘\0’结尾
{
//--设置Y坐标--//
LcdSt7565_WriteCmd(y);
x1 = (x >> 4) & 0x0F; //由于X坐标要两句命令,分高低4位,所以这里先取出高4位
x2 = x & 0x0F; //去低四位
//--设置X坐标--//
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
for (wordNum=0; wordNum<50; wordNum++)
{
//--查询要写的字在字库中的位置--//
if ((CN16CHAR[wordNum].Index[0] == *cn)
&&(CN16CHAR[wordNum].Index[1] == *(cn+1)))
{
for (j=0; j<392; j++) //写一个字 j代表数阵
{
if (j ==56) //由于16X16用到两个Y坐标,当大于等于16时,切换坐标
{
LcdSt7565_WriteCmd(y+1);
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
}else if(j==112)
{
LcdSt7565_WriteCmd(y+2);
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
}else if(j==168)
{
LcdSt7565_WriteCmd(y+3);
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
}else if(j==224)
{
LcdSt7565_WriteCmd(y+4);
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
}else if(j==280)
{
LcdSt7565_WriteCmd(y+5);
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
}else if(j==336)
{
LcdSt7565_WriteCmd(y+6);
LcdSt7565_WriteCmd(0x10 + x1); //高4位
LcdSt7565_WriteCmd(0x04 + x2);//低4位
}
LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);
}
x += 28;
}//if查到字结束
} //for查字结束
cn += 2;
}//while结束
return 1;
}