Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 3.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #44
RE: Programowanie w języku C w środowisku AVR Studio4
Proszę Jacku, zaznaczyłem odpowiedzialną za to część czerwoną elipsą:
İmage
To będzie lekcja 8 :
Nasz programik potrafi wyswietlać na LCD tylko pojedyńcze znaki - korzystamy w tym celu oczywiście z funkcji bajt_lcd()
Przydałaby się funkcja wyświetlająca całe wyrazy ... żeby to zrobić musicie poznać Tablice ... Przykłady zapisu deklaracji tablicy:
Kod:
char tablica[10];
int liczby[];
Pierwsze to tablica o nazwie "tablica" składająca sie z 10 elementów char (czyli 8 bitowych),
Drugie to tablica, o któej nic nie wiadomo z ilu elementów sie składa, wiadomo natomiast że składa się z wartości int (czyli 16 bitowych).
Przy zapisie wyrazów(a nawet zdań) będziemy korzystać z tablic, które składają się ze znaków czyli char.
Kod:
char tab[]="jakis_wyraz"
tworzy tablicę o nazwie tab 12 elementową, bo jest 11 znaków + ostatni dodawany automatycznie - znacznik końca tablicy "\0" - specjalnie napisałem \0 to nie pomyłka. 0 (samo zero) potraktowane zostanie jako kolejny element tablicy - czyli znak ASCII o kodzie 48 (jeśli nie wiecie co to tablica znaków ASCII to poszukajcie w necie - przyda sie wam).
Wracamy do naszego ostatniego przykładu tablicy ... Jesli w kodzie swojego programu umieścicie definicje tej tablicy a po niej
Kod:
bajt_lcd(tab[3]);
to wyświetli wam czwarty znak tablicy (bo numeracja zaczyna sie od "0" ) - czyli literę i.
Jeśli umieścicie w kodzie
Kod:
bajt_lcd(tab[0]);
bajt_lcd(tab[7]);
to Atmega prześle do wyświetlacza pierwszy znak tablicy (czyli "j"), a następnie ósmy znak z tablicy (czyli "y").
Czyli już wiecie że liczba w nawiasie kwadratowym określa nam który znak z tablicy będzie brany pod uwagę.
Co zrobic by wyświetlały się całe tablice znaków (czyli całe napisy). Wklejcie na samym końcu kodu progrramu (przed ostatnim nawiasem klamrowym) to :
Kod:
char tab[]="to jest napis";
    int i=0;
    while(tab[i]!=0)
    {
        bajt_lcd(tab[i]);
        i=i+1;
    }
skompilujcie i uruchomcie, a zobaczycie efekt. Tłumaczę linijka po linijce co to znaczy:
1. definiujemy tablice znaków o nazwie tab i treści to jest napis (+ znacznik końca tablicy czyli zero, którego tu nie widzimy - ale zawsze na końcu każdej tablicy jest)
2. deklarujemy, że będziemy używac zmiennej i która początkowa wartość będzie równa 0
3. pętla while będzie wykonnywać polecenia pomiędzy nawiasami klamrowymi do momentu kiedy i-ty element tablicy będzie zerem - czyli znacznikiem końca tablicy. Dokładnie zappis ten oznacza "wykonaj jesli i-ty element tab jest różny od zera. != oznacza "różny" (nierówny)
5. wyślij do lcd i-ty element tablicy (pamiętamy że przy deklaracji ustawiliśmy wartość i na 0, więc zacznie wyświetlać od pierwszego (zerowego dla Atmegi) elementu tablicy
6. zwiększ wartość i o 1.
Potem pętla wraca do ponownego sprawdzenia warunku czy i-ty (następny) element tablicy nie jest już zerem czyli znacznikiem końca tablicy. Mam nadzieję że to zrozumiecie ... Spróbujcie to uruchomic u siebie a ja jutro wstawie nowa wersję obsługi wyświetlacza. Jesli wstawicie zamiast i=i+1; to: i=i+2; to wyświetli Wam oczywiście co drugi znak tablicy ... jednak może przeoczyć znacznik końca tablicy !
(Ten post był ostatnio modyfikowany: 25-01-2012 4:41 przez SP4EJT.)
25-01-2012 0:42
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 25-01-2012 0:42

Skocz do:


Użytkownicy przeglądający ten wątek: 42 gości