Forum: Mikrocontroller und Digitale Elektronik Displaydramen (diesmal EADIP081)


von Thomas W. (thomas-w)


Lesenswert?

Hallo,

nachdem mir bei einem anderen Display mit einem anderen Controller schon 
sehr gut geholfen wurde und ich den Fehler (den konnte hier keiner 
wissen) dann doch eher zufaellig selbst gefunden habe haenge ich jetzt 
am naechsten Display, einem popeligen EA DIP081-CNLED

Diesmal habe ich die Ehre, das Ding nach meinen Beduerfnissen 
anzuschliessen und so habe ich mich fuer den PortC eines ATM162 
entschieden. Im Prinzip sollte der Prozessor keine Rolle spielen, ich 
schaffe nichtmal einen blinkenden Cursor auf das Ding.

Angeschlossen habe ich es wie folgt:
PC0-PC3 -> DB5-DB7
PC4 -> R/W
PC5 -> RS
PC6 -> E

Hier mal meine Initialisierungsroutine:

lcd_init:
    ldi  temp,0x06
powerupwait:
    rcall  delay5ms
    dec  temp
  cpi temp, 0x00
    brne powerupwait

  ldi temp, 0b00000011
  out portc, temp
  cbi portc, 4
  cbi portc, 5
  rcall lcd_enable
  rcall delay5ms
  rcall lcd_enable
  rcall delay5ms
  rcall lcd_enable
  rcall delay5ms

  ldi temp, 0b00000010
  out portc, temp

  rcall lcd_enable
  rcall delay5ms

  ldi data1, 0b00100000
  rcall lcd_command

  ldi data1, 0x0F
  rcall lcd_command
  ldi data1, 0x01
  rcall lcd_command
  ldi data1, 0x06
  rcall lcd_command

  rcall lcd_clear
  rcall lcd_home


  ret

Den Enable-Impuls erzeuge ich so:
lcd_enable:
         sbi portc, 6          ;Enable high
         rcall delay50us
        cbi portc, 6        ; Enable wieder low
        ret                         ; Und wieder zurück


Ein Kommando wird wie folgt ans Display gesandt:

lcd_command:                            ;wie lcd_data, nur mit RS = 0

  push Data1
  swap Data1
    andi  Data1, 0b00001111

  out   Portc, Data1
    cbi   Portc, 5
  cbi   portc, 4
  rcall lcd_enable                ;Enable-Routine aufrufen
    pop Data1

  andi Data1, 0b00001111

  out portc, Data1
    cbi Portc, 5            ;RS auf 0 setzen
  cbi portc, 4
  rcall lcd_enable    ;Enable-Routine aufrufen

  rcall delay50us      ;Verzoegerung von 50us


     ret                            ; zurück zum Hauptprogramm

Das UP fuer die Datenausgabe ist bis auf RS mit der Command-Routine 
identisch. Nach meinem Verstaendnis sollte nach der Initialisierung 
wenigstens der Cursor blinken, aber das Display bleibt tot.

Vielleicht sehe ich den Wald vor lauter Baeumen nicht und jemanden 
faellt der grosse Denkfehler ins Auge... wenn ja und er kann mir helfen 
danke ich im Voraus, wenn nein danke ich fuer die Aufmerksamkeit.

Viele Gruesse und einen guten Start ins neue Jahr,

Thomas

von holger (Gast)


Lesenswert?

Bei Problemen mit PORTC immer erstmal JTAG Fuse ausschalten;)

von Thomas W. (thomas-w)


Lesenswert?

holger schrieb:
> Bei Problemen mit PORTC immer erstmal JTAG Fuse ausschalten;)

Hi,

danke, daran habe ich tatsaechlich keinen Gedanken verschwendet, die 
Fuse war (und bleibt) aber aus und das Display trotzdem tot.

Ist es eigentlich normal, dass man bei jedem Displaytyp erstmal an der 
Init haengt?

von holger (Gast)


Lesenswert?

>und das Display trotzdem tot.

