LCD 128x64 ST7567A

Prezentacje projektów
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

LCD 128x64 ST7567A

Post autor: marekszy » 03 maja 2023, 14:00

witam
Kupiłem sobie wyświetlacz LCD 128x64 GM12864-01A SPI ST7567A z Ali jako ładniejsza alternatywa dla Nokia5110, nie mogę namierzyć biblioteki ST7567 dla bascom-a, a nie chcę kombinować jak ktoś już to ogarnął.
link do wyświetlacza ;
https://pl.aliexpress.com/item/10050047 ... pt=glo2pol
Mam ten z chip font library.
Wie ktoś może jak to podłączyć i uruchomić ?
Na stronie MCS jest coś ale z wiadomych względów nie mogę się zalogować i pobrać plików
https://www.mcselec.com/index2.php?opti ... ic&t=13008
pozdrawiam
Awatar użytkownika
niveasoft
Posty: 1231
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD 128x64 ST7567A

Post autor: niveasoft » 03 maja 2023, 23:55

Łap ;)
Wydawało mi się że do samego przeglądania i ściągania na MCS nie trzeba mieć zarejestrowanego produktu. Bez tego chyba tylko nie można zakładać nowych tematów.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 04 maja 2023, 19:00

dzięki wielkie
może podpowiesz jak go podpiąć?

Kod: Zaznacz cały

Config Graphlcd = 128x64sed , A0 = Portb.4 , Si = Portb.2 , Sclk = Portb.3 , Cs1 = Portb.1 , Rst = Portb.0
mogę pokombinować ale nie chcę go zjarać, oczywiście podepnę go za pomocą rezystorów na 3,3V
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 07 maja 2023, 13:51

Niestety po pierwszych testach nic nie wyświetla, podłączyłem jak niżej

Kod: Zaznacz cały

'RST-RST , Cs1-CS , A0-DC , SI-SDA , SCLK-SCL
ma może ktoś jakąś radę?
Trochę zmieniałem ale na nic to się nie zdało, jeszcze się nie poddaję ;)
pozdrawiam
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 07 maja 2023, 20:11

Ok, działa wg podłączenia wyżej , tak to jest z tymi płytkami stylowymi :|
Bardzo fajny, zamawiam na zapas (kiedyś się przydadzą ;) )
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 07 maja 2023, 20:19

Jeszcze tylko pytanko, jak dobrać się do tej pamięci z zapisaną czcionką i zobaczyć co tam jest ?
Press
Posty: 65
Rejestracja: 21 sty 2018, 23:08

Re: LCD 128x64 ST7567A

Post autor: Press » 08 maja 2023, 22:06

Odczytać z kostki jaka to pamięć, a resztę informacji znajdziesz w PDF od tej kostki. Zapewne będzie to jakiś 24CXX, lub coś podobnego.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 06 sie 2024, 23:16

