Elektroda.pl
Elektroda.pl
X
CControls
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

J_Bravo 05 Sty 2010 18:58 18173 47
  • #1 05 Sty 2010 18:58
    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

    1 29
  • CControls
  • #2 07 Lut 2010 12:09
    pprzesmycki
    Poziom 10  

    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.

    0
  • #3 07 Lut 2010 12:30
    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ć.

    0
  • #5 07 Lut 2010 17:22
    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 ?

    0
  • #6 07 Lut 2010 17:38
    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

    1
    Załączniki:
  • #7 07 Lut 2010 18:10
    kamyczek
    Poziom 34  

    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.

    0
  • CControls
  • #9 03 Mar 2010 01:28
    andrzejswie
    Poziom 9  

    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

    0
  • #10 03 Mar 2010 18:48
    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

    0
  • #11 04 Mar 2010 16:24
    andrzejswie
    Poziom 9  

    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.

    0
  • #12 16 Mar 2010 17:15
    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 ?

    0
  • #14 17 Mar 2010 07:40
    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.

    0
  • Pomocny post
    #15 17 Mar 2010 08:54
    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.

    0
  • #16 17 Mar 2010 09:13
    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.

    0
  • #17 19 Mar 2010 08:08
    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

    1
  • #18 19 Mar 2010 08:23
    sanwa
    Poziom 13  

    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

    1
  • #19 19 Mar 2010 09:15
    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:

    Code:

       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

    Code:
    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

    1
  • #20 19 Mar 2010 09:27
    sanwa
    Poziom 13  

    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

    0
  • #21 19 Mar 2010 09:45
    J_Bravo
    Poziom 27  

    Jest to sztandarowa biblioteka z bascoma.
    masz ją na 100% ;)
    tak. byte,byte,string

    0
  • #22 19 Mar 2010 10:19
    sanwa
    Poziom 13  

    Witam

    Jeszcze raz dziękuję bardzo :).

    Pozdrawiam
    Sanwa

    0
  • #23 22 Mar 2010 09:14
    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

    0
  • #24 29 Mar 2010 18:36
    J_Bravo
    Poziom 27  

    Mam już opanowaną obsługę wyświetlacza po SPI

    Code:
    $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

    1
    Załączniki:
  • #25 25 Maj 2010 19:41
    pablo_belchatow
    Poziom 15  

    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"

    0
  • #26 25 Maj 2010 19:53
    J_Bravo
    Poziom 27  

    a te fonty: font8x8TT.font ??? idą ??

    0
  • #27 25 Maj 2010 20:13
    pablo_belchatow
    Poziom 15  

    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 :(

    0
  • #28 25 Maj 2010 20:15
    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 :)

    0
  • #29 25 Maj 2010 20:20
    pablo_belchatow
    Poziom 15  

    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 ;)

    0
  • #30 25 Maj 2010 20:25
    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.

    0