LCD UC 1608

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

LCD UC 1608

Post autor: Henryk » 16 kwie 2023, 17:54

Witam :D
Panowie , próbuje ruszyć wyświetlacz UC1608 240x128 , jeszcze nie podpiąłem ani jednego przewodu a tu już problem .
Bascom wywala błąd przy kompilacji dotyczący rozdzielczości wyświetlacza , przyjmuje tylko 128x64sed .
240x128sed wywala błąd :( domyślam się że problem tkwi w bibliotece , tylko ja nie wiem gdzie trzeba pogmerać aby było dobrze .

kod testowy kiedyś pobrałem z MCS razem z bibliotekami , aktualnie brak dostępu do bibliotek ( pewnie z powodu wojny )
  1. '===============================================================================
  2. '
  3. '                           UC1608 LCD test example
  4. '
  5. '                                SPI-mode 9 bit
  6. '
  7. '                                MrShilov 2014
  8. '
  9. '===============================================================================
  10.  
  11. $regfile = "m8def.dat"
  12. $crystal = 8000000
  13. $hwstack = 32
  14. $swstack = 32
  15. $framesize = 32
  16.  
  17. '*******************************************************************************
  18. $lib "glcd-UC1608-spi.lib"                                  'Library must be in LIB directory
  19.  
  20. Config Graphlcd = 128x64sed , Si = Portb.5 , Sclk = Portb.4 'błąd przy kompilacji nie przyjmuje 240x128sed , 240x128
  21.                                                                '
  22. ' "Sclk" must be connected to D0 of display
  23. '  "Si"  must be connected to D3 of display
  24. ' D6 of display must be connected to GND
  25. ' D7 of display must be connected to +3,3V
  26. ' CD, WR0, WR1, BM0, BM1 of display must be connected to GND
  27.  
  28.  
  29. 'Const Negative_lcd = 1                                      'Optional screen inversion
  30. 'Const Rotate_lcd = 1                                        'Optional rotate screen to 180°
  31.  
  32.  
  33. Dim I As Byte , Text As String * 4
  34. '***************************** Program *****************************************
  35.  
  36. Initlcd
  37.  
  38. Do
  39.    Cls
  40.  
  41.    Showpic 0 , 0 , Pic1
  42.  
  43.    For I = 63 To 0 Step -1
  44.       Lcdcontrast I
  45.       Waitms 30
  46.    Next
  47.    For I = 1 To 63                                          'Contrast 0...63
  48.       Lcdcontrast I
  49.       Waitms 30
  50.    Next
  51.    Wait 1
  52.  
  53.    Cls
  54.    Setfont Font6x8
  55.    Lcdat 5 , 15 , " 10 october"
  56.    Lcdat 6 , 20 , "  Friday  " , 1                          'Last parameter - inversion
  57.    Lcdat 7 , 38 , "2014"
  58.  
  59.  
  60.    Setfont Font12x16dig
  61.    I = 10
  62.    Do
  63.       Incr I
  64.       If I > 20 Then Exit Do
  65.       Text = Str(i)
  66.       Lcdat 2 , 21 , "23:" ; Text
  67.       Waitms 500
  68.       Lcdat 2 , 21 , "23 " ; Text
  69.       Waitms 500
  70.    Loop
  71.  
  72. Loop
  73.  
  74. End
  75. '===============================================================================
  76. Pic1:
  77. $bgf "pic1.bgf"
  78. $include "font6x8.font"
  79. $include "font12x16dig.font"
Z góry dziękuję za pomoc , Henryk .

Podpinam jedną bibliotekę do obsługi po SPI
glcd-UC1608-spi.rar
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD UC 1608

Post autor: niveasoft » 16 kwie 2023, 18:11

Biblioteki są normalnie dostępne bo to zawsze było uploadowane na serwer MCS.
Co do rozdzielczości to jak się zajrzy do biblioteki to widać, że nie korzysta z tej konfiguracji którą się ustawia w Bascom. Ma już na sztywno wpisane te 240. Tak więc deklarujesz pewnie te mniejszą a i tak będzie działać.

Problemy z wyswietlaczami najczesciej pojawiają się dopiero jak któraś z X lub Y przekroczy maksymalną wartośc dla bajtu czyli 255. 240x128 chyba nie robi mu jeszcze różnicy ;)
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: LCD UC 1608

