; Nokia LCD driver
'modified Tue 01 07 08, from Texy's original code
'
#picaxe 28x1
symbol SCLK = 0 'Display pin 2 to PICAXE out 0
symbol SDA = 1 'Display pin 3 to PICAXE out 5
symbol DC = 2 'Display pin 4 to PICAXE out 2
symbol CS = 3 'Display pin 5 to PICAXE out 3
symbol RES = 4 'Display pin 8 to PICAXE out 6
symbol Value = b0
symbol X = b3
symbol Y = b4
symbol eeprom_address = b5
symbol Loop1 = b10
symbol loop3 = b12
SYMBOL SDA_PIN = outpin1 'outpin5 ************
setfreq m8 ' or em16 is even better!
gosub InitLCD
b20="#" ' use another character if required
lookdown b20,(" THIS CAN SAVE LOTS OF MEMORY AND TYPING. # "),b21
b23 = b21
for b20 = 0 to b23 '****
lookup b20,(" THIS CAN SAVE LOTS OF MEMORY AND TYPING. ") ,b23
Value=b23
gosub CharToLCD
next b20
for b20 = 0 to 25 '****
lookup b20,(" ANOTHER TEST LINE. ") ,b21
Value=b21
gosub CharToLCD
next b20
'GoSub Invert **********
'GoSub Normal ************
setfreq m4
End
InitLCD:
low SCLK
low SDA
low DC
low CS
low RES
pause 50
high RES
high CS
Value=$21
gosub CommandToLCD ` transmit to serial LCD module
Value=$C9
gosub CommandToLCD ` transmit to serial LCD module
Value=$13
gosub CommandToLCD ` transmit to serial LCD module
Value=$20
gosub CommandToLCD ` transmit to serial LCD module
Value=$09
gosub CommandToLCD ` transmit to serial LCD module
Value=$08
gosub CommandToLCD ` transmit to serial LCD module
X = 0
Y = 0
GoSub GotoXY
;GoSub ClearFast ******** REMOVED
GoSub Normal
return
CharToLCD:
eeprom_address=0
if Value>32 and Value <58 then
eeprom_address=Value-33
eeprom_address=eeprom_address*5+130
elseif Value>64 and Value <91 then
eeprom_address=Value-65
eeprom_address=eeprom_address*5
elseif Value=32 then
Value=0
gosub DataToLCD
gosub DataToLCD
gosub DataToLCD
gosub DataToLCD
gosub DataToLCD
end if
if Value=0 then
return
end if
For Loop1 = 0 To 4
read eeprom_address, Value
inc eeprom_address
GoSub DataToLCD
Next Loop1
Return
CommandToLCD:
low DC 'Command mode
DataMode1:
low CS
SDA_PIN = bit7
PulsOut SCLK,1
SDA_PIN = bit6
PulsOut SCLK,1
SDA_PIN = bit5
PulsOut SCLK,1
SDA_PIN = bit4
PulsOut SCLK,1
SDA_PIN = bit3
PulsOut SCLK,1
SDA_PIN = bit2
PulsOut SCLK,1
SDA_PIN = bit1
PulsOut SCLK,1
SDA_PIN = bit0
PulsOut SCLK,1
high CS
Return
DataToLCD:
high DC 'Data mode
DataMode2:
low CS
SDA_PIN = bit7
PulsOut SCLK,1
SDA_PIN = bit6
PulsOut SCLK,1
SDA_PIN = bit5
PulsOut SCLK,1
SDA_PIN = bit4
PulsOut SCLK,1
SDA_PIN = bit3
PulsOut SCLK,1
SDA_PIN = bit2
PulsOut SCLK,1
SDA_PIN = bit1
PulsOut SCLK,1
SDA_PIN = bit0
PulsOut SCLK,1
high CS
Return
#REM **********REMOVED
ClearFast:
low SDA
high DC
low CS
For Loop1 = 1 To 48
For loop3 = 1 To 84
'low SCLK *********************
pulsout SCLK ,1 'high SCLK
Next loop3
Next Loop1
Return
#ENDREM *** REMOVED
GotoXY:
Value = X + 128
GoSub CommandToLCD
Value = Y + 64
GoSub CommandToLCD
Return
Invert:
Value = 13
GoSub CommandToLCD
Return
Normal:
Value = 12
GoSub CommandToLCD
Return
eeprom 0,(0x7E, 0x11, 0x11, 0x11, 0x7E) ; A
eeprom (0x7F, 0x49, 0x49, 0x49, 0x36) ; B
eeprom (0x3E, 0x41, 0x41, 0x41, 0x22) ; C
eeprom (0x7F, 0x41, 0x41, 0x22, 0x1C) ; D
eeprom (0x7F, 0x49, 0x49, 0x49, 0x41) ; E
eeprom (0x7F, 0x09, 0x09, 0x09, 0x01) ; F
eeprom (0x3E, 0x41, 0x49, 0x49, 0x7A) ; G
eeprom (0x7F, 0x08, 0x08, 0x08, 0x7F) ; H
eeprom (0x00, 0x41, 0x7F, 0x41, 0x00) ; I
eeprom (0x20, 0x40, 0x41, 0x3F, 0x01) ; J
eeprom (0x7F, 0x08, 0x14, 0x22, 0x41) ; K
eeprom (0x7F, 0x40, 0x40, 0x40, 0x40) ; L
eeprom (0x7F, 0x02, 0x0C, 0x02, 0x7F) ; M
eeprom (0x7F, 0x04, 0x08, 0x10, 0x7F) ; N
eeprom (0x3E, 0x41, 0x41, 0x41, 0x3E) ; O
eeprom (0x7F, 0x09, 0x09, 0x09, 0x06) ; P
eeprom (0x3E, 0x41, 0x51, 0x21, 0x5E) ; Q
eeprom (0x7F, 0x09, 0x19, 0x29, 0x46) ; R
eeprom (0x46, 0x49, 0x49, 0x49, 0x31) ; S
eeprom (0x01, 0x01, 0x7F, 0x01, 0x01) ; T
eeprom (0x3F, 0x40, 0x40, 0x40, 0x3F) ; U
eeprom (0x1F, 0x20, 0x40, 0x20, 0x1F) ; V
eeprom (0x3F, 0x40, 0x38, 0x40, 0x3F) ; W
eeprom (0x63, 0x14, 0x08, 0x14, 0x63) ; X
eeprom (0x07, 0x08, 0x70, 0x08, 0x07) ; Y
eeprom (0x61, 0x51, 0x49, 0x45, 0x43) ; Z
eeprom (0x00, 0x00, 0x2f, 0x00, 0x00) ; !
eeprom (0x00, 0x07, 0x00, 0x07, 0x00) ; "
eeprom (0x14, 0x7f, 0x14, 0x7f, 0x14) ; #
eeprom (0x24, 0x2a, 0x7f, 0x2a, 0x12) ; $
eeprom (0xc4, 0xc8, 0x10, 0x26, 0x46) ; %
eeprom (0x36, 0x49, 0x55, 0x22, 0x50) ; &
eeprom (0x00, 0x05, 0x03, 0x00, 0x00) ; '
eeprom (0x00, 0x1c, 0x22, 0x41, 0x00) ; (
eeprom (0x00, 0x41, 0x22, 0x1c, 0x00) ; )
eeprom (0x14, 0x08, 0x3E, 0x08, 0x14) ; *
eeprom (0x08, 0x08, 0x3E, 0x08, 0x08) ; +
eeprom (0x00, 0x00, 0x50, 0x30, 0x00) ; ,
eeprom (0x10, 0x10, 0x10, 0x10, 0x10) ; -
eeprom (0x00, 0x60, 0x60, 0x00, 0x00) ; .
eeprom (0x20, 0x10, 0x08, 0x04, 0x02) ; /
eeprom (0x3E, 0x51, 0x49, 0x45, 0x3E) ; 0
eeprom (0x00, 0x42, 0x7F, 0x40, 0x00) ; 1
eeprom (0x42, 0x61, 0x51, 0x49, 0x46) ; 2
eeprom (0x21, 0x41, 0x45, 0x4B, 0x31) ; 3
eeprom (0x18, 0x14, 0x12, 0x7F, 0x10) ; 4
eeprom (0x27, 0x45, 0x45, 0x45, 0x39) ; 5
eeprom (0x3C, 0x4A, 0x49, 0x49, 0x30) ; 6
eeprom (0x01, 0x71, 0x09, 0x05, 0x03) ; 7
eeprom (0x36, 0x49, 0x49, 0x49, 0x36) ; 8
eeprom (0x06, 0x49, 0x49, 0x29, 0x1E) ; 9