Forum: Mikrocontroller und Digitale Elektronik ATmega32 + LCD TC1602-08


von Robin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

> $crystal = 16000000

Hast du 16Mhz?
Hast du das kontrolliert?

> Config Lcd = 20 * 4

Das kann ich von hier sehen, dass das kein 20*4 ist

von Robin (Gast)


Lesenswert?

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.

von Robin (Gast)


Lesenswert?

Leider hat sich trotzdem nicht geändert, immer noch die schwarzen 
Quadrate wie auf dem Bild zu sehen!


Ist es kaputt :(((

von Paul B. (paul_baumann)


Lesenswert?

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

von Karl (Gast)


Lesenswert?

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 Robin W. (robo11)


Lesenswert?

So ich hab mich mal hier angemeldet, weils einfach ein geniales Forum 
ist!

Ich benutze den Extensionsport J4 des Pollin Evaluationsboardes.

Display-Pin          Extesionsport-Pin      ATmega32-Pin
Vss                      39                    GND
Vdd                      40                    VCC
V0     ---Poti---->      39                    GND
RS                       28                    PD2
RW                       39                    GND
E                        29                    PD3
DB0-3                    39                    GND
DB4                      30                    PD4
DB5                      31                    PD5
DB6                      32                    PD6
DB7                      33                    PD7
LED+                     40                    Vcc
LED-                     39                    GND

von Paul B. (paul_baumann)


Lesenswert?

Mach mal DATA 0-3 probeweise von GND ab.

MfG Paul

von Karl (Gast)


Lesenswert?

Was ist mit JP3 - JP8?

von Robin W. (robo11)


Lesenswert?

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

von Karl (Gast)


Lesenswert?

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.

von Unlucky2012 (Gast)


Lesenswert?

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.

von Robin W. (robo11)


Lesenswert?

Achso OK! Vielen Dank


Die Jumper hab ich noch aufgesteckt aber an denen sollte es doch nicht 
liegen, die verändern ja nichts am Ausgang.

von Robin W. (robo11)


Lesenswert?

Kann mir wirklich keiner mehr weiterhelfen? :(

von Robin W. (robo11)


Lesenswert?

Meine Messergebnisse von ATmega32 nach J4 sind auch anlog zu der 
Pinbelegung des Extesionsport J4!


Was kann ich noch probieren?

von Robin W. (robo11)


Lesenswert?

So, jetzt hab ich ein paar Softwareänderungen gemacht!
1
$regfile = "m32def.dat"
2
$crystal = 16000000
3
4
Config Portd = Output
5
Config Portc.0 = Output
6
7
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
8
Config Lcd = 16 * 2
9
10
Portc.0 = 0
11
Initlcd
12
Cls
13
Cursor Off
14
15
Locate 1 , 1
16
Lcd "Hello World"
17
18
Do
19
 nop
20
Loop
21
22
End

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.

von Robin W. (robo11)


Lesenswert?

OK ich hab zwar nichts gemacht aber die Quadrate sind wieder dauerhaft 
da!

Bitte helft mir!

von Hubert G. (hubertg)


Lesenswert?

Hast du schon mal vom LCD-Pin zum Mega32-Pin jeden einzelnen durch 
gemessen?

von Karl H. (kbuchegg)


Lesenswert?

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.

von leser (Gast)


Lesenswert?

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ß

von Roman K. (roman2702)


Lesenswert?

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

von Paul B. (paul_baumann)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

Hi

> Du kodierst mit NOPs, sagst aber nicht, mit welcher
>Taktfrequenz dein MC läuft.

Die NOPs sollten für 40MHz reichen.

MfG Spess

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.