LCD 128x64 ST7567A

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

Re: LCD 128x64 ST7567A

Post autor: marekszy » 08 sie 2024, 22:11

Kurcze, nic to nie dało, wystarczy że pojawi się i na wyświetlaczu wszystko znika, mam 2 zegarki DS1307 oraz DS3231 i na wszystkich to samo :oops:
A mogę wystawić scl i sda na innych pinach niż LCD i tam ustawić I2C dla zegarka ?
Awatar użytkownika
niveasoft
Posty: 1231
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD 128x64 ST7567A

Post autor: niveasoft » 09 sie 2024, 2:21

Ahahahahaha. Nie dziaduj.
Dopiero teraz się przyjrzałem schematowi. Podłączyłeś wyświetlacz który nie jest I2C/TWI do linii SDA i SCL.
Pisałem przecież że to nie jest I2C/TWI.
Wyświetlacze mają takie wyprowadzenia bo wiele z nich można skonfigurować by działały po I2C, SPI , albo równolegle.
Musisz odłączyć wyświetlacz od pinów I2C i przepiąć to na jakieś wolne.
No co za pomysł żeby to tam podłączć. Do RTC masz dwa adresy a jakoś ich nie widzę dla LCD.

Skrót SDI to jest Slave Data Input tak jak MOSI -Master Output Slave Input. Czasem jest samo SI - Slave Input DI - Data Input, DO - Data Output
Grunt że to są skróty od SPI.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 11 sie 2024, 12:39

