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
Also wenn du nach Tutorial vorgehst, dann führt das sicher zum Erfolg. Ich würde ein LCD mit HD44780-Controller nehmen, damit funktionierts ganz sicher! Viel Erfolg
Könntest Du mit vielleicht ein Modell nennen (mit Bestellnummer) mit dem es totsicher funktioniert? Hat es bei dir auch funktioniert? Wäre sehr dankbar für diese Hilfe. Danke
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.
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.
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.
Danke Niels. Hast DU schon mal ein 4x20 LCD zum laufen gebracht? Ich weiss nicht was für ein Display ich kaufen soll? Gruss
P.S. Ist das Tutorial nicht für ein 2 Zeiliges LCD geschrieben? lg
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.
Einsteiger wrote: > Könntest Du mit vielleicht ein Modell nennen (mit Bestellnummer) mit dem > es totsicher funktioniert? Huhu ;) Schau mal hier: http://www.reichelt.de/?;ACTION=2;LA=2;GROUP=A523;GROUPID=3009;START=0;OFFSET=16;SHOW=1
Danke Michael. Ich melde mich heute abend noch mal. Bis dahin schasue ich mir das ding an.. DANKE
Nochmal kurz! Welches LCD von den vielen??? Kann mir jemand eine ganaue Bestellnummer nennen??? Grüsse
Einsteiger wrote:
> Kann mir jemand eine ganaue Bestellnummer nennen???
Mach mal die Augen auf. In meinem Posting hatte ich zwei bestellnummern
genannt.
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
Hi, der ganze Krempel den es bei Reichelt gibt an Displays (2*16 usw.) geht da, ist sowas wie "Industriestandard".
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
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.
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
Kann mir Jemand vielleicht die lcd_init Funktion erläutern? Wie funktioniert das? Mit dem Tutorial komme ich nicht wirklich zurecht... Danke im voraus.
Einsteiger wrote: > Mit dem Tutorial komme ich nicht wirklich zurecht... Wie gut kannst du C? Schon irgendwelche Vorerfahrungen? Hast du einen Testcode mal ausprobiert, ob der Controller generell überhaupt Code ausführt? (zb. in dem man eine LED blinken lässt)
@ 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
Das häufiste Problem beim Ansteuern eines LCDisplays ist ein falsches Timing. Hast du F_CPU korrekt gesetzt?
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
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...
Ich werde es gleich ausprobieren. Bin echt gespannt. Wenn das klappt dann bist du echt gut. Bis gleich!!!!!!!!!!!!!!!!!!!
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.
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
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
Hallo Niels! Wollte nur Bescheid geben, daß mich Deine Hilfe zum Erfolg geführt hat! Super vielen Dank!
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.