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

[m8] [bascom]-mała matrycka 5x5

evil0 10 Gru 2010 12:12 2089 15
REKLAMA
  • #1 8849923
    evil0
    Poziom 10  
    poprawiłem pisownię ,myślę że teraz będzie lepiej javascript:emoticon(':D')

    witam ,jestem nowy na forum
    chciałbym opisać problem,jestem początkującym w zakresie bascoma,mam taką sprawę odnośnie tej mojej matrycki,zbudowanej z diod tzn. 5 kolumn i 5 wierszy
    chciałbym spróbować swych sił w tej budowie:)) zarazem prosząc o jakieś wskazówki i rady . więc tk napisałem taki krótki programik za którego pomocą mogę wyświetlić jakiś znak.ok. chodzi teraz o toco powinienem zrobić aby móc zmienić coś
    co wyświetlane będzie na matrycy.tzn. czego użyć ewen. jak to zrobić jakich poleceń można użyć.
    Zakładając że:
    - mam 5 słupków po 5 ledów na każdym słupku
    - słupki zapalane są na porcie D, (anody diód)
    - ledy (wiersze) sterowane są na porcie B, (katody)
    - użyte piny na portach są od 0 do 4
    to przykładowy program wygląda tak jak poniżej, powinna narysować się
    koperta
    dziękuję za odpowiedzi i pozdrawiam.

    zamieszczam kod programu:



    
    $regfile="m8def.dat"
    $crystal = 8000000
    
    Config Portd = Output : Portd = 0
    Config Portb = Output : Portb = 0
    
    Dim D As Byte : D = 0
    Dim B As Byte : B = 0
    
    Do
    
    Portd = 0
    
    Incr B
    If B = 5 Then B = 0
    Portb = Lookup(B , Tabela)
    
    Incr D
    If D = 5 Then D = 0
    Portd = Lookup(D , Slupki)
    
    Waitms 5
    
    Loop
    
    Tabela
    Data 031 , 027 , 021 , 027 , 031
    
    Slupki:
    Data 001 , 002 , 004 , 008 , 016
  • REKLAMA
  • Pomocny post
    #2 8850272
    arktik1
    Poziom 27  
    Myślę że powinieneś najpierw przeczytać jak się pisze tematy i posty.
    Przeczytaj , wywal do kosza swój 1 temat i zacznij jeszcze raz.
    Po co pisać 2 tematy o tym samym?.
  • #4 8851678
    arktik1
    Poziom 27  
    Przedstaw jeszcze schemat połączenia albo model matrycy.
  • REKLAMA
  • #5 8851967
    evil0
    Poziom 10  
    witam kolego
    tzn , schematu jako takiego nie posiadam ,jest to taka moja prowizoryczna budowa
    wykonana na płytce uniwersalnej .wlutowane są na niej tylko diody 3mm
    połączone w taki sposób że: 5 diód połączonych anodami tworzy jeden słupek(kolumnę) a jest ich pięć , tak samo 5 diód połączonych katodami tworzy
    jeden wiersz , z pięciu ,wszystkie połączenia wierszy i kolumn wyprowadzone są do złącz typu Goldpin poprzez które łączę tą płytkę z płytką zestawu uruchomieniowego z atmega8.
    wiem że tematów jest trochę na necie ale jakoś nikt nie opisał chyba tego w sposób taki aby mógł to zrozumieć początkujący :) np. taki laik jak ja.
    dlatego opisuję tą sprawę bo bardzo chętnie coś takiego bym wykonał.
    może to być odkopywanie starego tematu , ale nie da mnie


    pozdrawiam serdecznie.
  • Pomocny post
    #6 8854537
    semper fidelis
    Poziom 13  
    Masz zrobioną tabele dla jednego znaku tylko. Zmian znaku i tak dalej nie da się tak prosto zrobić, najlepiej stworzyć 5 tabel i każda tabela będzie odpowiedzialna tylko za jedna kolumnę i w niej będą wartości jakie należy wysłać w zależności od tego co chcesz wyświetlić i podczas multipleksowania bedziesz sobie odpowiednie pobierał. Jak chcesz umieszczę mój kod programu tylko do sterowania wyświetlaczem 8x8. Jest naprawdę prosty do zrozumienia.
  • #7 8854618
    evil0
    Poziom 10  
    kolego semper
    byłbym bardzo wdzięczny jeśli mógłbyś coś takiego podesłać
    na start myślę ,że mi pomoże.otóż posiadam też takowy wyświetlacz
    tzn. 8x8 ,diody koloru czerwonego, z tym że najpierw chciałem coś mniejszego
    na początek i skleiłem sobie tak jak pisałem wcześniej taką matryckę
    dziękuję za zainteresowanie
    i pozdrawiam.
  • REKLAMA
  • Pomocny post
    #8 8863604
    semper fidelis
    Poziom 13  
    Zamieszczam w załączniku kod programu. Zmiana tekstu jak można zauważyć odbywa się przez płynne przesuwanie literek po wyświetlaczu. Kod jest modyfikacja programu z książki : Projektowanie mikrokontrolerow AVR w praktyce. Bascom.
    Literki sam robiłem więc mogą być niektóre nie takie jak powinny. Pozdrawiam
  • REKLAMA
  • #10 8867577
    evil0
    Poziom 10  
    semper fidelis napisał:
    Zamieszczam w załączniku kod programu. Zmiana tekstu jak można zauważyć odbywa się przez płynne przesuwanie literek po wyświetlaczu. Kod jest modyfikacja programu z książki : Projektowanie mikrokontrolerow AVR w praktyce. Bascom.
    Literki sam robiłem więc mogą być niektóre nie takie jak powinny. Pozdrawiam

    witam,programik działa ,jest ok, opisy dokładne.mam jedno pytanie , piszesz o tym że sam robiłeś literki, są spoko. ale jak się to robi gdyby zaszła potzeba jakiejś korekty. i drugie pytanie moje to tekst do wyświetlenia.w programie podałeś tak:
    Tekst = "Projekt"

    ja na próbę wpisałem inny i też jest ok :)
    myślałem że tekst twój zapisany jest w poleceniach Data. ale nie pasuje mi coś.
    wiem że jest to kod ASCII , ale nie do końca kapuję. no i te literki , jakoś taż się robi.
    jeśli możesz odpisz w kilku słowach , bedę jak zwykle wdzięczny
    pozdrawiam
  • Pomocny post
    #11 8872071
    semper fidelis
    Poziom 13  
    Te tablice data których jest 8 to tablice do poszczególnych kolumn. Tam są pod nim zapisane wartości (numery są pobierane z kodu ASCII) które mają być wysłane w zależności od literki i kolumny która jest multipleksowana.
    A literki robi się bardzo prosto narysuj sobie kwadrat 8x8 kratek i namaluj literkę i potem tam gdzie masz zamalowane maja świecić się diody w związku z tym że patrzymy na kolumny i tak np dla 1 kolumny chcemy zeby swieciła dioda ostatnia i pierwsza, czyli jeżeli czytamy od góry o będzie 01111110 czyli na 1 i ostatnim wierszu 0 to dioda będzie przewodzić i się zapala;p i tak każdą kolumnę i literkę robiłem po kolei.
  • #12 8875161
    evil0
    Poziom 10  
    kolego semper
    przepraszam jakoś słabo kapuje :)jest 8 kolumn i 8 wierszy, czyli w tych kodach data są zapisane twoje litery ,ale czy to są te z napisu "projekt" ,każda litera w osobnym zapisie -Kolumna 1: ,Kolumna 2: itd. tak ? rozumiem że zapis w pierwszej kolumnie 255 oznacza wygaszony wyświetlacz ,w drugiej początek (wartość 255) to przerwa między literami ,potem kolejne bity tworzące literkę ,i znowu odstęp 255 i następna litera. sorry że zawracam ci głowę i tak dużo pomogłeś :))
  • Pomocny post
    #13 8875469
    semper fidelis
    Poziom 13  
    Nie to co sobie wpiszesz jest obojętne bo to pobiera i tak z tablicy literę o numerze z kodu ASCII. Tam w tablicach jest każda litera z alfabetu znak itp. Tak np na 65 miejscu w każdej z tablic jest zapisana wartość taka żeby przy pobieraniu nr 64 (tablice liczy sie od 0) wyświetliła się litera A. Zobacz sobie to tak odczytaj każdą liczbe która jest na miejscu 65 licząc od prawej z każdej z tych data 1 data 2 itp zapisz te liczby binarnie na ośmiu miejscach jak jest mniejsza to poczatek zerami uzupelnij i teraz w kolumnach obok siebie zapisz i wtedy tam gdzie masz 0 zamaluj i wyjdzie literka;p
  • #14 8877656
    evil0
    Poziom 10  
    Dzięki ogromne kolego :D
    teraz wiem co i jak,odczytałem te litery
    mam nawet tką pomoc w domu ,listę wszystkich znaków i liter tzn. gdzie na której pozycji się znajduje w tym zapisie (data) jest to tabela kodów ascii . tak jak w twoim programie w lini Data .
    w każdej z kolumn mieści się 127 pozycji. łapię już temat
    cieszę się że pomogłeś i wdzięczny jestem za pomoc

    pozdrawiam

    p.s
    odezwę się jak wszystko posklejam ,i zmontuję do końca ,wszystko na płytce
  • #15 8895567
    semper fidelis
    Poziom 13  
    Musisz tak dobrać preskaler aby odświeżanie było częściej niż mniej więcej 30 -40 razy na sekundę jednej kolumny. Czyli całego wyświetlacza 8 * 30 np to daje 240. Powiedzmy ze to jest 250 na sekundę czyli odświeżanie co 4ms.(minimum) W moim programie jest co 2ms.
    Jak masz 16Mhz to tak dobierasz preskaler aby jeden cykl trwał pare mikrosekund wtedy po pomnożeniu przez jakaś liczbe która ładujesz do Timera0 powinno Ci wyjść 2 lub 3ms.(4 to minimum tak mi sie wydaje więc lepiej jak będzie częściej).
REKLAMA