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
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