Guten Tag,
ich habe ein paar Probleme mit meinem neuen LCD-Modul.
Schaut euch bitte mal die Bilder an, passt das, dass nur oben auf dem
Display schwarze Quadrate zu sehen sind?
Weiter passiert auch nichts ich kann an der Kontrastspannung drehen wie
ich will, aber nur der Kontrast der Quadrate ändert sich kein Text zu
sehen!
Hier mein Programm, dass ich aus dem Forum habe:
$regfile = "m32def.dat"
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 ,
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 20 * 4
Initlcd
Cls
Cursor Off
Locate 1 , 1
Lcd "Hello World"
Do
nop
Loop
End
Ich besitze einen ATmega32 die Fuses sind richtig eingestellt!
Bitte helft mir!
Mit freundlichen Grüßen
Robin
Ok Vielen Dank
mit dem 16*2 werde ich es gleich noch einmal Testen!
Die Fuses sind auf 16 MHz eingestellt! Und ich habe das Pollin
Evaluationsboard mit 16MHz Schwingquarz.
Hast Du auch wirklich die Leitungen DATA 4-7 vom Display benutzt?
Ich frage das nur, weil Du ja alle 16 Leitungen des Displays belegt
hast.
Hast Du einen Schaltplan gezeichnet, dann sende ihn bitte mit.
MfG Paul
Tippe auch auf Anschlussfehler. Einfach mal zeigen, was wo angeschlossen
ist. Die Pinbelegung stimmt beim Pollin-Board manchmal nicht und/oder
wird leicht verwechselt.
Was könnte man machen? ATmega32 Pinbelegung heraussuchen.
Spannungsversorgung aus und alles einmal mit einem Multimeter
"durchpiepen".
Von GND weglegen hab ich schon getestet das bringt auch nichts!
Die Jumper braucht man ja nicht, wenn doch für was?
Aber passt das mit dem Display überhaupt (nur die obere Reihe schwarze
Quadrate?)
Robin Wenert schrieb:> Die Jumper braucht man ja nicht, wenn doch für was?
Die sind zur Verbindung mit den LEDs, den Tastern und dem Summer
gedacht. Hätte ja sein können, dass da noch eine Verbindung besteht.
Robin Wenert schrieb:> Aber passt das mit dem Display überhaupt (nur die obere Reihe schwarze> Quadrate?)
Wenn Dein Display korrekt angesteuert wird, verschwinden die Quadrate.
Robin Wenert schrieb:> Aber passt das mit dem Display überhaupt (nur die obere Reihe schwarze> Quadrate?)
Das ist völlig normal, solange das Display nicht ordentlich
initialisiert wurde.
Wenn ich jetzt das Display mit externer Stromversorgung betreibe, sind
die Quadrate da, wenn ich allerdings das Pollin Board anschalten,
verschwinden sie einfach.
Was ist jetzt los, ich hab auch die Kontrasteinstellung mehrmals
verändert, aber es ist kein Text zu sehen.
Ich würd eventuell sogar soweit gehen, dass ich mir ein Testprogramm
mache, mit dem ich einen einzelnen Pin vom PortD auf 1 setze und alle
anderen auf 0. Dann messe ich mit dem Voltmeter, ob am LCD auch wirklich
nur dieser eine Pin auf 1 ist und alle anderen auf 0. Hab ich das für
einen Pin nachgewiesen, dann kommt der nächste drann.
Damit hätte ich dann (auch zur eigenen Beruhigung) nachgewiesen, dass
die komplette Kette vom Programm bis zu den LCD Pins korrekt verdrahtet
ist, nirgends Leiterbahnunterbrechungen existieren und auch keine
Kurzschlüsse vorliegen. Und zwar am konkreten Aufbau, und ich teste das,
was ich tatsächlich verdrahtet habe und nicht das, was ich glaube
verdrahtet zu haben.
Der allererste Schritt ist nun mal die Sicherstellung der korrekten
Verdrahtung. Wenn da ein Fehler drinn ist (und ja, ich hab mich selbst
dabei auch schon vertan; das geht schneller als einem lieb ist), dann
KANN sich die Software abmühen soviel sie will, es wird nicht
funktionieren. Leider gilt die Umkehrung nicht.
Wennd dann immer noch nicht geht, dann ist entweder das Timing falsch
oder dieses LCD benötigt eine etwas andere Initialisierungssequenz.
als ich diese Displays angesteuert hatte stand bei mir teilweise garkein
lcdinit drin....
(was jetzt nicht heißen soll das man es nicht benötigt!!!)
aber
config lcdbus = 4
sollteset du mal mit dazuschreiben!
Gruß
bei mir funktioniert das Display mit folgender initialisierung,
die Pausen sind auch wichtig.
Gruß Roman
;RS an pd6
;RW an gnd
;E an pb4
;Data0-3 an PB0-Pb3
lcdinit:
ldi r16,0
out portb,r16
cbi portd,6 ;RS =0
ldi r16,2 ;4 bit modus an (noch im 8 bit modus bit5)
out portb,r16
rcall enable
ldi r18,5
rcall warten2 ;etwas warten ca.5 ms
ldi r16,0b00101000 ;Function set N 1=2 zeilen Display, F 0=5x7
zeichensatz
rcall byteout
rcall delay5 ;warten 80 us
ldi r16,0b00001100 ;Display ON/OFF
rcall byteout
rcall delay5
ldi r16,0b00000001 ;CLS
rcall byteout
rcall delay5
ldi r16,0b00000110 ;Mode set
rcall byteout
rcall delay5
sbi portd,6
ldi r16,0
sts $0068,r16
ret
enable:
sbi portb,4
nop
nop
nop
nop
nop
nop
nop
nop
cbi portb,4
nop
nop
nop
nop
nop
nop
nop
nop
ret
sendbyte:
byteout: ;zahl in r16
push r17
push r16
mov r17,r16 ;zahl in r16
swap r16
andi r16,0x0f
out portb,r16
rcall enable
mov r16,r17
andi r16,0x0f
out portb,r16
rcall enable
pop r16
pop r17
ret
adresse: ;adresse in r16 0-7 LCD 1x16 0x40-0x47
push r17
push r16
cbi portd,6
ldi r17,128
or r16,r17
rcall byteout
sbi portd,6
pop r16
pop r17
ret
zeichen: ;zeichen in r16
sbi portd,6
rcall byteout
ret
Roman K. schrieb:> die Pausen sind auch wichtig.
Genau -Selbst, wenn sie 4 1/2 Jahre lang sind.
:)
Kundendienst: "Was steht auf dem Display?" Anrufer: "Eine Blumenvase!"
MfG Paul
Das LCD TC1602 ist ein stinknormales HD44780 kompatibles und
unterscheidet sich durch nichts von allen anderen. Die Bezeichnung
'1602' sollte schon klarmachen, das es ein 16 Zeichen Display mit 2
Zeilen ist.
Roman K. schrieb:> bei mir funktioniert das Display mit folgender initialisierung,> die Pausen sind auch wichtig.
Spassvogel. Du kodierst mit NOPs, sagst aber nicht, mit welcher
Taktfrequenz dein MC läuft.
Da stimmen noch andere Sachen nicht:
> ;Data0-3 an PB0-Pb3
glaube ich nicht und die Initialisierung ist nicht konform mit dem
Datenblatt von Hitachi, das eindeutig sagt, das der 4-Bit Modus dreimal
aufgerufen werden muss, bevor man sicher sein kann - siehe Anhang.
Ausserdem löscht der Poster unnötigerweise den gesamten Port B statt nur
der benutzten Pins.