Working on this ST7735 80x160 LCD module few days,
Now success to drive it by WIFI RDS code as:
This the first step only, need to add the following functions:
1. Font
2. drawing tools (dot, line, rectange , circle ...)
3. load image from file
4. Speed up!!! using "for loop" and "spi.hex$" seems not fast enough, much slower than native code. Here is my code:
' Program Code
D0=16 : D1=5 : D2=4 : D3=0 : D4=2 : D5=14 : D6=12 : D7=13 : D8=15 : D9=3 : D10=1
START:
' H/W init.
OPTION.CPUFREQ 160
' LCD init.
DC = D0
CS = D8
pin.mode DC,output
pin.mode CS,output
pin(CS) = 1
spi.setup 80000000
LCD_init
deadloop:
LCD_test1
pause 500
LCD_test2
pause 500
LCD_window &h30, &h3f, &h30, &h3f
LCD_test3
LCD_window &h50, &h5f, &h40, &h4f
LCD_test3
LCD_window &h70, &h7f, &h50, &h5f
LCD_test3
pause 500
goto deadloop
' ---------------------------------------------
sub LCD_cmd(x)
pin(DC) = 0
pin(CS) = 0
r=spi.byte(x)
pin(CS) = 1
end sub
sub LCD_dat(x)
pin(DC) = 1
pin(CS) = 0
r=spi.byte(x)
pin(CS) = 1
end sub
sub LCD_window(xs, xe, ys, ye)
LCD_cmd &h2a ' ST77XX_CASET
LCD_dat &h00
LCD_dat xs
LCD_dat &h00
LCD_dat xe
LCD_cmd &h2b ' ST77XX_RASET
LCD_dat &h00
LCD_dat ys
LCD_dat &h00
LCD_dat ye
end sub
sub LCD_init
LCD_cmd &h01 ' SWRESET
pause 150
LCD_cmd &h11 ' SLPOUT
pause 500
LCD_cmd &hb1 ' ST7735_FRMCTR1
LCD_dat &h01
LCD_dat &h2c
LCD_dat &h2d
LCD_cmd &hb2 ' ST7735_FRMCTR2
LCD_dat &h01
LCD_dat &h2c
LCD_dat &h2d
LCD_cmd &hb3 ' ST7735_FRMCTR3
LCD_dat &h01
LCD_dat &h2c
LCD_dat &h2d
LCD_dat &h01
LCD_dat &h2c
LCD_dat &h2d
LCD_cmd &hb4 ' ST7735_INVCTR
LCD_dat &h07
LCD_cmd &hc0 ' ST7735_PWCTR1
LCD_dat &ha2
LCD_dat &h02
LCD_dat &h84
LCD_cmd &hc1 ' ST7735_PWCTR2
LCD_dat &hC5
LCD_cmd &hc2 ' ST7735_PWCTR3
LCD_dat &h0a
LCD_dat &h00
LCD_cmd &hc3 ' ST7735_PWCTR4
LCD_dat &h8a
LCD_dat &h2a
LCD_cmd &hc4 ' ST7735_PWCTR5
LCD_dat &h8a
LCD_dat &hee
LCD_cmd &hc5 ' ST7735_VMCTR1
LCD_dat &hee
LCD_cmd &hc5 ' ST7735_VMCTR1
LCD_dat &hee
LCD_cmd &h20 ' ST77XX_INVOFF
LCD_cmd &h36 ' ST77XX_MADCTL
LCD_dat &h60
LCD_cmd &h3a ' ST77XX_COLMOD
LCD_dat &h05
LCD_window &h00, &ha1, &h00, &h69
LCD_cmd &he0 ' ST7735_GMCTRP1
LCD_dat &h02
LCD_dat &h1c
LCD_dat &h07
LCD_dat &h12
LCD_dat &h37
LCD_dat &h32
LCD_dat &h29
LCD_dat &h2d
LCD_dat &h29
LCD_dat &h25
LCD_dat &h2B
LCD_dat &h39
LCD_dat &h00
LCD_dat &h01
LCD_dat &h03
LCD_dat &h10
LCD_cmd &he1 ' ST7735_GMCTRP2
LCD_dat &h03
LCD_dat &h1d
LCD_dat &h07
LCD_dat &h06
LCD_dat &h2e
LCD_dat &h2c
LCD_dat &h29
LCD_dat &h2d
LCD_dat &h2e
LCD_dat &h2e
LCD_dat &h37
LCD_dat &h3f
LCD_dat &h00
LCD_dat &h00
LCD_dat &h02
LCD_dat &h10
LCD_cmd &h13 ' NORON
pause 10
LCD_cmd &h29 ' DISPON
pause 100
end sub
sub LCD_test1
LCD_window &h00, &ha1, &h00, &h69
LCD_cmd &h2c ' RAMWR
pin(DC) = 1
pin(CS) = 0
for i = 1 to 43
a$ = "008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f008f"
a$ = a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$
b$ = spi.hex$(a$, 800)
next i
pin(CS) = 1
LCD_cmd &h00 ' NOP
end sub
sub LCD_test2
LCD_window &h00, &ha1, &h00, &h69
LCD_cmd &h2c ' RAMWR
pin(DC) = 1
pin(CS) = 0
for i = 1 to 43
a$ = "1f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f00"
a$ = a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$
b$ = spi.hex$(a$, 800)
next i
pin(CS) = 1
LCD_cmd &h00 ' NOP
end sub
sub LCD_test3
LCD_cmd &h2c ' RAMWR
pin(DC) = 1
pin(CS) = 0
a$ = "e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007e007"
a$ = a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$ + a$
B$ = spi.hex$(a$, 512)
pin(CS) = 1
LCD_cmd &h00 ' NOP
end sub
Please find attached:
source code : st7735-05.bas
emoji hex : emoji.hex