Pollin LCD Display geht nicht

OP (Firma: E-Technik-Luca-L) #7378199
Lesenswert?

Hallo, Ich habe ein kleines Problem, da bei Pollin LCD-Displays im Angebot gewesen sind, welche mit dem HD44780 kompatibel sein sollen. Darum habe ich, davon welche gekauft und wollte es heute mal ausprobieren, aber keine Chance die Initialisierung geht nicht, da in der oberen Zeile noch die Schwarze Klötzchen bleiben. Das Programm ist für einen 16F716 geschrieben und der RW Pin vom Display ist auf Masse geschaltet. Vielleicht hat jemand eine Idee woran es liegen könnte, weil das Programm läuft mit einem HD44780 Display ohne Probleme. VG-Luca

Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #7378202
Lesenswert?

Luca L. schrieb:

da bei Pollin LCD-Displays im Angebot gewesen sind, welche mit dem HD44780 kompatibel sein sollen

Gibts dafür auch eine Artikelbezeichnung oder gar einen Link?

Vielleicht hat jemand eine Idee woran es liegen könnte

Miss mal mit einem Oszi, ob an jedem Pin das ihm zugehörige Signal ankommt. Bei verdrillten lackisoliertem und gleichfarbigen Drähten kann man da schon mal durcheinanderkommen...

(Firma: matzetronics) #7378203
Lesenswert?

Zeig mal die Platine des MC von unten. Als erstes fällt mir nämlich auf, das kein Abblockkondensator zu sehen ist und auch keine Last-C am Quarz. Da stellt sich die Frage, ab der MC überhaupt losrennt.

Lothar M. schrieb:

Bei verdrillten lackisoliertem und gleichfarbigen Drähten kann man da schon mal durcheinanderkommen

Halte ich auch für maximal fehlerträchtig. Ausserdem haben wir da auch noch Übersprechen, ist allerdings bei der Länge vermutlich nicht so wichtig.

OP (Firma: E-Technik-Luca-L) #7378207
Lesenswert?

Lothar M. schrieb:

Luca L. schrieb:

da bei Pollin LCD-Displays im Angebot gewesen sind, welche mit dem HD44780 kompatibel sein sollen

Gibts dafür auch eine Artikelbezeichnung oder gar einen Link?

https://www.pollin.de/p/anag-vision-lcd-modul-av1623yfty-sjw-16x2-121714?utm_source=google&utm_medium=fshopping&gclid=EAIaIQobChMI0pf8qsL0_QIVAszVCh1L_w_-EAQYASABEgKg8PD_BwE

Miss mal mit einem Oszi, ob an jedem Pin das ihm zugehörige Signal ankommt. Bei verdrillten lackisoliertem und gleichfarbigen Drähten kann man da schon mal durcheinanderkommen...

Ich habe die Drähte nacheinander angelötet und jetzt schon zum dritten mal mit Multimeter in durchgangsprüfunge gemessen da sollte es zu keinem fehler gekommen sein wenn ich mit dem Oszi messe habe ich die passenden Signale an den Display pins anliegen. VG-Luca

OP (Firma: E-Technik-Luca-L) #7378211
Lesenswert?

Matthias S. schrieb:

Zeig mal die Platine des MC von unten. Als erstes fällt mir nämlich auf, das kein Abblockkondensator zu sehen ist und auch keine Last-C am Quarz. Da stellt sich die Frage, ab der MC überhaupt losrennt.

Hi, Ist auf dem Foto vielleicht etwas schlecht zu erkenn aber die Gelben Punkte neben dem Quarz sind jeweils 22pF Kermaik´kondensatoren welche aus last laut Datenblatt geeignet sind und ich Kann mit dem Oszi ja die Passenden Signale am Display messen aus diesem grund vermute ich mal stark das der MC losrennt und auch am laufen bleibt. VG-Luca

Moderator (Firma: Titel) Persönliche Seite #7378219
Lesenswert?

Luca L. schrieb:

jetzt schon zum dritten mal mit Multimeter in durchgangsprüfunge gemessen

Du hast kontrolliert, ob eine Verbindung ist, wo eine sein soll.

Hast du aber auch mal kontrolliert, ob da keine Verbindung ist, wo keine sein darf, nämlich zwischen den Leitungen.

mit dem Oszi messe habe ich die passenden Signale an den Display pins anliegen.

Auch keine "Zwischenpegel"? Wie "knapp" ist das Timing?

Wendels B. schrieb:

Luca L. schrieb:

