;Define Bit and Mode
#define LCD_RSBL Port1_7(0)
#define LCD_RSBH Port1_7(1)
#define CLR_WR Port1_5(0)
#define SET_WR Port1_5(1)
#define CLR_RS Port1_6(0)
#define SET_RS Port1_6(1)
#define SET_E Port1_4(1)
#define CLR_E Port1_4(0)
#define SET_P13 Port1_3(1)
#define CLR_P13 Port1_3(0)
#define PORTD PRT0DR
#define LCD_CMD_ADC 0xA1//Select SEG output direction(Normal)
#define LCD_CMD_ON 0xAF//Display On
#define LCD_CMD_EON 0xA5//Entire display(Entire ON)
#define LCD_CMD_REVERSE 0xA6//Reverse display ON/OFF(Normal)
#define LCD_CMD_BIAS 0xA3//Select LCD Bias
#define LCD_CMD_SHL 0xC0//Select COM output direction(Normal)
#define LCD_CMD_POWERC 0x2F //Power
#define LCD_CMD_RES 0x26 // Regulator resistor
#define LCD_CMD_SIM 0xAD//Set static indicator mode
#define LCD_CMD_SIR 0x03//Set static indicator Register(ON)
#define LCD_CMD_IDL 0x40//Set Line Address(Line0)
#define LCD_CMD_SVM 0x81//Set Reference voltage mode
#define LCD_CMD_SRV 0x3F//Set Reference voltage register
#define LCD_CMD_RESET 0xE2//Initialize the internal functions
#define LCD_CMD_CLMSB 0x10//Set Colum MSB(Colum0)
#define LCD_CMD_CLSB 0x00//Set Colum LSB
#define LCD_CMD_MR 0xE0//Set Modify-read Mode
#define LCD_CMD_RMD 0xEE//Release Modify-read mode
; Init
void Init(void){
BYTE index;
BYTE i;
PORTD = LCD_CMD_RESET;//
CLR_WR;
SET_WR;
Trems();
PORTD =LCD_CMD_ON; //turn display on
CLR_WR;
SET_WR;
Trems();
PORTD = LCD_CMD_EON;
CLR_WR;
SET_WR;
Delay50uTimes(20);
PORTD = LCD_CMD_REVERSE;
CLR_WR;
SET_WR;
Delay50uTimes(20);
PORTD = LCD_CMD_BIAS;
CLR_WR;
SET_WR;
Delay50uTimes(20);
PORTD = LCD_CMD_ADC; //adc
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = LCD_CMD_SHL;
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = 0x2A;
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = 0x29;
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = LCD_CMD_POWERC;//Voltage Converter ON,Voltage Regular ON,Voltage Follower ON
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = LCD_CMD_RES;//Regulator resistor select
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = LCD_CMD_SVM;//Set reference voltage
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = LCD_CMD_SRV;
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = LCD_CMD_SIM;//Set static indicator
CLR_WR;
SET_WR;
Trems();
PORTD = LCD_CMD_SIR;//Set static indicator
CLR_WR;
SET_WR;
Delay50uTimes(20);
}
void LCD_logo(void){
BYTE row;
BYTE col;
BYTE i;
for(row=0;row<=7;row++)
{
//Page Address
PORTD = 0xB0|row;
CLR_WR;
SET_WR;
Delay50uTimes(200);
//High Column
PORTD = 0x10;
CLR_WR;
SET_WR;
Delay50uTimes(200);
PORTD = 0x00;
CLR_WR;
SET_WR;
Delay50uTimes(200);
SET_RS;
for(col=0; col<132; col++)
{
PORTD = cfax12864a[row][col];//Get from CFAG12864B_WinTest:D
CLR_WR;
SET_WR;
PORTD =LCD_CMD_ON; //turn display on
CLR_WR;
SET_WR;
for(i = 0; i<10; i++)
Trems();
}
CLR_RS;
}
}
void External_Setup(void){
BYTE i;
SET_WR;
CLR_RS;
LCD_RSBL; //ResetB low
for(i = 0; i< 10; i++);
Trems();//Delay 1ms
LCD_RSBH;
for(i = 0; i< 10; i++);
Trems();
}
; Main
void main()
{
BYTE i,j,line=0;
External_Setup();
Init();
while(1){
LCD_logo();
}
}