Dzięki , ruszyło bez problemów
Możesz mi teraz pomóc z menu wielopoziomowym aby ustawić zegar, datę oraz poszczególne czasy ON/OFF dla poszczególnych kanałów.
Znalazłem na elektrodzie program do menu (ten co wstawiłeś) ale nie umiem go rozbudować do tego co bym potrzebował.
Potrzebuję 4 kanały po 2 czasy ON/OFF na kanał, oraz ustawianie zegara
  1. '===============================================================================
  2. '                                GM12864-01A
  3. '                                ST7567 LCD
  4. '                                 128x64
  5. ' PLYTKA TESTOWA
  6. 'CKDIV8 wylaczony (bez zaznaczenia)
  7.  
  8. 'DS1307 zegar dziala
  9. 'PC.4 - SDA , PC.5 - SCL
  10.  
  11. 'LED-Y: PC.1 - RED , PC.2 - GREEN , PC.3 - ORANGE (zalaczane "1")
  12.  
  13. 'Przyciski: PB.1 - LEWO , PD.7 - PRAWO , PD.6 - MENU , PB.0 - GORA , PB.2 - DOL
  14.  
  15. 'sterowanie podswietleniem MOSFET-P , zalacza "0"
  16.  
  17. 'LCD:
  18. 'PD.0 - SCL(SCLK) / PD.1 - SDA(SI) / PD.2 - DC(A0) / PD.3 - RST(RST) / PD.4 - CS(CS1) / PD.5 - BL(podswietlenie)
  19.  
  20. 'dodane logo przy starcie
  21. '===============================================================================
  22. $regfile = "m328pdef.dat"
  23. $crystal = 16000000
  24. $hwstack = 64
  25. $swstack = 64
  26. $framesize = 64
  27.  
  28.            '0-wejsce/1-wyjscie      stan na pin
  29. Config Portb = &B00111000 : Portb = &B00000111
  30. Config Portc = &B11001111 : Portc = &B00110001
  31. Config Portd = &B00111111 : Portd = &B11000000
  32. '*******************************************************************************
  33.                                       '"ds1307rtc.lib" modified lib
  34. $lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
  35. Config Sda = Portc.4       'DS1307 - SDA
  36. Config Scl = Portc.5       'DS1307 - SCL
  37. Config Twi = 400000                                         ' i2c speed
  38. I2cinit
  39.  
  40. Const Ds3231w = &HD0                                        ' Addresses of Ds3231 clock
  41. Const Ds3231r = &HD1
  42.  
  43. 'definicja gdze trzymamy zmienne czas i data
  44. Dim Weekday As Byte
  45.  
  46. Declare Sub Getdatetime
  47. Declare Sub Settime
  48.  
  49. Config Clock = User                                         ' this will dim the bytes automatic
  50. Config Date = Dmy , Separator = .                           'format wyswietlania daty DS3231
  51.  
  52. 'Date$ = "10.08.24"     'dzien/miesiac/rok
  53. 'Time$ = "12.14.00"
  54. '******************************konfig.TIMER0**************************************
  55.  
  56. Config Timer0 = Timer , Prescale = 256
  57. Enable Timer0 : On Timer0 Prztimer0
  58.  
  59. Enable Interrupts
  60.  
  61. '*******************************************************************************
  62. Dim Flaga_4ms As Bit, Flaga_100ms As Bit ,Flaga_1s As Bit, Dzielnik As Byte , Dzielnik2 As Byte  'flagi
  63.  
  64.  
  65. '********************************************************************************
  66. $lib "glcd-ST7567.lib"
  67. Config Graphlcd = 128x64sed , A0 = PortD.2 , Si = PortD.1 , Sclk = PortD.0 , Cs1 = PortD.4 , Rst = PortD.3
  68.  
  69. Const Negative_lcd = 0
  70. Const Mirror_y = 1
  71.  
  72. 'Dim N As Byte
  73. '*******************************************************************************
  74.  
  75. Dim Menu As Integer
  76. Enable Interrupts                                         'odblokowanie przerwan
  77. '***************************** menu Program ************************************
  78. S1 alias pind.6 : Ddrd.6 = 0 : portd.6 = 1                   '"MENU/ENTER"
  79. S2 alias pind.7 : ddrd.7 = 0 : portd.7 = 1                   '"DOL"
  80. S3 alias pinb.0 : ddrb.0 = 0 : portb.0 = 1                   '"GORA"
  81. S4 alias pinb.1 : ddrb.1 = 0 : portb.1 = 1                   '"LEWO"
  82. S5 alias pinb.2 : ddrb.2 = 0 : portb.2 = 1                   '"PRAWO"
  83.  
  84. LED_R alias portc.1 : portc.1 = 0
  85. LED_G alias portc.2 : portc.2 = 0
  86. LED_Y alias portc.3 : portc.3 = 0
  87. '***************************logo startowe**********************************
  88. Initlcd
  89. Lcdcontrast 35                                               'kontrast wyswietlacza, mozna zwiekszyc do 60
  90. Cls
  91.  
  92. Menu = 1
  93.  
  94. Showpic 0 , 0 , Logo3     'moje logo 128x64
  95. Wait 4
  96. cls
  97.  
  98. '*************************petla glowna**************************************
  99. Do
  100.  
  101.   Debounce S1 , 0 , Tast1 , Sub                             'S1 "MENU"
  102.   Debounce S2 , 0 , Tast5 , Sub                             'S2 "DOL"
  103.   Debounce S3 , 0 , Tast3 , Sub                             'S3 "GORA"
  104.   Debounce S4 , 0 , Tast4 , Sub                             'S4 "LEWO" (powrot)
  105.   Debounce S5 , 0 , Tast2 , Sub                             'S5 "PRAWO"(wejscie "OK")
  106.  
  107.   If Menu = 1 Then                                          'tutaj co ma byc wyswietlane na ekranie glownym
  108.  
  109.        setfont font12x16dig                       'pierwsza cyfra-linia, druga cyfra-pozycja
  110.             lcdat 1 , 10 , Time$
  111.             lcdat 5 , 10 , Date$
  112.  
  113.        setfont Font6x8
  114.            Lcdat 0 , 50 , "CZAS"
  115.            Lcdat 4 , 50 ,"DATA"
  116.    end if
  117. '****************************menu glowne***********************************
  118.  
  119.   If Menu = 10 Then                                         'Menupunkt 1      'Zapytanie o zmienna z Menu = x
  120.     Gosub Menu10
  121.   End If
  122.  
  123.   If Menu = 11 Then                                         'Menupunkt 2
  124.      Gosub Menu11
  125.   End If
  126.  
  127.   If Menu = 12 Then                                         'Menupunkt 3
  128.     Gosub Menu12
  129.   End If
  130.  
  131.   If Menu = 13 Then                                         'Menupunkt 4
  132.     Gosub Menu13
  133.   End If
  134.  
  135.   If Menu = 14 Then                                         'Menupunkt 5
  136.     Gosub Menu14
  137.   End If
  138.  
  139.   If Menu = 15 Then                                         'Menupunkt 6
  140.     Gosub Menu15
  141.   End If
  142.  
  143. '****************************podmenu*****************************************
  144.  
  145.   If Menu = 100 Then                                        'Menupunkt 1.1
  146.    Gosub Menu100
  147.   End If
  148.  
  149.   If Menu = 110 Then                                        'Menupunkt 2.1
  150.    Gosub Menu110
  151.   End If
  152.  
  153.   If Menu = 120 Then                                        'Menupunkt 3.1
  154.    Gosub Menu120
  155.   End If
  156.  
  157.   If Menu = 130 Then                                        'Menupunkt 4.1
  158.    Gosub Menu130
  159.   End If
  160.  
  161.   If Menu = 140 Then                                        'Menupunkt 5.1
  162.    Gosub Menu140
  163.   End If
  164.  
  165.   If Menu = 150 Then                                        'Menupunkt 6.1
  166.    Gosub Menu150
  167.   End If
  168. '********************************flagi***************************************
  169.  
  170.   If Flaga_4ms = 1 Then                                      'co 4ms
  171.      Flaga_4ms = 0
  172.      'co ma byc co 4ms
  173.   End If
  174.  
  175.   If Flaga_100ms = 1 Then                                    ' co 100ms
  176.      Flaga_100ms = 0
  177.      'co ma byc po 100ms
  178.   End If
  179.  
  180.   If Flaga_1s = 1 Then                                       'co 1s
  181.      Flaga_1s = 0
  182.      'co ma byc co 1s
  183.   End If
  184.  
  185. Loop
  186. End
  187.  
  188. '****************************przerwanie timer0******************************
  189. Prztimer0:
  190.  Timer0 = 6
  191.  Flaga_4ms = 1
  192.  Incr Dzielnik
  193.  If Dzielnik = 25 Then                                      '25*4ms = 100ms
  194.    Dzielnik = 0
  195.    Flaga_100ms = 1
  196.    Incr Dzielnik2
  197.    If Dzielnik2 = 10 Then                                   '10*100ms=1s'
  198.     Dzielnik2 = 0
  199.     Flaga_1s = 1
  200.    End If
  201.  End If
  202. Return
  203.  
  204. '***********************funkcje do obslugi DS3231*******************************
  205. Getdatetime:
  206.   I2cstart                                                  ' Generate start code
  207.   I2cwbyte Ds3231w                                          ' send address
  208.   I2cwbyte 0                                                ' start address in 1307
  209.  
  210.   I2cstart                                                  ' Generate start code
  211.   I2cwbyte Ds3231r                                          ' send address
  212.   I2crbyte _sec , Ack
  213.   I2crbyte _min , Ack                                       ' MINUTES
  214.   I2crbyte _hour , Ack                                      ' Hours
  215.   I2crbyte Weekday , Ack                                    ' Day of Week
  216.   I2crbyte _day , Ack                                       ' Day of Month
  217.   I2crbyte _month , Ack                                     ' Month of Year
  218.   I2crbyte _year , Nack                                     ' Year
  219.   I2cstop
  220.  
  221.   _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  222.  
  223.   _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
  224.  
  225.  
  226.  
  227. Return
  228.  
  229. Setdate:
  230.   _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  231.   I2cstart                                                  ' Generate start code
  232.   I2cwbyte Ds3231w                                          ' send address
  233.   I2cwbyte 4                                                ' starting address in 1307
  234.   I2cwbyte _day                                             ' Send Data to SECONDS
  235.   I2cwbyte _month                                           ' MINUTES
  236.   I2cwbyte _year                                            ' Hours
  237.   I2cstop
  238. Return
  239.  
  240. Settime:
  241.   _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  242.   I2cstart                                                  ' Generate start code
  243.   I2cwbyte Ds3231w                                          ' send address
  244.   I2cwbyte 0                                                ' starting address in 1307
  245.   I2cwbyte _sec                                             ' Send Data to SECONDS
  246.   I2cwbyte _min                                             ' MINUTES
  247.   I2cwbyte _hour                                            ' Hours
  248.   I2cstop
  249. Return
  250.  
  251.  
  252. '**********************************procedury*********************************
  253.  
  254. Tast1:
  255. if menu = 1 then
  256.   menu =10
  257.   else
  258.   menu = 1
  259.   end if
  260.   'Menu = Menu * 10                                          'Menu zwieksza sie 10-krotnie                                                            'Jak Menu jest wieksze niz 150, Menu jest dzielone przez wspolczynnik 10
  261.   'If Menu > 150 Then                                        'Menu = "150" musi byc dostosowany!
  262.    'Menu = Menu / 10
  263.   'End If
  264.   Cls                                                       'czyszczenie wyswietlacza
  265. Return
  266.  
  267. Tast2:
  268.  If Menu > 1 Then                                           'Verhindert ausschweifung von  Startscreen
  269.   If Menu < 100 Then                                        'Zapobiega nadmiarowi w podmenu "pozycja menu x.1"
  270.    If Menu < 15 Then                                        'Zapobiegaj liczeniu w gore > 15; musi byc dostosowany
  271.     Incr Menu
  272.     Cls
  273.    End If
  274.   End If
  275.  End If
  276. Return
  277.  
  278. Tast3:
  279.  If Menu > 1 Then
  280.   If Menu > 10 Then
  281.    If Menu < 100 Then
  282.     Decr Menu
  283.     Cls
  284.    End If
  285.   End If
  286.  End If
  287. Return
  288.  
  289. Tast4:
  290.  If Menu > 1 Then                                           'Zapobiega awariom Menu = 1 / 10
  291.   Menu = Menu / 10
  292.   Cls
  293.  End If
  294. Return
  295.  
  296. Tast5:
  297. if menu => 10 then
  298. Menu = Menu * 10                                            'Menu zwieksza sie 10-krotnie                                                            'Jak Menu jest wieksze niz 150, Menu jest dzielone przez wspolczynnik 10
  299.   If Menu > 150 Then                                        'Menu = "150" musi byc dostosowany!
  300.    Menu = Menu / 10
  301.   End If
  302.   end if
  303. cls
  304. Return
  305.  
  306.  
  307. '**********************************Menu glowne*******************************************
  308.  
  309.  
  310. Menu10:
  311. 'Cls
  312. Setfont Font6x8                                                      'gosub Menu10
  313.    Lcdat 0 , 0 , "     MENU     "                                    'Przeskakuje do pierwszej pozycji wyswietlacza w pierwszej linii
  314.    Lcdat 1 , 0 , "-> UST.GODINA "                                    'Pisze tresc na wyswietlaczu;
  315.    Lcdat 2 , 0 , "   UST.DATA   "
  316.    Lcdat 3 , 0 , "   PROGRAM_1  "
  317.    Lcdat 4 , 0 , "   PROGRAM_2  "
  318.    Lcdat 5 , 0 , "   PROGRAM_3  "
  319.    Lcdat 6 , 0 , "   PROGRAM_4  "
  320. Return
  321.  
  322. Menu11:
  323. 'Cls
  324. Setfont Font6x8
  325.    Lcdat 0 , 0 , "     MENU     "
  326.    Lcdat 1 , 0 , "   UST.GODINA "
  327.    Lcdat 2 , 0 , "-> UST.DATA   "
  328.    Lcdat 3 , 0 , "   PROGRAM_1  "
  329.    Lcdat 4 , 0 , "   PROGRAM_2  "
  330.    Lcdat 5 , 0 , "   PROGRAM_3  "
  331.    Lcdat 6 , 0 , "   PROGRAM_4  "
  332. Return
  333.  
  334. Menu12:
  335. 'Cls
  336. Setfont Font6x8
  337.    Lcdat 0 , 0 , "     MENU     "
  338.    Lcdat 1 , 0 , "   UST.GODINA "
  339.    Lcdat 2 , 0 , "   UST.DATA   "
  340.    Lcdat 3 , 0 , "-> PROGRAM_1  "
  341.    Lcdat 4 , 0 , "   PROGRAM_2  "
  342.    Lcdat 5 , 0 , "   PROGRAM_3  "
  343.    Lcdat 6 , 0 , "   PROGRAM_4  "
  344. Return
  345.  
  346. Menu13:
  347. 'Cls
  348. Setfont Font6x8
  349.    Lcdat 0 , 0 , "     MENU     "
  350.    Lcdat 1 , 0 , "   UST.GODINA "
  351.    Lcdat 2 , 0 , "   UST.DATA   "
  352.    Lcdat 3 , 0 , "   PROGRAM_1  "
  353.    Lcdat 4 , 0 , "-> PROGRAM_2  "
  354.    Lcdat 5 , 0 , "   PROGRAM_3  "
  355.    Lcdat 6 , 0 , "   PROGRAM_4  "
  356. Return
  357.  
  358. Menu14:
  359. 'Cls
  360. Setfont Font6x8
  361.    Lcdat 0 , 0 , "     MENU     "
  362.    Lcdat 1 , 0 , "   UST.GODINA "
  363.    Lcdat 2 , 0 , "   UST.DATA   "
  364.    Lcdat 3 , 0 , "   PROGRAM_1  "
  365.    Lcdat 4 , 0 , "   PROGRAM_2  "
  366.    Lcdat 5 , 0 , "-> PROGRAM_3  "
  367.    Lcdat 6 , 0 , "   PROGRAM_4  "
  368. Return
  369.  
  370. Menu15:
  371. 'Cls
  372. Setfont Font6x8
  373.    Lcdat 0 , 0 , "     MENU     "
  374.    Lcdat 1 , 0 , "   UST.GODINA "
  375.    Lcdat 2 , 0 , "   UST.DATA   "
  376.    Lcdat 3 , 0 , "   PROGRAM_1  "
  377.    Lcdat 4 , 0 , "   PROGRAM_2  "
  378.    Lcdat 5 , 0 , "   PROGRAM_3  "
  379.    Lcdat 6 , 0 , "-> PROGRAM_4  "
  380. Return
  381.  
  382. '*******************************podmenu************************************
  383.  
  384. Menu100:
  385.  
  386. setfont font12x16dig                       'pierwsza cyfra-linia, druga cyfra-pozycja
  387.   lcdat 3 , 10 , Time$
  388. Return
  389.  
  390. Menu110:
  391.  
  392. setfont font12x16dig                       'pierwsza cyfra-linia, druga cyfra-pozycja
  393.   lcdat 3 , 10 , date$
  394. Return
  395.  
  396. Menu120:
  397.  
  398. Setfont Font6x8
  399.  Lcdat 2 , 0 , "Menupunkt 3.1"
  400. Return
  401.  
  402. Menu130:
  403.  
  404. Setfont Font6x8
  405.  Lcdat 2 , 0 , "Menupunkt 4.1"
  406. Return
  407.  
  408. Menu140:
  409.  
  410. Setfont Font6x8
  411.  Lcdat 2 , 0 , "Menupunkt 5.1"
  412. Return
  413.  
  414. Menu150:
  415.  
  416. Setfont Font6x8
  417.  Lcdat 2 , 0 , "Menupunkt 6.1"
  418. Return
  419.  
  420. '*****************************fonty, logo startowe*************************
  421.  
  422. $include "font6x8.font"
  423. $include "font12x16dig.font"
  424. Logo3:
  425. $bgf "Logo 128x64 v3.BGF"
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 » 12 sie 2024, 18:00

Bartek daj mi coś do dalszej zabawy , widziałem fajne twoje menu w Twoim komputerku do roweru jak również pewnie w sterowniku on/off 4kanaly, proszę :D
Awatar użytkownika
niveasoft
Posty: 1231
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LCD 128x64 ST7567A

Post autor: niveasoft » 13 sie 2024, 12:42

Tu musze pomysleć bo niektóre softy były pisane dla innych a nie mogę się z nimi skontaktowac może przez wakacje.
Co innego menu na graficznym a co innego na znakowym.
Świta mi tylko że takie menu na graficzny było w tym projekcie MIKA (chociaz tam był wyświetlacz podwójny (może wyświetlac i grafikę i znaki na raz).
Mam mnóstwo zadań i musze sie najpierw obrobić.
marekszy
Posty: 111
Rejestracja: 20 lis 2016, 20:21

Re: LCD 128x64 ST7567A

Post autor: marekszy » 19 sie 2024, 12:33

Niestety z MIKI ciężko wyodrębnić menu wielopoziomowe aby zastosować u mnie :cry:
ODPOWIEDZ