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

Avr wynik dzialania przetwornika AC na postac dziesietna

Marcin_xx1 13 Sty 2009 22:24 1248 11
REKLAMA
  • #1 5995459
    Marcin_xx1
    Poziom 21  
    Witam. Mam problem chyba z tych banalnych jednak nie moge sobie z nim poradzic. Proszę o wyjasnienie jak otrzymac wynik w postaci dziesietnej z wyniku dzialania przetwornika A/C ktory jest zapisany w 8 bitowym rejestrze ADCH . Postac dziesietna potrzebuje do adresowania tablicy.
    Dzieki.
  • REKLAMA
  • Pomocny post
    #2 5995549
    marenc
    Poziom 24  
    Zaadresuj tablice binarnie :P W czym problem? Może nie rozumiem...
  • REKLAMA
  • #3 5995580
    Marcin_xx1
    Poziom 21  
    to by oznaczało dla mnie duże zmiany w programie tablica jest spora i kilkuwymiarowa ponad to nie wiem jak sie za to zabrac moze jednak ktoś mi podpowie jak zgrabnie zamienic ten wynik na dziesietny
  • Pomocny post
    #4 5995605
    marenc
    Poziom 24  
    Ale ja naprawdę nie rozumiem w czym problem? Przecież liczba 0b00000000 i liczba 0x00 i liczba 0 to dokładnie to samo tylko w innych systemach liczbowych...

    0b11111111, 0xff, 255 ... to też to samo ;)

    Jaki język, jakiś przykład o co Ci chodzi może napisz...
  • #5 5995661
    Marcin_xx1
    Poziom 21  
    pisze programik w C ( nie jestem programista) dla atmegi88

    moj problem to wywolanie odpowiedniego elementu z tablicy ktory jest wyswietlany na ekranie telewizora w postaci cyfry dziesietnej - odpowiadajacej wartosci z przetwornika AC

    static unsigned char cyfry[10][11][5] PROGMEM = 
    //static unsigned char cyfry[10][11][5]=
    {
    {{2,2,3,2,2},{2,3,2,3,2},{2,3,2,3,2},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{2,3,2,3,2},{2,3,2,3,2},{2,2,3,2,2}},
    {{2,2,3,2,2},{2,3,3,2,2},{3,2,3,2,2},{3,2,3,2,2},{2,2,3,2,2},{2,2,3,2,2},{2,2,3,2,2},{2,2,3,2,2},{2,2,3,2,2},{2,2,3,2,2},{3,3,3,3,2}},
    {{2,2,3,2,2},{2,3,2,3,2},{3,2,2,3,2},{2,2,2,3,2},{2,2,2,3,2},{2,2,2,3,2},{2,2,2,3,2},{2,2,3,2,2},{2,3,2,2,2},{3,2,2,2,2},{3,3,3,3,2}},
    {{2,2,3,2,2},{2,3,2,3,2},{3,2,2,2,3},{3,2,2,2,3},{2,2,2,2,3},{2,2,2,3,2},{2,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{2,3,2,3,2},{2,2,3,2,2}},
    {{2,2,2,3,2},{2,2,2,3,2},{2,2,3,2,2},{2,3,2,3,2},{2,3,2,3,2},{3,3,3,3,3},{2,2,2,3,2},{2,2,2,3,2},{2,2,2,3,2},{2,2,2,3,2},{2,2,2,3,2}},
    {{3,3,3,3,3},{3,2,2,2,2},{3,2,2,2,2},{2,3,2,2,2},{2,2,3,2,2},{2,2,2,3,2},{2,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{2,3,2,3,2},{2,2,3,2,2}},
    {{2,2,3,2,2},{2,3,2,2,2},{3,2,2,2,2},{3,2,3,2,2},{3,2,2,3,2},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{2,3,2,3,2},{2,2,3,2,2}},
    {{3,3,3,3,3},{2,2,2,2,3},{2,2,2,2,3},{2,2,2,3,2},{2,2,2,3,2},{2,2,3,2,2},{2,2,3,2,2},{2,3,2,2,2},{2,3,2,2,2},{3,2,2,2,2},{3,2,2,2,2}},
    {{2,2,3,2,2},{2,3,2,3,2},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{2,3,3,3,2},{3,2,2,2,3},{3,2,2,2,3},{3,2,2,2,3},{2,3,2,3,2},{2,2,3,2,2}},
    {{2,2,3,2,2},{2,3,2,3,2},{2,3,2,3,2},{3,2,2,2,3},{3,2,2,2,3},{2,3,3,3,3},{2,2,2,3,3},{2,2,2,3,3},{2,2,3,3,2},{2,3,3,2,2},{3,3,2,2,2}}}; 


    oto tablica z cyframi 3-ki to piksele wyswietlane 2-ki są gaszone

    tablice adresuje:
    
    for(i=0;i<5;i++){
    PORTB =pgm_read_byte(&cyfry[cyfra od 0 do 9][yy][i]);
    }
    

    yy -to kolumny
    i - wiersze
  • REKLAMA
  • Pomocny post
    #6 5995743
    marenc
    Poziom 24  
    Czyli chcesz z liczby 0-255 wyciągnąć osobno liczbę np. z 255 chcesz mieć 2, 5, 5?

    Jeżeli tak to:
    setki - wynik/100
    dziesiątki - (wynik%100)/10
    jedności - wynik%10
  • REKLAMA
  • #7 5995769
    Marcin_xx1
    Poziom 21  
    czyli mam rozumiec ze jezeli zastapie cyfry dziesietne binarnymi na przyklad
    PORTB =pgm_read_byte(&cyfry[00000100][yy][i]);
    zamiast
    PORTB =pgm_read_byte(&cyfry[4][yy][i]);
    to bedzie to samo?
  • #9 5995846
    Marcin_xx1
    Poziom 21  
    czy moge wiec wykonywac dzialanie w taki sposob :
    jednosci = ADCH %10
    ?
    w takim razie zmienna "jednosci" bedzie przechowywac wynik binarny jak ja zadeklarowac?
  • #11 5996081
    Marcin_xx1
    Poziom 21  
    HEH czasami moja glupota mnie zaskakuje przeciez oczywiste jest ze wystarczy jeden bajt do zapisania jednego bajta :D
  • #12 5996448
    _StinG_
    Poziom 14  
    tutaj nawet mniej niż jeden bajt, dokładnie do zapisania liczby z przedziału 0..9 potrzebujemy 4 bitów, czyli 0,5 bajta ;)
REKLAMA