Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[AVR] [ATMega] Kto wie jaki protokół dla układu LC75710

Freddy 06 Dec 2009 20:04 2954 27
  • #1
    Freddy
    Level 43  
    Czy ktos z Was koledzy ma może bibliotekę, do obsługi układu protokół transmisji dla układu Sanyo LC75710, najchętniej dla Bascoma.
  • Helpful post
    #2
    Balu
    Level 38  
    SPI Freddy :) SPI bym użył, I2C to nie jest, brak odpowiedzi jakichś od układu.
    Strona 8 punkt 2 pisze jak powinno się skonfigurować SPI:)
    Pozdrawiam:)
  • #3
    Freddy
    Level 43  
    Dzięki, spróbuję i dam znać.
  • #4
    Freddy
    Level 43  
    Niestety, na protokole SPI nie chce pracować. Będę musiał spróbować ręcznie.
  • #6
    Freddy
    Level 43  
    Code:

    $regfile = "m32def.dat"
    $crystal = 16000000
    $framesize = 16
    $hwstack = 24
    $swstack = 16

    'Konfiguracja SPI
    Config Spi = Soft , Din = Pina.0 , Dout = Porta.3 , Ss = None , Clock = Porta.1
  • #7
    Balu
    Level 38  
    Eeeeee:>
    Załóż że zupełnie nie znam bascoma - nie pamiętam..
    Ale jakieś ustawienia polaryzacji zegara? (bity CPOL i któryś sąsiedni?) - mowa o HW SPI.
    No i czemu soft SPI?
  • #8
    Freddy
    Level 43  
    Ty nie znasz Bascoma, a ja nie znam C :) Zaczynam naukę dopiero :)

    No w sumie mogę przestawić na hardware, chciałem mieć wolne SPI do programowania :)
    W software SPI nic więcej sie nie ustawia :)
    Quote:

    CONFIG SPI = SOFT, DIN = PIN, DOUT = PIN , SS = PIN|NONE, CLOCK = PIN , SPIIN=value

    CONFIG SPI = HARD, INTERRUPT=ON|OFF, DATA ORDER = LSB|MSB , MASTER = YES|NO , POLARITY = HIGH|LOW , PHASE = 0|1, CLOCKRATE = 4|16|64|128 , NOSS=1|0 , SPIIN=value

    The default setting for hardware SPI when set from the Compiler, Options, SPI menu is MSB first, POLARITY = HIGH, MASTER = YES, PHASE = 0, CLOCKRATE = 4

    When you use CONFIG SPI = HARD alone without the other parameters, the SPI will only be enabled. It will work in slave mode then with CPOL =0 and CPH=0.

    In hardware mode the SPIINIT statement will set the SPI pins to :sbi DDRB,7 ; SCK output
    cbi DDRB,6 ; MISO input
    sbi DDRB,5 ; MOSI output

    In softmode the SPIINIT statement will set the SPI pins for example to :sbi PORTB,5 ;set latch bit hi (inactive)SS
    sbi DDRB,5 ;make it an output SS
    cbi PORTB,4 ;set clk line lo
    sbi DDRB,4 ;make it an output
    cbi PORTB,6 ;set data-out lo MOSI
    sbi DDRB,6 ;make it an output MOSI
    cbi DDRB,7 ;MISO input
    Ret
  • #10
    Freddy
    Level 43  
    Niestety, próbowałem wielu różnych ustawień, bez efektu. Pewnie trzeba jak zwykle odłożyć na chwilę, aż nabierze mocy urzędowej.
  • #12
    Freddy
    Level 43  
    Komendy dobre, bo z karty katalogowej, timingi też powinny być dobre. Niech się trochę przegryzie.
  • #13
    Balu
    Level 38  
    Tak patrzyłem na to, i doszedłem do wniosku,że... pokaż KOD:)
    Bo to musi działać, jeśli wyświetlacz jest sprawny :)
    Inicjalizacja jest dokładnie opisana, robisz pozniej po niej on/off ?
  • #14
    Freddy
    Level 43  
    Balu wrote:
    Tak patrzyłem na to, i doszedłem do wniosku,że... pokaż KOD:)
    Bo to musi działać, jeśli wyświetlacz jest sprawny :)
    Inicjalizacja jest dokładnie opisana, robisz pozniej po niej on/off ?

    Wyświetlacz i kostka są sprawne na 1000%.
    Code:

    $regfile = "m32def.dat"
    $crystal = 16000000

    $framesize = 16
    $hwstack = 24
    $swstack = 16

    'Konfiguracja SPI
    Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 64 , Noss = 0 , Spiin = 255

    Config Pina.2 = Output
    Config 1wire = Portd.7                                      ' Port 1 wire

    ' Konfiguracja Pinów Scl I Sda
    Config Sda = Portc.1                                        ' Port C - 1 < Sda>
    Config Scl = Portc.0                                        'Port C - 0 < Scl>
    Port D - 3 < Int1>

    ' Adres Ds 1307
    Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
    Const Ds1307r = &HD1

    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.6 , Rs = Portc.7
    Config Lcd = 40 * 4
    '
    ' Podłączenie LCD:
    ' E PORT C - 6  RS PORT C - 7  D4 PORT A - 4  D5 PORT A - 5  D6 PORT A - 6  D7 PORT A - 7

    Dim Migaj(3) As Byte , Shl(3) As Byte , Shr(3) As Byte , Adres(3) As Byte , Wpisz(3) As Byte
    Dim Dispoff(3) As Byte , Dispon(3) As Byte , Dimer(3) As Byte , Grid(3) As Byte
    Dim Zmienna(3) As Byte , Zn As Byte , Wart As Byte

    '----------------------------------------------------------------------------------
    Declare Sub Inicjujzmienne
    '----------------------------------------------------------------------------------

    'Config Clock = User                                         ' this will dim the bytes automatic
    Cursor Off Noblink
    Cls

    Locate 1 , 1
    Lcd "Test LC75710NE  "

    Set Pina.2                                                  ' /CE
    Waitms 50
    Reset Pina.2

    Locate 2 , 1
    Lcd " Init i DSP off "
    Waitms 500

    '----------------------------------------------------------------------------------
    Call Inicjujzmienne

    Spiinit                                                     ' Init SPI state and pins.

    Spiout Dispon(1) , 3                                        ' Display 0n
    Spiout Dimer(1) , 3                                         ' ustaw jasność
    Spiout Migaj(1) , 3                                         ' Display blink  off
    Spiout Grid(1) , 3                                          ' ustaw grid register

    Wpisz(3) = $20
    Wpisz(2) = $00
    Spiout Wpisz(1) , 3

    Wpisz(3) = $4f
    Wpisz(2) = $01
    Spiout Wpisz(1) , 3
    Wpisz(3) = $59
    Wpisz(2) = $02
    Spiout Wpisz(1) , 3
    Wpisz(3) = $4e
    Wpisz(2) = $03
    Spiout Wpisz(1) , 3


    '----------------------------------------------------------------------------------

    Locate 2 , 1
    Lcd " koniec napisu  "
    Waitms 500

    Do

    Loop
    '
    '----------------------------------------------------------------------------------
    '
    Sub Inicjujzmienne

       '0 0 0 1 * M A O G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Dispoff(1) = &B00010100                                  ' Display off
       Dispoff(2) = &B00000000
       Dispoff(3) = &B11111111

       '0 0 0 1 * M A O G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Dispon(1) = &B00010101                                   ' Display  on
       Dispon(2) = &B00000000                                   ' grid G1-G16
       Dispon(3) = &B11111111                                   ' grid

       '1 0 1 M A BC2 BC1 BC0 G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Migaj(1) = &B10111000                                    ' Display blink
       Migaj(2) = &B00000000                                    ' grid G1-G16
       Migaj(3) = &B00000000                                    ' grid

       '0 0 1 0 * M A R/L  * * * * * * * * * * * * * * * *
       Shl(1) = &B00100101                                      ' Display shift left
       Shl(2) = &B00000000
       Shl(3) = &B00000000

       '0 0 1 0 * M A R/L  * * * * * * * * * * * * * * * *
       Shr(1) = &B00100100                                      ' Display shift right
       Shr(2) = &B00000000
       Shr(3) = &B00000000

       '0 0 1 1 GN3 GN2 GN1 GN0  * * * * * * * * * * * * * * * *
       Grid(1) = &B00111110                                     ' Grid register ilość znaków ( tutaj 10 )
       Grid(2) = &B00000000
       Grid(3) = &B00000000

       '0 1 0 0 RA3 RA2 RA1 RA0  * * DA5 DA4 DA3 DA2 DA1 DA0 * * * * * * * *
       Adres(1) = &B01000000
       Adres(2) = &B0
       Adres(3) = &B0

       '0 1 0 1 * * * * DC7 DC6 DC5 DC4 DC3 DC2 DC1 DC0 * * * * * * * *
       Dimer(1) = &B01010000                                    ' Janość świecenia
       Dimer(2) = &B11111111                                    ' wartość od 0 to 255 : 255 max jasność
       Dimer(3) = &B00000000

       '0 1 1 0 * * * * * * DA5 DA4 DA3 DA2 DA1 DA0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
       'DA0 to DA5: DCRAM address
       'AC0 to AC7: DCRAM write data (character code)
       Wpisz(1) = &B01100000                                    ' wpisz znak pod adres
       Wpisz(2) = &B00000000                                    ' * * DA5 DA4 DA3 DA2 DA1 DA0
       Wpisz(3) = &B00000000                                    ' AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0

    End Sub
    '----------------------------------------------------------------------------------

    'Sub Piszznak(znak Byval As Byte , Poz Byval As Byte)
    '   Dim Wart As Byte
    '   Wart = &B01100000
    '   Spiout Wart , 1
    '   Wart = Poz
    '   Spiout Wart , 1
    '   Wart = Znak
    '   Spiout Wart , 1
    '
    'End Sub

    'M A Display operating state
    '0 0 Neither MDATA nor ADATA blinks.
    '0 1 Only ADATA blinks.
    '1 0 Only MDATA blinks.
    '1 1 Both ADATA and MDATA blink.

    'GN GN GN GN     Digits Controlled
    '3  2  1  0  hex
    '0  0  0  0   0  G1 to G16
    '0  0  0  1   1  G1
    '0  0  1  0   2  G1 to G2
    '0  0  1  1   3  G1 to G3
    '0  1  0  0   4  G1 to G4
    '0  1  0  1   5  G1 to G5
    '0  1  1  0   6  G1 to G6
    '0  1  1  1   7  G1 to G7
    '1  0  0  0   8  G1 to G8
    '1  0  0  1   9  G1 to G9
    '1  0  1  0   A  G1 to G10
    '1  0  1  1   B  G1 to G11
    '1  1  0  0   C  G1 to G12
    '1  1  0  1   D  G1 to G13
    '1  1  1  0   E  G1 to G14
    '1  1  1  1   F  G1 to G15

    'Blink Period (s)*1  when fOSC is 2.7 MHz
    'BC2 BC1 BC0 HEX
    '0   0   0   0   Blink operation is stopped.
    '0   0   1   1   0.1
    '0   1   0   2   0.2
    '0   1   1   3   0.3
    '1   0   0   4   0.4
    '1   0   1   5   0.5
    '1   1   0   6   0.8
    '1   1   1   7   1.0
  • #15
    Balu
    Level 38  
    Na dzieńdobry wygląda jak polarity LOW, CPHA0, i z Twoich zmiennych, to chyba MSB first?
    Poza tym, jak tak patrzę na DS'a, to po adresie(komendzie) bym robił jakieś opóźnienie lekkie tak z dsa wygląda, ja wiem, że to Twoje 16MHz / 64 daje 250kHz, ale mimo wszystko rozbił bym to bardziej:)
    Oglądałeś to na jakimś analizatorze logicznym?

    Dodano po 6 [minuty]:

    Sorry, LSB first jednak, ale, czy nie trzeba przypadkiem tego układu adresować? (8xBity AiB)?
    Może warto spróbować?

    Dodano po 4 [minuty]:

    Nawiązując, ja bym zainicjalizował w DDRach DI/CLK/CE jako output.
    Inną rzeczą... semantyczną jest to Set Pina.2, ja nie pamiętam ale wygląda jakoś dziwnie...
  • #16
    Freddy
    Level 43  
    Balu wrote:
    Na dzieńdobry wygląda jak polarity LOW, CPHA0, i z Twoich zmiennych, to chyba MSB first?
    Poza tym, jak tak patrzę na DS'a, to po adresie(komendzie) bym robił jakieś opóźnienie lekkie tak z dsa wygląda, ja wiem, że to Twoje 16MHz / 64 daje 250kHz, ale mimo wszystko rozbił bym to bardziej:)
    Oglądałeś to na jakimś analizatorze logicznym?

    Niestety analizatora logicznego nie mam, a przydałby się, choćby najprostszy na LPT: :)
    Quote:


    Dodano po 6 [minuty]:

    Sorry, LSB first jednak, ale, czy nie trzeba przypadkiem tego układu adresować? (8xBity AiB)?
    Może warto spróbować?

    Dodano po 4 [minuty]:

    Nawiązując, ja bym zainicjalizował w DDRach DI/CLK/CE jako output.
    Inną rzeczą... semantyczną jest to Set Pina.2, ja nie pamiętam ale wygląda jakoś dziwnie...

    Set PinA.2 , próbowałem Set PortA.2 bez zmian.
  • #18
    Freddy
    Level 43  
    No tak, Strona 8 punkt 1.
    1. Serial control data consists of an 8-bit address and a 24-bit instruction. The address is used as a chip select function
    when multiple ICs are connected to the same bus. The table shows the address for the LC75710NE series
  • #20
    Freddy
    Level 43  
    Dodałem adresy i dalej nic. Zaczyna mi się to niepodobać :cry:
    Chyba jednak układ musi swoje odleżeć :)
  • #22
    Freddy
    Level 43  
    C trzeba znać, a ja nie znam wogóle :)

    Dużo sie nie zmieniło, tylko adres doszedł

    Code:
    $regfile = "m32def.dat"
    
    $crystal = 16000000

    $framesize = 16
    $hwstack = 24
    $swstack = 16

    'Konfiguracja SPI
    Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 64 , Noss = 0 , Spiin = 255

    Config Porta = Output
    'Config 1wire = Portd.7                                      ' Port 1 wire

    ' Konfiguracja Pinów Scl I Sda
    'Config Sda = Portc.1                                        ' Port C - 1 < Sda>
    'Config Scl = Portc.0                                        'Port C - 0 < Scl>
    'Port D - 3 < Int1>

    ' Adres Ds 1307
    'Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
    'Const Ds1307r = &HD1

    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.6 , Rs = Portc.7
    Config Lcd = 16 * 2
    '
    'LCD: uC:
    'E PORT C - 6  RS PORT C - 7  D4 PORT A - 4  D5 PORT A - 5  D6 PORT A - 6  D7 PORT A - 7

    Dim Migaj(4) As Byte , Shl(4) As Byte , Shr(4) As Byte , Adres(4) As Byte , Wpisz(4) As Byte
    Dim Dispoff(4) As Byte , Dispon(4) As Byte , Dimer(4) As Byte , Grid(4) As Byte
    Dim Zmienna(4) As Byte , Zn As Byte , Wart As Byte

    '-----------------------------------------------------------------------------------------------------------------
    Declare Sub Inicjujzmienne
    '-----------------------------------------------------------------------------------------------------------------

    'Config Clock = User                                         ' this will dim the bytes automatic
    Cursor Off Noblink
    Cls

    Locate 1 , 1
    Lcd "LC75710NE  "

    'Set Porta.2                                                 ' /CE
    Waitms 50
    'Reset Porta.2

    Locate 2 , 1
    Lcd " Init i DSP off "
    Waitms 500

    '-----------------------------------------------------------------------------------------------------------------
    Call Inicjujzmienne

    Spiinit
    Waitus 100

    Spiout Dispon(1) , 4                                        ' włącz wyświetlacz
    Spiout Dimer(1) , 4                                         ' ustaw jasność
    Spiout Migaj(1) , 4                                         ' Display blink  off
    Spiout Grid(1) , 4                                          ' ustaw ilość na 16

    Wpisz(4) = $20
    Wpisz(3) = $00
    Spiout Wpisz(1) , 4

    Wpisz(4) = $4f
    Wpisz(3) = $01
    Spiout Wpisz(1) , 1

    Wpisz(4) = $59
    Wpisz(3) = $02
    Spiout Wpisz(1) , 1

    Wpisz(4) = $4e
    Wpisz(3) = $03
    Spiout Wpisz(1) , 1




    '-----------------------------------------------------------------------------------------------------------------


    Locate 2 , 1
    Lcd " koniec napisu  "
    Waitms 500

    Do

    Loop
    '
    '-----------------------------------------------------------------------------------------------------------------
    '
    Sub Inicjujzmienne

       '0 0 0 1 * M A O G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Dispoff(1) = &B11100110                                  ' adres
       Dispoff(2) = &B00010100                                  ' Display off
       Dispoff(3) = &B00000000
       Dispoff(4) = &B11111111

       '0 0 0 1 * M A O G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Dispon(1) = &B11100110                                   ' adres
       Dispon(2) = &B00010101                                   ' Display  on
       Dispon(3) = &B00000000                                   ' grid G1-G16
       Dispon(4) = &B11111111                                   ' grid

       '1 0 1 M A BC2 BC1 BC0 G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Migaj(1) = &B11100110                                    ' adres
       Migaj(2) = &B10111000                                    ' Display blink
       Migaj(3) = &B00000000                                    ' grid G1-G16
       Migaj(4) = &B00000000                                    ' grid

       '0 0 1 0 * M A R/L  * * * * * * * * * * * * * * * *
       Shl(1) = &B11100110                                      ' adres
       Shl(2) = &B00100101                                      ' Display shift left
       Shl(3) = &B00000000
       Shl(4) = &B00000000

       '0 0 1 0 * M A R/L  * * * * * * * * * * * * * * * *
       Shr(1) = &B11100110                                      ' adres
       Shr(2) = &B00100100                                      ' Display shift right
       Shr(3) = &B00000000
       Shr(4) = &B00000000

       '0 0 1 1 GN3 GN2 GN1 GN0  * * * * * * * * * * * * * * * *
       Grid(1) = &B11100110                                     ' adres
       Grid(2) = &B00110000                                     ' Grid register ilość znaków ( tutaj 16 )
       Grid(3) = &B00000000
       Grid(4) = &B00000000

       '0 1 0 0 RA3 RA2 RA1 RA0  * * DA5 DA4 DA3 DA2 DA1 DA0 * * * * * * * *
       Adres(1) = &B11100110
       Adres(2) = &B01000000
       Adres(3) = &B0
       Adres(4) = &B0

       '0 1 0 1 * * * * DC7 DC6 DC5 DC4 DC3 DC2 DC1 DC0 * * * * * * * *
       Dimer(1) = &B11100110
       Dimer(2) = &B01010000                                    ' Janość świecenia
       Dimer(3) = &B11111111                                    ' wartość od 0 to 255 : 255 max jasność
       Dimer(4) = &B00000000

       '0 1 1 0 * * * * * * DA5 DA4 DA3 DA2 DA1 DA0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
       'DA0 to DA5: DCRAM address
       'AC0 to AC7: DCRAM write data (character code)
       Wpisz(1) = &B11100110
       Wpisz(2) = &B01100000                                    ' wpisz znak pod adres
       Wpisz(3) = &B00000000                                    ' * * DA5 DA4 DA3 DA2 DA1 DA0
       Wpisz(4) = &B00000000                                    ' AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0

    End Sub
    '-----------------------------------------------------------------------------------------------------------------

    'Sub Piszznak(znak Byval As Byte , Poz Byval As Byte)
    '   Dim Wart As Byte
    '   Wart = &B01100000
    '   Spiout Wart , 1
    '   Wart = Poz
    '   Spiout Wart , 1
    '   Wart = Znak
    '   Spiout Wart , 1
    '
    'End Sub

    'M A Display operating state
    '0 0 Neither MDATA nor ADATA blinks.
    '0 1 Only ADATA blinks.
    '1 0 Only MDATA blinks.
    '1 1 Both ADATA and MDATA blink.

    'GN GN GN GN     Digits Controlled
    '3  2  1  0  hex
    '0  0  0  0   0  G1 to G16
    '0  0  0  1   1  G1
    '0  0  1  0   2  G1 to G2
    '0  0  1  1   3  G1 to G3
    '0  1  0  0   4  G1 to G4
    '0  1  0  1   5  G1 to G5
    '0  1  1  0   6  G1 to G6
    '0  1  1  1   7  G1 to G7
    '1  0  0  0   8  G1 to G8
    '1  0  0  1   9  G1 to G9
    '1  0  1  0   A  G1 to G10
    '1  0  1  1   B  G1 to G11
    '1  1  0  0   C  G1 to G12
    '1  1  0  1   D  G1 to G13
    '1  1  1  0   E  G1 to G14
    '1  1  1  1   F  G1 to G15

    'Blink Period (s)*1  when fOSC is 2.7 MHz
    'BC2 BC1 BC0 HEX
    '0   0   0   0   Blink operation is stopped.
    '0   0   1   1   0.1
    '0   1   0   2   0.2
    '0   1   1   3   0.3
    '1   0   0   4   0.4
    '1   0   1   5   0.5
    '1   1   0   6   0.8
    '1   1   1   7   1.0
  • #23
    Freddy
    Level 43  
    No i udało Ci sie coś wymyślić ? Ja już zaczynam sie powoli poddawać :(
  • #25
    zumek
    Level 39  
    Freddy wrote:
    No tak, Strona 8 punkt 1.

    Tylko dlaczego nie stosujesz się do instrukcji, z rzeczonej strony PDF-a :?:
    A przyjrzałeś się jaki stan przyjmuje sygnał CE, w czasie wysyłania adresu, a jaki w czasie wysyłania instrukcji :?:
    A kolejność wysyłania bitów, to na pewno
    Code:
    Data Order = Lsb
    :?:

    Pomyśl :D
  • #26
    Freddy
    Level 43  
    Zumek już próbowałem i tak i tak i nic z tego. Ostatnia wersja poniżej.
    Kolejność adresu wygląda mi na MSB, a dane na LSB.
    Zobacz wykres na str 8 a potem stronę 9.

    Code:
    $regfile = "m32def.dat"
    
    $crystal = 16000000

    $framesize = 16
    $hwstack = 24
    $swstack = 16

    'Konfiguracja SPI
    Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 64 , Noss = 0 , Spiin = 255

    Config Porta = Output
    'Config 1wire = Portd.7                                      ' Port 1 wire

    ' Konfiguracja Pinów Scl I Sda
    'Config Sda = Portc.1                                        ' Port C - 1 < Sda>
    'Config Scl = Portc.0                                        'Port C - 0 < Scl>
    'Port D - 3 < Int1>

    ' Adres Ds 1307
    'Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
    'Const Ds1307r = &HD1

    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.6 , Rs = Portc.7
    Config Lcd = 16 * 2
    '
    'LCD: uC:
    'E PORT C - 6  RS PORT C - 7  D4 PORT A - 4  D5 PORT A - 5  D6 PORT A - 6  D7 PORT A - 7

    Dim Migaj(4) As Byte , Shl(4) As Byte , Shr(4) As Byte , Adres(4) As Byte , Wpisz(4) As Byte
    Dim Dispoff(4) As Byte , Dispon(4) As Byte , Dimer(4) As Byte , Grid(4) As Byte
    Dim Zmienna(4) As Byte , Zn As Byte , Wart As Byte

    '-----------------------------------------------------------------------------------------------------------------
    Declare Sub Inicjujzmienne
    '-----------------------------------------------------------------------------------------------------------------

    'Config Clock = User                                         ' this will dim the bytes automatic
    Cursor Off Noblink
    Cls

    Locate 1 , 1
    Lcd "LC75710NE  "

    'Set Porta.2                                                 ' /CE
    Waitms 50
    'Reset Porta.2

    Locate 2 , 1
    Lcd " Init i DSP off "
    Waitms 500

    '-----------------------------------------------------------------------------------------------------------------
    Call Inicjujzmienne

    Reset Portb.1
    Waitms 500
    Spiinit

    Waitus 100



    Reset Porta.2
    Waitus 50

    Spiout Grid(1) , 1                                          ' ustaw ilość na 16
    Set Porta.2
    Waitus 10
    Spiout Grid(2) , 3
    Reset Porta.2

    Spiout Dimer(1) , 1                                         ' ustaw jasność
    Set Porta.2
    Waitus 10
    Spiout Dimer(2) , 3
    Reset Porta.2

    Spiout Dispon(1) , 1                                        ' włącz wyświetlacz
    Set Porta.2
    Waitus 10
    Spiout Dispon(2) , 3
    Reset Porta.2

    Spiout Migaj(1) , 1                                         ' Display blink  off
    Set Porta.2
    Waitus 10
    Spiout Migaj(2) , 3
    Reset Porta.2



    Wpisz(4) = $20
    Wpisz(3) = $00
    Spiout Wpisz(1) , 4

    Wpisz(4) = $4f
    Wpisz(3) = $01
    Spiout Wpisz(1) , 1

    Wpisz(4) = $59
    Wpisz(3) = $02
    Spiout Wpisz(1) , 1

    Wpisz(4) = $4e
    Wpisz(3) = $03
    Spiout Wpisz(1) , 1




    '-----------------------------------------------------------------------------------------------------------------


    Locate 2 , 1
    Lcd " koniec napisu  "
    Waitms 500
    Set Portb.1
    Do

    Loop
    '
    '-----------------------------------------------------------------------------------------------------------------
    '
    Sub Inicjujzmienne

       '0 0 0 1 * M A O G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Dispoff(1) = &B01100111                                  ' adres
       Dispoff(2) = &B00010110                                  ' Display off
       Dispoff(3) = &B11111111
       Dispoff(4) = &B11111111

       '0 0 0 1 * M A O G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Dispon(1) = &B01100111                                   ' adres
       Dispon(2) = &B00010111                                   ' Display  on
       Dispon(3) = &B11111111                                   ' grid G1-G16
       Dispon(4) = &B11111111                                   ' grid

       '1 0 1 M A BC2 BC1 BC0 G16 G15 G14 G13 G12 G11 G10 G9 G8 G7 G6 G5 G4 G3 G2 G1
       Migaj(1) = &B01100111                                    ' adres
       Migaj(2) = &B10111000                                    ' Display blink
       Migaj(3) = &B00000000                                    ' grid G1-G16
       Migaj(4) = &B00000000                                    ' grid

       '0 0 1 0 * M A R/L  * * * * * * * * * * * * * * * *
       Shl(1) = &B01100111                                      ' adres
       Shl(2) = &B00100101                                      ' Display shift left
       Shl(3) = &B00000000
       Shl(4) = &B00000000

       '0 0 1 0 * M A R/L  * * * * * * * * * * * * * * * *
       Shr(1) = &B01100111                                      ' adres
       Shr(2) = &B00100100                                      ' Display shift right
       Shr(3) = &B00000000
       Shr(4) = &B00000000

       '0 0 1 1 GN3 GN2 GN1 GN0  * * * * * * * * * * * * * * * *
       Grid(1) = &B01100111                                     ' adres
       Grid(2) = &B00110000                                     ' Grid register ilość znaków ( tutaj 16 )
       Grid(3) = &B00000000
       Grid(4) = &B00000000

       '0 1 0 0 RA3 RA2 RA1 RA0  * * DA5 DA4 DA3 DA2 DA1 DA0 * * * * * * * *
       Adres(1) = &B01100111
       Adres(2) = &B01000000
       Adres(3) = &B0
       Adres(4) = &B0

       '0 1 0 1 * * * * DC7 DC6 DC5 DC4 DC3 DC2 DC1 DC0 * * * * * * * *
       Dimer(1) = &B01100111
       Dimer(2) = &B01010000                                    ' Janość świecenia
       Dimer(3) = &B11111111                                    ' wartość od 0 to 255 : 255 max jasność
       Dimer(4) = &B00000000

       '0 1 1 0 * * * * * * DA5 DA4 DA3 DA2 DA1 DA0 AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0
       'DA0 to DA5: DCRAM address
       'AC0 to AC7: DCRAM write data (character code)
       Wpisz(1) = &B01100111
       Wpisz(2) = &B01100000                                    ' wpisz znak pod adres
       Wpisz(3) = &B00000000                                    ' * * DA5 DA4 DA3 DA2 DA1 DA0
       Wpisz(4) = &B00000000                                    ' AC7 AC6 AC5 AC4 AC3 AC2 AC1 AC0

    End Sub
    '-----------------------------------------------------------------------------------------------------------------

    'Sub Piszznak(znak Byval As Byte , Poz Byval As Byte)
    '   Dim Wart As Byte
    '   Wart = &B01100000
    '   Spiout Wart , 1
    '   Wart = Poz
    '   Spiout Wart , 1
    '   Wart = Znak
    '   Spiout Wart , 1
    '
    'End Sub

    'M A Display operating state
    '0 0 Neither MDATA nor ADATA blinks.
    '0 1 Only ADATA blinks.
    '1 0 Only MDATA blinks.
    '1 1 Both ADATA and MDATA blink.

    'GN GN GN GN     Digits Controlled
    '3  2  1  0  hex
    '0  0  0  0   0  G1 to G16
    '0  0  0  1   1  G1
    '0  0  1  0   2  G1 to G2
    '0  0  1  1   3  G1 to G3
    '0  1  0  0   4  G1 to G4
    '0  1  0  1   5  G1 to G5
    '0  1  1  0   6  G1 to G6
    '0  1  1  1   7  G1 to G7
    '1  0  0  0   8  G1 to G8
    '1  0  0  1   9  G1 to G9
    '1  0  1  0   A  G1 to G10
    '1  0  1  1   B  G1 to G11
    '1  1  0  0   C  G1 to G12
    '1  1  0  1   D  G1 to G13
    '1  1  1  0   E  G1 to G14
    '1  1  1  1   F  G1 to G15

    'Blink Period (s)*1  when fOSC is 2.7 MHz
    'BC2 BC1 BC0 HEX
    '0   0   0   0   Blink operation is stopped.
    '0   0   1   1   0.1
    '0   1   0   2   0.2
    '0   1   1   3   0.3
    '1   0   0   4   0.4
    '1   0   1   5   0.5
    '1   1   0   6   0.8
    '1   1   1   7   1.0
  • #27
    zumek
    Level 39  
    Freddy wrote:
    ...Kolejność adresu wygląda mi na MSB, a dane na LSB...

    Fakt, tak to wygląda, ale ja bym wysyłał wszystko od MSB :-P
  • #28
    Freddy
    Level 43  
    Zumek próbowałem MSB, LSB, Polarity, Phase, clockrate 64, 128, 16 i wszystkie możliwe kombinacje. adres w tej kolejności jak jest teraz i w odwrotnej.

    Wyświelacz i LC jest na 1000% dobry.