Forum: Mikrocontroller und Digitale Elektronik Interfacing a HD44780 Based LCD zu einem AVR STK600(ATmega2560)


von Gunasiri (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe vor kurzem mein Micro Controller programmiert und  zuerst habe 
ich versucht über Ports meine LED einzuschalten(hat funktioniert).

Danach versuchte ich über meine Controller einen LCD 
anzusprechen.(bc1602e)

Dafür habe ich versucht diesen Code zu übernehmen:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

Dafür haben ich die 2 Main-Beispiel Code versucht, aber es hat nicht 
funktioniert.

Auf dem LCD erscheinen nur die schwarzen Balken, die eigentlich mit: 
"uart_init(1000)", weggehen sollten, aber es geht nicht.

Auf dem Bild sieht man, dass da noch die Leitungen vertauscht sind. 
Daher hab ich gedacht, ich sollte das hier vertauschen;
1
//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
2
#define LCD_PORT      PORTD
3
#define LCD_DDR       DDRD
4
#define LCD_DB        PD0
5
6
//  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
7
#define LCD_RS        PD4
8
9
//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
10
#define LCD_EN        PD5

in:
1
//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
2
#define LCD_PORT      PORTD
3
#define LCD_DDR       DDRD
4
#define LCD_DB        PD3
5
6
//  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
7
#define LCD_RS        PD6
8
9
//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
10
#define LCD_EN        PD4
__________________________________________

Aber die Balken bestehen und ich verzweifele daran.

Kann mir bitte jemand helfen?

Vielen Dank

Mit freundlichen Grüßen

Gunasiri

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>Auf dem LCD erscheinen nur die schwarzen Balken, die eigentlich mit:
>"uart_init(1000)", weggehen sollten, aber es geht nicht.

Was hat dein UART mit dem LCD zu tun?

>Kann mir bitte jemand helfen?

Ohne das komplette Projekt mit deinen Code: Nein.

von Gunasiri (Gast)


Lesenswert?

holger schrieb:
>>Auf dem LCD erscheinen nur die schwarzen Balken, die eigentlich
> mit:
>>"uart_init(1000)", weggehen sollten, aber es geht nicht.
>
> Was hat dein UART mit dem LCD zu tun?
>
>>Kann mir bitte jemand helfen?
>
> Ohne das komplette Projekt mit deinen Code: Nein.



SORRY!

ICH meine:

lcd_init();
und nicht uart_init

von Gunasiri (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist mein Code,

Wie gesagt, dieser code stammt 1zu1 von :
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

Bitte um Hilfe

von Sascha K. (captain)


Lesenswert?

Kann es sein, dass du Pin 3 ("Contrast adjustment") nicht belegt hast 
(Poti-Mittelabgriff zwischen GND & Versorgung des LCD)?

von Gunasiri (Gast)


Lesenswert?

Hallo
es ist belegt.. man kann auch den Kontrast level einstellen.

von spess53 (Gast)


Lesenswert?

Hi

>#define LCD_DB        PD0

>#define LCD_DB        PD3

Warum hast du das geändert? Da die Datenpins weiterhin auf PD0..3 liegen 
muss auch LCD_DB PD0 bleiben.

MfG Spess

von Gunasiri (Gast)


Angehängte Dateien:

Lesenswert?

Anbei eine Sicht von oben, für die Pinbelegung

von Gunasiri (Gast)


Lesenswert?

Ja ich hab auch mal alles so gelassen wie es ist und es hat nicht 
funktioniert

von spess53 (Gast)


Lesenswert?

Hi

>Ja ich hab auch mal alles so gelassen wie es ist und es hat nicht
>funktioniert

Was hast du so gelassen?

>//  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
>#define LCD_RS        PD6

>//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
>#define LCD_EN        PD4

Das passt aber nicht mit der Verkabelung deines Displays zusammen.

MfG Spess

von Gunasiri (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab das so gelassen, wie auf dem ersten Bild.

und trotzdem erschreinen die schwarzen balen

von spess53 (Gast)


Lesenswert?

Hi

>Ich hab das so gelassen, wie auf dem ersten Bild.
>und trotzdem erschreinen die schwarzen balen

Wenn ich mich beim verfolgen deiner Drähte nicht vertan habe, ist der 
Anschluss am Display so:

PD4  RS
PD5  R/W
PD6  E

Und das passt nicht zu

>#define LCD_EN        PD5

MfG Spess

von Gunasiri (Gast)


Lesenswert?

Danke

Das habe ich auch gemerkt und egal was ich mache, die schwarzen balken 
bleiben, kann es sein, dass das LCD kaputt ist?

von spess53 (Gast)


Lesenswert?

Hi

>Das habe ich auch gemerkt

Und was hast du dem 'Merken' gemacht?

>kann es sein, dass das LCD kaputt ist?

Möglich. Aber für viel wahrscheinlicher halte ich Fehler die durch dein 
etwas planloses Rumgediller zustande kommen.

MfG Spess

von Gunasiri (Gast)


Lesenswert?

Ich hab mich eigentlich gut informiert, Datenblätter angeschaut und die 
Pins überprüft.
Ich sehe halt keinen Fehler.

Und deswegen bin ich hier.

von spess53 (Gast)


Lesenswert?

Hi

>Ich sehe halt keinen Fehler.

E an PD6 anschließen und im Programm als PD5 definieren ist für mich 
ein Fehler.

MfG Spess

von Gunasiri (Gast)


Lesenswert?

Diesen Fehler habe ich auch wieder behoben, es ändern sich nichts.


Trotzdem danke für Ihre Hilfe.

von Markus (Gast)


Lesenswert?

1. Verbinde PD0 bis PD3 vom LCD mit Masse, sofern du 4Bit-Ansteuerung 
benutzt. Bei 8Bit-Ansteuerung musst du sie mit dem µC verbinden.
2. Stell den Kontrast so ein, dass die Balken etwa halb zu sehen sind, 
dann erkennst du, wenn das LCD reagiert, denn bei zu starkem Kontrast, 
siehst du die Balken auch, wenn alles funktioniert.

von Markus (Gast)


Lesenswert?

Mit PD0 bis PD3 meine ich die Datenleitungen vom LCD, nicht den Port vom 
µC.

von spess53 (Gast)


Lesenswert?

Hi

>1. Verbinde PD0 bis PD3 vom LCD mit Masse, sofern du 4Bit-Ansteuerung
>benutzt.

Verbreite nicht solchen Unsinn. Die Displaycontroller haben integrierte 
Pull-Up-Widerstände .

MfG Spess

von Gunasiri (Gast)


Lesenswert?

Also vielen dank!
Hat sich also geklärt.

Hab die Pins alle nochmal hingelötet und siehe da... es funktioniert!
Aber trotzdem vielen Dank!@spess53

von spess53 (Gast)


Lesenswert?

Hi

>Hab die Pins alle nochmal hingelötet und siehe da... es funktioniert!

Den Hinweis auf deine Lötstellen hatte ich schon auf der Zunge. Hatte 
mir es aber erst mal verkniffen.

MfG Spess

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.