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

[atmega32][C] menu przewijane

MaTi00 05 Paź 2011 10:47 1382 3
REKLAMA
  • #1 9994801
    MaTi00
    Poziom 12  
    witam
    proszę kolegów o pomoc w pisaniu przewijanego menu na wyświetlaczu graficznym, który współpracuje z ATmega 32. Chodzi mi o realizację przewijanego menu coś podobnego jak lista kontaktów w telefonie. Na wyświetlaczu mają znaleźć się 3 pozycje, sterowanie 3 przyciskami. Jeden do przewijania w górę, drugi w dół a trzeci do wybierania. Dane do wyświetlania przesyłane są po rs'ie w paczkach po 128 bajtów, w których są właśnie 3 wpisy przy czym w każdym wpisie są zawarte 3 informacje oddzielona odpowiednimi znakami. Na wyświetlaczu ma być wyświetlane jednocześnie 3 wpisy. Linia 1 - informacja 1 z wpisu 1, linia 2 - informacja 1 z wpisu 2, linia 3 - informacja 2 z wpisu 2 i linia 4 - informacja 1 z wpisu 3. wymyśliłem to tak, że zrobię 2 bufory (ewentualnie 3 jeden wstecz i jeden do przodu i jeden ten co jest wyświetlany). Wyświetlać maja się informacje przesuwane o jedna pozycje (czyli jeśli są wyświetlane informacje z jednego bufora po wciśnięciu przycisku w dol ma się wszystko przesunąć o jedna pozycje czyli 2 ostatnie pozycje z aktualnego bufora i pierwsza informacja z drugiego itd.) Moje pytanie do kolegów, jak to najłatwiej i najszybciej zrealizować.
  • REKLAMA
  • #2 9994891
    nsvinc
    Poziom 35  
    Twój opis tego, co chcesz osiągnąć, jest napisany "najłatwiej i najszybciej", więc niewiele z niego wynika i cieżko podać ci jakieś rozwiązanie.
    O co właściwie chodzi? O samo wyswietlanie? O przewijanie? Co chcesz przewijać skoro na wyświetlaczu masz 3 linijki tekstu (według tego co napisałeś), które na bank mieszczą sie jednocześnie w polu odczytowym?

    Dodatkowa rzecz, to o co chodzi z wyświetlaczem sterowanym po RSie? Czy masz mikrokontroler między RSem a wyświetlaczem, czy to sam wyświetlacz przyjmuje dane po RSie?

    Rozpatrując algorytm wyswietlania zwykłej listy z zaznaczeniem, zupełnie nie powinno nikogo obchodzić skąd będą brane informacje do wyświetlania, bo to dwie różne sprawy...
  • REKLAMA
  • #3 9994971
    MaTi00
    Poziom 12  
    Więc po kolei:) do procka przesyłane są dane po rs'ie i te dane mają być wyświetlane na wyświetlaczu. Generalnie chodzi o to ze dane przesyłane są w paczkach po 128 bajtów a paczek może być najwięcej 255. Teraz to trzeba wyświetlić z tym ze nie będę miał dostępu do wszystkich wpisów tylko tak jak napisałem wcześniej trzeba będzie pobierać paczki i lądować je do buforów tak żeby przewijanie odbywało się w miarę płynnie i po jednym wpisie a nie po 3 naraz. Dla uproszczenia 3 linie na wyświetlaczu, 3 wpisy w paczce a paczek max 255. pobieram pierwsza paczkę (3 wpisy)> wyświetlam trzy na wyświetlaczu i teraz w momencie przycisku w dol/gore na wyświetlaczu przewija mi się wpis o jeden z czego ostatni (trzeci) wpis jest już z nowej paczki. Czy teraz jest bardziej zrozumiałe?
    pozdrawiam
  • #4 9995050
    nsvinc
    Poziom 35  
    Utrudniłeś sobie życie z tym RSem, więc od razu powiem ci że temat nie jest tak prosty, jakby się zdawało. Głównie tu, gdzie trzeba sprawdzać czy jest więcej wpisów (podczas przewijania w dół), i tu, gdzie trzeba sprawdzać i pobierać poprzednie wpisy (podczas przewijania w górę). Samo wyświetlanie jest już proste...

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Pisane z głowy, nie wiem czy ten kod cię na cokolwiek naprowadzi, ale warto spróbować. Nie da się napisać fragmentu kodu rozwiązującego twój problem, bo całość to najpewniej coś koło 200 linijek wyjdzie, i to będzie jeszcze ściśle zależne od wszystkich innych algorytmów i protokołu po RSie jaki zaimplementowałeś...
REKLAMA