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.

LCD a tablica znaków AVR[C]

neo_84 12 Lut 2012 12:26 1786 4
  • #1 12 Lut 2012 12:26
    neo_84
    Poziom 14  

    Witam chciałem wyświetlić pojedynczy znak z tablicy i nie wiem jak to zrobić może pokaże na przykładzie :

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Wyświetlacz LCD to hd44780 biblioteka do obsługi lcd pochodzi z książki od mirekk36
    niestety po skompilowaniu wywala mi bład "passing argument 1 of 'lcd_str' makes pointer from integer without a cast" proszę o pomoc jak mogę wyświetlić pojedynczy znak ?

    0 4
  • Pomocny post
    #2 12 Lut 2012 12:40
    tymon_x
    Poziom 30  

    Przekazujesz liczbę z tablicy, a argument funkcji na 99.9% jest wskaźnikiem i drugie tyle procent koniec wysyłania musi być zakończonym znakiem terminatora '\0', bo tego na pewno wymaga ta funkcja.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 12 Lut 2012 13:29
    mirekk36
    Poziom 42  

    neo_84 napisał:
    tymon_x działa ale jak byś mi mógł jeszcze wytłumaczyć dlaczego tablica buf jest 3 elementowa ? buf[0] to maja litera buf[1] ??? i buf[2] znak terminatora, a ten znak terminatora nie jest juz w tab2 na koncu ?


    A skąd ci się teraz wzięła tablica 3 elementowa ? przecież tymon_x nic nie pisał o tym. Podał ci tylko dobry sposób jak sobie wyświetlić pojedynczy znak z całej twojej tablicy jednej czy drugiej.

    Tablica w przykładzie kolegi tymon_x jest przecież 2 elementowa - nie widzisz?

    i wtedy do drugiego elementu zapisujesz sobie zero które będzie oznaczało koniec C-Stringa, a do pierwszego elementu zapisujesz sobie wybrany znak z twojej tablicy. Wtedy możesz spokojnie przekazujesz do lcd_str() wskaźnik na tę nową przejściową tablicę.

    Przecież argumentem do obydwu funkcji (na 100% potwierdzam) musi być wskaźnik do tablicy, a ty chcesz przesłać właśnie pojedynczy znak takim zapisem

    Code:
    lcd_str(tab2[2]); 


    więc kompilator słusznie krzyczy - i ostrzega cię że źle robisz.

    Jak chcesz wysłać pojedynczy znak to możesz też skorzystać z funkcji

    Code:
    lcd_char( tab[2] );


    którą także masz dostępną w tej bibliotece - wtedy można tak przekazać argument jako pojedynczy znak. Musisz jeszcze raz poczytać o przekazywaniu argumentów do funkcji jako wskaźniki i w ogóle o przekazywaniu argumentów - bo tu ci się jeszcze troszkę myli jak widać.

    0