Forum: Compiler & IDEs Eigenes Zeichen für ein LC-Display


von Matthias S. (schirmo)


Lesenswert?

Hallo zusammen,
ich habe momentan ein Problem mit mir eingene Zeichen für mein 
LC-Display zu erstellen. Ich komme jetzt schon seit Tagen nicht mehr 
weiter und bräuchte ein wenig unterstützung. Mein Problem ist folgendes:

Ich habe ein 16x2 LCD mit einem HD44780 Chipsatz. Dieses Display steuer 
ich über einem ATmega32 mit 4-Bit an. Den Mikrocontroller programmiere 
ich in C und verwende die "lcd-routines.h" - Bibliothek von deiser 
Seite. Die Ausgabe von einzelnen Character oder Strings funktioniert 
super. Ich verwende diese Methode zur erstellung eines Zeichens:

void lcd_generatechar( uint8_t code, const uint8_t *data )
{
  lcd_command( LCD_SET_CGADR | (code<<3) );

  for ( uint8_t i=0; i<8; i++ )
  {
    lcd_data( data[i] );
  }
}

Wenn ich das richtig verstanden habe, dann teile ich dem Display über 
den Befehl die Startposition des Zeichens an. Gleichzeitig sage ich ihm 
damit, dass ich auf dem CG-RAM schreiben möchte. Im Anschluss übermittel 
ich dann mein Datenarray. Mein Programmversuch sieht momentan so aus:

#include <avr/io.h>
#include <util/delay.h>
#include "lcd-routines.h"

#define F_CPU 8000000

unsigned char array [8] = {0x0A,0x0A,0x1F,0x11,0x11,0x0E,0x04,0x04};

int main(void)
{
    lcd_init();

    while(1)
    {
    lcd_generatechar(0, array);

    _delay_ms(500);
    lcd_home();
    }
}

Wenn ich es so versuche bleibt mein Diplay leider leer. Kann mir Jemand 
sagen was ich genau falsch mache? Oder liegt es daran, dass ich mit der 
Simulationssoftware ISIS-Proteus arbeite? Ich hatte aber vorher keine 
Probleme damit gehabt. Ich habe jetzt auch schon einige Foren durchsucht 
baer leider ohne Erfolg. Vielen Dank schon im Vorraus.

Gruß
Schirmo

von hilmar (Gast)


Lesenswert?

Du mußt das Zeichen nicht nur definieren, sondern auch anzeigen.
Momentan sagst du nur dem LCD-Controller, wie das neue Zeichen aussehen 
soll. Aber du machst keine einzige Ausgabe, wo dieses Zeichen benutzt 
wird.

von Frank W. (Firma: DB1FW) (frankw) Benutzerseite


Lesenswert?


von Matthias S. (schirmo)


Lesenswert?

Danke , jetzt klappt alles.

von Wolfgang (Gast)


Lesenswert?

Matthias Schirmer schrieb:
> Danke , jetzt klappt alles.

Glück gehabt.

Matthias Schirmer schrieb:
> #include <avr/io.h>
> #include <util/delay.h>
> #include "lcd-routines.h"
>
> #define F_CPU 8000000

Woher soll delay.h die richtige CPU-Frequenz wissen, wenn die Definition 
von F_CPU erst nach #include <util/delay.h> folgt. In der Reihenfolge 
macht das überhaupt keinen Sinn.

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.