12864液晶的驱动和1602的相似,只不过是多了几个扩展的功用,不如画图功用:
这儿讲一下:不要简略的以为12864是y轴64,x为128,那是点阵的散布,不是读写的散布,如正图表明,y轴的32行,从0到31,x轴的16 从0到15,0到7为上半个屏幕,8到15鄙人半个屏幕,所以绘图的时分,有两个部分要进行书写
在12864上载入恣意一幅图:
示例代码:
#include
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs = P2^4;//数据仍是指令的挑选端口
sbit lcdwr = P2^5;//读写操作端口
sbit lcden = P2^6;//使能端延时端口
sbit PSB = P2^1;//串行数据仍是并行数据的挑选段
//图片的编码,这幅图片的编码是一个哆啦a梦
unsigned char code pic1[] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X3F,0XC0,0X0F,0XC0,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X07,0XFF,0X00,0X07,0X80,0X03,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X3F,0XFE,0XF7,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0XFF,0XFE,0X00,0X01,0X80,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X03,0XFF,0XFE,0X00,0X03,0XFF,0X01,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X0F,0XFF,0X83,0X00,0X07,0XFB,0X86,0X00,0XFF,0X80,0X00,0X00,0X00,0X00,
0X00,0X00,0X1F,0XFE,0X00,0XE0,0X0F,0XFF,0XFC,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X7F,0XF8,0X00,0X3F,0XE3,0XFF,0X00,0X00,0X07,0XF0,0X00,0X00,0X00,0X00,
0X00,0X00,0XFF,0XE0,0X00,0X00,0X00,0X38,0X00,0X00,0X01,0XF8,0X00,0X00,0X00,0X00,
0X00,0X01,0XFF,0XC7,0X7F,0XF0,0X00,0X0C,0X00,0X1F,0XFF,0XFC,0X00,0X00,0X00,0X00,
0X00,0X01,0XFF,0X00,0X00,0X00,0X00,0X04,0X00,0X00,0X00,0X7E,0X00,0X00,0X00,0X00,
0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X06,0X00,0X03,0XC0,0X3E,0X00,0X00,0X00,0X00,
0X00,0X03,0XFE,0X0F,0XFF,0XF0,0X00,0X02,0X00,0X0C,0X3F,0X9E,0X00,0X00,0X00,0X00,
0X00,0X07,0XFC,0X00,0X00,0X00,0X00,0X02,0X00,0X00,0X00,0X1F,0X00,0X00,0X00,0X00,
0X00,0X07,0XFC,0X00,0X1F,0XC0,0X00,0X02,0X00,0X00,0X00,0X0F,0X00,0X00,0X00,0X00,
0X00,0X07,0XF8,0X03,0XE0,0X00,0X00,0X02,0X00,0X07,0XFE,0X0F,0X00,0X00,0X00,0X00,
0X00,0X07,0XF8,0X1E,0X00,0X00,0X00,0X02,0X00,0X00,0X01,0XC6,0X00,0X00,0X00,0X00,
0X00,0X07,0XF8,0X30,0X00,0X00,0X00,0X02,0X00,0X00,0X00,0X06,0X00,0X00,0X00,0X00,
0X00,0X03,0XFC,0X00,0X00,0X00,0X00,0X02,0X00,0X03,0XFE,0X0E,0X00,0X00,0X00,0X00,
0X00,0X01,0XFC,0X00,0X00,0X00,0X00,0X7F,0XC0,0X00,0X03,0X0C,0X00,0X00,0X00,0X00,
0X00,0X01,0XFE,0X00,0X00,0X00,0X3F,0X80,0X3E,0X00,0X01,0X18,0X00,0X00,0X00,0X00,
0X00,0X00,0XFE,0X00,0X00,0X0F,0XC0,0X00,0X01,0XF0,0X06,0X30,0X00,0X00,0X00,0X00,
0X00,0X00,0X7F,0X00,0X01,0XE0,0X00,0X00,0X00,0X1F,0XF8,0X60,0X00,0X00,0X00,0X00,
0X00,0X00,0X3F,0X80,0X04,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X80,0X00,0X00,0X00,0X00,
0X00,0X00,0X03,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X01,0XFC,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X01,0XFF,0XF8,0X00,0X03,0XFF,0XE0,0X1F,0XFF,0XC0,0X00,0X00,0X00,0X00,
0X00,0X00,0X07,0XFF,0XE0,0X00,0X03,0XFF,0XC0,0X07,0XFF,0XE0,0X00,0X00,0X00,0X00,
0X00,0X00,0X0F,0XFF,0XC0,0X00,0X00,0XFF,0X80,0X03,0XFF,0XF0,0X00,0X00,0X00,0X00,
0X00,0X00,0X1F,0XFF,0X80,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00,
0X00,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0X00,0X00,0X00,0X00,
0X00,0X00,0X7F,0XFF,0X80,0X00,0X00,0X00,0X00,0X01,0XFF,0XFC,0X00,0X00,0X00,0X00,
0X00,0X03,0X80,0X3F,0X80,0X0F,0XFF,0XFF,0XFC,0X01,0XFE,0X3E,0X00,0X00,0X00,0X00,
0X00,0X06,0X00,0X0F,0XC0,0X70,0X00,0X00,0X03,0XC1,0XF8,0X07,0X00,0X00,0X00,0X00,
0X00,0X06,0X00,0X07,0XE0,0X30,0X00,0X00,0X00,0X43,0XF8,0X03,0X00,0X00,0X00,0X00,
0X00,0X07,0X00,0X07,0XF0,0X38,0X00,0X00,0X00,0XCF,0XFC,0X03,0X00,0X00,0X00,0X00,
0X00,0X03,0XC0,0X1F,0XFC,0X0F,0X00,0X00,0X03,0X1F,0XFC,0X0E,0X00,0X00,0X00,0X00,
0X00,0X00,0X7F,0XFF,0XFF,0X81,0XF0,0X00,0XFC,0XFF,0XFE,0XF8,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X1F,0XFF,0XFE,0X1F,0XFF,0X1F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0XFF,0X07,0XF0,0XFF,0XF0,0X7F,0X8F,0X80,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X7F,0XFF,0X83,0XE0,0XFF,0XF8,0X0F,0XBF,0XF8,0X00,0X00,0X00,0X00,
0X00,0X00,0X01,0XDF,0XF8,0X7D,0XFF,0X7F,0X0F,0XFF,0XC7,0XFE,0X00,0X00,0X00,0X00,
0X00,0X00,0X07,0XFF,0XF7,0X00,0X41,0XEF,0XF8,0X02,0X0F,0X78,0X00,0X00,0X00,0X00,
0X00,0X00,0X0F,0XFF,0XCC,0X00,0X40,0X7F,0XE0,0X02,0X01,0XBF,0XE0,0X00,0X00,0X00,
0X00,0X00,0X0F,0XFE,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,
0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0X7E,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};
void delay1ms(uint x)//延时函数
{
uint i,j;
for(i= x;i>0;i–)
for(j=110;j>0;j–);
}
void write_cmd(uchar cmd)//写指令函数
{
lcdrs = 0;
lcdwr = 0;
P0 = cmd;
lcden = 1;
delay1ms(5);//
lcden = 0;
}
void write_date(uchar date)//写数据函数
{
lcdrs = 1;
lcdwr = 0;
P0 = date;
lcden = 1;
delay1ms(5);//
lcden = 0;
}
void init_12864()
{
PSB = 1;//确定是并行传送
write_cmd(0x30);//根本指令操作
write_cmd(0x0c);//开显现,关掉光标
write_cmd(0x01);//清楚lcd的内容
}
void lcd_putpic(unsigned char code *img)//载入图画的函数
{
uint i,j;
//显现上半个屏幕的内容
for(i = 0;i<32;i++)
{
write_cmd(0x80+i);//笔直的地址
write_cmd(0x80);//水平的地址
for(j=0;j<16;j++)
{
write_date(*img);
img++;
}
}
//显现下半个屏幕的内容
for(i = 0;i<32;i++)
{
write_cmd(0x80+i);//笔直的内容
write_cmd(0x88);//水平的地址第三行的内容
for(j=0;j<16;j++)
{
write_date(*img);
img++;
}
}
}
void setpic()//图画显现形式设置函数
{
write_cmd(0x36);//挑选8bit的数据流,图画显现形式
delay1ms(5);
}
main()
{
init_12864();//初始化液晶
setpic();//初始化液晶图片显现
lcd_putpic(pic1);//载入一幅图片
delay1ms(5);
while(1);
}
今后载入图片只需要将图片用取模的软件,留意图片的巨细有必要是128×64的尺度,不然会呈现乱码,这是个比较简单犯的过错,期望我们留意