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
>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.
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
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
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
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
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
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.
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
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