LCD-Display 204B am PC betreiben

Webdesign, Programmierung, PC-Hardware und allgemeine Computerprobleme.

Moderatoren: SeriousD, ebastler, MaxZ

Antworten
Nachricht
Autor
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 482
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 14 Mal
Danksagung erhalten: 21 Mal

LCD-Display 204B am PC betreiben

#1 Beitrag von L_B_S »

Hallo zusammen,

Habe mir dieses 4-Zeilen Display
Display 4-Line.JPG
Display 4-Line.JPG (12.48 KiB) 205 mal betrachtet
aus einem alten Gerät ausgebaut, ist funktionsfähig.
Ich habe dafür zwar noch keine spezielle Verwendung, möchte aber das Display am PC über die parallele Schnittstelle (LPT) betreiben. Das Datenblatt müsste eigentlich diesem: https://cdn-reichelt.de/documents/date ... S_4X20.pdf entsprechen.

Dort ist auch ein Initialisierungsbeispiel für den 8 Bit-Modus angegeben, was selbsterklärend ist. Weiter unten bei der Erklärung zum Befelssatz ist mir Einiges noch unklar.
Also: zuerst initialisieren ist klar, hab ich aber noch nicht getestet.
Wenn ich nun ein Zeichen darstellen möchte, wie gehe ich dann vor ? Ich denke mal so:
write.png
write.png (2.26 KiB) 205 mal betrachtet
Ich bin mir nicht sicher, wie ich das Zeichen in eine bestimmte Zeile und Spalte setze. Könnte es sein, dass ich zuerst das ausführe:
DDRam.png
DDRam.png (2.63 KiB) 205 mal betrachtet
und dann den entsprechenden Zeichencode sende ?
Und nach jeden Befehl das Busy Flag abfragen ?

Gruss
Ludwig

Nachtrag;
hier gibt es noch einige Kommando's

Code: Alles auswählen

Hd44780 display commands:
 0x0f = initiate display cursor on blinking
 0x0c = initiate display cursor off
 0x01 = clear display fills display with spaces (0x20).
 0x02 = HOME returns to line one first character
 0x38 = 2 lines X 16 char 8 bits mode. Defaults to 1 line mode.
 0x10 = cursor left
 0x14 = cursor right
 0x18 = Shifts entire display left
 0x1c = Shifts entire display right 
0x38 ist 2 Zeilen a 16 Zeichen, wie setze ich zB. 4 Zeilen a 20 Zeichen ?

Benutzeravatar

gamerpaddy
Beiträge: 2541
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 272 Mal
Kontaktdaten:

Re: LCD-Display 204B am PC betreiben

#2 Beitrag von gamerpaddy »

hier wird das ganz gut erklärt mit code:
http://electrosofts.com/parallel/lcd.html
:wurst:

Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 482
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 14 Mal
Danksagung erhalten: 21 Mal

Re: LCD-Display 204B am PC betreiben

#3 Beitrag von L_B_S »

wen ich das richtig sehe, ist das: outportb(CONTROL, inportb(CONTROL) | 0x08); die Abfrage des Busy-Flag oder?

Code: Alles auswählen

void lcd_goto(int row, int column)
{

    outportb(CONTROL, inportb(CONTROL) | 0x08);
    if(row==2) column+=0x40;
    /* Add these if you are using LCD module with 4 columns
    if(row==2) column+=0x14;
    if(row==3) column+=0x54;
    */
    lcd_write(0x80 | column);

}
das ist etwas missverständlich

module with 4 columns damit sind doch 4 row gemeint oder ?

ich vermute mal, das wäre SO richtig:
if(row==0) column+=0x00; //1. Zeile
if(row==1) column+=0x40; //2. Zeile
if(row==2) column+=0x14; //3. Zeile
if(row==3) column+=0x54; //4. Zeile


lt. Datenblatt
Adressen.png

Benutzeravatar

gamerpaddy
Beiträge: 2541
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 272 Mal
Kontaktdaten:

Re: LCD-Display 204B am PC betreiben

#4 Beitrag von gamerpaddy »

Code: Alles auswählen

outportb(CONTROL, inportb(CONTROL) | 0x08);
//RS is made high: control (register select)
:wurst:

Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 482
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 14 Mal
Danksagung erhalten: 21 Mal

Re: LCD-Display 204B am PC betreiben

#5 Beitrag von L_B_S »

Jou, übersehen, ist klar.

Zitat aus dem Datenblatt
....d.h. vor jedem Schreib- und Lesezugriff muß das Busy Flag BF auf 0 abgefragt werden....
deshalb .
wird im Code also nicht gemacht, wie es aussieht.

Benutzeravatar

gamerpaddy
Beiträge: 2541
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 272 Mal
Kontaktdaten:

Re: LCD-Display 204B am PC betreiben

#6 Beitrag von gamerpaddy »

soweit ich das sehen kann, macht das die arduino library für den hd44780 auch nicht. ist nur als "geplant" markiert
Wieso auch..
man schreibt jetzt nicht in high-speed daten in das register. bis der nächste datensatz kommt ist das ding schon eine ewigkeit im idle / busy=0.
geht auch eher um das lesen vom display, da brauchs danach etwas um wieder befehle annehmen zu können.
:wurst:

Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 482
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 14 Mal
Danksagung erhalten: 21 Mal

Re: LCD-Display 204B am PC betreiben

#7 Beitrag von L_B_S »

...funktioniert :)

besser wird es hier: https://www.bristolwatch.com/pport/pportlcd.htm noch beschrieben, finde ich.

Danke

Antworten