der RW Pin vom Display ist auf Masse geschaltet

heisst READ - wieso willst Du lesen?

Der Pin heißt R/W also "Read, Not Write". Bei Low-Pegel wird also nur geschrieben.

#7378223
Lesenswert?

H. H. schrieb:

Er hat wohl dieses:

https://www.pollin.de/p/anag-vision-lcd-modul-av1623yfty-sjw-16x2-121714

Und gerade bei der Initialisierung gibts es kleine Unterschiede zwischen den sonst kompatiblen Controllern.

Davon habe ich auch einige, bei mir keinerlei Probleme mit Initialisierung etc. Ich benutze die Standard-Routinen aus dem AVR-Tutorial: LCD.

Daher wird es wohl wahrscheinlich an dem „Versuchsaufbau“ des TO liegen.

OP (Firma: E-Technik-Luca-L) #7378226
Lesenswert?

Lothar M. schrieb:

Luca L. schrieb:

jetzt schon zum dritten mal mit Multimeter in durchgangsprüfunge gemessen

Du hast kontrolliert, ob eine Verbindung ist, wo eine sein soll.

Hast du aber auch mal kontrolliert, ob da keine Verbindung ist, wo keine sein darf, nämlich zwischen den Leitungen.

mit dem Oszi messe habe ich die passenden Signale an den Display pins anliegen.

Auch keine "Zwischenpegel"? Wie "knapp" ist das Timing?

Ja nur die Sachen welche verbunden sein sollen sind verbunden ich habe auch mal ausprobiert was ist wenn man das Timing etwas lockerer macht das ich dem ganzen viel mehr zeit gebe aber auch das hat nichts gebracht :(

Gast #7378229
Lesenswert?

Hatten wir schonmal:

Beitrag "LCD (Ks0066) initialisieren"

Zitat: 1. Poti an Pin3 hängen um Kontrast einstellen zu können. Die Displays sind nur in einem sehr schmalen Band "sehbar" justierbar. Wenn der Pin gegen GND oder 5V geschalten wird, sieht man in beiden Fällen gar nichts.

  1. Mein Datenblatt war in Punkto Initialisierung falsch. Ich habe dann nach KS0066U gegoogelt und mir das Samsung Datenblatt heruntergeladen. Siehe da, ein komplett anderer Initialisierungsablauf mit dem es dann funktionierte. 2.1. Power ON 2.2. Wait > 30ms 2.3. Function Set & wait > 39us (nicht 3x wie so oft angegeben) 2.4. Display on/off control & wait > 39us 2.5. Display clear & wait > 1.53ms 2.6. Entry Mode Set

  2. Das blaue Display (RS Part Numer 532-6593). Hat einen Fehler im Function Set Register. Das Bit DB3 (Line Mode) ist hier entgegen allen Datenblättern invertiert. Schreibt man eine 1, so erhält man nicht zwei sondern nur eine Zeile initialisiert!!! Das grüne/gelbe Display zeigt diesen Fehler nicht.

Nach Behebung dieser Fehler laufen beide Displays einwandfrei.

Gast #7378231
Lesenswert?

🕵︎ Joachim L. schrieb:

  1. Mein Datenblatt war in Punkto Initialisierung falsch. Ich habe dann nach KS0066U gegoogelt und mir das Samsung Datenblatt heruntergeladen. Siehe da, ein komplett anderer Initialisierungsablauf mit dem es dann funktionierte. 2.1. Power ON 2.2. Wait > 30ms 2.3. Function Set & wait > 39us (nicht 3x wie so oft angegeben) 2.4. Display on/off control & wait > 39us 2.5. Display clear & wait > 1.53ms 2.6. Entry Mode Set

Anbei das Datenblatt des Schwestermodells AV1624 von Anag Vision, mit Initialisierung.

Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #7378236
Lesenswert?

Harald K. schrieb:

Wobei über dem "W" noch ein Querstrich steht: R/W̅ Der Querstrich signalisiert die Negierung.

Diesen Querstrich konnte man früher(tm) im ASCII-Zeichensatz nicht darstellen. Sie wurde deshalb durch den vorangestellten Schrägsstrich dargestellt. Das R/W Signal hat also 2 Funktionen:

  • R --> high aktives Read
  • /W --> low aktives Write

Und ich spreche diese "Schrägstrich-Negierung" dann auch explizit aus: das Signal heißt bei mir immer "ernotwe" und eben nicht nur "erwe" oder "readwrite".

Angehängte Dateien:
#7378252
Lesenswert?

Lothar M. schrieb:

Sie wurde deshalb durch den vorangestellten Schrägsstrich dargestellt.

Das ist so aber nur ein Notbehelf gewesen. Betrachtet man alte Datenblätter*, dann sah das wie im Anhang aus, der das Pinout eines MC6809 zeigt.

Deutlich zu sehen sind diverse mit Überstrich versehene Signale, R/W̅ und auch ein Signal, bei dem sowohl der Text vor, als auch nach dem Schrägstrich einen Überstrich erhält: D̅M̅A̅/̅B̅R̅E̅Q̅

Und diese Schreibweise zieht sich konsequent durch das ganze Datenblatt.

*) Beispiel aus https://colorcomputerarchive.com/repo/Documents/Datasheets/MC6809%20HMOS%208%20Bit%20Microprocessor%20(Motorola).pdf

