'BASIC converted from flowchart:
'C:\PROGRAMMER\PROGRAMMING EDITOR\MINEPROJEKTER\2X20 DISPLAY.CAD
'Converted on 27-03-2005 at 19:22:42
SYMBOL RS = 2 ; 0 = Command 1 = Data
SYMBOL E = 3 ; 0 = Idle 1 = Active
SYMBOL DB4 = 4 ; LCD Data Line 4
SYMBOL DB5 = 5 ; LCD Data Line 5
SYMBOL DB6 = 6 ; LCD Data Line 6
SYMBOL DB7 = 7 ; LCD Data Line 7
SYMBOL RSCMDmask = %00000000 ; Select Command register
SYMBOL RSDATmask = %00000100 ; Select Data register
SYMBOL get = b11
SYMBOL byte = b12
SYMBOL rsbit = b13
byte = $80 : GOSUB SendCmdByte ; Start of Line 1
byte = $C0 : GOSUB SendCmdByte ; Start of Line 2
byte = $A0 : GOSUB SendCmdByte ; Start of Line 3
byte = $E0 : GOSUB SendCmdByte ; Start of Line 4
PowerOnReset:
GOSUB InitialiseLcd
DisplayLine1:
EEPROM 6,("Solfanger Top:"
FOR get = 6 TO 19
READ get,byte
GOSUB SendDataByte
NEXT
MoveCursorToStartOfSecondLine:
byte = $C0
GOSUB SendCmdByte
DisplayLine2:
EEPROM 20,("Tank Bund:"
FOR get = 20 TO 29
READ get,byte
GOSUB SendDataByte
NEXT
How can Line 3 and 4 Install ?????
DisplayLine3:
EEPROM 20,("Tank Top:"
FOR get = 20 TO 29
READ get,byte
GOSUB SendDataByte
NEXT
DisplayLine4:
EEPROM 20,("Difference Temp:"
FOR get = 20 TO 29
READ get,byte
GOSUB SendDataByte
NEXT
END
InitialiseLcd:
FOR get = 0 TO 5
READ get,byte
GOSUB SendInitCmdByte
NEXT
' Nibble commands - To initialise 4-bit mode
EEPROM 0,( $33 ) ; %0011---- %0011---- 8-bit / 8-bit
EEPROM 1,( $32 ) ; %0011---- %0010---- 8-bit / 4-bit
' Byte commands - To configure the LCD
EEPROM 2,( $28 ) ; %00101000 %001LNF00 Display Format
EEPROM 3,( $0C ) ; %00001100 %00001DCB Display On
EEPROM 4,( $06 ) ; %00000110 %000001IS Cursor Move
; L : 0 = 4-bit Mode 1 = 8-bit Mode
; N : 0 = 1 Line 1 = 2 Lines
; F : 0 = 5x7 Pixels 1 = N/A
; D : 0 = Display Off 1 = Display On
; C : 0 = Cursor Off 1 = Cursor On
; B : 0 = Cursor Steady 1 = Cursor Flash
; I : 0 = Dec Cursor 1 = Inc Cursor
; S : 0 = Cursor Move 1 = Display Shift
EEPROM 5,( $01 ) ; Clear Screen
RETURN
SendInitCmdByte:
PAUSE 15 ; Delay 15mS
SendCmdByte:
rsbit = RSCMDmask ; Send to Command register
SendDataByte:
pins = byte & %11110000 | rsbit ; Put MSB out first
PULSOUT E,1 ; Give a 10uS pulse on E
pins = byte * %00010000 | rsbit ; Put LSB out second
PULSOUT E,1 ; Give a 10uS pulse on E
rsbit = RSDATmask ; Send to Data register next
RETURN
Best regards
Monie
'C:\PROGRAMMER\PROGRAMMING EDITOR\MINEPROJEKTER\2X20 DISPLAY.CAD
'Converted on 27-03-2005 at 19:22:42
SYMBOL RS = 2 ; 0 = Command 1 = Data
SYMBOL E = 3 ; 0 = Idle 1 = Active
SYMBOL DB4 = 4 ; LCD Data Line 4
SYMBOL DB5 = 5 ; LCD Data Line 5
SYMBOL DB6 = 6 ; LCD Data Line 6
SYMBOL DB7 = 7 ; LCD Data Line 7
SYMBOL RSCMDmask = %00000000 ; Select Command register
SYMBOL RSDATmask = %00000100 ; Select Data register
SYMBOL get = b11
SYMBOL byte = b12
SYMBOL rsbit = b13
byte = $80 : GOSUB SendCmdByte ; Start of Line 1
byte = $C0 : GOSUB SendCmdByte ; Start of Line 2
byte = $A0 : GOSUB SendCmdByte ; Start of Line 3
byte = $E0 : GOSUB SendCmdByte ; Start of Line 4
PowerOnReset:
GOSUB InitialiseLcd
DisplayLine1:
EEPROM 6,("Solfanger Top:"
FOR get = 6 TO 19
READ get,byte
GOSUB SendDataByte
NEXT
MoveCursorToStartOfSecondLine:
byte = $C0
GOSUB SendCmdByte
DisplayLine2:
EEPROM 20,("Tank Bund:"
FOR get = 20 TO 29
READ get,byte
GOSUB SendDataByte
NEXT
How can Line 3 and 4 Install ?????
DisplayLine3:
EEPROM 20,("Tank Top:"
FOR get = 20 TO 29
READ get,byte
GOSUB SendDataByte
NEXT
DisplayLine4:
EEPROM 20,("Difference Temp:"
FOR get = 20 TO 29
READ get,byte
GOSUB SendDataByte
NEXT
END
InitialiseLcd:
FOR get = 0 TO 5
READ get,byte
GOSUB SendInitCmdByte
NEXT
' Nibble commands - To initialise 4-bit mode
EEPROM 0,( $33 ) ; %0011---- %0011---- 8-bit / 8-bit
EEPROM 1,( $32 ) ; %0011---- %0010---- 8-bit / 4-bit
' Byte commands - To configure the LCD
EEPROM 2,( $28 ) ; %00101000 %001LNF00 Display Format
EEPROM 3,( $0C ) ; %00001100 %00001DCB Display On
EEPROM 4,( $06 ) ; %00000110 %000001IS Cursor Move
; L : 0 = 4-bit Mode 1 = 8-bit Mode
; N : 0 = 1 Line 1 = 2 Lines
; F : 0 = 5x7 Pixels 1 = N/A
; D : 0 = Display Off 1 = Display On
; C : 0 = Cursor Off 1 = Cursor On
; B : 0 = Cursor Steady 1 = Cursor Flash
; I : 0 = Dec Cursor 1 = Inc Cursor
; S : 0 = Cursor Move 1 = Display Shift
EEPROM 5,( $01 ) ; Clear Screen
RETURN
SendInitCmdByte:
PAUSE 15 ; Delay 15mS
SendCmdByte:
rsbit = RSCMDmask ; Send to Command register
SendDataByte:
pins = byte & %11110000 | rsbit ; Put MSB out first
PULSOUT E,1 ; Give a 10uS pulse on E
pins = byte * %00010000 | rsbit ; Put LSB out second
PULSOUT E,1 ; Give a 10uS pulse on E
rsbit = RSDATmask ; Send to Data register next
RETURN
Best regards
Monie