welches LCD passt zum LCD Tutorial

Gast #937573
Lesenswert?

Hallo Leute! Ich grüsse Euch!

Hat Jemand vieleicht Erfahrungen mit diesem interessanten Tutorial???
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung

Ich möchte für mein kleines Projekt ein LCD ansteuern. Es soll aber 
nicht mehr Arbeit machen als bis her.

LCD (Zeilen x Zeichen 4x20). Controller (ATmega32)

Kann mir da Jemand was empfehlen was garantiert zu diesem Tutorial 
passt?
Ohne die Initialisierungszeiten etc. zu ändern. Es soll einfach laufen!
Auf welches LCD ist dieses Tutorial zugeschnitten??? (Reichelt / Pollin)

Ich habe Beiträge gelesen, in denen doch die Kompatibilität zwischen dem 
HD44780 und KS0066 in Frage gestellt wird.

Bitte nicht falsch verstehen. Ich bin nicht faul, habe aber genug Ärger 
mit dem Rest des Projektes...

Wäre für einpaar Tips sehr dankbar.

Vielen Dank
#937587
Lesenswert?

Ja, es hat bei mir auch funktioniert.
Wenn du mir noch sagst wo du normalerweise bestellst, kann ich mal 
schauen ob ich eines finde, welches ich schon erfolgreich getestet habe. 
Ich kann dir aber versprechen (aber keine Geld zurück Garantie) wenn du 
es so machst wie im Tutorial beschrieben und das LCD o.g. Controller 
hat, dass es funktioniert. Bei mir hats auf jeden Fall immer geklappt.
Gast #937588
Lesenswert?

Es ist mir egal wo ich das LCD bestelle.( Conrad, Pollin, Reichelt)
Hauptsache das LCD funktioniert mit dem Tutorial ohne dass ich am Code 
was verändern muss.

Was für ein Display hast du? Wo hast du das gekauft?

Danke für Deine Antworten.
#937599
Lesenswert?

Einsteiger wrote:

> Ich habe Beiträge gelesen, in denen doch die Kompatibilität zwischen dem
> HD44780 und KS0066 in Frage gestellt wird.

Ja, KS0066 und HD44780 funktionieren nicht identisch. Für das Tutorial 
sollte die kompatibilität aber locker langen. Jedenfalls sind die 
meisten Fehler, die hier gemacht werden, Verkabelungsfehler oder 
timingprobleme durch falsche Taktung.
#937613
Lesenswert?

Einsteiger wrote:

> Hast DU schon mal ein 4x20 LCD zum laufen gebracht?
> Ich weiss nicht was für ein Display ich kaufen soll?

Ja, habe ich.
Aber im Prinzip ist es für die Ansteuerung ziemlich belanglos, ob du ein 
zwei- oder ein vier zeiliges Display hast. Bei Reichelt sollte unter der 
Artikelnummer "LCD-MODUL 16X4" etwas passendes auftauchen.

Für den Anfang empfehle ich vieleicht doch, ein kleineres Display zu 
nehmen, da diese günstiger sind, falls du dich mal verlöten solltest. 
Das kommt bei den ersten Experimenten schonmal vor. "LCD 162C" ist z.B. 
mit knapp 7€ super günstig.

Wie ich bereits sagte, für die prinzipielle Ansteuerrung ist es 
unerheblich, ob das Display 4 oder 2 Zeilen hat. Später kannst du 
einfach das Display austauschen und mit wenigen Handgriffen die Code 
ganz leicht anpassen.
Gast #937972
Lesenswert?

OK Leute.

Ich habe mir nun folgendes LCD gekauft:

- DEM 20485 SYH-LY
- LCD Controller LSI KS0066
- 4x20

Datenblatt : 
http://www.soselectronic.ro/a_info/resource/d/dem/dem20485syh-ly.pdf

Ich werde mich gleich morgen an die Arbeit machen und das LCD nach 
diesem
Tutorial anschliessen :

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

Ich hoffe Ihr werdet mich einbißchen unterstützen!

Bis dahin danke ich Euch für Eure Hilfe!
(Ich werde es schön dokumentieren und Online stellen damit Anfänger wie 
ich
Euch in Zukunft nicht mit solchen Fragen belästigen)

P.S. Habe ich überhaupt das Richtige LCD gekauft???


Liebe Grüsse
Gast #938154
Lesenswert?

Hallo ich bin´s wieder!

Wie versprochen habe ich jetzt alles laut diesem Tutorial verdrahtet:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung

Es tut sich überhaupt nichts :o(  NATÜRTLICH NICHT...
Klar habe ich mir gedanken gemacht und kam zu dem Ergebnis, dass
dieses Tutorial für den HD44780-Controller erstellt worden ist.

Im Klartext: Die Initialisierung des LCD´s kommt erst garnicht zustande.

Mein LCD benötigt folgende Initialisierung (sehe Anhang)

Leider bin ich (noch) nicht fähig ohne Hilfe diese Initialisierung auf
mein LCD umzuschreiben.


Original aus dem Tutorial :

...
void lcd_init(void)
{
   LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN);   // Port auf 
Ausgang schalten

   // muss 3mal hintereinander gesendet werden zur Initialisierung

   _delay_ms(15);
   LCD_PORT &= 0xF0;
   LCD_PORT |= 0x03;
   LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0
   lcd_enable();

   _delay_ms(5);
   lcd_enable();

   _delay_ms(1);
   lcd_enable();
   _delay_ms(1);

   // 4 Bit Modus aktivieren
   LCD_PORT &= 0xF0;
   LCD_PORT |= 0x02;
   lcd_enable();
   _delay_ms(1);

   // 4Bit  2 Zeilen  5x7
   lcd_command(0x28);

   // Display ein  Cursor aus  kein Blinken
   lcd_command(0x0C);

   // inkrement / kein Scrollen
   lcd_command(0x06);

   lcd_clear();
}
...

