LPT-Port (erweitert)

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Da ich gleich noch arbeiten muss, komme ich erst heut Abend drann.

Aber es ist eigendlich egal, wo das RS und R/W drann ist. Hauptsache du kannst über die Basis-Adresse+2 dafür die entsprechenden Bits bei Auto-Feed (R/W) und Init (RS) setzen.

Die Tabellen-Links oben zeigen dazu die jeweiligen Zustände für die
Steuerung des Displaycontrollers an. Wichtig ist nur, das man
die Zeiten nicht unterschreitet, damit es auch funktioniert.

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
RAaBe
Beiträge: 79
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Beitrag von RAaBe »

Hallo, ich habe mir jetzt mal eine Minimallösung zusammengebastelt.

(stört euch jetzt nicht an den gosub's)

Code: Alles auswählen

wert = 56 : Gosub lcdwrite : Delay(10)
wert = 14 : Gosub lcdwrite : Delay(10)
wert = 2 : Gosub lcdwrite : Delay(10)
wert = 1 : Gosub lcdwrite : Delay(10)

wert = 67 : Gosub lcdwritedata

CloseInpOut32() 

End

lcdwrite:
 out32($378, wert); ' setzt die Datenpins wie in der Variable angegeben
 out32($378+2, 2) ; ' diese beiden sorgen dafür dass die Enable-Leitung geschaltet wird, so dass
 out32($378+2, 3) ; ' das LCd die an den Datenpins anliegenden Daten übernimmt
Return

lcdwritedata:
 out32($378+2, 6) ;' dieses und das &H7 sorgen wieder dafür dass die Enable-Leitung geschaltet wird, diesmal wird allerdings auf die RS-Leitung ein High gegeben, so dass die Daten nicht als Befehl gewertet werden sondern in den RAM geschrieben werden
 out32($378, wert);' setzt die Datenpins nach der Variable
 out32($378+2, 7); 
Return
Dieses Beispiel ist ja nur zum Testen, ob ich die Bits's am LPT richtig setzen kann!
Antworten