Angehängte Dateien:
(Firma: Privat) #7378299
Lesenswert?

Frank E. schrieb:

völlig korrekt funktionierende Anzeige nur nicht zu sehen war.

Hast du das mal geprüft?

So wie es am Bild aussieht (nur eine Zeile), ist typisch für nicht initialisiertes Display, hat mit Kontrast nichts zu tun. Wenn die Verdrahtung in Ordnung, dann

H. H. schrieb:

Und gerade bei der Initialisierung gibts es kleine Unterschiede zwischen den sonst kompatiblen Controllern.

würde ich auch auf Timing tippen. Hatte ich auch schon, dass ein Display langsamer war. Nachdem die Zeiten ein wenig "gestreckt" habe, war plötzlich in Ordnung.

#7378342
Lesenswert?

Luca L. schrieb:

Wendels B. schrieb:

Luca L. schrieb:

der RW Pin vom Display ist auf Masse geschaltet

heisst READ - wieso willst Du lesen?

Hi, der RW Pin ist wenn auf Masse gelegt auf 0 und es wird geschrieben wenn man den auf 1 also 5V legt wird gelesen. VG-Luca

@Luca L.: Hast du nun den R/W-Eingang des Displays auf GND=0 gelegt? Das ist wichtig, sonst treibt das LCD den Datenbus, statt zu lesen. Das Read/Write bezieht sich auf die MCU, nicht auf das Display.

Der einzige mögliche Fallstrick bei diesem Display ist eigentlich, dass die Nummerierung der Pins für einen von oben eingesetzten Wannenstecker gilt, und man bei nach unten montiertem Stecker (wie man es ja bei LCDs normalerweise haben will) die aufeinanderfolgenden geraden und ungeraden Pins paarweise vertauschen muss.

Aber da der TO keinen Wannenstecker + Flachbandkabel verwendet, ist das ja irrelevant. Die Pinangabe im Datenblatt stimmt jedenfalls.

Angehängte Dateien:
(Firma: Q3) #7378357
Lesenswert?

Mi N. schrieb:

Frank E. schrieb:

Hast du das mal geprüft?

Wenn schwarze Klötzchen zu sehen sind, müßten auch Zeichen erscheinen.

Nein, müsste genau nicht. Bei mir war es damals so, dass die falsche Kontrasteinstellung zu ebendiesen vollkommen schwarzen Kästchen führte.

Nach Reduzierung des Kontrasts waren die jeweils nicht genutzen Pixel eben nicht mehr genau so schwarz wie die ungenutzten und die gesetzten Zeichen wurden darurch sichtbar ...

#7378359
Lesenswert?

Johannes F. schrieb:

Aber da der TO keinen Wannenstecker + Flachbandkabel verwendet, ist das ja irrelevant. Die Pinangabe im Datenblatt stimmt jedenfalls.

Hi, meins geht. Aber die Routinen für Init sind identisch wie bei den anderen. Das ist nicht das Killerkriterium. Bei den Zeitschleifen sollte man nicht geizen. Und nicht temp Register nehmen, die nicht vorher gepopt /gepushed wurden. Das war nämlich mal mein Fehler. Zeig doch mal die Routine als Programm. Als Code hochladen. Dann sehen wir weiter.

ciao gustav

Gast #7378388
Lesenswert?

Ozvald K. schrieb:

Auf der Pollin Webseite bei den Bewertungen steht, dass der Pinout bei diesem Display falsch ausgeführt ist. @TO: "blöde Frage": wurde das bei der Verdrahtung berücksichtigt?