Kann bitte mir jemand helfen ??? Wie kann ich die lcd_init Funktion auf
mein LCD unter Einhaltung der richtigen Reihenfolge und Zeiten 
umschreiben???

Für kleine und große Hilfe danke ich Euch vielmals.

Liebe Grüsse
Angehängte Dateien:
#938162
Lesenswert?

Einsteiger wrote:

> Für kleine und große Hilfe danke ich Euch vielmals.

Zu wenig relevante informationen.
Bitte erstelle einen Vollständigen verdrahtungsplan und hänge den 
kompletten Code an. Welchen Microcontroller auf welchen Board verwendest 
du?

Du Beschreibst, daß sich garnichts tut. Das kann eigentlich nicht sein. 
Nach dem Einschalten des Displays sollten zumindest zwei schwarze Balken 
in Reihe eins und drei sichtbar sein.
Gast #938171
Lesenswert?

Hallo Niels.
Du hast Recht.


Meine Hardware :
-----------------------------------------
- Atmel Evaluationsboard Version 2.0.1
- ATMega32 Controller
- DEM 20485 SYH-LY

Meine Software :
-----------------------------------------
- AVR Studio
- PonyProg

(Es sollte alles in C programmiert werden)

Meine Kenntnisse :
-----------------------------------------
- Anfänger


Verdrahtung :
-----------------------------------------


ATMEGA32 :
----------

1  Vss  GND
2  Vcc  5V
3  Vee  GND
4  RS  PD4
5  RW  GND
6  E  PD5
7  DB0  offen
8  DB1  offen
9  DB2  offen
10  DB3  offen
11  DB4  PD0
12  DB5  PD1
13  DB6  PD2
14  DB7  PD3


Code :
-------------------------------------------

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

Funktion :
-------------------------------------------

Beim Einschalten zeigen sich in der 1. und 3. Zeile waagerechte Balken
s. Anhang
Angehängte Dateien:
Gast #938356
Lesenswert?

@ Niels.

Ja klar. So ein Anfänger bin ich auch noch nicht.
Controller funktioniert auf jeden fall.
Am Port_C ist eine Lichtschranke angeschlossen. (Die Funktion ist da)
Zustand der Lichtschranke derzeit durch eine LED signalsiert.

Soweit alles ok.

Ich möchte einfach nur bezwecken dass mein LCD eine Meldung ausgibt,
wenn die Lichtschranke verdeckt ist...
Einfach ist gut...

Ich komme mit der Initialisierung des LCD´s nicht zu recht.

Gruss
Gast #938372
Lesenswert?

Na ja 8 MHz wie im Tutorial.

Die Fuses habe ich wie folgt gesetz.(s. Anhang)

Aber das ist nicht das Problem (denke ich)

Die Initialisierung bei dem KS0066-Controller unterscheidet sich von dem 
KS0070 aus dem Tutorial.
( 
http://www.mikrocontroller.net/attachment/37946/4-bit_interface_mode.PNG 
)

Und das bekomme ich nicht hin. Die Erfahrung fehlt mir leider.

Kannst Du sowas programmieren???

Gruss
#938392
Lesenswert?

eine 1:1 umsetzung dieser inits wäre wohl:
1
lcd_init()
2
{
3
  LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN);   
4
 
5
   
6
   _delay_ms(40);
7
   LCD_PORT &= 0xF0;
8
   LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0
9
   LCD_PORT |= 2;
10
   lcd_enable();
11
   lcd_enable();
12
   LCD_PORT &= 0xF0;
13
   LCD_PORT |= 0x0C;  // N und F auf "1"
14
   lcd_enable();
15
   _delay_ms(1);
16
   LCD_PORT &= 0xf0;
17
   lcd_enable();
18
   LCD_PORT |= 0x0F;   // D,C und B auf "1"
19
   lcd_enable();
20
   _delay_ms(1);
21
   LCD_PORT &= 0xF0;
22
   lcd_enable();
23
   LCD_PORT |= 0x01;    // display-Clear
24
   lcd_enable ();   
25
   _delay_ms(5);        // 5ms warten bis display ok
26
   LCD_PORT &= 0xF0;
27
   lcd_enable();
28
   LCD_PORT |= 0x06;    // I/D="1"  SH="0"
29
   lcd_enable();   
30
}

falls das nicht funzt, verlänger mal die delays in der function 
lcd_enable().... grössere Wartenzeiten können nie schade...
#938442
Lesenswert?

Ich will dir ja nicht die Hoffnung nehmen, aber ich rechne nicht damit, 
daß es daran liegt. Eigentlich tun die Display-Controller sich alle 
nichts.

Ich würde an deiner Stelle eher nochmal die Verkabelung checken und 
sicherstellen, daß der Mega32 tatsächlich auch mit 8Mhz läuft.
Gast #938473
Lesenswert?

Also.
Es funktioniert nicht.

ABER. Bevor ich eine falsche Diagnose stelle, werde ich erstmal 
ausgiebig
eine fehlersuche durchführen...

Ferner werde ich etwas mit den Zeiten herumspielen...

Ich melde mich sobald ich alles durch habe.

Vielen, vielen Dank erstmal !

Liebe Grüsse
Gast #938662
Lesenswert?

Sorry Niels.
Wir müssen das ganze auf die nächsten Tage verschieben.

Habe den Atmega32 dank ponyprog (und meines Unwissens) gesperrt.

Muss erstmal einen neuen bestellen.

Aber ich komme wieder. GANZ BESTIMMT.

Ich mache mich bemerkbar. Denke spätestens am mittwoch

Danke erstmal

und vielen dank

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren