LCD12864驱动程序-C51
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*###############################################################*/
/*###############################################################*/
#define uchar unsigned char
#define uint unsigned int
/*###############################################################*/
/*###############################################################*/
#define displayon 0x3f
#define displayoff 0x3e
#define set_x0 0xb8
#define set_y0 0x40
#define starline 0xc0
/*###############################################################*/
/*###############################################################*/
#define data_port P0
sbit D_I=P2^2;
sbit R_W=P2^1;
sbit E=P2^0;
sbit CS1=P2^5;
sbit CS2=P2^4;
sbit RST=P2^3;
sbit BL=P2^7;
/*###############################################################*/
/*###############################################################*/
void ClearLCD(uchar x0, uchar y0, uchar x1, uchar y1, bit L, bit R)
{
uchar j;
for(;x0<=x1;x0++)
{
SetXY(x0,y0,L,R);
for(j=y0;j<=y1;j++)
{
WriteData(0x00,L,R);
}
}
}
/*###############################################################*/
/*###############################################################*/
void LCDOn_Off(uchar on_off, bit L, bit R)
{
WriteInst(on_off,L,R);
}
/*###############################################################*/
/*###############################################################*/
void StarLine(uchar linenum, bit L, bit R)
{
WriteInst(starline|linenum-1,L,R);
WriteInst(set_y0,L,R);
}
/*###############################################################*/
/*###############################################################*/
void SetXY(uchar x0, uchar y0, bit L, bit R)
{
uchar xa,ya;
xa=set_x0+(x0-1);
ya=set_y0+(y0-1);
WriteInst(xa,L,R);
WriteInst(ya,L,R);
}
/*###############################################################*/
/*###############################################################*/
void WriteInst(uchar inst, bit L, bit R)
{
data_port=0x00;
E=0; CS1=L; CS2=R;
R_W=0; D_I=0;
E=1;
_nop_(); _nop_();
data_port=inst;
_nop_(); _nop_();
E=0;
_nop_();_nop_();
CS1=0; CS2=0;
data_port=0x00;
}
/*###############################################################*/
/*###############################################################*/
void WriteData(uchar ddata, bit L, bit R)
{
data_port=0x00;
E=0; CS1=L; CS2=R;
R_W=0; D_I=1;
E=1;
_nop_(); _nop_();
data_port=ddata;
_nop_(); _nop_();
E=0;
_nop_();_nop_();
CS1=0; CS2=0;
data_port=0x00;
}
/*###############################################################*/
/*###############################################################*/
uchar ReadData(bit L, bit R)
{
uchar RData;
data_port=0x00;
E=0; CS1=L; CS2=R;
data_port=0xff;
D_I=1; R_W=1;
E=1;
_nop_(); _nop_();
RData=data_port;
_nop_(); _nop_();
E=0; _nop_(); _nop_();
CS1=0; CS2=0;
data_port=0x00;
return(RDat
a);
}
/*###############################################################*/
/*###############################################################*/