Declare Sub lcd_write (daten As uByte, cmd As Byte) #Define LCD_DataPort 888 'Basisadresse vom Parallelport (Datenbyte) #Define LCD_StatePort 890 'Basisadresse vom Parallelport (Statusausgänge) '*** Signal E -> Clocksignal zu Daten Übername #Define LCD_CLK 2 'Anschlussbelegung beachten #Define LCD_CLK_H Out (LCD_DataPort, Inp(LCD_DataPort) Or LCD_CLK) 'Bit setzten !!!Achtung Steuerleitungen sind teilweise invertiert #Define LCD_CLK_L Out (LCD_DataPort, Inp(LCD_DataPort) And 255-LCD_CLK) 'Bit rücksetzten !!!Achtung Steuerleitungen sind teilweise invertiert '*** Signal E -> Clocksignal zu Daten Übername #Define LCD_DATA 1 'Anschlussbelegung beachten #Define LCD_DATA_H Out (LCD_DataPort, Inp(LCD_DataPort) Or LCD_DATA) 'Bit setzten !!!Achtung Steuerleitungen sind teilweise invertiert #Define LCD_DATA_L Out (LCD_DataPort, Inp(LCD_DataPort) And 255-LCD_DATA) 'Bit rücksetzten !!!Achtung Steuerleitungen sind teilweise invertiert '*** Signal E -> Clocksignal zu Daten Übername #Define LCD_RS 4 'Anschlussbelegung beachten #Define LCD_RS_H Out (LCD_DataPort, Inp(LCD_DataPort) Or LCD_RS) 'Bit setzten !!!Achtung Steuerleitungen sind teilweise invertiert #Define LCD_RS_L Out (LCD_DataPort, Inp(LCD_DataPort) And 255-LCD_RS) 'Bit rücksetzten !!!Achtung Steuerleitungen sind teilweise invertiert '*** Signal E -> Clocksignal zu Daten Übername #Define LCD_CS 8 'Anschlussbelegung beachten #Define LCD_CS_H Out (LCD_DataPort, Inp(LCD_DataPort) Or LCD_CS) 'Bit setzten !!!Achtung Steuerleitungen sind teilweise invertiert #Define LCD_CS_L Out (LCD_DataPort, Inp(LCD_DataPort) And 255-LCD_CS) 'Bit rücksetzten !!!Achtung Steuerleitungen sind teilweise invertiert '*** Signal E -> Clocksignal zu Daten Übername #Define LCD_RES 16 'Anschlussbelegung beachten #Define LCD_RES_H Out (LCD_DataPort, Inp(LCD_DataPort) Or LCD_RES) 'Bit setzten !!!Achtung Steuerleitungen sind teilweise invertiert #Define LCD_RES_L Out (LCD_DataPort, Inp(LCD_DataPort) And 255-LCD_RES) 'Bit rücksetzten !!!Achtung Steuerleitungen sind teilweise invertiert #Define SFF &H10 #Define SMM &H18 #Define DISPOFF &H08 #Define DISPON &H09 #Define LDPI &H80 #Define SRM &H60 #Define SWM &H64 #Define SORM &H68 #Define SANDM &H6c #Define SCML &H71 #Define SCMR &H72 #Define BRESET &H20 #Define BSET &H40 #Define CLCURS &H7c #Define WRCURS &H7d #Define SSM &H01 Dim As integer cnt,e Dim As UByte value Dim As String keys Out LCD_DataPort,0 LCD_RES_H ? "reset " Sleep 1000 ? "reset done" LCD_RES_L LCD_CLK_H LCD_CS_H lcd_write(SWM+0,1) lcd_write(LDPI,1) lcd_write(SMM+7 ,1) lcd_write(SFF+1,1) lcd_write(DISPON,1) lcd_write(SWM+0,1) lcd_write(SCMR,1) ? "enter loop" lcd_write(LDPI,1) lcd_write(Asc("H"),0) lcd_write(Asc("a"),0) lcd_write(Asc("l"),0) lcd_write(Asc("l"),0) lcd_write(Asc("o"),0) lcd_write(Asc("!"),0) lcd_write(SCML,1) lcd_write(LDPI+64+5*8-1,1) lcd_write(Asc("H"),0) lcd_write(Asc("a"),0) lcd_write(Asc("l"),0) lcd_write(Asc("l"),0) lcd_write(Asc("o"),0) lcd_write(Asc("!"),0) e=1 Do 'value = Int(Rnd*256) lcd_write(LDPI+64,1) For cnt = 0 To 50 If value >= cnt Then lcd_write(BSET+7*4,1) Else lcd_write(BRESET+7*4,1) End If Next value = value +e If value > 50 Then e = -1 EndIf If value = 0 Then e = 1 EndIf Sleep 10 keys = InKey Loop Until keys = Chr(27) ? "Exit Loop" End ? "press key" value = 128 Sleep For cnt = 0 To 50 lcd_write(value,0) Print cnt, "0x" + Hex(cnt) Sleep Next lcd_write(LDPI+64,1) For cnt = 0 To 50 lcd_write(value,0) Print cnt, "0x" + Hex(cnt) Sleep Next Sleep End Sub lcd_write (daten As UByte, cmd As Byte) Dim As Integer a,dat LCD_CS_L For a = 7 To 0 Step -1 dat = (daten And 2 ^ a) / 2 ^ a If cmd = 1 And a = 0 Then LCD_RS_H 'befehle Else LCD_RS_L 'daten EndIf If dat = 1 Then LCD_DATA_H Else LCD_DATA_L EndIf LCD_CLK_H LCD_CLK_L LCD_CLK_H Next LCD_CS_H End Sub