void init12864()
{
unsigned char x,y;
//字符初始化
cmdwrite(0x30); //选择基本指令,8位并行口
cmdwrite(0x01); //清零字符
cmdwrite(0x02); //地址复位
cmdwrite(0x0c); //显示开,游标关、游标反白关
//图形初始化
/*
绘图显示地址:64*32个字节,最多可以控制256*64点的二维绘图缓冲空间,
由扩充指令设定,由扩充指令更改,
由扩充指令先设置垂直地址,后设置水平地址,连续写入两个字节的数据完成垂直与水平的坐标地址
再写入两个字节的数据到绘图RAM,而地址计数器会自动加一。步骤如下:
1、先将垂直坐标写入绘图RAM地址
2、再讲水平坐标写入绘图RAM地址
3、将D15-D8写入到RAM中,第一个字节
4、讲D7-D0写入到RAMZ中,第二个字节
*/
cmdwrite(0x34); //开启扩展指令,关闭图形显示
for(y = 0; y < 32; y++) //清零图形显示缓冲区
{
cmdwrite(0x80|y);
cmdwrite(0x80|0);
for(x = 0; x < 32; x++)
{
datwrite(0x00);
}
}
cmdwrite(0x36); //开启图形模式显示
}
////////////////////////////////////////////////////////////////////
void lcdshowstring(unsigned char x, unsigned char y, unsigned char *str)
{
unsigned char addr;
//由输入的显示坐标计算DDRAM的地址
x >>= 4;
y >>= 4;
if(y >= 2)
{
y -= 2;
x += 8;
}
addr = y*16 + x;
//由初始DDRAM地址连续写入字符串
cmdwrite(0x30);//启动DDRAM操作
cmdwrite(0x80|addr);
while(*str != '\0')
{
datwrite(*str);
str++;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void lcdshowimage(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char *img)
{
signed int i;
unsigned char xi,yi;
unsigned char xt,yt;
x >>= 4;
w >>= 3;
i = 0;
cmdwrite(0x36);//启动CGRAM操作
for(yi = 0; yi < h; yi++)
{
yt = y +yi;
xt = x;
if(yt >= 32)
{
yt -= 32;
xt += 8;
}
cmdwrite(0x80|yt);
cmdwrite(0x80|xt);
for(xi = 0; xi < w; xi++)
{
datwrite(img[i++]);
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
void clearscreen(unsigned char x, unsigned char y, unsigned char w ,unsigned char h)
{
unsigned char xi,yi;
unsigned char xt,yt;
x>>= 4;
w>>= 3;
cmdwrite(0x36);
for(yi = 0; yi < h; yi++)
{
yt = y + yi;
xt = x;
if(yt >= 32)
{
yt -= 32;
xt += 8;
}
cmdwrite(0x80|yt);
cmdwrite(0x80|xt);
for(xi = 0; xi < w; xi++)
{
datwrite(0x00);
}
}
} |