LCD12864点阵型液晶实物
LCD12864 引脚先容:管脚号
管脚名称

LEVER
管脚功能描述
1
VSS
0
电源地
2
VDD
+5.0V
电源电压
3
V0
-
液晶显示器驱动电压
4
D/I(RS)
H/L
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
5
R/W
H/L
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
6
E
H/L
R/W=“L”,E旗子暗记低落沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
CS1
H/L
H:选择芯片(右半屏)旗子暗记
16
CS2
H/L
H:选择芯片(左半屏)旗子暗记
17
RET
H/L
复位旗子暗记,低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
-
LED背光板电源
20
LED-
-
LED背光板电源
LCD12864液晶屏幕事理图:LCD12864液晶屏幕事理图
LCD12864液晶屏幕驱动程序://12864液晶操作口
sbit rs = P1^0;
sbit rw = P1^1;
sbit en = P1^2;
/12864驱动程序/
//===========液晶写指令==========
void writecommand(uchar command)
{
checkbusy();
rs=0;
rw=0;
en=1;
P0=command; //液晶数据线P0
en=0;
}
//============液晶写数据============
void writedata(uchar date)
{
checkbusy();
rs=1;
rw=0;
en=1;
P0=date;
en=0;
}
//=========液晶设置==========
void lcdset(void)
{
writecommand(0x30); //基本指令集
writecommand(0x01); //清屏,DDRAM的地址归零
writecommand(0x02); //地址归位
writecommand(0x0c); //显示开,光标关,反白关
writecommand(0x06); //DDRAM地址加1
}
//=========设置光标===========
void cursor(uchar y,uchar x)
{
uchar command = 0x80;
writecommand(0x0f);//开光标 闪烁
if( y == 2)
y = 3;
else if(y == 3)
y = 2;
command |= (y-1) << 3;
command += (x-1);
writecommand(command);
}
//========字符显示=======
void display(uchar y, uchar x, uchar p)
{
switch (y)
{
case 1:writecommand(0x7f+x); break; //液晶第一行
case 2:writecommand(0x8f+x); break; //0x90+(x-1)
case 3:writecommand(0x87+x);break;
case 4:writecommand(0x97+x);break;
default:break;
}
while(p)
writedata(p++);
}
//=========显示数字=======
void displayNumber(uchar y,uchar x,uchar number)
{
switch (number)
{//引号内数字为中文全角输入 霸占一个汉字位置
case 0:display(y,x,\公众0\公众);break;
case 1:display(y,x,\"大众1\"大众);break;
case 2:display(y,x,\公众2\公众);break;
case 3:display(y,x,\"大众3\公众);break;
case 4:display(y,x,\"大众4\"大众);break;
case 5:display(y,x,\"大众5\"大众);break;
case 6:display(y,x,\公众6\"大众);break;
case 7:display(y,x,\"大众7\"大众);break;
case 8:display(y,x,\公众8\"大众);break;
case 9:display(y,x,\公众9\"大众);break;
default:break;
}}
void displaytime0(void) //静态数据
{
display(1, 2, \公众智能作息系统\"大众);
display(2, 3, \"大众年\"大众);
display(2, 6, \"大众月\公众);
display(3, 1, \"大众星期\"大众);
display(3, 8, \"大众℃\公众);
display(4, 3, \公众-\"大众); //全角输入
display(4, 6, \"大众-\"大众);
}
/12864主程序调用/
lcdset();
delay(1000);
lcdset(); //调用两次可以办理上电后液晶不能自动复位问题
/显示版本信息/
display(1,3,\"大众welcome!\"大众);
display(2,2,\公众智能作息系统\"大众);
display(3,3,\公众版本1.0\"大众);
display(4,1,\公众制作人: 马云\"大众);
writecommand(0x01); //清屏
LCD12864液晶屏幕显示效果:LCD12864液晶屏幕显示效果