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
Gast
#3248163
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
Danke , jetzt klappt alles.
Gast
#3248279
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.