Witam
próbuję wyświetlić na tym wyświetlaczu czas z DS1307 jednak po wpisaniu wyświetlacz przestaje wyświetlać cokolwiek (pusty ekran),tak jakby polecenie blokowało linię SCL/SDA.
Ma ktoś jakiś pomysł jak to obsłużyć ?
  1. '===============================================================================
  2. '                                GM12864-01A
  3. '                                ST7567 LCD
  4. '                                 128x64
  5. '
  6.  
  7. 'CKDIV8 wylaczony (bez zaznaczenia)
  8.  
  9. 'LCD:
  10. 'RST-RST , Cs1-CS , A0-DC , SI-SDA , SCLK-SCL
  11. 'PD.0 - SCL(SCLK) / PD.1 - SDA(SI) / PD.2 - DC(A0) / PD.3 - RST(RST) / PD.4 - CS(CS1) / PD.5 - BL(podswietlenie)
  12.  
  13. '===============================================================================
  14. $regfile = "m328pdef.dat"
  15. $crystal = 16000000
  16. $hwstack = 64
  17. $swstack = 64
  18. $framesize = 64
  19.  
  20.  
  21.            '0-wejsce/1-wyjscie      stan na pin
  22.  
  23. Config Portb = &B00000000 : Portb = &B00111111
  24. Config Portc = &B11001111 : Portc = &B01001110
  25. Config Portd = &B00111111 : Portd = &B11100001
  26. '*******************************************************************************
  27. '$lib "Ds1307clock.lib"                                      '"ds1307rtc.lib" modified lib
  28. $lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
  29. Config Sda = Portc.4       'DS1307 - SDA
  30. Config Scl = Portc.5       'DS1307 - SCL
  31. Config Twi = 400000                                         ' i2c speed
  32. I2cinit
  33.  
  34. Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
  35. Const Ds1307r = &HD1
  36.  
  37. 'definicja gdze trzymamy zmienne czas i data
  38. Dim Weekday As Byte
  39.  
  40. Declare Sub Getdatetime
  41. Declare Sub Settime
  42.  
  43. Config Clock = User                                         ' this will dim the bytes automatic
  44. Config Date = Dmy , Separator = .                           'format wyswietlania daty DS1307
  45.  
  46. 'Date$ = "02.12.17"     'dzien/miesiac/rok
  47. 'Time$ = "19.48.00"
  48. '------------------------------------------------------------------------------
  49.  
  50. Config Timer0 = Timer , Prescale = 256
  51. Enable Timer0 : On Timer0 Prztimer0
  52.  
  53. Enable Interrupts
  54.  
  55. '*******************************************************************************
  56. Dim Flaga_4ms As Bit, Flaga_100ms As Bit ,Flaga_1s As Bit, Dzielnik As Byte , Dzielnik2 As Byte  'flagi
  57.  
  58.  
  59. '********************************************************************************
  60. $lib "glcd-ST7567.lib"
  61. Config Graphlcd = 128x64sed , A0 = Portc.1 , Si = Portc.4 , Sclk = Portc.5 , Cs1 = Portc.3 , Rst = Portc.2
  62.  
  63. Const Negative_lcd = 0
  64. Const Mirror_y = 1
  65.  
  66. 'Dim N As Byte
  67. '*******************************************************************************
  68. '---------------------------------------------------------------------------
  69. Initlcd
  70. Lcdcontrast 35                                               'kontrast wyswietlacza, mozna zwiekszyc do 60
  71.  
  72. Cls
  73.  
  74. '************************************************************************************
  75. Do
  76.  
  77.   If Flaga_4ms = 1 Then                                      'co 4ms
  78.      Flaga_4ms = 0
  79.      'co ma byc co 4ms
  80.   End If
  81.  
  82.   If Flaga_100ms = 1 Then                                    ' co 100ms
  83.      Flaga_100ms = 0
  84.      'co ma byc po 100ms
  85.       gosub wyswietlanie
  86.   End If
  87.  
  88.   If Flaga_1s = 1 Then                                       'co 1s
  89.      Flaga_1s = 0
  90.      'co ma byc co 1s
  91.   End If
  92.  
  93. Loop
  94. End
  95.  
  96. '****************************przerwanie timer0******************************
  97. Prztimer0:
  98.  Timer0 = 6
  99.  Flaga_4ms = 1
  100.  Incr Dzielnik
  101.  If Dzielnik = 25 Then                                      '25*4ms = 100ms
  102.    Dzielnik = 0
  103.    Flaga_100ms = 1
  104.    Incr Dzielnik2
  105.    If Dzielnik2 = 10 Then                                   '10*100ms=1s'
  106.     Dzielnik2 = 0
  107.     Flaga_1s = 1
  108.    End If
  109.  End If
  110. Return
  111.  
  112.  
  113. '*****************************************************************************
  114. '***********************funkcje do obslugi DS1307*******************************
  115. Getdatetime:
  116.   I2cstart                                                  ' Generate start code
  117.   I2cwbyte Ds1307w                                          ' send address
  118.   I2cwbyte 0                                                ' start address in 1307
  119.  
  120.   I2cstart                                                  ' Generate start code
  121.   I2cwbyte Ds1307r                                          ' send address
  122.   I2crbyte _sec , Ack
  123.   I2crbyte _min , Ack                                       ' MINUTES
  124.   I2crbyte _hour , Ack                                      ' Hours
  125.   I2crbyte Weekday , Ack                                    ' Day of Week
  126.   I2crbyte _day , Ack                                       ' Day of Month
  127.   I2crbyte _month , Ack                                     ' Month of Year
  128.   I2crbyte _year , Nack                                     ' Year
  129.   I2cstop
  130.  
  131.   _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  132.  
  133.   _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
  134.  
  135.  
  136.  
  137. Return
  138.  
  139. Setdate:
  140.   _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  141.   I2cstart                                                  ' Generate start code
  142.   I2cwbyte Ds1307w                                          ' send address
  143.   I2cwbyte 4                                                ' starting address in 1307
  144.   I2cwbyte _day                                             ' Send Data to SECONDS
  145.   I2cwbyte _month                                           ' MINUTES
  146.   I2cwbyte _year                                            ' Hours
  147.   I2cstop
  148. Return
  149.  
  150. Settime:
  151.   _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  152.   I2cstart                                                  ' Generate start code
  153.   I2cwbyte Ds1307w                                          ' send address
  154.   I2cwbyte 0                                                ' starting address in 1307
  155.   I2cwbyte _sec                                             ' Send Data to SECONDS
  156.   I2cwbyte _min                                             ' MINUTES
  157.   I2cwbyte _hour                                            ' Hours
  158.   I2cstop
  159. Return
  160.  
  161.  
  162. '**********************************wyswietlanie*********************************
  163. Wyswietlanie:
  164.            setfont font12x16dig                       'pierwsza cyfra-linia, druga cyfra-pozycja
  165.             lcdat 1 , 1 , " ";"23:00:00" 'Time$
  166.             lcdat 5 , 1 , "2024-08-06"
  167.  
  168.            setfont Font6x8
  169.            Lcdat 0 , 60 , "CZAS"
  170.            Lcdat 4 , 60 ,"DATA"
  171.  
  172.  
  173. return
  174. '******************************************************************************************
  175.  
  176. $include "font6x8.font"
  177. $include "font12x16dig.font"
