logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmeg8][bascom] Lcd 2x16 i PCF8575

Milas69 16 Gru 2009 18:24 3179 10
REKLAMA
  • #1 7397698
    Milas69
    Poziom 11  
    Witam! Szukałem i szukałem ale nie znalazłem podobnego tematu.
    Chciałbym podłączyć wyświetlacz LCD pod porty PCFa 8575..czy w ogóle da się nim w ten sposób starować? Rozumiem ze trzeba będzie wszystkie informacje wysyłać po kolei i nie wystarczy tylko LCD "jakiś napis"... Ma ktoś pomysł na to?
  • REKLAMA
  • REKLAMA
  • #3 7398012
    Milas69
    Poziom 11  
    Dzięki wielkie na pewno się przyda.

    a jeśli chodzi o cześć programową w bascomie ( bo w C się nie orietuję :/ ) jak mogła by wyglądać komunikacja LCD przez PCFa? Czy trzeba byłoby odpowiednie bity wpisywać do tablicy i potem wysyłać wartość tablicy za pomocą:

    I2csend &H40 , I

    gdzie I jest przypisana do tej tablicy.

    Nie mam wyobrażenia na to jak to może być zrealizowane, a jestem początkującym miłośnikiem..
  • #4 7398078
    mirekk36
    Poziom 42  
    Milas69 --> toż pierwszy link jest , że tak powiem w Bascomie opisany ;)

    ale skoro jesteś początkującym elektronikiem to nie wiem po co sobie (sorki za określenie) sam wiążesz powoli sznur na szyi w kierunku szybkiego zniechęcenia się ? ;)

    czy nie lepiej podłączyć taki LCD wprost do ATmega8 w trybie 4bitowym i go ładnie w Bascomie bez najmniejszego problemu obsłużyć? a jeśli mało ci wolnych pinów to sięgnij po procek np ATemag32 albo Atmega16 i problem masz z głowy. A potwm na spokojnie najpierw opanuj transmisję I2C żeby powoli dojść do takich hmmm jakby nie patrzeć troszkę dziwactw (ale to wg mnie) jak podłączanie LCD przez PCF'a ;)
  • REKLAMA
  • #5 7398174
    Milas69
    Poziom 11  
    No łatwiej łatwiej bezpośrednio podłączyć do procka :) tyle ze mam wykonać projekt na zaliczenie w której mam pokazać jak rozszerzyć porty na AVRach. I mam właśnie wymogi, że do uC ma być tylko podpięta linia I2C, no i zasilanie i masa. Generalnie mam krótki programik z książki M. Wiązani i tam są podłączone do pcfa 8574 4diody i 4 przyciski, ale jeszcze chciałbym, żeby to jakoś wyglądało dołączyć LCD. Mam juz wytrawioną płytkę nawet gdzie planuje podłączyć do PCFa 8575 te 4 diody i 4 przyciski i ten wyświetlacz..

    a w pierwszym linku o ile dobrze patrze jest tylko schemat podłączenia lcd do pcfa a program który tam jest w bascomie dotyczy normalnego podłączenia lcd do uC..
  • REKLAMA
  • #6 7400730
    Milas69
    Poziom 11  
    dobra poczytałem i wiem na razie tyle:

    I2cstart
    I2cwbyte [adres urządzenia podporządkowanego do zapisu], Ack
    I2cwbyte [bajt do wysłania]
    ............ (wysyłanie kolejnych bajtów)
    I2cwbyte [ostatni wysłany bajt], Nack
    I2cstop


    tylko ze tu jak dobrze rozumie trzeba każdą informacje wysyłaną na wyświetlacz wpisywać po kolei do tablic i żeby na wyświetlaczu pojawił się jakikolwiek napis to trzeba trochę się napisać i każda informację (np literkę) pisać w osobnej tablicy..

    chyba ze innym sposobem I2CSEND:

    Dim bajt (10) As Byte                 'deklaracja tablicy zawierającej 10 zmiennych
    Slave = &H40                          'podanie adresu urządzenia podporządkowanego (konkretnie PCF8575)
    For a = 1 to 10                       'pętla dziesięciokrotna
    bajt(a) = a                           'nadaj zmiennej "bajt" wartości od 1 do 10
    Next
    I2CSEND slave, bajt(), 10             ' wyślij do odbiorcy 10 bajtów
    End


    Tylko w tym przypadku było by fajnie jeśli w lcd byłyby tylko wejścia danych bo jak niby miałbym sterować pinami RS czy E..skoro np deklaruje tablice jako string i wpisuje tam jakiś napis np "test".. ale chyba tak się nie da zrobić.


    I w moim przypadku skoro mam 16bitowego pcfa to bedą wysyłąne 2bajty danych tzn. pierwszy bajt na porty P0 a drugi na porty P1. To jeśli chce tylko kożystać z P0 to wysyłam informacje tylko na niego a w drugim bajcie daję same zera. Dobrze to rozumiem?

    Ma ktoś jakieś wskazówki? Może którego przypadku powinienem się trzymać?
  • #7 7400859
    mirekk36
    Poziom 42  
    Milas69 napisał:
    tylko ze tu jak dobrze rozumie trzeba każdą informacje wysyłaną na wyświetlacz wpisywać po kolei do tablic i żeby na wyświetlaczu pojawił się jakikolwiek napis to trzeba trochę się napisać i każda informację (np literkę) pisać w osobnej tablicy..


    przykro mi ale przy obecnym poziomie doświadczenia nie będziesz w stanie tego sam zrobić.

    Wyświetlacz nie dość, że będzie trzeba samemu obsługiwać to jeszcze w ogóle go samemu inicjalizować i obsługiwać na najniższym poziomie łącznie z sygnałami RS, E oraz DB7..4. W ogóle to najpierw powinieneś zobaczyć czy wyjdzie ci zrobienie takich procedur do sterowania LCD (ale tylko w asm lub w C) podłączonego bezp do procka. A jak wyjdzie to możesz sobie dokładać kolejne przeszkody czy cele - czyli podłączanie go i wysterowanie przez PCF ;) Trzeba go oprogramować na najniższym poziomie o czym ty na razie jeszcze z tego co widać nie masz na razie żadnego pojęcia. Tobie się wydaje, że LCD można podłączyć przez jakiś tam układ i za pomocą jakichś tablic wysyłać do niego znaki ..... to jest niestety bez sensu.

    Jeśli chciałbyś to zrobić sam to najpierw musiałbyś w ogóle poczytać jak się obsługuje LCD - jego notę PDF, inicjalizację i sterowanie wszystkimi sygnałami a potem napisać sobie to sterowanie poprzez I2C i poprzez PCF'a jeszcze. A dopiero potem trzeba by sobie napisać własne funkcje do wysyłania znaków na wyświetlacz - a dopiero na końcu to pisałbyś swój właściwy program, który by z tego wszystkiego korzystał..

    ....W ogóle żeby zrobić to przez PCF'a to lepiej byłoby się zabrać za to w asemblerze lub C żeby zrobić własne biblioteki do zapisu informacji na tak podłączony LCD. A nie w Bascomie.

    Troszkę na razie wg mnie rzucasz się z motyką na słońce niestety - nie mówię tego żeby ci dociąć tylko zwrócić uwagę z czym to wszystko się wiąże tak od podstaw, których ty nawet na razie nie dostrzegasz
  • #8 7401033
    Milas69
    Poziom 11  
    nie dobrze :/

    dobra, to jeśli bym podłączył wyświetlacz normalnie do pinów atmegi8 (tak już to robiłem i wiem jak go zaprogramować) to co mógłbym podłączyć do tego PCFa żeby było łatwiej? Może ds1820 ? i żeby pokazywał temp na LCD..może to będzie łatwiej zaprogramować w BASCOMIE. ( bo już dla mnie za późno na zmianę języka) bo nie chce mieć tylko samych diod.
    Może faktycznie się nie orientuję w tych sprawach ale niestety muszę to przejść!
    Na początek chyba zrezygnuję z pcfa 8575 i dam 8574..

    P.S. Dzięki wielkie ze mnie uświadomiłeś i nie brnę dalej w to czego bym nie zrobił! :)
    Byłbym wdzięczny za wszelką pomoc...

    tu mam program do pfc8574 i lcd podłączonego właśnie do Atmegi8 bezpośrednio.

    $regfile = "m8def.dat"
    $crystal = 8000000
    
    
    Config Scl = Portc.1
    Config Sda = Portc.0
    
    
    Dim I As Byte
    
    I = 255
    
    Do
       I2csend &H40 , I
    
       I2creceive &H41 , I
    
       Shift I , Left , 4
    
       I = I Or &B00001111
    Loop
    End
    


    łatwiej dla mnie bedzię dodac tu kod kod inicjacji lcd i np dać w układzie 3 wej ( dla przycisków) i 3 wyj (dla diod) i do jednego z dwóch wolnych pinów podłączyć np ww. ds1820.. Co o tym myslisz ? chodzi pod względem programowym..
    Twoje zdanie bardzo się dla mnie liczy!!!

    Dodano po 58 [minuty]:

    Dodano po 15 [minuty]:

    dobra już wiem..tak czy siak jeśli chce podłączyć coś "konkretnego" do pcfa to nie obejdzie się bez kodów w asmie np...


    no dobra a wracając jeszcze do tego wyświetlacza bo kiedyś miałem assamblera i do uruchomienia wyświetlacza był taki kod:
    LCD_WR_S        XDATA   0ffF0H          ;adres wpisu do rejestru sterujĄcego
    LCD_WR_D        XDATA   0ffF2H          ;adres wpisu do rejestru danych
    LCD_RD_S        XDATA   0ffF1H          ;adres odczytu z  rejestru sterujĄcego
    LCD_RD_D        XDATA   0ffF3H          ;adres odczytu z  rejestru danych
    
    
    LCD_INIT        EQU     38H
    
    WIERSZ1 EQU     10000000B       ;poczĄtek pierwszej linii
    WIERSZ2 EQU     11000000B       ;poczĄtek drugiej linii
                   
                   ORG     0H
                   LCALL   INIT_LCD        ;inicjalizacja wy wietlacza
    POCZ:
                   LCALL   CLR_LCD
                   CLR     CY
                   MOV     A,#WIERSZ1      ;adres 1 znaku 1 linii
                   LCALL   INS_LO  ;wpisanie adresu pierwszej linii
                   MOV     DPTR,#TEKST
                   LCALL   TEKST_LO
                   MOV     A,#WIERSZ2      ;adres 1 znaku 2 linii
                   LCALL   INS_LO  ;wpisanie adresu drugiej linii
                   MOV     DPTR,#TEKST1
                   LCALL   TEKST_LO
                   LCALL   CLR_LCD
    
    
    ;Inicjalizacja wy wietlacza LCD
    INIT_LCD:
                   LCALL   TSTZAJ
                   MOV     DPTR,#LCD_WR_S          ;adres rejestru sterujĄcego
                   MOV     A,#28H
                   MOVX    @DPTR,A
                   LCALL   TSTZAJ                  ;wywo anie procedury dost©pno ci do pola
                   MOV     A,#0eh
                   MOVX    @DPTR,A
                   LCALL   TSTZAJ
                   MOV     A,#06h
                   MOVX    @DPTR,A
                   LCALL   TSTZAJ
                   MOV     A,#01h
                   MOVX    @DPTR,A
                   RET
    
    ;Sprawdzanie flagi zajetosci
    TSTZAJ:
                   PUSH    DPH
                   PUSH    DPL
                   PUSH    ACC
                   MOV     DPTR,#LCD_RD_S  ;adres do odczytu rejestru sterujĄcego
    NZAJ:
                   MOVX    A,@DPTR         ;odczyt rejestru sterujĄcego
                   JB      ACC.7,NZAJ      ;test znacznika zaj©to ci gdy acc.7=1toskok
                   POP     ACC
                   POP     DPL
                   POP     DPH
                   RET
    
    ;Adres umieszczenia znaku
    INS_LO:
                   LCALL   TSTZAJ
                   MOV     DPTR,#LCD_WR_S
                   MOVX    @DPTR,A
                   RET
    
    ;Wyswietlenie tekstu, adres tekstu w DPTR
    TEKST_LO:
                   MOV     A,#00
                   MOV     R0,#00
                   MOVC    A,@A+DPTR
                   MOV     R1,A
    TEKST_LO1:
                   INC     R0
                   MOV     A,R0
                   MOVC    A,@A+DPTR
                   LCALL   ZNAK_LO
                   DJNZ    R1,TEKST_LO1
                   RET
    
    ;Wyslanie znaku do LCD
    ZNAK_LO:
                   PUSH    DPH
                   PUSH    DPL
                   PUSH    ACC
                   LCALL   TSTZAJ
                   MOV     DPTR,#LCD_WR_D
                   MOVX    @DPTR,A
                   POP     ACC
                   POP     DPL
                   POP     DPH
                   RET
    
    ;Zerowanie wyswietlacza
    CLR_LCD:
                   PUSH    DPH
                   PUSH    DPL
                   PUSH    ACC
                   LCALL   TSTZAJ
                   MOV     A,#01H
                   MOV     DPTR,#LCD_WR_S
                   MOVX    @DPTR,A
                   POP     ACC
                   POP     DPL
                   POP     DPH
                   RET
    
    ;Wyswietlane teksty
    TEKST:  db      16D,'1234567         '
    TEKST1  db      16D,'abcdefgh        '
    
                   END
    


    może sie by przydał?
  • #9 7401706
    mirekk36
    Poziom 42  
    Za dużo kombinujesz już mówiłem ;) podłączanie DS18B20 pod PCF'a żeby go obsługiwać w Bascomie to jeszcze bardziej karkołomny pomysł niż podłączanie LCD. Bo o ile LCD się da to o 1wire zapomnij

    Możesz sobie dodatkowe diody czy przekaźniki podłączyć

    A ten kod który pokazałeś to asembler ale nie dla AVR'ów tylko dla '51

    A nawet jakby był dla AVR - to co byś chciał z nim zrobić?

    Na prawdę zrób jakieś proste rzeczy bo widać, że z braku doświadczenia masz pomysły na takie zastosowania połączeń, że nie można ich określić , że są z kapelusza - one są już z głębokiego kosmosu

    .

    Dal LCD do ATmegi - oprogramujesz to spokojnie w Bascomie. Do Atmegi podłącz PCF a do niego jakieś diodki, można także klawisze czy przekaźniki - cokolwiek takiego prostego i bez kolejnych wymysłów ;) to też uda ci się nad tym w Bascomie zapanować przez komunikację po I2C o ile to dobrze sobie poćwiczysz ;)
  • #10 7401903
    Milas69
    Poziom 11  
    w sumie jak tak się dobrze zastanowiłem to faktycznie ten ds jest jeszcze trudniejszą sprawą...
    To już sobie dałem spokój z tymi dodatkowymi urządzeniami..zrobię jak mówiłeś z tymi diodami lub przekaźnikami...

    Myśle ze już z tym nie będę miał większych problemów z programowaniem...oby:)

    a tak z ciekawości juz nie znaczącej to wysyłanie przez pfc na lcd nie odbywa sie tak
    że wysyła się tak informacje jak na rysunku??
    [atmeg8][bascom] Lcd 2x16 i PCF8575
  • #11 7418638
    Milas69
    Poziom 11  
    Temat zamykam. Pozdrawiam
REKLAMA