Forum: Mikrocontroller und Digitale Elektronik LCD 2*16 Problem (codevision)


von Tim Herold (Gast)


Lesenswert?

Moin Moin,

Ich habe ein Problem mit eier LCD Anzeige. Sie ist richtig
angeschlossen und besitzt 2*16 Zeichen. Das Problem ist, wenn ich in
der while schleife einen Buchstaben anzeigen will, bleibt das Display
an der 8 Stelle stehen. Ich benutze die LCD Libary von CodeVision. Ich
habe bei dem Programm uch 16 eingestellt. Es liegt auch nicht an der
Anzeige, es ist bei einer anderen neuen genauso.

Hier mein Code :

lcd_init(16);
while (1)
      {
       lcd_putchar(0x44);
       delay_ms(1000);



      };

Was läuft hier falsch ?

Vielen Dank im Vorraus

Tim

von Joerg Wunsch (Gast)


Lesenswert?

Dein Display ist logisch gesehen nicht 1*16, sondern 2*8.  Die
,,zweite Zeile'' hat dann einen Offset im RAM, 0x20 oder 0x40.

von BAB (Kai K.) (Gast)


Lesenswert?

#if LCD_TYP == 1
// *************************************************************
// ************ Lcd DDRAM register for 2x40 display ************
// *************************************************************
#define MAXLINELENGHT 40
prog_char screenpos[2] = { 0x80, 0xC0 };
#endif



#if LCD_TYP == 2
// *************************************************************
// ************ Lcd DDRAM register for 2x24 display ************
// *************************************************************
#define MAXLINELENGHT 24
prog_char screenpos[2] = { 0x80, 0xC0 };
#endif



#if LCD_TYP == 3
// *************************************************************
// ************ Lcd DDRAM register for 4x20 display ************
// *************************************************************
#define MAXLINELENGHT 20
prog_char screenpos[4] = { 0x80, 0xC0, 0x94, 0xD4 };
#endif



#if LCD_TYP == 4
// *************************************************************
// ************ Lcd DDRAM register for 4x16 display ************
// *************************************************************
#define MAXLINELENGHT 16
prog_char screenpos[4] = { 0x80, 0xC0, 0x90, 0xD0 };
#endif


das sind jeweils die startadressen der einzelnen zeilen. dahin solltest
du schreiben.

von Udo Drees (Gast)


Lesenswert?

Hallo , habe überhaupt noch keine Ahnung wie das mit der LCD Ansteuerung
funktioniert. Kannst Du mir das Programm in C schicken?
Wo kriege ich mehr Infos und Beispielprogramme in C?

Vielleicht meldest Du Dich mal zum Erfahrungsaustausch
udodrees@gmx.de

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.