LCD12864驱动程序-C51


/*###############################################################*/
/*###############################################################*/
#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);
}
/*###############################################################*/
/*###############################################################*/


相关主题
相关文档
最新文档