Guten Tag,
ich versuche seit einigen Tagen meine LCD anzusteuern, bislang ohne
Erfolg. Ich war ausserdem schon in einigen Foren aktiv konnte allerdings
den Fehler nicht finden. Allerdings bin ich mir schon daraufgekommen das
es an der Initialisierung liegt, denn wenn ich versuche das Programm
auszuführen dann wird in der ersten Zeile nur schwarze Balken
ausgegeben. In der anderen Zeile (2x16 LCD) wird nichts ausgegeben.
LCD Industrie-Standard: HD47780
programmiert auf Atmega16.
Initialisierung:
#define E_PIN LATDbits.LATD0
#define TRIS_E TRISDbits.TRISD0
#define RS_PIN LATDbits.LATD1
#define TRIS_RS TRISDbits.TRISD1
#define RW_PIN LATDbits.LATD2
#define TRIS_RW TRISDbits.TRISD2
#define DATA_PORT PORTD
#define TRIS_DATA_PORT TRISD
void LCD_Init(void)
{
DATA_PORT &= 0x0F;
TRIS_DATA_PORT |= 0xf0;
TRIS_RW=0;
TRIS_RS=0;
TRIS_E=0;
RW_PIN=0;
RS_PIN=0;
E_PIN=0;
Delay_ms(15);
DisplayWrite(0,0x30);
Delay_ms(5);
DisplayWrite(0,0x30);
Delay_ms(1);
DisplayWrite(0,0x30);
Delay_ms(1);
DisplayWrite(0,0x20);
Delay_ms(5);
Delay_ms(1);
DisplayWrite(0,0x28);
busy_lcd();
// Display on/off
DisplayWrite(0,0x0C);
busy_lcd();
// Display clear
DisplayWrite(0,0x1);
busy_lcd();
DisplayWrite(0,0x6);
busy_lcd();
}
Mario Mitterbauer schrieb: > Allerdings bin ich mir schon daraufgekommen das > es an der Initialisierung liegt, denn wenn ich versuche das Programm > auszuführen dann wird in der ersten Zeile nur schwarze Balken > ausgegeben. Das passiert auch (dunkle und helle Zeile), wenn Du gar nichts an das Display sendest und einfach nur die Betriebsspannung anlegst. Es dient zur Überprüfung ob es heil ist, zur Orientierung (schwarz ist oben) und zum Kontrast einstellen.
TRISD0 ist nicht AtMega, sondern PIC. Code von irgendeiner Webseite kopieren und einfügen funktioniert leider nicht immer, vor allem wenn man nichtmal weiß was für einen Controller man verwendet. Bekommst du da keine Errors, dass TRISD0 nicht definiert ist?
Ich programmiere nicht mit Arduino sonder mit einem Microchip PICkit 2, hier gibt es leider kein Bibliothek(oder ich finde sie nicht).
Mario Mitterbauer schrieb: > programmiert auf Atmega16. Mario Mitterbauer schrieb: > Ich programmiere nicht mit Arduino sonder mit einem Microchip PICkit 2, Wie passt Atmega16 und PICkit2 zusammen?
Mir wird kein Fehler angezeigt wenn ich es mit TRISD versuche Tut mir leid hab mich verschrieben, bin erst beim Anfangen mit Microcontroller zu programmieren.
Mario Mitterbauer schrieb: > Allerdings bin ich mir schon daraufgekommen das es an der > Initialisierung liegt, denn wenn ich versuche das Programm auszuführen > dann wird in der ersten Zeile nur schwarze Balken ausgegeben. In der > anderen Zeile (2x16 LCD) wird nichts ausgegeben. Dann liegt es einfach daran, dass das Display noch gar nichts mitbekommen hat. Mario Mitterbauer schrieb: > DisplayWrite(0,0x30); Was MACHT denn die Funktion DisplayWrite()? Mario Mitterbauer schrieb: > Tut mir leid hab mich verschrieben, Wo? > bin erst beim Anfangen mit Microcontroller zu programmieren. Warum gleich ein Display? Wie wäre es mit LEDs und Lauflichtern? Nein, nicht nur Tutorials anschauen und sagen "is ja einfach, kann ich schon!", sondern selber machen...
Welchen Controller benutzt du in welcher Entwicklungsumgebung? Ein Atmega16 kann es wohl nicht sein.
nils schrieb: > Atmega16 kann es wohl nicht sein. Wenn es den mit einem Pk2 flasht würde das erklären dass das Display uninitialisiert bleibt.
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.