I understand but can you check with my code?
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#define GLCD_DATA PORTD
#define b_GLCD_GCS1 PIN_E0
#define b_GLCD_GCS2 PIN_E1
#define b_GLCD_GCS3 PIN_A2
#define b_GLCD_GCS4 PIN_A3
#define b_GLCD_RS PIN_A4
#define b_GLCD_E PIN_A5
unsigned char w,XPos,YPos,i;
unsigned char GLCD_Read(void){
output_high(b_GLCD_E);
delay_us(0.010);
output_low(b_GLCD_E);
return w;
}
void Wait_Not_Busy(void){
SET_TRIS_D(0XFF);
output_low(b_GLCD_RS);
if(input(PIN_E0)==1&&input(PIN_E1)==1){
output_low(b_GLCD_GCS1);
while (GLCD_Read()&0x80)
output_high(b_GLCD_GCS1);
output_low(b_GLCD_GCS2);
while (GLCD_Read()&0x80)
output_high(b_GLCD_GCS2);
}
else{
while (GLCD_Read()&0x80);
}
SET_TRIS_D(0X00);
}
void GLCD_Write_Cmd(unsigned char data){
Wait_Not_Busy();
data=output_D(0x00);
output_low(b_GLCD_RS);
output_high(b_GLCD_E);
delay_us(0.015);
output_low(b_GLCD_E);
}
void GLCD_Write_Data(unsigned char data){
Wait_Not_Busy();
data=input_D();
output_high(b_GLCD_RS);
output_high(b_GLCD_E);
delay_us(0.015);
output_low(b_GLCD_E);
}
void WritePosition(void){
output_low(b_GLCD_GCS1);
output_low(b_GLCD_GCS2);
output_low(b_GLCD_GCS3);
output_low(b_GLCD_GCS4);
if (YPos>63){
if(XPos>63){
output_low(b_GLCD_GCS4);
}
else{
output_high(b_GLCD_GCS3);
}
if (XPos>63){
output_high(b_GLCD_GCS2);
}
else{
output_high(b_GLCD_GCS1);
}
}
GLCD_Write_Cmd(0x40+(XPos&0x3f)); //column=0
GLCD_Write_Cmd(0xb8+((YPos&0x3f)>>3)); //row=0
}
void SetPos(unsigned char x, unsigned char y){
x=XPos;
y=YPos;
WritePosition();
}
void MoveRight(void){
if(++XPos=64){
WritePosition();
}
if(XPos==128){
XPos=0;
YPos+=8;
YPos=YPos&0x7F;
WritePosition();
}
}
void clearScreen(void){
unsigned char i,j;
output_high(b_GLCD_GCS1);
output_high(b_GLCD_GCS2);
for(i=0;i<8;i++){
GLCD_Write_Cmd(0x40);
GLCD_Write_Cmd(0xB8+i);
for(j=0;j<0x40;j++)
GLCD_Write_Data(0xff);
}
SetPos(0,0);
}
void Init_GLCD(void){
SET_TRIS_E(0xFC); //output
SET_TRIS_A(0xF9); //output
SET_TRIS_D(0xFC); //output
output_low(b_GLCD_GCS1);
output_high(b_GLCD_GCS2);
output_low(b_GLCD_GCS3);
output_high(b_GLCD_GCS4);
GLCD_Write_Cmd(0x3F);
GLCD_Write_Cmd(0xC0);
}
void main(void){
Init_GLCD();
GLCD_Write_Cmd(0x40+23);
GLCD_Write_Cmd(0xB8+1);
GLCD_Write_Data(0x02);
}
Is my main function correct?
But I still couldn’t run it…the LCD display nothing and I checked all the connection already.
Can you please show me an example code to write a letter of “J” display on the GLCD_GCS1?