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
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.
... und wie Du es ausgeben kannst -> siehe http://www.mikrocontroller.net/articles/Pseudo-Graphische_LCD-Ansteuerung
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.