a może problem tkwi w podłączeniu ? Wyświetlacz zasilany jest z 3,3V i na liniach ma rezystory 470 ohm + 1k do masy

Poproszę o wyjaśnienie co jest nie tak
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 08 sie 2024, 18:35

Zastanawiam się jak ten wyświetlacz komunikuje się z procesorem , w programie nie muszę ustawiać scal i sda jedynie deklaruje wyjścia dla wyświetlacza i wyświetli to co napisze , wszystko załatwia biblioteka.
Jakieś pomysły do przećwiczenia ?
Awatar użytkownika
niveasoft
Posty: 1231
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD 128x64 ST7567A

Post autor: niveasoft » 08 sie 2024, 18:43

Jak coś ma pin CS czyli Chip Select to to prawie zawsze jest SPI a nie TWI bo TWI nie potrzebuje pinu CS do adresowania.
Jak otworzysz biblioteke to pisze w niej jak byk "SPI mode".

Co do tego Time$ to niektóre biblioteki nie sa całkiem kompatybilne z Bascomem i lepiej jest zrobić tak że:
  1. Dim Helpstr As String *10
  2. Helpstr =Time$
  3. Lcdat Helpstr
Czyli najpierw coś odczytac do zminnej a później ją wysłać na wyswietlacz.

Ogólnie to bym sobie podłaczył tam u Ciebie konwerter USB<>SERIAL na PD0-PD1 i to sobie debugował czyli wysłał na terminal czy na pewno gada z tym RTC.
ODPOWIEDZ