Guten Tag zusammen,
ich habe ein Problem mit dem Display!
Ich betreibe das Display (noch) im Charaktermodus weil ich zunächst erstmal einfach testen wollte wie es so funktioniert und es funktioniert gut auch das Touchscreen arbeitet gut ABER ich kann einfach ums verrecken nicht in die Zeilen unterhalb von 7! Siehe Foto!
(Normalerweise soll genau so weiter geschrieben werden 8,9,10)
Bild hier
Ich verstehe es nicht. Oberhalb der 8 Zeile kann ich wunderbar springen sowohl horizontal als auch vertikal. Ein zweites Display habe ich auch schon getestet, das selbe Verhalten!
So initialisiere ich das Display:
Code:
void GLCD_Init_C(void)
{
GLCD_RES=0;
Delay10KTCYx(1);
GLCD_RES=1;
GLCD_writecom(0x00); // Mode Con
GLCD_writedata(0x3C); // Character Mode, Cursor blink
GLCD_writecom(0x01); // Character Pitch
GLCD_writedata(0x77); // 8x8 Chars
GLCD_writecom(0x02); // Number of Characters
GLCD_writedata(19); // 19 Zeichen <--->
GLCD_writecom(0x03); // Set Duty
GLCD_writedata(0x4F); // 80-1
GLCD_writecom(0x04); // Cursor Position
GLCD_writedata(0x07); // Line 1
GLCD_writecom(0x08); // Start Adresse Low
GLCD_writedata(0x00); // 0
GLCD_writecom(0x09); // Start Adresse High
GLCD_writedata(0x00); // 0
GLCD_writecom(0x0A); // Cursor lower adress
GLCD_writedata(0x00); // 1
GLCD_writecom(0x0B); // Cursor upper adress
GLCD_writedata(0x00); // 1
}
So stelle ich die Adresse ein:
Code:
void GLCD_SetAdress(unsigned char x, unsigned char y)
{
unsigned short adress;
adress=y*20+x;
GLCD_writecom(0x0A); // write adress low
GLCD_writedata(adress&255);
GLCD_writecom(0x0B); // write adress high
GLCD_writedata(adress/256);
}
Die Routinen zum Schreiben auf dem Display:
Code:
void GLCD_writedata(unsigned char info)
{
GLCD_RS=0;
GLCD_write(info);
}
void GLCD_writecom(unsigned char info)
{
GLCD_Busy();
GLCD_RS=1;
GLCD_write(info);
}
void GLCD_write(unsigned char info)
{
GLCD_RW=0;
GLCD_Data=info;
Delay10TCYx(1);
GLCD_Enable();
}
void GLCD_Busy(void)
{
GLCD_RW=1;
GLCD_RS=1;
GLCD_Enable();
TRISD=0x80;
while(LATDbits.LATD7){}
TRISD=0x00;
}
void GLCD_Enable(void)
{
GLCD_E=1;
Delay10TCYx(1);
GLCD_E=0;
}
Ich hoffe sehr, dass mir irgendwer von euch helfen kann ich verstehe es einfach nicht..
LG Nico
Lesezeichen