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

[avr][bascom] Obsługa wyświetlacza graficznego na UC1601s

J_Bravo 05 Sty 2010 18:58 20102 47
  • #1 7489936
    J_Bravo
    Poziom 27  
    Czy próbował ktoś uruchomić wyświetlacze graficzne COG w BASCOM? Z tego co się zorientowałem to sterowany on jest układem UC1601s. Zamierzam przejść na te wyświetlacze a nie chce od nowa ameryki odgrywać.

    [avr][bascom] Obsługa wyświetlacza graficznego na UC1601s

    Troszkę się oszukałem na internecie i nic nie udało mi się namierzyć sensownego.

    tu można obejrzeć wyświetlacze: Link
  • #2 7656521
    pprzesmycki
    Poziom 11  
    Witam

    ... wydaje mi się że ten chip sterujący - uc1601 nie ma własnej pamięci znaków CGRAM (tym bardziej CGROM), co utrudni wygodną obsługę czcionek (szczególnie małym uC).
    Wygląda owszem kusząco i cena i łatwość podłączenia do uC (I2C, SPI, 8-bit) ale poszukałbym raczej LCD z innym kontrolerem.
  • #3 7656643
    asembler
    Poziom 32  
    To że nie ma własnych znaków ASCII wcale nie musi być wadą a może się stać zaletą - polskie znaki różna wielkość czcionki itp. Doskonały wybór sterowanie też proste a jakby co to czcionki 5x8 mogę ci podesłać.
  • #4 7657343
    Freddy
    Poziom 43  
    J_Bravo :arrow: którą masz wersję Bascoma i kiedy ostatnio zaglądałeś do helpa ?
  • #5 7658219
    J_Bravo
    Poziom 27  
    freddy: 1.11.9.3 i jakoś nie widziałem w niej obsługi tych układów (zaraz ściągnę najnowsza wersje i zobaczę czy coś się zmieniło)
    asembler: byłbym wdzięczny za wszelkie informacje i pomoc
    pprzesmycki: brak pamięci znaków w LCD graficznym to raczej nie problem (to chyba standard)

    Dodano po 10 [minuty]:

    freddy mam najnowszego bascoma i także nie widzę obsługi tych układów. Naprowadzisz mnie ?
  • #6 7658352
    asembler
    Poziom 32  
    Font5x8 z polskimi znakami jednoczesnie tak przekształcone ze wysyłajac na swoj wyswietlacz od razu otrzymujesz obraz litery na ekranie. Razem zbior ma długosc 480 bajtów.
    Kazdy znak składa sie z 5 bajtów o przerwy miedzy znakami musisz sam zadbac
    Załączniki:
  • #7 7658569
    kamyczek
    Poziom 38  
    Wyświetlacz o którym piszesz jest na sterowniku UC1601 , nie ma generatora znaków i jest na 3,3V. Posiada możliwość pracy po różnych magistralach 6800 , 8080 SPI 8 i 9 bit oraz I2C . Jego obsługę można napisać samodzielnie.
  • #8 7658844
    Freddy
    Poziom 43  
    EADOGM128*64
    Matryca może być sterowana między innymi przez magistralę I²C, lub SPI. Powyższy link jest właśnie do SPI.
  • #9 7776524
    andrzejswie
    Poziom 11  
    Witam, właśnie od kilku godzin próbuje uruchomić wyświetlacz kupiony na allegro z sterownikiem UC1601S za pomocą szyny I2C i jakoś nie potrafię chyba ustawić właściwego kontrastu, czy komuś udało się go poprawnie uruchomić? Jakiej sekwencji startowej rozkazów używacie?? Pozdrawiam Andrzej
  • #10 7778896
    J_Bravo
    Poziom 27  
    a może Andrzeju powiesz do czego ty doszedłeś ?? Ja zacznę walkę po weekendzie to może dojdziemy obaj do rozwiązania
  • #11 7782760
    andrzejswie
    Poziom 11  
    Witam, no już się z problem uporałem. Jak się okazało, błąd był sprzętowy a nie programowy... Miałem mostek między Vbias- a masą. Czasami jednak warto pięć razy sprawdzić czy wszystko dobrze podłączone...

    Pozdrawiam.
  • #12 7838101
    J_Bravo
    Poziom 27  
    Ja podpiąłem LCD zgodnie z rysunkiem
    [avr][bascom] Obsługa wyświetlacza graficznego na UC1601s
    i wyświetlacz nie daje znaku życia.Na kondensatorach 0 V, pobór prądu 250 uA, kontrast niewidoczny. Jak to draństwo ruszyć ?Gdzie tu się kontrast ustawia ?
  • #14 7840990
    J_Bravo
    Poziom 27  
    Super. ostatni link mimo że do innego LCD bardzo mi pomógł. Podpinam zasilanie na Vss i Vdd. Co robić wyprowadzeniem Vlcd ? czy tylko pod kondensator ? Wg mnie powinno tam się pojawić napięcie a jest równo 0V.
    Po raz pierwszy mam problem z głupim wyświetlaczem.
  • Pomocny post
    #15 7841186
    michalko12
    Specjalista - Mikrokontrolery
    J_Bravo napisał:
    Podpinam zasilanie na Vss i Vdd. Co robić wyprowadzeniem Vlcd ? czy tylko pod kondensator ? Wg mnie powinno tam się pojawić napięcie a jest równo 0V.
    Po raz pierwszy mam problem z głupim wyświetlaczem.


    Głupi wyświetlacz? Hmmmm....

    Jeśli wszystko podłączyłes zgodnie z zaleceniami producenta, to czas teraz oprogramować ten wyświetlacz. Na stronie 36 datasheeta UC1601 masz taki rozdział SAMPLE COMMAND SEQUENCES FOR POWER MANAGEMENT a w nim taka tabelkę POWER-UP z kolejnymi komendami jakie trzeba wysłać do wyświetlacza po dostarczeniu zasilania.
  • #16 7841239
    J_Bravo
    Poziom 27  
    Masz rację. Głupi ja :/
    Zamiast doczytać do końca datasheet zająłem się podpinaniem pod procesor. Na swoje usprawiedliwienie powiem że to pierwszy LCD z którym się spotkałem, który trzeba włączyć/wyłączyć. Ciekawa sprawa bo będzie pracować w urządzeniu zasilanym bateriami.
  • #17 7850606
    J_Bravo
    Poziom 27  
    Witam.
    Wyświetlacz działa. Dzięki za pomoc i w razie pytań służę pomocą.

    [avr][bascom] Obsługa wyświetlacza graficznego na UC1601s
  • #18 7850632
    sanwa
    Poziom 14  
    Witam
    Gratuluję :).

    Czy istnieje opcja, że udostępnisz całość (schemat i podstawowy kod źródłowy)? Wiem, że to pójście na łatwiznę, ale oszczędzisz mi w ten sposób trochę czasu i nerwów :).

    Pozdrawiam
    Sanwa
  • #19 7850779
    J_Bravo
    Poziom 27  
    Żaden problem.

    Co do schematu podłączenia to łaczymy jak na obrazu wcześniej plus:
    BM1 do -
    BM0, DB7, DB6, RST do +
    D0 do SCK
    D3 do SDA

    Inicjowanie wyświetlacza:
    
       I2cstart                                                 'rozpoczęcie transmisji
          I2cwbyte &H78
          I2cwbyte &HAF                                            'display ON
          I2cwbyte &H81                                            ' pot.
          I2cwbyte &H60                                            'na pozycje 100
    '     I2cwbyte &HA5                                            'set all pixel ON
    '     I2cwbyte &H01                                            'column adres
    '     I2cwbyte &H10                                            'column adres
          I2cwbyte &HC4                                            'Lcd control
    '     I2cwbyte &HB0                                            'page adres   - numer rzędu 
       I2cstop



    podprogram rysujący napisy

    Sub Wyswietl8:
    Posx = Posx + &HB0
    Lsb = 0
    Msb = 0
    
    Lsb.0 = Posy.0
    Lsb.1 = Posy.1
    Lsb.2 = Posy.2
    Lsb.3 = Posy.3
    
    Msb.0 = Posy.4
    Msb.1 = Posy.5
    Msb.2 = Posy.6
    Msb.3 = Posy.7
    Msb.4 = 1
      I2cstart                                                  'rozpoczęcie transmisji
       I2cwbyte &H78
       I2cwbyte Lsb                                             'column adres
       I2cwbyte Msb                                             'column adres
       I2cwbyte Posx                                            'page adres   - numer rzędu od kocna
      I2cstop
    Waitms 1
      I2cstart                                                  'rozpoczęcie transmisji
       I2cwbyte &H7A
    
    
     For Kropka = 1 To Len(tekst)
       For Linia = 2 To 8
             Znak = Mid(tekst , Kropka , 1)
             Kod_zn = Asc(znak)
             Kod_zn = Kod_zn - 32
             Kod_zn = Kod_zn * 8
             Kod_zn = Kod_zn + Linia
             Kod_zn = Kod_zn + 2
             Kol_zn = Lookup(kod_zn , Font8x8)
       I2cwbyte Kol_zn
      Next Linia
     Next Kropka
     I2cstop
    End Sub
  • #20 7850816
    sanwa
    Poziom 14  
    Witam

    Bardzo dziękuję :). Procedurę wywołuje się z (Posx,Posy,tekst) : typu : (byte,byte,string)?

    Czy bezczelnością by było, gdybym zapytał jeszcze o tablicę z czcionką Font8x8:)?

    Pozdrawiam
    Sanwa
  • #21 7850875
    J_Bravo
    Poziom 27  
    Jest to sztandarowa biblioteka z bascoma.
    masz ją na 100% ;)
    tak. byte,byte,string
  • #22 7850992
    sanwa
    Poziom 14  
    Witam

    Jeszcze raz dziękuję bardzo :).

    Pozdrawiam
    Sanwa
  • #23 7864307
    J_Bravo
    Poziom 27  
    Wyświetlacz bardzo ładnie opisany jest przez Pana Tomasza Jabłońskiego w najnowszej EP 2010/04. Polecam lekturę artykułu.

    [avr][bascom] Obsługa wyświetlacza graficznego na UC1601s [avr][bascom] Obsługa wyświetlacza graficznego na UC1601s
  • #24 7895415
    J_Bravo
    Poziom 27  
    Mam już opanowaną obsługę wyświetlacza po SPI

    $lib "US1601s.lib"
    Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.6 , A0 = Portc.5 , Si = Portc.4 , Sclk = Portc.3 , Rst = Portc.7
    Cls
    Setfont Font8x8tt
    Lcdat 3 , 1 , "www.serwis.tv" ,
    


    W załaczniku przykładowy plik BASCOMA, płytka przejściówka w EAGLE, dodatkowa biblioteka US1606s.lbx oraz kilka fontów
    Załączniki:
  • #25 8116564
    pablo_belchatow
    Poziom 16  
    Mi także odało się odpalic ten wyswietlacz, problem mam tylko z wyswietlaniem fontów, grafike wyswietla bez problemu. Próbowałem róznych fontów, takze tych z załacznika od J_bravo. Wyswietlenie jednego znaku (dowolnego) skutkuje "wypluciem" na wyswietlacz ciągu typu "abcdefghihjklmn"
  • #26 8116621
    J_Bravo
    Poziom 27  
    a te fonty: font8x8TT.font ??? idą ??
  • #27 8116670
    pablo_belchatow
    Poziom 16  
    Juz poszło, mój błąd. lcd testuje na atmedze8, bo mi sie wieksza 32 uwaliła. Po skompilowaniu z oryginalnym fontem, procek mi sie zawieszał, wiec powycinałem troche "nieuzytecznych" fontów i pewnie cos poknociłem po drodze. Teraz poszło

    Acha, wyswietlacz da sie pogonic na 5v ;)

    Dodano po 9 [minuty]:

    Z tego co przeczytałem, to ten wyswietlacz nie obsługuje polecen pset, line, czy box. Rozumiem, ze w takim razie bawienie sie w rysowanie wykresów w bascomie odpada :(
  • #28 8116735
    utak3r
    Poziom 25  
    Zawsze możesz sam sobie napisać takową funkcję, która zapisuje bezpośrednio do bufora ramki. Wystarczy zaimplementować algorytm Bresenhama i masz rysowanie linii :)
  • #29 8116761
    pablo_belchatow
    Poziom 16  
    utak3r napisał:
    Zawsze możesz sam sobie napisać takową funkcję, która zapisuje bezpośrednio do bufora ramki. Wystarczy zaimplementować algorytm Bresenhama i masz rysowanie linii :)


    yyyy ;)

    a tak serio, to chyba trzeba sie bedzie za to zabrac. Moze bez Bresenhama na pczatek ;)
  • #30 8116784
    utak3r
    Poziom 25  
    Na początek zrób sobie funkcję stawiającą punkt, potem ją wykorzystaj do zrobienia rysowania linii poziomych i pionowych. A Bresenham się przyda dopiero wtedy, gdy będziesz chciał linie ukośne.
REKLAMA