ST7735-ös 128x128-as kijelző kezelése
ST7735-ös 128x128-as kijelző kezelése
Sziasztok!
Először is elnézést kérek, ha bármely másik fórumban már esett szó a fentebb megnevezett színes kijelző kezelésének módjáról, de sajnos azt tapasztalom, hogy minél több fórumot és programkódot olvasok el, annál jobban bekavarodok, hogy mi lehet az igazság. Ebay-ről szereztem be egy ilyen kijelzőt, amelyet SPI-n keresztül lehet elvileg használni. A bekötésről és a konfigurálásról viszont nem igazán találtam egyértelmű leírást, így tanácstalan vagyok ezeket illetőleg. 2-3 programkódra leltem rá mindösszesen, de mind másképpen konfigurálja a kijelzőt, plusz könyvtárakat hív meg amelyeket külön írtak meg, valamint szó esik a Bascom Font editor kiegészítőjéről is, ami a 2075-ös verzióban még benne sincs.
A kérésem az lenne, hogy ha létezik valamilyen leírás az adott témakörben, vagy ha valaki egy rövidke mintaprogrammal meg tudna dobni, annak nagyon hálás lennék!
Először is elnézést kérek, ha bármely másik fórumban már esett szó a fentebb megnevezett színes kijelző kezelésének módjáról, de sajnos azt tapasztalom, hogy minél több fórumot és programkódot olvasok el, annál jobban bekavarodok, hogy mi lehet az igazság. Ebay-ről szereztem be egy ilyen kijelzőt, amelyet SPI-n keresztül lehet elvileg használni. A bekötésről és a konfigurálásról viszont nem igazán találtam egyértelmű leírást, így tanácstalan vagyok ezeket illetőleg. 2-3 programkódra leltem rá mindösszesen, de mind másképpen konfigurálja a kijelzőt, plusz könyvtárakat hív meg amelyeket külön írtak meg, valamint szó esik a Bascom Font editor kiegészítőjéről is, ami a 2075-ös verzióban még benne sincs.
A kérésem az lenne, hogy ha létezik valamilyen leírás az adott témakörben, vagy ha valaki egy rövidke mintaprogrammal meg tudna dobni, annak nagyon hálás lennék!
Re: ST7735-ös 128x128-as kijelző kezelése
Az adafruit-ra támaszkodhatsz:
https://learn.adafruit.com/downloads/pd ... socket.pdf
Bár még azt sem közölted, milyen rendszerben akarod programozni?
https://learn.adafruit.com/downloads/pd ... socket.pdf
Bár még azt sem közölted, milyen rendszerben akarod programozni?
Re: ST7735-ös 128x128-as kijelző kezelése
Az ST7735 az helyből meg is adta a videochipet.
http://www.displayfuture.com/Display/da ... ST7735.pdf
Innen egy lépés a programkód. SPI az ASM, C, Bascom, Arduino alatt ismert.
A szekvenciák egymásutánisága pedig bármely nyelv kész eszközkönyvtárából puskázható.
Arduino: Adafruit környéke, illetve UTFT könyvtárak.
http://www.displayfuture.com/Display/da ... ST7735.pdf
Innen egy lépés a programkód. SPI az ASM, C, Bascom, Arduino alatt ismert.
A szekvenciák egymásutánisága pedig bármely nyelv kész eszközkönyvtárából puskázható.
Arduino: Adafruit környéke, illetve UTFT könyvtárak.
Re: ST7735-ös 128x128-as kijelző kezelése
Mindenképpen Bascomban szeretném használni, mert csak ezt az egy felületet használtam eddig. Jelenleg hardveres SPI-vel szeretném megvalósítani a kezelést, mert ez számomra a későbbiekben is tökéletesen megfelelne. Az eddig talált programkódok alapján most itt tartok:
A mintát és a deklarációt itt találtam:
http://heiko-power.net/Bascom/1.8%20Spi%20ST7735R.zip
A kijelző bekötése a követlező (LCD => MCU):
CS - D4 \
Res - D5 | Ez a három külön megadva a kódban.
A0 (D/C) - D6 /
SDA - B5 (Mosi)
SCK - B7 (SCK)
Kód: Egész kijelölése
$regfile = "m16adef.dat"
$crystal = 1000000
$hwstack = 50
$swstack = 50
$framesize = 50
$baud = 9600
Const Sdcard = 0 'use SD Card = 1 no SD Card = 0
Const Modus = 1 '0=Portrait 1=Landscape
Const Disp_typ = 1 'RGB order 0=Black Tab 1=Red Tab
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Lcd_cs Alias Portd.4
Lcd_dc Alias Portd.6
Lcd_reset Alias Portd.5
Portd.4 = 1
$include "ST7735_declarations.inc"
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spsr = 1
Spiinit
Call Lcd_init()
Do
Call Lcd_clear(gray3)
Wait 1
Loop
End
$include "ST7735_functions.inc"
http://heiko-power.net/Bascom/1.8%20Spi%20ST7735R.zip
A kijelző bekötése a követlező (LCD => MCU):
CS - D4 \
Res - D5 | Ez a három külön megadva a kódban.
A0 (D/C) - D6 /
SDA - B5 (Mosi)
SCK - B7 (SCK)
Re: ST7735-ös 128x128-as kijelző kezelése
Komolyan m16-ossal akarsz GLCD-t hajtani?
Az ehez nagyon szükös lessz!
Legalább 1 karakter készletet bele kel préselni, legyen a: $include "Font\font8x12.font"
az: ST7735_functions.inc, 272. sorátol a többi karakter készletet megjegyzésbe rakod, hogy ne keresse a fordító!
Az ehez nagyon szükös lessz!
Legalább 1 karakter készletet bele kel préselni, legyen a: $include "Font\font8x12.font"
Kód: Egész kijelölése
$regfile = "m16adef.dat"
$crystal = 1000000
$hwstack = 50
$swstack = 50
$framesize = 50
$baud = 9600
Const Sdcard = 0 'use SD Card = 1 no SD Card = 0
Const Modus = 1 '0=Portrait 1=Landscape
Const Disp_typ = 1 'RGB order 0=Black Tab 1=Red Tab
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Lcd_cs Alias Portd.4
Lcd_dc Alias Portd.6
Lcd_reset Alias Portd.5
Portd.4 = 1
$include "ST7735_declarations.inc"
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spsr = 1
Spiinit
Call Lcd_init()
Do
Call Lcd_clear(gray3)
Wait 1
Call Lcd_text( "Font 8x12" , 5 , 60 , 3 , Green , Black)
Wait 1
Loop
End
$include "ST7735_functions.inc"
$include "Font\font8x12.font"
Kód: Egész kijelölése
' If Fontset = 1 Then Restore Font8x8 'Add or remove here fontset's that you need or not,
' If Fontset = 2 Then Restore Font12x16
If Fontset = 3 Then Restore Font8x12
' If Fontset = 4 Then Restore Font6x10
' If Fontset = 5 Then Restore Font10x16
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2016. április 17. vasárnap, 12:26-kor.
Re: ST7735-ös 128x128-as kijelző kezelése
Műxik! Igen, a próbálgatások során tapasztaltam, hogy ehhez nagyobb memóriára lesz szükség, de kipróbálás szintjén egyelőre elegendő. Egyébként a Noss értékét kellett 1-ről 0-ra átírni az SPi konfigban, így már megy rajta minden szépen. De hogy legyen infóértéke is a bejegyzésnek, bemásolom a kódot, ami most fut, hátha másnak is hasznára válik:
Kód: Egész kijelölése
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 200
$swstack = 200
$framesize = 200
$baud = 9600
'*******************************************************************************
Const Sdcard = 0 'use SD Card = 1 no SD Card = 0
Const Modus = 0 '0=Portrait 1=Landscape
Const Disp_typ = 1 'RGB order 0=Black Tab 1=Red Tab
'*******************************************************************************
Config Portd.4 = Output 'Tetszőlegesen konfigurálható lábak
Config Portd.5 = Output
Config Portd.6 = Output
Lcd_cs Alias Portd.4
Lcd_dc Alias Portd.6
Lcd_reset Alias Portd.5
Portd.4 = 1
'*******************************************************************************
$include "ST7735_declarations.inc"
'SPI konfigurálása
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 0
Spsr = 1
Spiinit
Call Lcd_init()
Do
Call Lcd_clear(gray3) 'Háttérszín megadása
Wait 1
Call Lcd_clear(red)
Locate 4 , 5
' Call Lcd_text( "Font 6x10" , 1 , 1 , 1 , Green , Red)
Call Lcd_text( "Koszonom a" , 5 , 35 , 1 , Green , Red) ' "Szövegkiíratás", behúzás, soremelés, szövegszín, szövegháttérszín
Call Lcd_text( "segitseget!" , 15 , 45 , 1 , Green , Red)
' Call Lcd_text( "Font 8x12" , 5 , 60 , 3 , Green , Red)
' Call Lcd_text( "Font 12x16" , 1 , 80 , 2 , Blue , Black)
' Call Lcd_text( "Font 10x16" , 1 , 110 , 5 , Yellow , Red)
Wait 2
Loop
End
$include "ST7735_functions.inc"
'$include "Font\Font12x16.font"
$include "Font\Font8x8.font"
'$include "Font\font8x12.font"
'$include "Font\font6x10.font"
'$include "Font\font10x16.font"
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: ST7735-ös 128x128-as kijelző kezelése
Két dolog viszont még most sem tiszta számomra. Változókat itt hogyan lehet kiíratni, valamint hol van az megadva, hogy a kijelző 128 x 160 pixeles? Az a példa, ami alapján informálódtam, 128 x 160-as felbontású LCD-hez íródott, de sehol sem találom az ST7735_functions.inc fájlban, hogy hol adta meg a felbontást? Vagy ez miből adódik?
Re: ST7735-ös 128x128-as kijelző kezelése
Pedig vannak ilyen részek több helyen is benne:
Ezeket javítsad ki így:
Kód: Egész kijelölése
#if Modus = 1
Call Lcd_set_window(0 , 0 , 159 , 127)
#else
Call Lcd_set_window(0 , 0 , 127 , 159)
#endif
Kód: Egész kijelölése
#if Modus = 1
Call Lcd_set_window(0 , 0 , 127 , 127)
#else
Call Lcd_set_window(0 , 0 , 127 , 127)
#endif
Re: ST7735-ös 128x128-as kijelző kezelése
És van ilyen részlet 488. sortól:
Kód: Egész kijelölése
Call Lcd_write_command(&H2a) 'column set
Call Lcd_write_data(&H00)
Call Lcd_write_data(&H00)
Call Lcd_write_data(&H00)
Call Lcd_write_data(&H7f) '127 end 7f
Call Lcd_write_command(&H2b) 'row set
Call Lcd_write_data(&H00)
Call Lcd_write_data(&H00)
Call Lcd_write_data(&H00)
Call Lcd_write_data(&H9f) '159 end 9f ezt javitsad &H7f 127 re
'(
Re: ST7735-ös 128x128-as kijelző kezelése
Igen, az "#if Modus = 1" feltételben szereplő koordinátákkal én is kísérleteztem, de ha 0 és 63-at használtam, akkor is teljesen változatlanul mentek a 63-on fölötti pixelek is. A "Call Write_command"-ot viszont még nem néztem. Azt kipróbálom! Köszi a tippet!
Re: ST7735-ös 128x128-as kijelző kezelése
Hát, a hexa 9f átírása 7f-re sajnos nem jött össze. Továbbra is a 33. sortól jeleníti meg a dolgokat. Mondjuk ez így önmagában még nem is lenne olyan nagy tragédia, csak a 320x240-essel tudjam majd használni, ergó a határok kiterjesztése lenne nekem a fontosabb, de hogy ez megoldható-e, csak akkor fog kiderülni, ha már megérkezett a másik kijelző.
Viszont a változók kiíratása még most sem megy. Arra valakinek ötlete esetleg?
Viszont a változók kiíratása még most sem megy. Arra valakinek ötlete esetleg?
Re: ST7735-ös 128x128-as kijelző kezelése
Hali
Nekem egy 128*160-as panelom van ezzel a vezérlővel, és egész jól működik az Adafruit tesztprogrammal, 1 dolgot kivéve.
A Bl lábat bekötve 5V-ra, iszonyatosan fényes, és alig látni a mintát.
Próbáltam potit kötni rá, de akárhova tekerem, semmit nem változik.
tudja valaki, hogyan lehet levenni a fényerőt?
Nekem egy 128*160-as panelom van ezzel a vezérlővel, és egész jól működik az Adafruit tesztprogrammal, 1 dolgot kivéve.
A Bl lábat bekötve 5V-ra, iszonyatosan fényes, és alig látni a mintát.
Próbáltam potit kötni rá, de akárhova tekerem, semmit nem változik.
tudja valaki, hogyan lehet levenni a fényerőt?
Re: ST7735-ös 128x128-as kijelző kezelése
A BL-re nem 3.3V kell?
- tegyél nagyobb ellenállást sorosan: 1k is akár
- soros diódákkal 0.7V (schottky: 0.3V) szintén halványítható.
- tegyél nagyobb ellenállást sorosan: 1k is akár
- soros diódákkal 0.7V (schottky: 0.3V) szintén halványítható.
http://www.tavir.hu - a gazda
Re: ST7735-ös 128x128-as kijelző kezelése
Időközben megtaláltam én is ezt az infót, de sokat nem segített.
3,3V-al annyi a változás, hogy tudtam valamennyit javítani.
egy 100k-s (!) ellenállással már látom a képet, de még mindig világos.
Az érdekes az, hogy ha kiveszem az 5v-os táplálást a Vcc lábról, csak a 3,3v marad a bl-en, akkor is működik.
3,3V-al annyi a változás, hogy tudtam valamennyit javítani.
egy 100k-s (!) ellenállással már látom a képet, de még mindig világos.
Az érdekes az, hogy ha kiveszem az 5v-os táplálást a Vcc lábról, csak a 3,3v marad a bl-en, akkor is működik.
Re: ST7735-ös 128x128-as kijelző kezelése
100k-val és egy soros diódával erre képes:
Ja, és azt a szellemképet sem tudom, hogy miért van, ami a nyílnál látszik, hogy a két piros sáv szélességében keresztülfut.Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.