Ich habe ein LCD genau wie im Tutorial beschrieben. Nun wundert mich warum ich immer nur ein schwarzer streifen im bild habe? Der Pin 3 Vee hab ich probiert mit 0V, 5V. Was braucht der Pin 3 überhaupt? etwa ein Poti um den Kontrast einzustellen?
Hallo Dude Jawohl, für den Kontrast nimmt man am besten ein Poti. Manche Display benötigen sogar eine negative Spannung für den Kontrast. Probier doch mal ein 10k Poti von Vcc nach GND und mit dem Schleifer an das Display. Ciao René
Hallo Dude Also ich bin nach wie vor der Meinung, dass ein 10k Poti am geeignetsten ist. Wenn man sich die Verhältnisse einmal, bei Benutzung eines 100 Ohm Potis, veranschaulicht, dann stell man fest, dass das Poti in diesem Fall mal ebend locker 250 mW umsetzt, und das ist schon jede Menge. Also ein Pt10 von Piher macht das nicht mit :-( Also, da kein großer Strom für die Kontraseinstellung benötigt wird, meine ich dass ein 10k Poti das Sinnvollste ist. Ciao René
Mit dem Kontrast habe ich jetzt lange herumgespielt aber mein LCD will immer noch nicht. Warum habe ich nur ein Schwarzen Balken?? Ich hab mal versucht das LCD so anzuschliessen: 1 Vss -> GND 2 Vcc -> 5V 3 Vee (über 10K Poti aber jetzt wieder auf Masse) 4 RS -> PD4 am AVR 5 RW -> GND 6 E -> PD5 am AVR und Wenn ich jetzt einschalte habe ich auch nur ein Schwarzen Balken.
Das hatte ich aber gestern auch. Ich habe die ganzen Teile entlötet und auf einer neuen Platine wieder aufgebaut, das Hex mit der LCD.INC und der Ansteuerung erneut eingespielt, dann funzte das... Kontrollier vielleicht noch einmal Dein Progi und Deine Lötstellen, vielleicht hast Du ein Kabel vertauscht....Mit dem Kontrast hatte das bei mir gar nichts zu tun. MfG Christian
Also ich habe schon 2 LCD ausprobiert und beide sind gekauft, also keine Löhtstellen. Die Kabel hab ich schon etwa 15x neu angeschlosssen aber ich geh heute noch einmal alle Pins neu durch. Progi hab ich den STK500 und Quarz den 8Mhz, 4Mhz und den eingebauten. Das Hex hab ich vom Tutorial direkt heruntergeladen (LCD.ini und LCD.asm). Das einzige was ich abgeändet habe ist: .include "2333def.inc" zu 8515def.inc Wirklich Komisch :(
Aha, da ham wir's: ldi temp1, RAMEND ;Stackpointer initialisieren out SPL, temp1 muss in ldi temp1, low(RAMEND) ;Stackpointer initialisieren out SPL, temp1 ldi temp1, high(RAMEND) ;Stackpointer initialisieren out SPH, temp1 geändert werden (siehe http://www.mikrocontroller.net/tutorial3.htm)! MfG Andreas
@Rene, ich meinte ja auch kein 100 Ohm Poti als Spannungsteiler, sondern einen 100-270Ohm Widerstand direkt vom Kontrastpin des Displays gegen Masse. Probier das mal aus, klappt wunderbar. (auch von ca. 0° bis 40°) Potis sind immer Mist. Gruss, Holger
Das mit dem Poti hat sich erledigt. Aber das mit der änderung im Quelltext: ldi temp1, low(RAMEND) ;Stackpointer initialisieren out SPL, temp1 ldi temp1, high(RAMEND) ;Stackpointer initialisieren out SPH, temp1 hat mir leider auch nichts gebracht. BUMMER.
Jetzt ist mein AVR leer. Wenn ich jetzt alles verbinde und die Betriebsspannung gebe kommt auch ein Schwarzer Balken. Angeschlossen hab ich es sicher richtig laut Anleitung wo ich beim kauf mitbekomme habe.
Hallo Dude, bist Du sicher, dass Du das Programm auch gestartet hast? Nach dem Anlegen der Betriebsspannung startet der HD44780 nämlich im 1-Zeilen-Mode mit 1:8 duty. Die schwarze Zeile deutet darauf hin, dass das Display total übersteuert ist. Die zweite Zeile wird erst angesteuert, wenn Dein Programm den Controller initialisiert hat. Also: Programm laden, starten, Kontrastspannung so weit von 5V weg drehen, bis der Hintergrund in allen Zeilen gleichmäßig hoch kommt, dann wieder einen Schritt zurück. Je nach Display kann die LCD-Spannung auch negativer als GND werden (z.B. extended temp.-Typen). Das ist erlaubt, nur darf die Spannung dann erste später als die Vcc angelegt werden, sonst latcht der Controller und wird warm. Funktionierts? Rudolf Sosnowsky +++ LC Design EPSON Technology Partner E-Mail Rudolf.Sosnowsky@LC-Design.de Internet http://www.LC-Design.de
Hi, Ich denke der schwarze Balken ist nicht wirklich schwarz sondern mehr so ein helles Grau, das ist die Einschaltstellung wenn das Displ. nicht initialisiert wird, meine also dein Prog. hat irgendwelche Fehler. Untersuche doch mal besonders den LCD-Init Teil, da wird wohl dein Probl. stecken. Gruß Uwe
Nein es sind keine Hellen Grauen. Das mit dem initialisieren ist sicher ein problem. Mein Controller müsste richtig programmiert worden sein. Wenn ich die LED's vom Testboard anschliesse Leuchten zuerst alle, dann alle ausser LED4 und LED2. Nochmal zu meinem Programm, vom Tutorial LCD.ASM und LCD.INC einmal mit der änderung von diesem Beitrag, und einmal ohne.
Hi, Ich habe mir mal das Tutorial angesehen, das Init ist falsch! ;Initialisierung: muss ganz am Anfang des Programms aufgerufen werden lcd_init: ldi temp3,50 powerupwait: rcall delay5ms dec temp3 brne powerupwait ldi temp1, 0b00000011 ;muss 3mal hintereinander gesendet ;Falsch! ;es muß lauten ldi temp1, 0b00110000 ;Bit 4+5 müssen 1 sein, nicht Bit 0+1 out PORTD, temp1 ;werden zur Initialisierung rcall lcd_enable ;1 rcall delay5ms rcall lcd_enable ;2 rcall delay5ms rcall lcd_enable ;und 3! rcall delay5ms Gruß Uwe
Ich noch mal , Nehme alles zurück! DB4 - DB7 sind ja an Port D0 - Port D3 angeschlossen! Dann stimmt natürlich alles, sorry. Gruß Uwe
DUDE, oben haste aufgelistet, was du alles angeschlossen hast. in der auflistung fehlen die 4 datenleitungen! Vergessen aufzulisten?
Ja, da bei diesen die Adresse länger als ein Byte ist und somit High- und Low-Byte nacheinander übergeben werden müssen. MfG Andreas
Hey DUDE. Bei mir war es aehnlich, aber was hatte ich Trottel gemacht.. Die Pins der LCD fingen mit L+- (Hintergrundbeleuchtung) an , darueber stand aber die 1 fuer Pin1. Und im Datenblatt stand auch das 14/15 die Beleuchtung waere. Komisch das 14/15 vor 1 kommt... Lange Rede Pin1 war bei mir der Dritte und nicht der erste. Die Fehlersuche war auch nicht so schlimm weil immer die Hintergrund-LED anging und schwarze Balken erschienen, hab aber trotzdem ne 1 Stunde gesucht bis ich drauf kam. Vielleicht hilfts ja, zumindest seelisch Freudi
Die Pins müssten stimmen den ich habe die Beleuchtung an einem Labor Netzgerät angehänt und soblad ich das netzteil einschalte leuchtet die beleuchtung. Nochmals zu den displays. 1x habe ich das gleiche Sharp wie hier auf der Homepage unter LCD, und einmal habe ich Displaytech 402A.
@jonas Sorry 15/16 ist ein LM162KS1 von Sharp betrieben an M16C via 8 Bit. Hat bis zum Init (FunctionSet) schwarze Balken in der ersten Zeile, danach sind sie weg und der Cursor blinkt links oben. Freudi
Hallo ich habe soeben ein LCD an meinem 4433 angeschlossen und alles hat sofort wunderbar funktioniert Jetzt würde ich gerne den Text komfortabler eingeben zB so text1: ldi temp4,10 ; für 10 Zeichen ldi zl,low(tabelle1*2) ; Zeige auf Z-Pointer Lowbyte von Tabelle1 loop_msg1: lpm ; lade R0 mit Wert auf der der Z-Pointer zeigt mov temp1,r0 ; kopiere R0 in temp1 rcall lcd_data ; Daten senden inc zl ; Incrementiere Z-Pointer LOW no_carry1: dec temp4 ; 8 Zeichen senden brne loop_msg1 ret tabelle1: .db "Hallo Test" Warum geht das bei mir nicht ich bekomme nur 10 schwarze 4Ecke ?! jo Axel
Hallo, Du musst auch das High-Byte des Z-Pointers (ZH) setzen. Probier's mal mit dem Programm 'Stringkonstanten mit lpm laden' in der Codesammlung, das funktioniert auf jeden Fall. MfG Andreas
Hallo Andreas, es ging jetzt !! :-) ich glaube ich hatte den Pointer falsch erhöt warum hatte ich mit "inc" keinen Erfolg ? Damit ging`s: adiw ZL, 1 ;den Z-Pointer um 1 erhöhen, adiw = "add immediate to word" jo Axel
Auf der atmel hompage gibt es unter der Bezeichnung "AVR242: 8-bit Microcontroller Multiplexing LED Drive & a 4x4 Keypad." ein Application Note die genau das macht: http://www.atmel.com/atmel/products/prod201.htm Da gibt es ausserdem viele andere Beispiele die nicht schlecht sind. Viel Spass damit und ciao Remo
Hallo Axel, der Z-Pointer besteht aus 2 Bytes, du musst immer das Low- UND das Highbyte initialisieren. Dass es in diesem Fall auch so funktioniert hat liegt nur daran dass die Adresse von tabelle1 zufällig <=0xFF war. Beim Inkrementieren mit inc bist du dann wahrscheinlich über die 0xFF-Grenze gekommen, so dass der Z-Pointer auf den Anfang des ROMs gezeigt hat und lpm somit nur Müll liefern konnte. Beim erhöhen von adiw wird ZH erhöht wenn ZL überläuft, deshalb stimmt dann die Adresse. MfG Andreas
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.