title image


Smiley EA DOG-M Displayansteuerung mit MCS-51
Hallo,



ich versuch eine LCD-Modul "EA DOGM163W-A" von Conrad mit einem 8032er-Mikrocontroller zu betreiben. Leider bislang erfolglos... Das einfachste wäre vielleicht, wenn jemand einen Beispielcode hat, von dem er weiß, dass er funktioniert.



Ich gebe die Daten über Port 1 an das Display. Ich betreibe es mit 8Bit und 5 Volt.

Port 3.0 : RS (L= Command; H= Data)

Port 3.1 : E (Enable (falling edge))

Port 3.2 : R/W (L= Write; H= Read)

Port 3.3 : LED zu Testzwecken



Ich habe zunächst die Initialisierung des Display wie aus der Doku ersichtlich vorgenommen: http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/181877-da-01-de-TEXTDISPL_2X16_FSTN_SCHWARZ_POSITIV.pdf (Seite 7, ganz unten). Danach versuche ich das zeichen "A" auszugeben.



Bevor ich Daten schreibe lese ich das Busy-Flag des Displays aus. Erst wenn dieses = 0 beginne ich Daten zu senden. Dazu gebe ich die Daten an Port 1 und setze dann kurzzeitig Enable (Port 3.1) auf 1. Aus der Doku geht allerdings nich klar hervor, ob dies tatsächlich der richtige Weg ist.



Es geschieht allerdings gar nichts. Auf dem Display ist nichts, auch kein kurzzeitiges Flackern, zu sehen. Der Code läuft aber bis zum Ende durch. Ich habe es auch schon mit Pull-Up und Pull-Down Widerständen probiert. Leider ohne Erfolg.



- Gibt es eine einfache/sichere Möglichkeit, festzustellen, ob das Display funktioniert?

- Wo liegt mein Fehler?



Vielen Dank für Hilfe!



Der Quellcode sind folgendermaßen aus:



ACALL Pause

ACALL Pause

ACALL Pause





;Display-Initialisierung





CLR B3h

SETB B1h

ACALL Wait



CLR B2h ; Write

MOV 90h,#00111001b ;8-Bit Datenlänge, 2 Zeilen, Instruction table 1

SETB B1h

ACALL Pause

CLR B1h



SETB B3h

ACALL Wait

CLR B2h ; Write

MOV 90h,#00011101b ;BS: 1/4, 3-zeiliges LCD

SETB B1h

ACALL Pause

CLR B1h



CLR B3h

ACALL Wait

CLR B2h ; Write

MOV 82h,#01010000b ;Booster aus, Kontrast C5, C4 setzen

SETB B1h

ACALL Pause

CLR B1h



SETB B3h

ACALL Wait

CLR B2h ; Write

MOV 82h,#01101100b ;Spannungsfolger und Verstärker setzen

SETB B1h

ACALL Pause

CLR B1h



CLR B3h

ACALL Wait

CLR B2h ; Write

MOV 82h,#01111100b ;Kontrast C3, C2, C1 setzen

SETB B1h

ACALL Pause

CLR B1h



SETB B3h

ACALL Wait

CLR B2h ; Write

MOV 82h,#00001111b ;Display ein, Cursor ein, Cursor blinken

SETB B1h

ACALL Pause

CLR B1h



CLR B3h

ACALL Wait

CLR B2h ; Write

MOV 82h,#00000001b ;Display löschen, Cursor Home

SETB B1h

ACALL Pause

CLR B1h



SETB B3h

ACALL Wait

CLR B2h ; Write

MOV 82h,#00000110b ;Cursor Auto-Increment

SETB B1h

ACALL Pause

CLR B1h



CLR B3h

ACALL Wait

CLR B2h ; Write

SETB B0h ; Data

MOV 82h,#01000001b ; Buchstabe "A"

SETB B1h

ACALL Pause

CLR B1h



ACALL Ende



Pause:

MOV R0,#AAh

Loop1:

MOV R1,#FFh

Loop2:

DJNZ R1,Loop2

DJNZ R0,Loop1

RET



; Warten bis BF = 0

Wait:

CLR B0h ; Command

CLR B1h ; not En

SETB B2h ; Read

Loop3:

SETB 97h

JNB 97h,Loop3

RET



Ende:

MOV R1,#FFh

DJNZ R1,Ende





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: