$regfile = "m8def.dat"
$crystal = 8000000
' -------- konfiguracja SPI
Config Portd = Output 'communication port to LCD
Config Spi = Soft , Din = Portd.0 , Dout = Portd.4 , Ss = None , Clock = Portd.3
' -------- piny LCD
'Sclk(2) Portd.3
'Sdin(3) Portd.4
'D / C(4) Portd.5
'Sce(5) Portd.6
'Reset(8) Portd.7
' ------- Zmienne globalne
Dim Txloc As Byte , Tyloc As Byte , Yy As Byte , Xx As Byte , Tout As Byte
' ------- Stałe dla ustawien LCD
Const Extcmd = &H21 'extended command mode
Const Contrmid = &HC8 'LCD contract medium level(after Extcmd)
Const Tempcomp2 = &H06 'temperature compensation (after Extcmd)
Const Bias48 = &H13 'bias 1:48 for LCD (after Extcmd)
Const Normcmd = &H20 'normal command mode
Const Lcdinv = &H0D 'inverted LCD screen(after Normcmd)
Const Lcdnorm = &H0C 'normal LCD screen(after Normcmd)
Const Lcdxaddr0 = &H80 'set X addr of RAM to 0(after Normcmd)
Const Lcdpdown = &H24 'LCD in power down mode
Const Lcdact = &H20 'LCD in active mode
' ------- Deklaracje procedur
Declare Sub Tcmd(byval Tlcdcmd As Byte)
Declare Sub Tlcdinit
Declare Sub Tcls
Declare Sub Tgphloc(txglc As Byte , Tyglc As Byte)
Declare Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
Declare Sub Tprintf(byval Tstring As String)
Declare Sub Tshowpic
' ------- Program Główny ----------------------------
Tlcdinit
Main_loop:
Tcls
'Tlocate 0 , 0
'Tprintf " EGYPT DEMO"
'Tlocate 0 , 2
'Restore Egypt
'Tshowpic
'Wait 5
Tcls
Tlocate 0 , 0
Tprintf "abcdefghijklmnopqrstuvwxyz"
Wait 1
Tlocate 0 , 2
Tprintf "ABCDEFGHIJKLMNPQRSTUVWXYZ"
Wait 1
Tlocate 0 , 4
Tprintf "0123456789šćęłńó??żŁ??Ż^[]{}"
Wait 5
'Tcmd Lcdinv
'Wait 5
'Tcmd Lcdnorm
'Wait 1
End 'end program
' ------ Tcmd(Tlcdcmd) ----- START
Sub Tcmd(byval Tlcdcmd As Byte)
Reset Portd.5 'command mode
Spiout Tlcdcmd , 1
Set Portd.5 'data mode
End Sub
' ------ Tlcdinit ------ START
Sub Tlcdinit
Spiinit
Reset Portd.6 'LCD enable
Reset Portd.7 'RESET LCD display
Set Portd.7 '
Tcmd Extcmd 'look into
Tcmd Contrmid '"LCD commands constants"
Tcmd Tempcomp2 'section
Tcmd Bias48 '
Tcmd Normcmd '
Tcmd Lcdnorm '
Tcls '
End Sub
' -------- Tcls ------- START
Sub Tcls
Local Tword As Word
Tcmd Normcmd
Tcmd Lcdnorm
Tcmd Lcdxaddr0
Tout = 0
For Tword = 0 To 503 '84x6 times sends 0 to clear LCD
Spiout Tout , 1
Next
End Sub
' -------- Tgphloc(Txglc , Tyglc) --------- START
Sub Tgphloc(txglc As Byte , Tyglc As Byte)
Reset Portd.5 'command mode
Tout = Tyglc + &H40 'sets 0-5 Y-addr of RAM
Spiout Tout , 1
Tout = Txglc * &H06 'sets 0-13 X-addr of RAM
Tout = Tout + &H80
Spiout Tout , 1
Set Portd.5 'data mode
End Sub
' --------- Tlocate(Txloc, Tyloc) -------- START
Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
Txloc = Txlc
Tyloc = Tylc
Tgphloc Txloc , Tyloc
End Sub
' --------- Tprintf(Tstring) -------- START
Sub Tprintf(tstring As String)
Local Tsub As Word , Tword As Word , Tchr As String * 1
For Xx = 1 To Len(tstring)
Tchr = Mid(tstring , Xx , 1)
Select Case Tchr
Case " " : Tsub = 0
Case "a" : Tsub = 1
Case "b" : Tsub = 2
Case "c" : Tsub = 3
Case "d" : Tsub = 4
Case "e" : Tsub = 5
Case "f" : Tsub = 6
Case "g" : Tsub = 7
Case "h" : Tsub = 8
Case "i" : Tsub = 9
Case "j" : Tsub = 10
Case "k" : Tsub = 11
Case "l" : Tsub = 12
Case "m" : Tsub = 13
Case "n" : Tsub = 14
Case "o" : Tsub = 15
Case "p" : Tsub = 16
Case "q" : Tsub = 17
Case "r" : Tsub = 18
Case "s" : Tsub = 19
Case "t" : Tsub = 20
Case "u" : Tsub = 21
Case "v" : Tsub = 22
Case "w" : Tsub = 23
Case "x" : Tsub = 24
Case "y" : Tsub = 25
Case "z" : Tsub = 26
Case "A" : Tsub = 27
Case "B" : Tsub = 28
Case "C" : Tsub = 29
Case "D" : Tsub = 30
Case "E" : Tsub = 31
Case "F" : Tsub = 32
Case "G" : Tsub = 33
Case "H" : Tsub = 34
Case "I" : Tsub = 35
Case "J" : Tsub = 36
Case "K" : Tsub = 37
Case "L" : Tsub = 38
Case "M" : Tsub = 39
Case "N" : Tsub = 40
Case "O" : Tsub = 41
Case "P" : Tsub = 42
Case "Q" : Tsub = 43
Case "R" : Tsub = 44
Case "S" : Tsub = 45
Case "T" : Tsub = 46
Case "U" : Tsub = 47
Case "V" : Tsub = 48
Case "W" : Tsub = 49
Case "X" : Tsub = 50
Case "Y" : Tsub = 51
Case "Z" : Tsub = 52
Case "0" : Tsub = 53
Case "1" : Tsub = 54
Case "2" : Tsub = 55
Case "3" : Tsub = 56
Case "4" : Tsub = 57
Case "5" : Tsub = 58
Case "6" : Tsub = 59
Case "7" : Tsub = 60
Case "8" : Tsub = 61
Case "9" : Tsub = 62
Case "š" : Tsub = 63
Case "ć" : Tsub = 64
Case "ę" : Tsub = 65
Case "ł" : Tsub = 66
Case "ń" : Tsub = 67
Case "ó" : Tsub = 68
Case "?" : Tsub = 69
Case "?" : Tsub = 70
Case "ż" : Tsub = 71
Case "Ł" : Tsub = 72
Case "?" : Tsub = 73
Case "?" : Tsub = 74
Case "Ż" : Tsub = 75
Case "^" : Tsub = 76
Case "[" : Tsub = 77
Case "]" : Tsub = 78
Case "{" : Tsub = 79
Case "}" : Tsub = 80
Case Else : Goto Exit_case
End Select
Restore Ascii
Set Portd.5
Tsub = Tsub * 6
If Tsub <> 0 Then
For Tword = 1 To Tsub 'shift to character pointer
Read Tout 'Tsub times
Next
End If
For Yy = 1 To 6 'printing character loop
Read Tout : Spiout Tout , 1 '6x8 bits
Next
Exit_case:
Next
End Sub
' ------- D A T A ------- START
Ascii:
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H30 , &H4A , &H4A , &H52 , &H7C , &H00 , &H3F , &H48 , &H44 , &H44,
Data &H38 , &H00 , &H38 , &H44 , &H44 , &H44 , &H28 , &H00 , &H38 , &H44 , &H44 , &H48 , &H7F , &H00 , &H38 , &H54,
Data &H54 , &H54 , &H18 , &H00 , &H00 , &H04 , &H7E , &H05 , &H00 , &H00 , &H0C , &H52 , &H52 , &H4A , &H3C , &H00,
Data &H7F , &H08 , &H04 , &H04 , &H78 , &H00 , &H00 , &H44 , &H7D , &H40 , &H00 , &H00 , &H00 , &H40 , &H44 , &H3D,
Data &H00 , &H00 , &H7F , &H20 , &H10 , &H28 , &H44 , &H00 , &H00 , &H41 , &H7F , &H40 , &H00 , &H00 , &H7C , &H04,
Data &H18 , &H04 , &H7C , &H00 , &H7C , &H08 , &H04 , &H04 , &H78 , &H00 , &H38 , &H44 , &H44 , &H44 , &H38 , &H00,
Data &H7C , &H14 , &H24 , &H24 , &H18 , &H00 , &H18 , &H24 , &H24 , &H14 , &H7C , &H00 , &H7C , &H04 , &H04 , &H08,
Data &H00 , &H00 , &H08 , &H54 , &H54 , &H54 , &H20 , &H00 , &H04 , &H3F , &H44 , &H40 , &H00 , &H00 , &H3C , &H40,
Data &H40 , &H40 , &H3C , &H00 , &H1C , &H20 , &H40 , &H20 , &H1C , &H00 , &H3C , &H40 , &H30 , &H40 , &H3C , &H00,
Data &H44 , &H28 , &H10 , &H28 , &H44 , &H00 , &H0C , &H50 , &H50 , &H48 , &H3C , &H00 , &H44 , &H64 , &H54 , &H4C,
Data &H44 , &H00 , &H7C , &H12 , &H11 , &H12 , &H7C , &H00 , &H7F , &H49 , &H49 , &H49 , &H36 , &H00 , &H3E , &H41,
Data &H41 , &H41 , &H22 , &H00 , &H7F , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H49 , &H49 , &H49 , &H41 , &H00,
Data &H7F , &H09 , &H09 , &H09 , &H01 , &H00 , &H3E , &H41 , &H49 , &H49 , &H3A , &H00 , &H7F , &H08 , &H08 , &H08,
Data &H7F , &H00 , &H00 , &H41 , &H7F , &H41 , &H00 , &H00 , &H20 , &H41 , &H41 , &H41 , &H3F , &H00 , &H7F , &H08,
Data &H14 , &H22 , &H41 , &H00 , &H7F , &H40 , &H40 , &H40 , &H40 , &H00 , &H7F , &H02 , &H04 , &H02 , &H7F , &H00,
Data &H7F , &H04 , &H08 , &H10 , &H7F , &H00 , &H3E , &H41 , &H41 , &H41 , &H3E , &H00 , &H7F , &H09 , &H09 , &H09,
Data &H06 , &H00 , &H3E , &H41 , &H51 , &H61 , &H7E , &H00 , &H7F , &H09 , &H19 , &H29 , &H46 , &H00 , &H06 , &H49,
Data &H49 , &H49 , &H30 , &H00 , &H01 , &H01 , &H7F , &H01 , &H01 , &H00 , &H3F , &H40 , &H40 , &H40 , &H3F , &H00,
Data &H1F , &H20 , &H40 , &H20 , &H1F , &H00 , &H7F , &H20 , &H10 , &H20 , &H7F , &H00 , &H63 , &H14 , &H08 , &H14,
Data &H63 , &H00 , &H03 , &H04 , &H78 , &H04 , &H03 , &H00 , &H61 , &H51 , &H49 , &H45 , &H43 , &H00 , &H3E , &H51,
Data &H49 , &H45 , &H3E , &H00 , &H00 , &H42 , &H7F , &H40 , &H00 , &H00 , &H42 , &H61 , &H51 , &H49 , &H46 , &H00,
Data &H22 , &H41 , &H49 , &H49 , &H36 , &H00 , &H18 , &H14 , &H12 , &H7F , &H10 , &H00 , &H27 , &H45 , &H45 , &H45,
Data &H39 , &H00 , &H3E , &H49 , &H49 , &H49 , &H32 , &H00 , &H61 , &H11 , &H09 , &H05 , &H03 , &H00 , &H36 , &H49,
Data &H49 , &H49 , &H36 , &H00 , &H26 , &H49 , &H49 , &H49 , &H3E , &H00 , &H30 , &H4A , &H4A , &HD2 , &H7C , &H00,
Data &H38 , &H44 , &H46 , &H45 , &H28 , &H00 , &H38 , &H54 , &H54 , &HD4 , &H18 , &H00 , &H00 , &H49 , &H7F , &H44,
Data &H00 , &H00 , &H7C , &H08 , &H06 , &H05 , &H78 , &H00 , &H38 , &H44 , &H46 , &H45 , &H38 , &H00 , &H08 , &H54,
Data &H56 , &H55 , &H20 , &H00 , &H44 , &H64 , &H56 , &H4D , &H44 , &H00 , &H44 , &H64 , &H55 , &H4C , &H44 , &H00,
Data &H10 , &H7F , &H44 , &H42 , &H40 , &H00 , &H04 , &H4A , &H4B , &H4A , &H30 , &H00 , &H62 , &H56 , &H4B , &H46,
Data &H42 , &H00 , &H61 , &H59 , &H49 , &H4D , &H43 , &H00 , &H7E , &H43 , &H41 , &H43 , &H7E , &H00 , &H00 , &H00,
Data &H00 , &H7F , &H7F , &H00 , &H00 , &H00 , &H7F , &H7F , &H7F , &H00 , &H00 , &H7F , &H7F , &H7F , &H7F , &H00,
Data &H7F , &H7F , &H7F , &H7F , &H7F , &H00