Hat er wohl beachtet, sonst wäre das Display wohl schon kaputt, wegen verpolter Versorgungsspannung.

OP (Firma: E-Technik-Luca-L) #7378397
Lesenswert?

Ich habe den Fehler gefunden es sind 4 von 10 Displays defekt :(

Was kann bei so einem Display kaputt gehen ? die sind eigentlich neu oder ich denke Mal dass die neu sind bei Pollini werden die als neu verkauft.

Jemand eine Idee ob man die Displays noch reparieren kann ?

#7378399
Lesenswert?

🕵︎ Joachim L. schrieb:

2.3. Function Set & wait > 39us (nicht 3x wie so oft angegeben)

Das wird üblicherweise 3x gesendet, damit es auch dann funktioniert, wenn das LCD nicht (wie beim Power-on-Reset üblich) im 8-Bit-Modus, sondern bereits im 4-Bit-Modus ist.

Kann z.B. dann passieren, wenn Dein Controller einen Brownout-Reset macht, aber das LCD unbeeindruckt weiterläuft.

#7378409
Lesenswert?

Luca L. schrieb:

Ich habe den Fehler gefunden es sind 4 von 10 Displays defekt :(

Unwahrscheinlich. Ich habe auch mehrere davon und die funktionieren alle, ohne Ausnahme.

Luca L. schrieb:

Was kann bei so einem Display kaputt gehen ?

Viel, wenn du sie falsch behandelst oder verdrahtest ...

Luca L. schrieb:

die sind eigentlich neu

Ja, die sind neu. Restposten halt. Schutzfolie ist noch drauf gewesen bei mir.

Luca L. schrieb:

Jemand eine Idee ob man die Displays noch reparieren kann ?

Eher nicht.

#7378426
Lesenswert?

Luca L. schrieb:

Ich habe den Fehler gefunden es sind 4 von 10 Displays defekt :(

Ungewöhnlich. Meine waren bislang zu 100% ok.

Luca L. schrieb:

die sind eigentlich neu oder ich denke Mal dass die neu sind bei Pollini werden die als neu verkauft.

Wahrscheinlich, wie bei Pollin üblich, unbenutzte Restposten. Können schon einige Jahre alt sein...

Luca L. schrieb:

Jemand eine Idee ob man die Displays noch reparieren kann ?

Du hast ja scheinbar die Stiftleisten entfernt. Da mal genau nachsehen, ob da nicht Leiterbahnen mitkamen.

Ansonsten kann man solche LCDs mit direktgebondeten Kontroller-ICs nur reparieren, indem man defektes LCD-Glas mit defekter Platine tauscht.

#7378438
Lesenswert?

Frank E. schrieb:

Wenn schwarze Klötzchen zu sehen sind, müßten auch Zeichen erscheinen.

Nein, müsste genau nicht. Bei mir war es damals so, dass die falsche Kontrasteinstellung zu ebendiesen vollkommen schwarzen Kästchen führte.

Wenn die Initialisierung klappt, müßten beiden Zeilen gleich aussehen. Es reicht aus, Kontrast auf GND zu legen. Das ist zwar nicht optimal aber für einen groben Test ausreichend.

#7378592
Lesenswert?

Ich hatte bisher nur Probleme mit LCD-Modulen, wenn ich sie falsch angeschlossen habe. Egal ob von Pollin, Reichelt, oder Conrad. Allerdings sollte man das Timing nicht "auf Kante nähen".

Probiere 100 µs, statt 50, oder 15 ms, statt 10 in den Initialisierungs- routinen. Wenn es damit klappt, tut es das nächstes Jahr auch noch.

Viel nerviger finde ich, dass bei diversen Modulen von Pollin, Reichelt, oder Conrad die Hintergrundbeleuchtung nach 0,5 ... 2 Jahren stark abnimmt. Man kann den Vorwiderstand verkleinern, aber nach wenigen Monaten ist das Problem wieder da...

#7378673
Lesenswert?

Ralf K. schrieb:

Viel nerviger finde ich, dass bei diversen Modulen von Pollin, Reichelt, oder Conrad die Hintergrundbeleuchtung nach 0,5 ... 2 Jahren stark abnimmt.

Ich kenne es bislang nur von blauen reversen LCDs (also helle Zeichen auf dunklem Grund), daß sie nach einiger Zeit kaum noch lesbar sind. Ich habe bislang noch nicht untersucht, ob es an der Hintergrundbeleuchtung oder am Kontrast liegt, aber ich kann mir nicht so recht vorstellen, daß die Leds gleichmäßig dunkler werden...

#7378706
Lesenswert?

Ralf K. schrieb:

Viel nerviger finde ich, dass bei diversen Modulen von Pollin, Reichelt, oder Conrad die Hintergrundbeleuchtung nach 0,5 ... 2 Jahren stark abnimmt. Man kann den Vorwiderstand verkleinern, aber nach wenigen Monaten ist das Problem wieder da...

Dann musst du gleich zu Beginn dagegen wirken und den Strom durch die LED's Verringern so bald du das Display das erste mal verwendest. So weit reduzieren bis noch genug aber nicht zu viel Helligkeit übrig ist. Kostet doch nur einen Widerstand.

Luca L. schrieb:

Jemand eine Idee ob man die Displays noch reparieren kann ?

Wenn's am Controller darauf liegt, leider nicht.

Verrutschte leitgummis geht, ist aber erbärmliche fummelei. Vor allem per Hand den richtigen und über das gesamte Display gleichmäßigen Anpressdruck zu bekommen... 🤮

Beim letzten Display anderthalb stunden gebraucht um das zuverlässig hinzubekommen. (Nach einem Sturz ging leider nix mehr)

Abgerissene (beim Löten) Leiterbahnen geht noch, so lange genug Rest zum flicken über ist.

Gast #7378710
Lesenswert?

Luca L. schrieb:

Ich habe den Fehler gefunden es sind 4 von 10 Displays defekt :(

Bei solchen Vorkommnissen ist die wahre Fehlerursache nicht selten die Stromversorgung oder das Timing. Es würde mich kein bisschen überraschen, wenn die 4 Displays bei anderen Leuten tadellos funktionieren.

Luca L. schrieb:

Was kann bei so einem Display kaputt gehen ?

Dessen Bauteile

ich denke Mal dass die neu sind bei Pollin werden die als neu verkauft.

"Neuware" bei Pollin kann durchaus 40 Jahre alt und schlecht gelagert sein. Elektronik ist nicht ewig haltbar.

Pollin verkauft Sachen, die sonst teuer als Sondermüll entsorgt werden müssten.

Du kannst ja mal meinen angehängten Code versuchen. Damit laufen meine Displays alle (sorry für die hässlichen Makros, heute programmiere ich nicht mehr in diesem Stil).

Angehängte Dateien:
OP (Firma: E-Technik-Luca-L) #7378856
Lesenswert?

Hi, Ich habe da leider keine Ahnung von C Programmierung das einzige was ich programmieren kann ist Assembler für die PICs. Da ich die kaputten Display auch an so einem Arduino Dings ausprobiert habe wo man den Code nur zusammenklicken braucht da ist es der gleiche Fehler die 4 Stück gehen auch da nicht diese 4 Display sind ohne Schutzfolie die 6 Stück die gehen habe eine Folie drauf gehabt.

Gast #7378876
Lesenswert?

Deine Sequenz vor dem Absetzen des ersten Befehls weicht erheblich von meiner ab. So funktioniert es zuverlässig:

E=LOW 50ms Pause RS=LOW 40ns Pause E=HIGH und 4 Bits 0011 ausgeben 250ns Pause E=LOW 5ms Pause <--- Ja, das ist lang, aber Absicht. E=HIGH 250ns Pause E=LOW 150µs Pause E=HIGH 250ns Pause E=LOW 250ns Pause E=HIGH und 4 Bits 0010 ausgeben 250ns Pause E=LOW 50µs Pause

Auch die Ausgabe der Bytes in OutLcdControl hat bei mir ein anderes Timing. So funktioniert es zuverlässig:

RS=LOW 40ns Pause E=HIGH + 4 Bits ausgeben 250ns Pause E=LOW 250ns Pause E=HIGH + 4 Bits ausgeben 250ns Pause E=LOW 60µs Pause

Ausnahmen: "return home" und "clear display" (löschen und cusor home) brauchen 1600µs!

Du wartest immer nur 50µs und auch die kurzen Delays darüber sind bei dir offenbar kürzer. Wobei ich kein Experte in Assembler bin. Du kannst die Zeiten sicher besser selbst mit deinem Code vergleichen.

Ein Oszillogramm von der Enable Leitung würde schon viel zeigen.

#7379110
Lesenswert?

Ich kann auch noch eine LCD-Routine beisteuern, die ich schon vor zig Jahren für den PIC16F88 geschrieben habe und danach unverändert für alle mögliche LCD-Displays verwendete.

1
;***********************************************************************
2
; Initialisierung des LCD-Displays
3

4
init_lcd
5

6
    movlw   b'00110000'         ; 0x30 - 8-bit-interface
7
    call    out8_control
8

9
    call    wait5000            ; 5 ms warten
10

11
    movlw   b'00110000'         ; 0x30 - 8-bit-interface
12
    call    out8_control
13

14
    call    wait5000            ; 5 ms warten
15

16
    movlw   b'00110000'         ; 0x30 - 8-bit-interface
17
    call    out8_control
18

19
    call    wait5000            ; 5 ms warten
20

21
    movlw   b'00100000'         ; 0x20 - 4-bit-interface
22
    call    out8_control
23

24
    movlw   b'00101000'         ; 0x28 - 4-bit / 2-zeilig / 5x8
25
    call    out4_control
26

27
    movlw   b'00000110'         ; 0x06 - cursor increase, display shifted
28
    call    out4_control
29

30
    movlw   b'00001100'         ; 0x0c - display on
31
    call    out4_control
32

33
;   movlw   b'00001000'         ; 0x80 - ggf display off
34
;   call    out4_control
35

36
    movlw   b'00000001'         ; 0x01 - löschen, cursor home 
37
    call    out4_control
38

39
    return
40

41

42

43
;***********************************************************************
44
; ein Steuer-Byte als 2x4 Bit aus W zum Display übertragen
45

46
; C_Port = Control-Port sind die Bits RS, E und RW, D_Port = Daten-Port sind die Daten-Bits 4-7
47

48
out4_control
49

50
    movwf   l_temp              ; W zwischenspeichern
51

52
    call    lcd_busy            ; warten auf Display
53

54
    movfw   l_temp              ; Steuerbyte nach W
55
    andlw   0xF0                ; untere 4 Bits ausblenden
56
    movwf   D_PORT              ; obere 4 Bit schreiben
57

58
    bcf     C_PORT, lcd_rs      ; Steuerbyte: RS = 0
59
    bcf     C_PORT, lcd_rw      ; schreiben:  RW = 0
60

61
    bsf     C_PORT, lcd_e       ; E 0-1-0
62
    bcf     C_PORT, lcd_e
63

64
    call    wait20              ; 20 µs warten
65

66
    swapf   l_temp, W           ; untere 4 Bit nach oben in W
67
    andlw   0xF0                ; untere 4 Bits ausblenden
68
    movwf   D_PORT              ; untere 4 Bit oben schreiben
69

70
    bcf     C_PORT, lcd_rs      ; Steuerbyte: RS = 0
71
    bcf     C_PORT, lcd_rw      ; schreiben:  RW = 0
72

73
    bsf     D_PORT, lcd_e       ; E 0-1-0
74
    bcf     D_PORT, lcd_e
75

76
    call    wait50              ; 50 µs warten
77

78
    movfw   l_temp              ; W wiederherstellen
79

80
    return
81

82

83

84
;***********************************************************************
85
; ein Daten-Byte als 2x4 Bit aus W zum Display übertragen
86

87
out4_daten
88

89
    movwf   l_temp              ; W zwischenspeichern
90

91
    call    lcd_busy            ; warten auf Display
92

93
    movfw   l_temp              ; Datenbyte nach W
94
    andlw   0xF0                ; untere 4 Bits ausblenden
95
    movwf   D_PORT              ; obere 4 Bit schreiben
96

97
    bsf     C_PORT, lcd_rs      ; Datenbyte:  RS = 1
98
    bcf     C_PORT, lcd_rw      ; schreiben:  RW = 0
99

100
    bsf     C_PORT, lcd_e       ; E 0-1-0
101
    bcf     C_PORT, lcd_e
102

103
    call    wait20              ; 20 µs warten
104

105
    swapf   l_temp, W           ; untere 4 Bit nach oben in W
106
    andlw   0xF0                ; untere 4 Bits ausblenden
107
    movwf   D_PORT              ; untere 4 Bit oben schreiben
108

109
    bsf     C_PORT, lcd_rs      ; Datenbyte:  RS = 1
110
    bcf     C_PORT, lcd_rw      ; schreiben:  RW = 0
111

112
    bsf     C_PORT, lcd_e       ; E 0-1-0
113
    bcf     C_PORT, lcd_e
114

115
    call    wait50              ; 50 µs warten
116

117
    movfw   l_temp              ; W wiederherstellen
118

119
    return

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