Code:
'! Nur 16-Bit Ansteuerung funktionsfähig
' HW-Stack: 32
' Soft Stk: 16
' Framesize: 24
' µC: ATMega8 @ 8MHz
'-------------------------------------------------------------------------------
' Declaration: Subs
'-------------------------------------------------------------------------------
Declare Sub SendCMD(byval CMD as Byte)
Declare Sub SendDATA(byval CMD as Byte)
Declare Sub SetPixel(byval xRed as Byte , byval xGreen as Byte , byval xBlue as Byte)
'-------------------------------------------------------------------------------
' Declaration: Ports
'-------------------------------------------------------------------------------
config pinC.5 = output
config pinC.4 = output
config pinC.3 = output
config pinC.2 = output
Config PINC.1 = output
CS ALIAS PortC.5
CLK ALIAS PORTC.4
SDA ALIAS PORTC.3
RST ALIAS PORTC.2
LED ALIAS PORTC.1
'-------------------------------------------------------------------------------
' Declaration: Variables
'-------------------------------------------------------------------------------
DIM i as word
dim j as word
DIM ColorMode As Byte
DIM ColorString As String * 7
DIM R as Byte
DIM G1 as Byte
DIM G2 As Byte
DIM B1 as Byte
DIM ColorData1 As Byte
DIM ColorData2 As Byte
DIM ColorNibble As Byte
Dim CMDTEMP AS BYTE
'-------------------------------------------------------------------------------
' Declaration: Constants
'-------------------------------------------------------------------------------
Const Mode_8Bit = 8
CONST Mode_12Bit = 12
CONST Mode_16Bit = 16
'-------------------------------------------------------------------------------
' Display Initialization
'-------------------------------------------------------------------------------
ColorMode = MODE_16Bit
wait 1
CS = 0
SDA = 0
CLK = 1
RST = 1 : RST = 0 : RST = 1
CLK = 1 : SDA = 1 : CLK = 1
SendCMD &h01 'Software Reset
sendCMD &h11 'Sleep Out
SendCMD &h03 'Booster On
waitms 20
SendCMD &h29 'Display On
SendCMD &h13 ' Normal Mode
'sendCMD &H21 'Invert
sendCMD &HBA 'Data Order
sendCMD &h36 'MDAC
SendData 32 + 64 ' (RAM Y DIRECTION + MIRROR X = Rotate 90° CCW)
sendCMD &h3A ' 16 od. 12 Bit p. Pixel
If ColorMode = 8 Then SendData 2
If ColorMode = 12 Then SendData 3
IF ColorMode = 16 Then SendData 5
sendCMD &H25 'Contrast
sendData 63
sendCMD &H2A 'ColAdress
sendData 0
sendData 131
sendCMD &h2B 'PageAdress
sendData 0
sendData 131
sendCMD &h2c
'-------------------------------------------------------------------------------
' Test Screen: Color Bars
'-------------------------------------------------------------------------------
for j = 1 to 4
for i = 1 to 2112
Select Case j
Case 1 : SetPixel 255 , 255 , 255
Case 2 : SetPixel 000 , 255 , 255
Case 3 : SetPixel 255 , 000 , 255
Case 4 : SetPixel 255 , 255 , 000
End Select
next
Next
For j = 5 to 8
For i = 1 to 2113
Select Case j
Case 5 : SetPixel 000 , 000 , 255
Case 6 : SetPixel 255 , 000 , 000
Case 7 : SetPixel 000 , 255 , 000
Case 8 : SetPixel 000 , 000 , 000
End Select
Next
next
'-------------------------------------------------------------------------------
' MAIN LOOP
'-------------------------------------------------------------------------------
DO
Loop
End
'-------------------------------------------------------------------------------
' SUBs:
'-------------------------------------------------------------------------------
Sub SETPIXEL(BYVAL XRED AS BYTE , byval XGREEN AS BYTE , byval XBLUE AS BYTE)
'12-Bit Mode unvollständig!
If ColorMode = Mode_12Bit Then
R = xRed AND &B00001111
G1 = xGreen AND &B00001111
B1 = xBlue AND &B00001111
CLK = 0 : SDA = 1 : CLK = 1
ShiftOut SDA , CLK , R , 1 , 4 , 10
CLK = 0 : SDA = 1 : CLK = 1
ShiftOut SDA , CLK , G1 , 1 , 4 , 10
CLK = 0 : SDA = 1 : CLK = 1
ShiftOut SDA , CLK , B1 , 1 , 4 , 10
EndIf
If ColorMode = Mode_16Bit Then
R = xRed AND &B11111000
G1 = xGREEN AND &B11100000
G2 = xGREEN AND &B00011100
B1 = xBLue AND &B11111000
SHIFT G1 , right , 5
SHIFT G2 , left , 3
SHIFT B1 , right , 3
ColorData1 = R OR G1
ColorData2 = B1 OR G2
CLK = 0 : SDA = 1 : CLK = 1
ShiftOut SDA , CLK , ColorData1 , 1 , 8 , 0
CLK = 0 : SDA = 1 : CLK = 1
ShiftOut SDA , CLK , ColorData2 , 1 , 8 , 0
EndIf
End Sub
Sub SENDDATA(BYVAL CMD AS BYTE)
CLK = 0
waitus 10
SDA = 1
waitus 10
CLK = 1
waitus 10
ShiftOut SDA , CLK , CMD , 1 , 8 , 20
End Sub
Sub SENDCMD(BYVAL CMD AS BYTE)
CLK = 0
waitus 20
SDA = 0
waitus 20
CLK = 1
waitus 20
ShiftOut SDA , CLK , CMD , 1 , 8 , 30
End Sub
Lesezeichen