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

Jak napisać program w Bascom dla matrycy LED z Atmega8 i 74HC595?

kobi 01 Maj 2006 13:24 5394 6
REKLAMA
  • #1 2580115
    kobi
    Poziom 22  
    Posty: 699
    Pomógł: 23
    Ocena: 16
    Witam
    Na poczatku chce powiedziec ze uzyłem opcji szukaj i pytałęm pana google jednak nic konkretnego nie znalazł
    Do zbudowania tej matrycy uzyłem Atmega8 i 74hc595 (gdzies na forum pałeta sie ten schemat tyle ze zamiast ATmega8 był At90s2313
    Wiem co ma sie pojawiac na wyprowadzeniach jednak nie wiem jak to zrealizowac programowo (zabawe z bascomem zaczołem dopiero nie dawno)
    Mogl by ktos podesłac prosty program np ktory by zaswiecał po koleji linijki matrycy Chciał bym go przeanalizowac
  • REKLAMA
  • #2 2580440
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Bez schematu to za wiele nie da się podpowiedzieć.
  • REKLAMA
  • #3 2580594
    kobi
    Poziom 22  
    Posty: 699
    Pomógł: 23
    Ocena: 16
    Orginalny shemat :
    Załączniki:
    • Jak napisać program w Bascom dla matrycy LED z Atmega8 i 74HC595? test_scroller.gif (42.43 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 2580680
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Ten obrazek jest nieczytelny. Absolutnie nie widać połączeń.
  • REKLAMA
  • #5 2583145
    ktrot
    Poziom 20  
    Posty: 166
    Pomógł: 47
    Ocena: 3
    Ustaw port D jako wyjscie.
    1. Wpisz do PD2 PD1 PD0 wartosc 111 (1 do kazdego pinu)
    2. Do PD3 PD4 wpisz 0
    3. Do PD5 wpisz 0 lub 1 w zaleznosci czy punkt ma byc zapalony czy nie
    4. Do PD3, PD4 wpisz 1 (w tym momencie rejestr 595 przesuwa sie o 1 pozycje
    5.Kroki od 2 do 4 powtorz 40 razy (np w petl FOR)
    6 Na koniec wpisz do PD2 PD1 PD0 cos roznego od 111 np 011 to 4 linia matrycy. (111 to 8 nieistniejaca linia stad krok 1)
  • REKLAMA
  • #6 8278747
    MaRo88PL
    Poziom 11  
    Posty: 17
    Pomógł: 4
    Pozwolicie, że odkopię ten temat, gdyż widzę, że autor ostatniego postu zagląda jeszcze na forum i mam nadzieje, że on lub ktoś inny mi pomogą.

    Tak jak opisałem w temacie:

    https://www.elektroda.pl/rtvforum/topic1713797.html#8278038

    staram się wykonać matrycę led 5 na 24 z użyciem Atmegi16/32 i 3 rejestrów przesuwnych 74HC595.

    ktrot napisał:
    Ustaw port D jako wyjscie.
    1. Wpisz do PD2 PD1 PD0 wartosc 111 (1 do kazdego pinu)
    2. Do PD3 PD4 wpisz 0
    3. Do PD5 wpisz 0 lub 1 w zaleznosci czy punkt ma byc zapalony czy nie
    4. Do PD3, PD4 wpisz 1 (w tym momencie rejestr 595 przesuwa sie o 1 pozycje
    5.Kroki od 2 do 4 powtorz 40 razy (np w petl FOR)
    6 Na koniec wpisz do PD2 PD1 PD0 cos roznego od 111 np 011 to 4 linia matrycy. (111 to 8 nieistniejaca linia stad krok 1)


    Na podstawie wyżej cytowanego fragmentu napisałem kod programu dostosowany do moich potrzeb (podłączenia):

    Do
    
    Z = 23
    
    For X = 0 To 9
    
       For Y = 0 To Z
    
          Portb = &B00000001
          Portb = &B00000111
    
          Porta = Nic
    
          Waitms 1
    
       Next Y
    
    Next X
    
    Z = Z - 1
    
    For X = 0 To 9
    
       For Y = 0 To Z
    
          Portb = &B00000001
          Portb = &B00000111
    
          Waitms 1
    
       Next Y
    
       Portb = &B0000001
       Portb = &B0000111
    
       Porta = M1
    
       Waitms 1
    
    Next X
    
    Z = Z - 1
    
    For X = 0 To 9
    
       For Y = 0 To Z
    
          Portb = &B0000001
          Portb = &B0000111
    
          Porta = Nic
    
          Waitms 1
    
       Next Y
    
       Portb = &B00000001
       Portb = &B00000111
    
       Porta = M1
    
       Waitms 1
    
       Portb = &B00000001
       Portb = &B00000111
    
       Porta = M2
    
       Waitms 1
    
    Next X
    
    Loop
    End 


    wartości dla porta zadeklarowane są przed pętlą główną programu.

    Moim problemem jest to, jak programowo wykonać przesuwanie kolejnych wartości porta aby zaoszczędzić pamięć w układzie i czas potrzebny na wklepywanie nowych tekstów do wyświetlania, ponieważ obecnie każde przesunięcie wpisuję ręcznie.
  • #7 8660370
    kobi
    Poziom 22  
    Posty: 699
    Pomógł: 23
    Ocena: 16
    Do przesuwania bitów służy polecenie shift :) Poczytaj w pomocy bascom'a.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy programowania matrycy LED z wykorzystaniem mikrokontrolera Atmega8 oraz rejestru przesuwnego 74HC595 w języku Bascom. Autor poszukuje prostego przykładowego programu, który kolejno zaświeca linie matrycy, aby móc go przeanalizować i zrozumieć. W odpowiedziach podkreślono, że bez schematu trudno udzielić precyzyjnych wskazówek, a przesłany schemat był nieczytelny. Jeden z uczestników zaproponował sposób sterowania portem D mikrokontrolera, opisując krok po kroku ustawianie stanów na poszczególnych pinach w celu przesuwania bitów do rejestru 74HC595 i zaświecania punktów matrycy. W dalszej części dyskusji pojawił się fragment kodu dla matrycy 5x24 z użyciem Atmegi16/32 i trzech rejestrów 74HC595, pokazujący pętle sterujące portami i opóźnienia. Zwrócono także uwagę na użycie polecenia shift w Bascom do przesuwania bitów. Temat skupia się na praktycznym aspekcie programowania matryc LED z wykorzystaniem rejestrów przesuwnych i mikrokontrolerów AVR w Bascom.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA