ST7735-ös 128x128-as kijelző kezelése

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Cinege446 »

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!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: kapu48 »

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?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Robert »

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.
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Cinege446 »

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:

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"
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)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: kapu48 »

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"

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"
az: ST7735_functions.inc, 272. sorátol a többi karakter készletet megjegyzésbe rakod, hogy ne keresse a fordító!

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.
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Cinege446 »

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.
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Cinege446 »

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?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: kapu48 »

Pedig vannak ilyen részek több helyen is benne:

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
Ezeket javítsad ki így:

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
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: kapu48 »

É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
'(
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Cinege446 »

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!
Avatar
Cinege446
Biztosítékgyilkos
Hozzászólások: 67
Csatlakozott: 2008. július 22. kedd, 6:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Cinege446 »

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?
Gorrodin
SzínkódFestő
Hozzászólások: 76
Csatlakozott: 2014. július 10. csütörtök, 19:54

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Gorrodin »

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?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Robert »

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ó.
http://www.tavir.hu - a gazda :)
Gorrodin
SzínkódFestő
Hozzászólások: 76
Csatlakozott: 2014. július 10. csütörtök, 19:54

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Gorrodin »

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.
Gorrodin
SzínkódFestő
Hozzászólások: 76
Csatlakozott: 2014. július 10. csütörtök, 19:54

Re: ST7735-ös 128x128-as kijelző kezelése

Hozzászólás Szerző: Gorrodin »

100k-val és egy soros diódával erre képes:
18tft.jpg
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.
Válasz küldése