Forum: Mikrocontroller und Digitale Elektronik Lerne LCD zu programmieren


von Nils H. (grummel)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

seit meinem Studium ist schon eine Weile vergangen und ich versuche mich 
nun mal wieder an der Programmierung mit einem Atmega 8. Zu Beginn 
wollte ich ein einfaches LCD-Display programmieren, wo ich aber schon 
auf Probleme stoße. Ich verwende Programmer's Notepad und das meldet mir 
in der lcdsetup.h eine falsche Deklaration vor "x".
Wenn ich die Variable als int verwende geht es. Nach Übertragung in den 
Atmega8 funktioniert das Ganze aber gar nicht. Es erscheint immer ein 
schwarzer Balken im Display. Aber nur einer, Textausgabe habe ich auch 
schon versucht, geht aber auch nicht. Irgendwas muss bei der 
Initialisierung also schief laufen.

Könnt ihr mir helfen?

Ich danke schonmal.

Nils

von holger (Gast)


Lesenswert?

#define LCD_PORT      PORTC
#define LCD_DDR       DDRC
#define LCD_RS        PB4
#define LCD_EN        PB5

Geht mit dem Code nicht. Muss alles an PORTC.

von Detlev T. (detlevt)


Lesenswert?

Hallo Nils,

ein schwarzer Balken heißt häufig, dass die Kontrastspannung nicht 
richtig eingestellt ist. Nach meiner Erfahrung darf ein noch nicht 
initialisiertes Display nur einen sehr schwach erkennbaren Balken 
zeigen, also leicht-grau, nicht schwarz.

Gruß, DetlevT

von Karl H. (kbuchegg)


Lesenswert?

Reihenfolge!
1
#include "lcdsetup.h"
2
#include <avr/io.h>
3
#include <util/delay.h>
4
#include <avr/iom8.h> 
5
#include <inttypes.h>
6
#include <stdint.h>
7
8
int main(void)
9
{
10
  // Initialisierung LCD-Display
11
  
12
  int Zeile=1;
13
  int Spalte=0;
14
  lcd_init();
15
16
  
17
  lcd_clear();
18
  while(1)
19
    ;
20
  return 0;
21
}

Du solltest schon damit anfangen, die übrigen Header zu inkludieren, ehe 
dann lcdsetup.h den uint8_t benötigt, der erst durch stdint.h dem 
Cmopiler bekannt gemacht wird.

von Nils H. (grummel)


Angehängte Dateien:

Lesenswert?

Ich danke euch für die hilfreichen Hinweise. Ich habe nun alles auf 
einen Port verdrahtet. Und die Kontrastspannung überprüft. Und die 
Reihenfolge der Header geändert. Code habe ich angehängt.

Nun bekomme ich aber eine Zeile Striche und eine leere Zeile.

Ich verstehe nicht, warum.

Habt ihr eine Ahnung?

von Karl H. (kbuchegg)


Lesenswert?

Nils H. schrieb:
> Ich danke euch für die hilfreichen Hinweise. Ich habe nun alles auf
> einen Port verdrahtet.

Was genau hast du wie verdrahtet?

> Nun bekomme ich aber eine Zeile Striche und eine leere Zeile.
> Ich verstehe nicht, warum.
> Habt ihr eine Ahnung?

Dein LCD wird nicht richtig initialisiert.

von Nils H. (grummel)


Lesenswert?

DB 4-7 sind an PD0-3 und RS an PD4 und E an PD5. Also wie in der 
Headerdatei angegeben.

Was mache ich bei der Initialisierung falsch?
Ich habe mich hierbei an dem Turial orientiert.

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.