ubyte control; //value of "*port_control_address"
#define DATA_ADDR (port_data_address)
#define CONT_ADDR (port_control_address)
//inverted at the port
#define CLR_CE (DlPortWritePortUchar(CONT_ADDR,(control|=0x01)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
#define SET_CE (DlPortWritePortUchar(CONT_ADDR,(control&=~0x01)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
//inverted at the port
#define CLR_RD (DlPortWritePortUchar(CONT_ADDR,(control|=0x02)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
#define SET_RD (DlPortWritePortUchar(CONT_ADDR,(control&=~0x02)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
//straight at the port
#define SET_RW (DlPortWritePortUchar(CONT_ADDR,(control|=0x04)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
#define CLR_RW (DlPortWritePortUchar(CONT_ADDR,(control&=~0x04)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
//inverted at the port
#define SET_CD (DlPortWritePortUchar(CONT_ADDR,(control&=~0x08)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
#define CLR_CD (DlPortWritePortUchar(CONT_ADDR,(control|=0x08)));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
//#define SDATA(x) (DlPortWritePortUchar(DATA_ADDR,(x)));(Sleep(0));(Sleep(0));(Sleep(0));(Sleep(0))
#define DATA(x) (DlPortWritePortUchar(DATA_ADDR,(x)));(Sleep(0));(Sleep(0));(Sleep(0));(Sleep(0));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
#define RDATA(x) (DlPortReadPortUchar(DATA_ADDR));(Sleep(0));(Sleep(0));(Sleep(0));(Sleep(0));Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0);Sleep(0)
void DATA_W(unsigned char data)
{
CLR_CD;
CLR_CE;
CLR_RW;
DATA(data);
SET_CE;
SET_RW;
}
//
uchar DATA_R()
{
unsigned char data;
CLR_CD;
CLR_CE;
CLR_RD;
data = RDATA(data);//LcmDataPort;
SET_CE;
SET_RD;
return data;
}
//read status
uchar Read_Status()
{
unsigned char data;
CLR_CD;
CLR_CE;
CLR_RD;
data = RDATA(data);//LcmDataPort;
SET_CE;
SET_RW;
return data;
}
//
void COM_W(unsigned char command)
{
SET_CD;
CLR_CE;
CLR_RW;
DATA(command);
SET_CE;
SET_RW;
}
void CheckRWCD(void)
{
// while((LcmReadStatus() & 0x03) != 0x03); //
}
//
void CheckAutoWrite(void)
{
// while((LcmReadStatus() & 0x08) == 0); //
}
//
void CheckScreen(void)
{
// while(LcmReadStatus() & 0x40); //
}
//
void LcmWriteData(uchar uData)
{
CLR_CD;
CLR_CE;
CLR_RW;
DATA(uData);
SET_CE;
SET_RW;
}
//
uchar LcmReadData( void )
{
uchar uData;
CLR_CD;
CLR_CE;
CLR_RD;
uData = RDATA(uData);//LcmDataPort;
SET_CE;
SET_RD;
return uData;
}
//read status
uchar LcmReadStatus( void )
{
uchar uData;
CLR_CD;
CLR_CE;
CLR_RD;
uData = RDATA(uData);//LcmDataPort;
SET_CE;
SET_RW;
return uData;
}
//
void WriteCommand(uchar Command)
{
SET_CD;
CLR_CE;
CLR_RW;
DATA(Command);
SET_CE;
SET_RW;
}
//
void DelayKey(unsigned char)
{
Sleep(2);
}
//
void LcmWriteCommand(uchar Command)
{
CheckRWCD();
WriteCommand(Command);
}
//write 1 data command
void LcmWriteCommandWith1Par(uchar Parameter,uchar Command)
{
CheckRWCD();
LcmWriteData(Parameter);
CheckRWCD();
WriteCommand(Command);
}
//WRITE 2 data COMMAND
void LcmWriteCommandWith2Par(uchar Parameter1,uchar Parameter2,uchar Command)
{
CheckRWCD();
LcmWriteData(Parameter1);
CheckRWCD();
LcmWriteData(Parameter2);
CheckRWCD();
WriteCommand(Command);
}
//LCM INITIALIZATION
void LcmInit( void )
{
LcmWriteCommandWith2Par(0x00,0x00,0x40); //
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41); //
LcmWriteCommandWith2Par(0x00,0xC0,0x42); //address 0x0800
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43);
LcmWriteCommand(0xA0); //CURSUR 8x1
LcmWriteCommand(0x81); //Xor
LcmWriteCommand(0x9C); //TURN TEXT AND GRAPHIC ON
}