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

Prosty program do sterowania multipleksowego LED na AVR - jak zacząć?

adrian408 02 Kwi 2008 19:48 2758 7
REKLAMA
  • #1 4986068
    adrian408
    Poziom 16  
    Posty: 253
    Pomógł: 5
    Ocena: 8
    Czy ktoś mógłby mi przesłać jakiś prosty programik ze sterowaniem multipleksowym wyświetlaczy LED pod AVR??? Zaczynam sie dopiero w to "bawić" i nie wiem jak zacząć. Proszę o pomoc. Pozdrawiam
  • REKLAMA
  • #2 4987848
    Mariusz Ch.
    VIP Zasłużony dla elektroda
    Posty: 6181
    Pomógł: 866
    Ocena: 462
    Przenoszę z "Układy elektroniczne DIY.....".
  • REKLAMA
  • #3 4988030
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    W jakim języku?
  • #4 4988059
    rusala
    Poziom 22  
    Posty: 475
    Pomógł: 44
    Ocena: 6
    mozesz zrobic sobie tablice 10 (lub paru wiecej) elementow gdzie zapiszesz weartosci wyrzucane na port w celu zapalenia odpowiednich segmentow (cyfry i znaki np "pusty"). Potem wyrzucasz wartosc i na drugim porcie zapalasz bit od odpowiedniego wyswietlacza, czekasz chwile (ale nie przesadzajac tak zeby nie bylo migotania), gasisz wyswietlacz wyrzucasz wartosc dla kolejnego, zapalasz go i tak w kolko dla wszystkich wyswietlaczy.
  • #5 4995554
    adrian408
    Poziom 16  
    Posty: 253
    Pomógł: 5
    Ocena: 8
    Rozchodzi mi sie o bascoma
  • REKLAMA
  • #6 4996616
    iwan3000
    Poziom 16  
    Posty: 209
    Pomógł: 9
    Ocena: 3
    Google jeszcze nikogo nie pogryzły pełno tego jest na necie i na forum
  • REKLAMA
  • #7 5023979
    gregoorr
    Poziom 18  
    Posty: 232
    Pomógł: 19
    Ocena: 34
    Np:
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Portd = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    
    Config Timer0 = Timer , Prescale = 256
    
    Declare Sub Pobr_znaku(cyfra As Byte)
    
    On Timer0 Mult_wysw
    
    Dim A As Byte
    Dim B As Byte
    Dim C As Byte
    Dim Wart As Byte
    Dim Nr_wysw As Byte
    
    W1 Alias Portb.0
    W2 Alias Portb.1
    
    
    Enable Interrupts
    
    Enable Timer0
    Load Timer0 , 125
    C = 0
    
    Do
    
    Wart = C
    Wart = Makebcd(wart)
    B = Wart And &B00001111
    Shift Wart , Right , 4
    A = Wart
    Wait 1
    C = C + 1
    If C > 99 Then
    C = 0
    End If
    
    Loop
    
    End                                                         'end program
    
    
    Sub Pobr_znaku(cyfra As Byte)
    Portd = Lookup(cyfra , Kody7seg)
    End Sub
    
    
    Mult_wysw:
    
    Load Timer0 , 125
    Set W1
    Set W2
    
    Select Case Nr_wysw
    
    Case 0:
    Call Pobr_znaku(a)
    Reset W1
    
    
    Case 1:
    Call Pobr_znaku(b)
    Reset W2
    
    End Select
    
    Incr Nr_wysw
    If Nr_wysw = 2 Then
    Nr_wysw = 0
    End If
    Return
    
    
    Kody7seg:
    
    Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001,
    Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000
    
    

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy prostego programu do sterowania multipleksowego wyświetlaczy LED na mikrokontrolerach AVR, ze szczególnym uwzględnieniem języka Bascom. Wskazano, że podstawową metodą jest wykorzystanie tablicy wartości segmentów dla cyfr i znaków, które są kolejno wyświetlane na poszczególnych wyświetlaczach poprzez szybkie przełączanie portów i odpowiednie opóźnienia, aby uniknąć migotania. Przykładowy kod w Bascom zawiera konfigurację portów, timerów oraz procedury obsługi przerwań do cyklicznego wyświetlania cyfr w formacie BCD. Dodatkowo podano link do archiwum z przykładami w asemblerze dla AVR, co może być pomocne dla osób chcących poznać alternatywne implementacje. Poruszono także kwestię poszukiwania materiałów w internecie jako źródła wiedzy.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA