ATmega32 + LCD TC1602-08

Gast #2687818
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
Angehängte Dateien:
Gast #2687851
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".
#2687866
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
Gast #2687887
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.
#2690489
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.
#2690838
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.
Gast #2690848
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ß
#4772947
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
(Firma: matzetronics) #4773570
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.
(Firma: matzetronics) #4773997
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren