'###############################################################################
'Hauptschleife
'###############################################################################
Do
Gosub Lcd_init
Lcd_cs = 0 'LCD einschalten
Call Paint(ffffff) 'hintergrundfarbe setzen
Loop
End
'###############################################################################
'Subs & Funktionen
'###############################################################################
Lcd_init: 'sub lcd initialisierung
Set Lcd_rst
Waitms 5
Reset Lcd_rst
Waitms 5
Set Lcd_rst
Waitms 5
Reset Lcd_cs
Call Init_data(&H0000 , &H0001) 'Driver code read
Waitms 50
Call Init_data(&H0015 , &H0030) 'RGB Display Interface Control 2
Call Init_data(&H0011 , &H0040) 'Power Control 2
Call Init_data(&H0010 , &H1628) 'Power Control 1
Call Init_data(&H0012 , &H0000) 'Power Control 3
Call Init_data(&H0013 , &H104D) 'Power Control 4
Waitms 50
Call Init_data(&H0012 , &H0010) 'Power Control 3
Waitms 50
Call Init_data(&H0010 , &H2620) 'Power Control 1
Call Init_data(&H0013 , &H344D) 'Power Control 3
Waitms 50
Call Init_data(&H0001 , &H0100) 'Driver Output Control 1
Call Init_data(&H0002 , &H0300) 'LCD Driving Control
Call Init_data(&H0003 , &H1030) 'Entry Mode
Call Init_data(&H0008 , &H0604) 'Display Control 2
Call Init_data(&H0009 , &H0000) 'Display Control 3
Call Init_data(&H000a , &H0008) 'Display Control 4
Call Init_data(&H0041 , &H0002)
Call Init_data(&H0060 , &H2700) 'Driver Output Control 2
Call Init_data(&H0061 , &H0001) 'Base Image Display Control
Call Init_data(&H0090 , &H0182) 'Panel Interface Control 1
Call Init_data(&H0093 , &H0001)
Call Init_data(&H00a3 , &H0010)
Waitms 25
'Set Gamma
Call Init_data(&H0030 , &H0000) 'Gamma control 1
Call Init_data(&H0031 , &H0502) 'Gamma control 2
Call Init_data(&H0032 , &H0307) 'Gamma control 3
Call Init_data(&H0033 , &H0305) 'Gamma control 4
Call Init_data(&H0034 , &H0004) 'Gamma control 5
Call Init_data(&H0035 , &H0402) 'Gamma control 6
Call Init_data(&H0036 , &H0707) 'Gamma control 7
Call Init_data(&H0037 , &H0503) 'Gamma control 8
Call Init_data(&H0038 , &H1505) 'Gamma control 9
Call Init_data(&H0039 , &H1505) 'Gamma control 10
Waitms 25
'Display on
Call Init_data(&H0007 , &H0001) 'Display Control 1
Waitms 25
Call Init_data(&H0007 , &H0021) 'Display Control 1
Call Init_data(&H0007 , &H0023) 'Display Control 1
Waitms 25
Call Init_data(&H0007 , &H0033) 'Display Control 1
Waitms 25
Call Init_data(&H0007 , &H0133) 'Display Control 1
Lcd_cs = 1
Return
'###############################################################################
'Deklaratinsbereich der Subs und Funktions
'###############################################################################
Sub Lcd_write_bus(byval Vh As Byte , Byval Vl As Byte) 'ruft index oder status register auf
Lcd_dataport = Vh
Lcd_rw = 0
Lcd_rw = 1
Lcd_dataport = Vl
Lcd_rw = 0
Lcd_rw = 1
End Sub
Sub Lcd_write_com(byval Vh As Byte , Byval Vl As Byte) 'ruft controlregister auf
Lcd_rs = 0
Call Lcd_write_bus(vh , Vl)
End Sub
Sub Lcd_write_data(byval Vh As Byte , Byval Vl As Byte) 'schickt die übergebene daten über den bus
Lcd_rs = 1
Call Lcd_write_bus(vh , Vl)
End Sub
Sub Init_data(byval X As Byte , Byval Y As Long) 'zerlegt y in 2 Bytes und sendet es über den bus
Dim M As Byte
Dim N As Byte
Dim Z As Word
'15|14|13|12| |11|10|9|8| |7|6|5|4| |3|2|1|0
'y = 0 |0 |0 |0 | |1 |1 |1|1| |0|0|0|0| |1|1|1|1
'M = Y >> 8
M = Y
N = Y 'M = 0000 0000
Shift , M , Right , 8
''
N = Y
Lcd_rs = 1
Call Lcd_write_com(&H0000 , X)
Call Lcd_write_data(m , N)
End Sub
Sub Adress_set(byval X1 As Integer , Byval Y1 As Integer , Byval X2 As Integer , Byval Y2 As Integer)
Call Lcd_write_com(&H00 , &H20)
Call Lcd_write_data(x1 >> 8 , X1)
Call Lcd_write_com(&H00 , &H21)
Call Lcd_write_data(y1 >> 8 , Y1)
Call Lcd_write_com(&H00 , &H50)
Call Lcd_write_data(x1 >> 8 , X1)
Call Lcd_write_com(&H00 , &H52)
Call Lcd_write_data(y1 >> 8 , Y1)
Call Lcd_write_com(&H00 , &H51)
Call Lcd_write_data(x2 >> 8 , X2)
Call Lcd_write_com(&H00 , &H53)
Call Lcd_write_data(y2 >> 8 , Y2)
Call Lcd_write_com(&H00 , &H22)
End Sub
Sub Paint(byval Dcolor As Integer) 'Pixel mit Farbe füllen -> Hintergrund
Dim I As Word
Dim J As Byte
Call Adress_set(0 , 0 , 240 , 320)
For I = 0 To 320 Step 1
For J = 0 To 240 Step 1
Lcd_write_data(dcolor >> 8 , Dcolor)
Next J
Next I
End Sub