Ich habe ein Program für LCD geschrieben( wie AVR Tutorial ). Ich benutze Atmega8515 und LCD mit KS0066U Controller. Es funkzuniert aber nicht. Bitte hilf mir!
Da ist der Anhang mit dem Schaltbild verloren gegangen. Ich habe gelesen, dass das passieren kann, wenn VORSCHAU gedrückt wird. Bitte noch mal posten. Die Schaltung ist für die Lösungsfindung wichtig.
Himmel, Hintern und Nähgarn. Wie oft soll man es eigentlich noch sagen: kein .bmp sondern png. 1,6MByte für sowas lächerliches.
Spontan würde ich sagen, dass dieser Aufbau (im Anhang vergrössert und komprimiert) nie und nimmer im Tutorial beschrieben ist. Welchen Sinn haben die vier Brücken zwischen PORTB und PORTD? Wo sind die Pinnummern an PORTB und PORTD? An PORTB kann ich nur 7 IO-Leitungen entdecken, an PORTD 8. Ich würde das neu aufbauen - so einfach wie möglich.
Vier Brücken ist für beide Fälle( 4Bits und 8 Bits Ansteuerung). Du kannst nur 7 IO Leitungen an PORTB entdecken weil ich nur 7 brauche. Die andere habe ich mit GND verbunden. Und im Tutorial steht auch keine Anleitung für LCD Schaltung. Ich habe es selbst gemacht.
Stefan Berker wrote: > Vier Brücken ist für beide Fälle( 4Bits und 8 Bits Ansteuerung). > Du kannst nur 7 IO Leitungen an PORTB entdecken weil ich nur 7 brauche. > Die andere habe ich mit GND verbunden. Das (die Brücken und der fixe Anschluss auf GND) ist keine gute Idee. Damit zerschiesst man sich ganz schnell einen Port, wenn die Dinger gegeneinander treiben. > Und im Tutorial steht auch keine Anleitung für LCD Schaltung. Ich habe > es selbst gemacht. http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD
Für die Schaltung werde ich noch mal überlegen, Ihr habt Recht. danke euch. Und für das Program?
Spontan sieht es bis auf Kleinigkeiten (void main(void)) nicht schlecht aus. Als nulltes ;-) würde ich die Kontrasteinstellung am LCD kontrollieren - nicht dass der zu niedrig eingestellt ist und einfach die Anzeige "blank" ist. Wichtig für die sehr wichtigen Delays ist, dass F_CPU korrekt definiert ist und dass mit Optimierung übersetzt wurde vgl. AVR-GCC-Tutorial - Warteschleifen. Als zweites würde ich die Pinzuordnung prüfen, bin dann aber am Schaltplan gescheitert. An nächstes wäre dann der Vergleich der Initialisierungssequenz und der restlichen Ansteuerung mit dem Datenblatt des LCD-Controllers dran. Das müsste ich aber auftreiben lassen; ich glaube in der Artikelsammlung sind ein paar Weblinks drin. Auch habe ich nicht im Kopf, ob alle Pins von PORTB und PORTD beim Atmega8515 General-I/O-Pins sind oder ob einige andere Funktionen haben. D.h. hier würde ich auch im Datenblatt lesen.
Auf die Schnelle drübergeschaut: Das hier: { PORTB |= (0<<PB0);//RS=0 löscht nicht ein Bit. 0 << PB0 ist immer noch 0 (Eine 0 kann man nach links schieben sooft man will, sie bleibt trotzdem 0) Ergo steht da sinngemäß PortBit = PortBit | 0 Wenn du aber irgendein Bit mit 0 veroderst, ändert sich nichts am Bit A B A OR B 0 0 0 1 0 1 0 1 1 1 1 1 (B sei die Maske, also das 0 << PB0. Das Ergebnis ist identisch zu A. Nur dann wenn B eine 1 aufweist, ändert sich das. Du hast aber keine 1, 0 << PB0 ist immer 0) Ein Bit wird so gelöscht PORTB &= ~( 1 << PB0 ); Bit setzen PORTB |= ( 1 << PB0 ) Bit Löschen PORTB &= ~( 1 << PB0 ) Bit abfragen PORTB & ( 1 << PB0 )
Als nächstes würde ich dann mal hergehen und in das Programm künstliche Endlosschliefen an strategischen Punkten einbauen. Daduch bleibt das Pgm quasi stehen und du hast Zeit genug mit einem Multimeter direkt am Display zu kontrollieren, ob alle Leitungen den Pegel haben, den sie haben sollen.
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.