📄 write_12864.h
字号:
//#define uchar unsigned char
//#include <reg52.h>
sbit CS1=P2^3;
sbit CS2=P2^4;
sbit RST=P2^5;
sbit DI=P2^0;
sbit RW=P2^1;
sbit ALE=P2^2;
#ifndef __WRITE_12864_H__
//软件复位程序
void IntRst(void)
{
uchar i;
RST=0;
i=0;
i=1;
RST=1; //软件复位
}
//12864发送命令子程序
void ComSend(uchar COM)
{ uchar i;
uchar temp;
DI=0;
RW=1;
do { P0=0xff;
ALE=1;
i=0;
temp=P0;
ALE=0;
} while((temp&0x80)==1); //读BUSY信号
RW=0;
P0=COM;
ALE=1;
i=0; //NOP
ALE=0;
}
//12864发送数据子程序
void DaSend(uchar DAT)
{ uchar i;
uchar temp;
DI=0;
RW=1;
do {P0=0xff;
ALE=1;
i=0;
temp=P0;
ALE=0;
}while((temp&0x80)==1); //读BUSY信号
DI=1;
RW=0;
P0=DAT;
ALE=1;
i=0; //NOP
ALE=0;
}
//左半屏写命令子程序
void Left_ComSend(COM)
{
CS2=0;CS1=1;
ComSend(COM);
CS1=0;
}
//左半屏写数据子程序
void Left_DaSend(DAT)
{
CS2=0;CS1=1;
DaSend(DAT);
CS1=0;
}
//右半屏写命令子程序
void Right_ComSend(COM)
{
CS1=0;CS2=1;
ComSend(COM);
CS2=0;
}
//右半屏写数据子程序
void Right_DaSend(DAT)
{
CS1=0;CS2=1;
DaSend(DAT);
CS2=0;
}
//左半屏写一个字节数据程序,
//入口参数为X,Y的起始地址
//以及Y的变址范围(写入的字节数)和写入数据的指针
void Left_Bytes_DaSend(uchar x,uchar y,uchar *loc,uchar bytes)
{ uchar i;
Left_ComSend(x|0xB8); //填入特征位0xB8,定位X
Left_ComSend(y|0x40); //填入特征位0x40 ,定位Y
for(i=0;i<bytes;i++)
Left_DaSend(*(loc+i));
}
//右半屏写一个字节数据程序,
//入口参数为X,Y的起始地址
//以及Y的变址范围(写入的字节数)和写入数据的指针
void Right_Bytes_DaSend(uchar x,uchar y,uchar *loc,uchar bytes)
{ uchar i;
Right_ComSend(x|0xB8); //填入特征位0xB8 ,定位X
Right_ComSend(y|0x40); //填入特征位0x40, 定位Y
for(i=0;i<bytes;i++)
Right_DaSend(*(loc+i));
}
//开LCD
void Lcd_On(void)
{
Left_ComSend(0x3F);
Right_ComSend(0x3F);
}
//关LCD
void Lcd_Off(void)
{
Left_ComSend(0x3e);
Right_ComSend(0x3e);
}
//设置Z地址
void Lcd_SetZ(uchar z)
{
z=z*8;
Left_ComSend(z|0xc0);
Right_ComSend(z|0xc0);
}
//void Right_Bytes_DaSend(uchar x,uchar y,uchar *loc,uchar bytes)
//void Left_Bytes_DaSend(uchar x,uchar y,uchar *loc,uchar bytes)
//void Lcd_SetZ(uchar z)
//void Lcd_Off(void)
//void Lcd_On(void)
//void IntRst(void)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -