我用19264A液晶屏显示12*12汉字(就是下载的《HZK12》文件里的字形码)时弄了一个复杂的数据转换函数:
struct byte Dat_Turn(unsigned char *dats)
{
struct byte res;
unsigned char temp[24];
unsigned char i,j,k;
for(i=0;i<8;i++) //第一组有8行
{
for(j=0;j<2;j++) //每行有2排
{
if(j==0) //左边一排
{
for(k=0;k<8;k++) //每排8位
{
if(dats[2*i+j]&(0x80>>k))
{
temp[k]=temp[k]|(0x01<<i);
}
else
{
temp[k]=temp[k]&(~(0x01<<i));
}
}
}
else //右边一排
{
for(k=0;k<4;k++) //每排4位
{
if(dats[2*i+j]&(0x80>>k))
{
temp[k+8]=temp[k+8]|(0x01<<i);
}
else
{
temp[k+8]=temp[k+8]&(~(0x01<<i));
}
}
}
}
}
for(i=0;i<4;i++) //第二组4行
{
for(j=0;j<2;j++) //每组2排
{
if(j==0) //左边一排
{
for(k=0;k<8;k++) //左边8位
{
if(dats[2*i+j+16]&(0x80>>k))
{
temp[k+12]=temp[k+12]|(0x01<<i);
}
else
{
temp[k+12]=temp[k+12]&(~(0x01<<i));
}
}
}
else //右边一排
{
for(k=0;k<4;k++) //右边4位
{
if(dats[2*i+j+16]&(0x80>>k))
{
temp[k+20]=temp[k+20]|(0x01<<i);
}
else
{
temp[k+20]=temp[k+20]&(~(0x01<<i));
}
}
}
}
}
for(i=0;i<12;i++)
{
res.byte[i]=(((unsigned int)(temp[i+12]))<<8)|temp[i];
}
return(res);
}
汉字是正常显示了。但是,后来我觉得厂家生产液晶屏时应该是考虑到用户显示字库里的汉字的,所以我觉得说明书上的这样规定是对的,就是页地址的8个位是横着摆的,程序应该是这样:
void Start_Line_Set(unsigned char y0)
{
Wcom(0xC0|y0);
}
void Addr_Y_Set(unsigned char y)
{
Wcom(0x40|y); //64页
}
void Addr_X_Set(unsigned char x)
{
Wcom(0xB8|x); //8格
}
但是,我按照这种逻辑写的一些测试程序但是错的。实在不知道真正的设置应该是哪样?
有会19264A液晶屏显示原理的或生产厂家的工程师网友,可否传授正经给在下吗?我替所有的不懂得的网友都感谢您!谢谢!!!祝工作顺利!!!!!!财源广进!!!!!!!!阖家幸福!!!!!!!!!!