Post autor: Henryk » 16 kwie 2023, 18:21

Dziękuje za wiadomość .
Co do MCS to chyba mnie nie lubią , bo ja widzę tylko puste kratki tam gdzie są fotki :lol:

Na dniach będą robione próby , dam znać czy działa albo się zfajczy ;)
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: LCD UC 1608

Post autor: Henryk » 22 kwie 2023, 11:42

Dzieńdoberek :)
LCD UC 1608 działa , tak jak Bartek napisał zostawiamy rozdzielczość 128x64 .
IMG_20230422_113049.jpg
IMG_20230422_113153.jpg
font12x16dig.font obsługuje tylko cyferki ;)

Pozdrawiam Henryk .
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: LCD UC 1608

Post autor: Henryk » 22 kwie 2023, 18:23

Uwaga na połączenia pinów LCD !!
edit:
Model wyświetlacza którego używał autor przykładu ma piny sygnałowe 1 do 23
Model LCD którego ja użyłem ma piny 1 do 24 , ale pinem NC jest pin pierwszy .
SPI mode.jpg
Piny należy łączyć wg. karty katalogowej , nie sugerując się numerami pinów na schemacie jeśli posiadasz model którego ja użyłem .

ART240128D02-DIW-FFSTN-rys.GIF
Jest również błąd w programie testowym , autor podaje że piny MB0 i MB1 mają być połączone do masy przy konfiguracji SPI 9BIT MODE .
9bit.JPG
MB0 łączymy do 3,3V a MB1 do masy ;)

Udanych testów , Henryk .
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: LCD UC 1608

Post autor: Henryk » 23 kwie 2023, 16:03

Panowie , mam mały kłopot z tą biblioteka glcd-UC1608-spi.lib .

Pisząc np. Lcdat 1 , 128 , "Test" ...1 to pierwsza linia tekstu Y i 128 piksel ośi X ( czcionka 6x8 )
teraz będzie skok o 8 pikseli do drugiej linii tekstu
Lcdat 2 , 128 , "Test" ....2 to druga linia tekstu Y i 128 piksel ośi X
Do bai taki system bo nie dzieli osi Y dla większych czcionek tylko przesuwa w dół o 8 pikseli .
Gdzie należy w bibliotece zmienić wartości aby tekst był pozycjonowany w X , Y zgodnie z pozycją wyznaczona w pikselach ?
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD UC 1608

Post autor: niveasoft » 23 kwie 2023, 17:57

Nie marudź :D
W wyświetlaczu wpisuje się cały bajt czyli osiem pikseli na raz.
W pierszych wyświetlaczach to było rozmieszczone tak (tu dwa znaki 8x8):
76543210 76543210
76543210 76543210
76543210 76543210
76543210 76543210
76543210 76543210
76543210 76543210
76543210 76543210
76543210 76543210

W wyświetlaczach SED jest inaczej:
7 7 7 7 7 7 7 7
6 6 6 6 6 6 6 6
5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4
3 3 3 3 3 3 3 3
2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0

Ogólnie musisz wpisać te osiem bajtów i one zajmują te miejsce z góry na dół.
Teoretycznie można napisać bibliotekę która sobie użyje pierwsze sześć bitów a pod tym w nastepnych bajtach nadpisze i uzyje te dwa pozostałe bity z poprzedniego, ale to wymaga funkcji odczytu z wyświetlacza co jest niedostepne w trybie SPI.
Biblioteka mnoży o wielokrotność 8bitów chyba że font większy to 16bit itd...
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: LCD UC 1608

Post autor: Henryk » 23 kwie 2023, 18:32

Marudzenie jest zdrowe bo pobudza do szukania rozwiązań problemu ;)
Ograniczenia trybu SPI są mi znane , tylko grafika i tekst .
Mówi się trudno , bedziem dopasowywać grafikę do wielkości tekstu .

Pozdrawiam Henryk .
ODPOWIEDZ