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

Atmega8 + wyświetlacz graficzny 128*64 KS0108 [BASCOM]

CyccX 16 Lip 2011 01:10 5811 10
  • #1 16 Lip 2011 01:10
    CyccX
    Poziom 15  

    Witam,

    zakupiłem taki o to wyświetlacz graficzny http://www.artronic.pl/o_produkcie.php?id=1108.. Na aukcji piszą że wyświetlacz ten posiada wbudowany generator ujemnego napięcia, więc pin 18 Vee pozostawiłem nie podłączony.. [a może być powinien jakoś podłączony ?? ]

    wyświetlacz podłączyłem w/g schematu zamieszczonego w znanym czasopiśmie [oczywiście pomijając podłączenie Vee jak napisałem wyżej]. Jest w nim też cały rozdział poświęcony obsłudze wyświetlacza graficznego 128*64 na kontrolerze KS0108.

    Na podstawie listingu w czasopiśmie, napisałem swój krótki programik sprawdzający poprawność działania wyświetlacza. o to on

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    program się kompiluje bez błędów. Wgrany na atmege8 nie robi nic.. podświetlenie wyświetlacza świeci ale ekran jest pusty. [cały czarny - bo to black, z białymi literami].

    coś pominąłem ?? coś zrobiłem źle ? proszę o pomoc

    0 10
  • #2 16 Lip 2011 01:34
    323493
    Użytkownik usunął konto  
  • #3 16 Lip 2011 09:59
    CyccX
    Poziom 15  

    przez opornik ? czy bez opornika

    0
  • #4 16 Lip 2011 12:05
    323493
    Użytkownik usunął konto  
  • #5 16 Lip 2011 13:08
    CyccX
    Poziom 15  

    dzięki za odpowiedź, wyświetlacz działa, wszystko jest ok. mogę wyświetlać tekst, rysować linie i tym podobne.

    ale natrafiłem na pewien problem, a nie chce zakładać nowego tematu więc będę kontynuował ten.

    Problem mianowicie jest taki że chce na wyświetlaczu zamieścić 4 zmienne wartości [będą to temperatury] i prócz prezentacji cyfrowej chce też zrobić wizualizację graficzna w formie suwaka, bara, paska postępu jak kto woli to nazywać.

    dokładnie będzie widać o co chodzi na filmie który link załączam poniżej.

    niestety takie rozwiązanie jakie ja zastosowałem nie sprawdza się.. bo dobrze jest gdy wartości są małe i słupki są niskie, ale gdy słupek przekroczy 50% długości to ekran odświeża się tak długo, że dolne partie w zasadzie przestają być widoczne.. Wygląda to tak jakby sterownik był za wolny czy coś, i odświeżanie straszne powolne.. Widać to na załączonym filmie.

    http://www.youtube.com/watch?v=Rs3CdzHqJeU

    w rzeczywistości efekt jest jeszcze gorszy.

    tutaj załączam kod który jest wgrany w atmege:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    czy ktoś może podsunąć rozwiązanie jak to zrobić by nie używać funkcji cls ? bo to ona jest temu winna, i trwa długo wpisywanie od nowa danych na wyświetlacz.

    proszę o pomoc

    0
  • #6 16 Lip 2011 13:14
    piotrva
    Moderator na urlopie...

    Tak, nie używaj cls'a
    Po prostu rób tak, jak rysujesz bara:
    Idziesz od dołu podziałki i rysujesz linie kolorem czarnym dopóki wartości są mniejsze lub równe zadanej. A potem idziesz do góry i rysujesz paski aż do samej góry podziałki, tyle, że w kolorze białym.
    Co do tekstów tak samo. Wypisujesz na stałe napisy takie jak: Temperatura: +00.00 *C
    a temperaturę jedynie podmieniasz używając funkcji locate i odpowiedniego formatowania tekstu.

    0
  • #7 16 Lip 2011 13:44
    CyccX
    Poziom 15  

    odpowiednie formatowanie tekstu, możesz tą myśl rozwinąć ??

    obawiam się że rysowanie barów w przeciwna stronę o odwrotnym kolorze pochłonie zbyt dużo pamięci.. to co widać zajmuje 43%.. rysowanie w druga stronę zajmie pewnie drugie tyle.

    a do tego jeszcze muszą dość zmienne obsługi SPI do odczytu danych z 4 źródeł..

    0
  • #8 16 Lip 2011 14:27
    piotrva
    Moderator na urlopie...

    No odpowiednie formatowanie - czyli zera prowadzące przed liczbami.
    Ale czemu ma zająć więcej pamięci:
    1. Rysujesz ramkę bara (czyli linie góra, dół i boki, na bokach (najlepiej na zewnątrz) rysujesz podziałki i tego już nie zmieniasz nigdy - zostaje na stałe a potem:

    Code:

    For I=0 To Wysokosc_bara Step 1
    If I<=Wartosc Then
    Line (Lewa_strona_bara,I)-(Prawa_strona_bara,I), 1
    Else
    Line (Lewa_strona_bara,I)-(Prawa_strona_bara,I), 0
    End If
    Next I

    Oczywiście odpowiednie zmienne i stałe trzeba wcześniej zadeklarować.
    Można też użyć gotowej funkcji, bodajże boxfill czy coś takiego i wtedy rysujesz od dołu do wartości wypełniony, a potem od wartości do góry pusty.

    0
  • #9 16 Lip 2011 17:22
    mate_ok
    Poziom 18  

    Mogę zapytać ile zapłaciłeś za ten wyświetlacz?

    0
  • #10 17 Lip 2011 00:45
    CyccX
    Poziom 15  

    60zł z wysyłka.

    dzieki piotrva za ten fragment kodu, widzę że rozwiązałeś w nim rysowanie bara w całkowicie inny sposób niż ja mam u siebie zrobione.. może twoim sposobem będzie zajmować on o wiele mniej pamięci, muszę go tylko przeanalizować i zrozumieć.

    zainteresowało mnie też polecenie boxfill, czy ktoś może napisać o nim coś więcej ?

    0