一、引脚图
二、串行时序图
R/W 1/0 读/写
RS 1/0 数据/
命令
(注意:这是数据,不是并行那个端口为:
RS 1/0
命令/
数据
)
/********************************************************************
写命令
***********************************************************************/
void write_com(unsigned char cmdcode)
{
CS = 1;
sendbyte(0xf8);// 告诉显示屏要写命令
sendbyte(cmdcode & 0xf0);//发高四位 xxxx0000
sendbyte((cmdcode << 4) & 0xf0);//发低四位 xxxx0000
delay(2);//200us左右
}
/********************************************************************
写数据
***********************************************************************/
void write_data(unsigned char Dispdata)
{
CS = 1;
sendbyte(0xfa);
sendbyte(Dispdata & 0xf0);
sendbyte((Dispdata << 4) & 0xf0);
delay(2);
}
/********************************************************************
根据时序图发数据
***********************************************************************/
void sendbyte(unsigned char zdata)
{
unsigned int i;
for(i=0; i<8; i++)
{
if((zdata << i) & 0x80)
{
SID = 1;
//第5个引脚R/W
}
else
{
SID = 0;
}
SCLK = 0;
SCLK = 1;
}
}
三、初始化LCD
void lcdinit()
{
RST = 0; //复位
delay(100);
RST = 1;
delay(20000);
write_com(0x30); //基本指令操作
//
lcd_wcmd(0x34);
//扩展指令操作
delay(50);
write_com(0x0c); //显示开 关光标
delay(50);
}
四、显示函数
1、显示普通字符和汉字
write_com(0x30); //基本指令操作
void hzkdis(unsigned char code *s)
{
while(*s > 0)
{
write_data(*s);
s++;
delay(50);
}
}
void Test()
{
write_com(0x03);//光标置原点
delay(50);
write_com(0x81);//汉字显示坐标,第一行(总4行),第二个汉字位置(总8列)
hzkdis(“1234567”);
}
2、显示图片
/*******************************************
整屏显示图片
unsigned char code tu_fill[]={};
********************************************/
void Fill_dis(const uchar *ptr)
{
uchar i,j,k;
//wela=0;
//dula=0;
lcd_wcmd(0x34); //拓展命令
i = 0x80;
for(j = 0;j < 32;j++)
{
lcd_wcmd(0x80+j);//写Y轴
lcd_wcmd(0x80);//写X轴,第一大行,0~7
for(k = 0;k < 16;k++)//一个字节8*16=128
{
lcd_wdat(*ptr++);
}
}
i = 0x80;
for(j = 0;j < 32;j++)
{
lcd_wcmd(0x80+j);
lcd_wcmd(0x88);
//写X轴,第二大行,8-15
for(k = 0;k < 16;k++)
{
lcd_wdat(*ptr++);
}
}
lcd_wcmd(0x36); //打开绘图显示
lcd_wcmd(0x30); //返回基本命令
}
3、取模软件设置