11# john_lee
//=========================写汉字16*16===================================
void write_hz16(uchar *p,uint xs,uint ys,uchar mun)
{
uchar k,tem1,tt,n,y,tem0;
y=ys;
LCD_WRITE_CMD(0x2a); //column address set
LCD_WRITE_DATA(xs>>8); //start address 0x00,0x00
LCD_WRITE_DATA(xs); //start address 0x00,0x00
LCD_WRITE_CMD(0x2b); //row address set
LCD_WRITE_DATA(ys>>8); //start address 0x00,0x00
LCD_WRITE_DATA(ys); //start address 0x00,0x00
LCD_WRITE_CMD(0x2C);
for(tem0=0;tem0<mun;tem0++) //字数
{
for( tem1=0;tem1<16;tem1++) //16*16 控制Y参数
{
for(n=0;n<2;n++) //4可变 8*4 控制X参数
{
k=*p++;
for(tt=0;tt<8;tt++) //字节 控制X参数
{
k=k<<1;
if(clean)
{
LCD_WRITE_DATA(color1H);
LCD_WRITE_DATA(color1L);
}
else
{
if(CY==1) //C51寄存器
{
LCD_WRITE_DATA(0x00);
LCD_WRITE_DATA(0x00);
}
else
{
LCD_WRITE_DATA(color1H);
LCD_WRITE_DATA(color1L);
}
}
}
}
ys++;
LCD_WRITE_CMD(0x2a); //column address set
LCD_WRITE_DATA(xs>>8); //start address 0x00,0x00
LCD_WRITE_DATA(xs); //start address 0x00,0x00
LCD_WRITE_CMD(0x2b); //row address set
LCD_WRITE_DATA(ys>>8); //start address 0x00,0x00
LCD_WRITE_DATA(ys); //start address 0x00,0x00
LCD_WRITE_CMD(0x2C);
}
xs=xs+16; //16*16文字
ys=y;
LCD_WRITE_CMD(0x2a); //column address set
LCD_WRITE_DATA(xs>>8); //start address 0x00,0x00
LCD_WRITE_DATA(xs); //start address 0x00,0x00
LCD_WRITE_CMD(0x2b); //row address set
LCD_WRITE_DATA(ys>>8); //start address 0x00,0x00
LCD_WRITE_DATA(ys); //start address 0x00,0x00
LCD_WRITE_CMD(0x2C);
}
}
我是想将此段程序移植到M051芯片上,这个是LCD厂家显示汉字的一段DEMO,看看能否解决。
|