Hallo Da ich vor kurzem in die Welt der Mikrocontroller einsteigen wollte habe ich mir einen Atmega32 16pu gekauft. Alles hat gut funktioniert doch jetzt habe ich mir einen 16x2 LCD von ANAG VISION gekauft. Doch wenn ich diesen an den Mikrocontroller anschließe und programmiere passiert gar nichts. Er ist so angeschlossen: VSS 0V Vdd 5V V0 10K Potentiometer RS PB0 R/W PB1 E PB2 DB0-DB7 PA0-PA7 Der C-code (von newbiehack.com) ist im Anhang. Ich hoffe ihr könnt mir weiterhelfen lg Robert
Schade dass du nicht PortC benutzt sonst hätte ich sofort das hier eingeworfen: Beitrag "LCD am PORTC"
Macht es einen Unterschied an welchem Port ich den LCD angeschlossen hab?
> passiert gar nichts -v plz > Macht es einen Unterschied an welchem Port ich den LCD angeschlossen > hab? Bei korrekter Konfiguration nicht. PORTC ist der Klassiker bei vergessenem JTAG.
Hi >Alles hat gut funktioniert doch jetzt habe ich mir einen 16x2 LCD von >ANAG VISION gekauft. Das ist aber ein einzeiliges Display. Such dir mal das Datenblatt vom Displaycontroller (KS0066). Deine Initialisierung sieht nicht sehr datenblattkonform aus. MfG Spess
Tut mir echt leid ich habe das falsche Datenblatt heruntergeladen.
> -v
'verbose'.
'geht nicht' (und Variationen) ist so ziemlich die schlechteste
Fehlerbeschreibung, die man sich vorstellen kann.
Dir fehlt die komplette Initialisierung! Du sendest sofort Commandos.
Schau mal hier http://www.ece.uidaho.edu/ee/classes/ECE341/datasheets/SamsungKS0066U.pdf auf Seite 24 bzw. 26 am besten aber du schaust welcher Controller genau verbaut ist und holst dir das Datenblatt dieses Herstellers.
Das steht normalerweise im Datenblatt. Commands: 0x03 0x03 0x03 0x02 0x28 0x0C 0x04 0x01 ...und Wartzeiten dazwischen nicht vergessen. (zumindest meine Variante mit 4-Bit Mode)
Ich hab die Initialisierung jetzt geschrieben doch es hat sich leider nichts geändert.
Es ist immer richtig, sich an neue Dinge zu wagen, aber dann sollte man auch in der Lage sein, das Datenblatt richtig zu lesen. Es hilft dir nicht, wenn dir alles vorgesagt wird, eine strukturierte Arbeitsweise ist elementar. --> Datenblatt lesen Gruß Jannis
Hallo! Ich glaube fast, deine Bitmasken sind nicht ganz richig. Meiner Meinung nach wird REG &= ~1<<POS zu REG &= 0<<POS, du willst aber eine 1 dorthin schieben. Versuche mal Kalmmern: REG &= ~(1<<POS) LG
> Der LCD zeigt keine Reaktion
Das ist schon mal gut. Weil dann liegt der erste Fehler nicht(!) an der
Initialisierung. Dreh mal am Kontrast solange bis Du einen Balken oder
Zeichen sehen kannst.
1. Ich habe jetzt die klammern überall eingefügt das hat aber leider nichts geholfen. 2. Egal wie weit ich das Potentiometer drehe ich bekomme nichts zu sehen.
Hast du die richtige Spannung? Nicht verpolt? Die schwarzen Balken müsstest du auf jeden Fall sehen können, auch ohne Initialisierung. Schau dei mal das an: http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD
#define F_CPU 16000000UL // Das hier vor #include <avr/io.h> #include <util/delay.h> // Dem hier einfügen sonst stimmt das Timing nicht. Den Wert der F_CPU musst noch an deinen Quarz anpassen. Wenn du keinen benutzt dann 1000000UL eintragen.
Mein Netzgerät ist auf 5V eingestellt. Pin1 ist 0V und Pin2 ist 5V. Sollte alles stimmen.
Ich habe jetzt #define F_CPU 1000000UL eingefügt, hat leider nichts geholfen
Dann dreh mal am Potentiometer und schau, ob sich die überhaupt verwendet. 0.9V ist sicher zu wenig für den Kontrast.
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.