Was heisst tot? Siehst du was wenn du am Kontrast drehst?

>Ist es eigentlich normal, dass man bei jedem Displaytyp erstmal an der
>Init haengt?

Jo.

Wo schaltest du die PORTC Pins auf Ausgang?

von Thomas W. (thomas-w)


Lesenswert?

holger schrieb:
>>und das Display trotzdem tot.
>
> Was heisst tot? Siehst du was wenn du am Kontrast drehst?

Kontrast ist nicht angeschlossen... war beim letzten Problemkandidaten 
(EA DIP204) auch nicht noetig. Tot heisst, dass ich ausser der 
Beleuchtung nichts sehe, kein Cursor, keine Ausgabe.

>
>>Ist es eigentlich normal, dass man bei jedem Displaytyp erstmal an der
>>Init haengt?
>
> Jo.

Ich habe schon an mit selbst gezweifelt :-) hat man irgendwann alle 
durch?

>
> Wo schaltest du die PORTC Pins auf Ausgang?

Ziemlich am Anfang:
  ldi temp, 0x7F    ;PortC0-C6 ist Ausgang fuer LCD
  out ddrc, temp

Das Ganze ist ein riesen (bereits funktionierendes) Projekt, das Display 
dient in erster Linie mir als Debughilfe (eine LED ist etwas mager) und 
koennte evtl. auch fuer den Anwender von Nutzen sein.

Ja, ich haette ein DIP204 verwenden koennen aber das ist mir fuer diesen 
Zweck doch etwas zu teuer und von den 081ern hatte ich zwei 
herumliegen... (bald fliegen die an die naechste Wand)

von holger (Gast)


Lesenswert?

>Kontrast ist nicht angeschlossen... war beim letzten Problemkandidaten
>(EA DIP204) auch nicht noetig.

Also bei meinen EA DIP082 muss man die Kontrastspannung anlegen.
Leg den Pin doch mal auf GND. Siehst du dann was?

von Thomas W. (thomas-w)


Lesenswert?

holger schrieb:

>
> Also bei meinen EA DIP082 muss man die Kontrastspannung anlegen.
> Leg den Pin doch mal auf GND. Siehst du dann was?

Mach ich, allerdings evtl. erst morgen. Das Zeug ist im Keller und ich 
muss Babysitten.
Wenn es das ist bin ich happy... auf jeden Fall tausend Dank, ich melde 
mich  :-)

von Thomas W. (thomas-w)


Lesenswert?

Hi,

das mit dem Kontrast koennte es gewesen sein... ich habe hier ein 
Pollin-Evaluationsboard mit Addon-Board, auf dem ein aehnliches Display 
(so ein Russendisplay TC1602A) steckt. Einmal den Kontrast herumgerissen 
und schon blinkt der Cursor... das koennte morgen ein schoener Tag 
werden :-))

Vielen Dank nochmal und ein schoenes Restwochenende,

bis zum naechsten Displaytyp >:-)

Thomas

von Bernd S. (wird_schon)


Lesenswert?

Thomas Wyschkony schrieb:
> Wenn es das ist bin ich happy...

Es wird schon so sein. Ich zitiere mal das Datenblatt:

"Die Displays der EA DIP081-C Serie benötigen als Kontrastspannung typ. 
4,9V. Das heisst bei 3,3V Betrieb ist eine zusätzliche negative Spannung 
erforderlich."

von Thomas W. (thomas-w)


Lesenswert?

Hi Leute,

nachdem es auf dem Eval-Board funtioniert hat war ichbez. dem DIP081 im 
Keller zuversichtlich. Also habe ich VEE mit - verbunden und, analog zum 
Testsystem (wegen der JTAG-Geschichte) das Ganze mit PortA verbunden.
Leider ohne Erfolg, man erkennt nur die 8 Kaestchen.

Ist aber auch nicht weiter tragisch, dieses Projekt bz. diese 
Erweiterung ist wegen anderen Gruenden zu den Akten gelegt.

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.