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.

Jak podłączyć ok 20 wyśw. siedmiosegmentowych do jednego uP?

badyl00 23 Paź 2006 00:14 9739 83
  • #1 23 Paź 2006 00:14
    badyl00
    Poziom 26  

    Pytanie tak jak w temacie. Chodzi o procka z rodziny AVR. Chcę jeszcze aby kilka linii procesora zostało wolnych na I2C i RS232. W jaki sposób podłączyć taką ilość??

    0 29
  • Pomocny post
    #2 23 Paź 2006 00:17
    Balu
    Poziom 38  

    Użyj np. 74hc 595 (rejestr)...ale czy to wyrobi w trybie multipleksowanym taki avrek...:>
    P.S. A cóż to za projekt?

    0
  • Pomocny post
    #3 23 Paź 2006 00:43
    zbigigorszczak
    Poziom 11  

    Jakkolwiek byś nie sterował, to wyjdzie problem (ilość nóżek procka, zagmatwanie płytki, multipleksowanie .........). A może by tak użyć jakiegoś scalaka, który do tego został stworzony. W poprzednim (albo jeszcze wcześniejszym) numerze EP był opublikowany taki patent. Ja właśnie rozgryzam scalak MC14489BP. Każdy obsługuje 5 wyświetlaczy i można je łączyć w szereg. Wg data sheet 6. Czyli 5x6 daje 30 wyświetlaczy. Sterujesz to wszystko trzema liniami z procka (bez względu na ilość wyświetlaczy). Całość myka po interfejsie SPI, czyli wyrobi to każdy procek. Chętnie poklikam na ten temat. Klikaj na maila bo nie zawsze jestem na forum.

    0
  • #4 23 Paź 2006 01:27
    badyl00
    Poziom 26  

    Ma to być Tablica z wynikami na salę gimnastyczną sterowana radiowo.

    0
  • #5 23 Paź 2006 01:51
    tatronic
    Poziom 24  

    Witam!
    A jaki procek chcesz uzyc do tego.Bo to chyba od tego bym zaczal całą dyskusje.Pozdrawiam Arek

    0
  • #7 23 Paź 2006 08:14
    badyl00
    Poziom 26  

    Napisane jest przecież że rodzina AVR. Pewnie będzie to 90S8515.

    0
  • Pomocny post
    #8 23 Paź 2006 10:14
    gwolf
    Poziom 14  

    Witam, problemy pewnie sie pojawią, ale do multipleksowanego sterowania wyświetlaczy możesz użyć ekspandera bodajże 7447(albo jakoś tak) dane wysyłasz w I2C a na wyściu masz port równoległy 8 bitów. Takich układów potrzeba kilka, ale to jest do wykonania. Skoro i tak bedziesz wykorzystywał tę magistrale, I2C nie powinno być problemem,
    Powodzenia pozdrawiam!

    0
  • Pomocny post
    #9 23 Paź 2006 17:23
    mirekk36
    Poziom 42  

    Witam,

    tak jak powiedział powyżej kolega gwolf - użyj expanderów I2C a zamiast 8bitowego możesz użyć 16bitowych. Pod drugiej stronie tych expanderów możesz urządzić sobie już wszystko wg woli. A co do AVR-ków jak niektórzy mówią - wyrobią się nawet z większą ilością multipleksowanych wyświetlaczy. Pomimo to, że na maxa mogą pracować z trochę mniejszą częstotliwością niż PIC-ki to jednak wykonują 1 rozkaz w 1 cyklu!!! a PICki w 4 cyklach... ;) więc które tu są szybsze ???? ;) Ja właśnie powoli zabieram się za sterowanie AVRkiem wyświetlacza sterującego 10szt wyświetlaczy graficznych 8x8 LED... po wstępnych próbach wszystko wskazuje, że projekt zakończy się sukcesem (mam nadzieję). A będę używał do tego rejestrów 595 - tak jak ktoś wspomniał na początku - to też dobry pomysł i przy dobrze skonstruowanych procedurkach (najlepiej w asemblerze - wszystko będzie śmigać że ho... )

    pozdrawiam

    0
  • #10 23 Paź 2006 18:26
    badyl00
    Poziom 26  

    Chyba zrobię to na układach PCF8574 albo PCF8575 tylko niech mi ktoś pomoże w podłączeniu do tego wyświetlaczy i całości do procka. I w jaki sposób tym sterować. Proszę o wyrozumiałość bo dopiero zaczynam mikroprocesory w szkole i proszę kogoś o pomoc w realizacji projektu.

    0
  • Pomocny post
    #11 23 Paź 2006 18:39
    Samuraj
    Poziom 35  

    Pojedynczo to chyba raczej się nie da (jedne układ na jeden wyświetlacz), dlatego że te układy mają tylko trzy bitu ustawiania adresu tak, więc na jednej magistrali może pracować max 7 układów.
    Chyba ze poświecić jeden układ do ustawiania aktywnego wyświetlacza a drugi do wybranych segmentów. Wtedy bardzo by to uprościłoby cały układ, lecz skomplikowałoby trochę sterowanie (nie wiem czy czasowo by PCF'y wyrobiły).

    0
  • #12 23 Paź 2006 18:43
    mirekk36
    Poziom 42  

    Witam,

    lepiej użyj PCF8575 - za pomocą jednej kostki będziesz mógł w prosty sposób wysterować 8szt wyświetlaczy a każda następna kostka następnych 8szt itd. Co do połączenia z prockiem to przecież I2C (magistrala 2 przewodowa) po drugiej zaś stronie: np młądszą częścią wyjściowych 16tu bitów sterujesz 8 segmentami (7segm + kropka) a starszą częścią 16tu bitów sterujesz anodami bądź katodami wyświetlaczy. Wyjścia tych expanderów przeznaczone są do sterowania LEDami ale przy takiej ilości wyświetlaczy jeśli będziesz to robił bez dodatkowych buforów czy tranzystorów to lepiej sterować tym multipleksowo. Jest to oczywiście jeden z wielu możliwych sposobów podłączenia wyświetlaczy ale dzięki takiemu rozwiązaniu jak tu opisuję na po drugiej stronie ekspanderów masz już tylko wyświetlacze i rezystorki ograniczające prąd segmentów.

    pozdrówka

    0
  • #13 23 Paź 2006 23:26
    badyl00
    Poziom 26  

    hmm mniej więcej rozumiem. Tylko pytanie: czy przy sterowaniu multipleksowym 8 wyświetlaczy będą one świeciły z max jasnością?? Bo przecież prąd płynie tylko przez 1/8 okresu.

    0
  • #14 23 Paź 2006 23:31
    Balu
    Poziom 38  

    To wtedy puszcza się odpowiednio większy prąd...

    0
  • #15 23 Paź 2006 23:59
    badyl00
    Poziom 26  

    Cytat:
    To wtedy puszcza się odpowiednio większy prąd...

    A czy to nie zmniejszy żywotności diody??

    Poniżej zamieszczam schemat (odręczny myśle że nie będziecie sie czepiać do wykonania) Chodzi o to aby ktoś to ocenił czy dobrze to rozumuję. na schemacie pominołem rezystory. Jeżeli coś jest nie tak to proszę o poprawę.

    0
  • Pomocny post
    #16 24 Paź 2006 00:40
    kamyczek
    Poziom 34  

    Schemat dość ciekawy tyle że aby cały czas wyświetlać i nie zauważyć ze to multipleksowane wyświetlacze powinno sie je odświeżać minimum z 25 razy na sekundę 25*20 daje 500 razy na sekundę jesli zaczniemy zmieniać po I2C 20 wyświetlaczy na pcf-ach daje to przy 100kHz 100k/8/2/20 około 312 zmian na sekundę
    wobec czego odświeżanie bedzie miało dla każdej cyfry wartość 15Hz ,wynik : będzie widoczne migotanie wyświetlacza ... co do oporników musza być w bazach tr... i powinny znaleźć sie miedzy portem a ledami

    0
  • #17 24 Paź 2006 00:48
    badyl00
    Poziom 26  

    W takim razie prosze o jakąś propozycje w jaki sposób wyeliminować migotanie?? A może by tak podłączyć 3xPCF8575 każdy po 7 wyświetlaczy multipleksowo i te PCFy podłączyć osobno do procka. O ile sie da bo w uP dopiero zaczynam zabawe i nie wiem czy taki AVR moze miec kilka lini SDA i SCL. Chodzi mi o to aby sterować kazdego PCFa z osobnych linii procka a nie łączyć ich.

    0
  • #18 24 Paź 2006 01:44
    mirekk36
    Poziom 42  

    Witam,

    co do schematu blokowego który naszkicowałeś to właśnie coś takiego starałem się opisać w poprzednim poscie czyli chyba dobrze opisałem ;) co do twojego pytania o żywotność diody przy zwiększonym prądzie to odpowiadam - wszystko zależy jak będzie duży ten prąd i ile czasu będzie trwał ;) Kolega Balu ubiegł moją podpowiedź a miał 100% rację. ... czyli zrób tak: na początku wstaw sobie rezystorki z zapasem żeby nie puszczać zbyt dużego prądu - a jak już napiszesz procedury i będziesz wiedział dokładnie co jaki czas i na ile się zapalają segmenty aha i co najważniejsze zoptymalizujesz już do końca kod - to wtedy jeśli nie da się już "programowo" (współczynnikiem wypełnienia) rozjaśnić - to wtedy zaczniesz dobierać mniejsze rezystorki (pamiętaj też o tym, że expanderki mogą na maxa zapodać łącznie ze 100mA więc jeśli kupisz wyświetlacze o małej jasności i będzie trzeba je sterować większymi prądami (to przy zapalonych 8 segmentach) przekroczysz 100ma. W takim przypadku możesz sobie użyć po drodze tranzystorków jak narysowałeś ale mogą też być potrzebne dodatkowe do sterowania segmentami. (czyli dodajesz jeszcze 8 tranzystorków) albo jakiś bufor po drodze np ULN2803 i po sprawie ;) .... co do sterowania to w przerwaniu jakiegoś timerka - wysyłasz do 3 expandeków kody - zapalające po kolei każdą cyfrę. Dzięki takiej organizacji unikniesz "śmieci" na wyświetlaczu bo dane do kolejnej cyfry będą leciały sobie do układów w czasie gdy pali się poprzednia i przełączenie robi już sam expanderek...

    żeby to dobrze zoptymalizować przydałoby się pisać sofcik do AVRka w asemblerze albo chociaż C. W Bascomie możesz osiągnąć czasem mierne rezultaty. W czym ty programujesz?

    pozdrówka

    Dodano po 25 [minuty]:

    Witam,

    kolego kamyczek z całym szacunkiem ale w tym przypadku jeden PCF steruje nie 20-toma a 8-ma wyświetlaczami więc jest duuży zapas aby zorganizować wyświetlanie tak żeby nie było żadnego migotania... taka była moja sugestia dla kolegi badyl00 ( a tak przy okazji to badyl00 napisał przed swoim rysunkiem, że specjalnie pominął rezystorki przy bazach i segmentach)...
    ... czyli do rzeczy - można sobie ustalić, że dla 8 wyświetlaczy odświeżanie będzie nawet więcej niż 25 razy na sek - niech będzie nawet 30razy na sek ;) ... ustaiwiamy sobie timer na taką częstotliwość i wychodzi nam, że w jednym przerwaniu mamy ok 4ms wolnego czasu aby porozsyłać dane do naszych 3 PCFków ... to bardzo dużo czasu - spokojnie starczy bez stresów aby wysłać do każdego z 3 PCFków polecenie zapalenia odpowiedniej cyfry (oczywiście dobrze jest użyć procka ze sprzętowym USI żeby nie gmatwać sobie kodu jeśli się jest na dodatek początkującym ;) a i tak w tym przerwaniu jeszcze starczy nam czasu, jak coś, na dodatkowe rzeczy ;) .... więc kolego badyl00 SPOKOJNIE ;) nie musisz tworzyć oddzielnych linii SDA i SCL - weź sobie dowolnego - "najniższego" atmelka ze sprzętowym USI i zrobisz to bez żadnego migotania w takim rozwiązaniu - wszystkie PCFki podłączone oczywiście do tej samej magistrali ;) ... czyli obsługujesz je niejako równolegle

    pozdrówka

    Dodano po 16 [minuty]:

    ... żeby już nie było niedomówień (oczywiście dodam tak jak wcześniej było powiedziane, że to tylko schemat blokowy i pominięte sąrezystory do baz i segmentów):

    Jak podłączyć ok 20 wyśw. siedmiosegmentowych do jednego uP?

    mam nadzieję, że to zobrazuje dobrze tę koncepcję ;)[/img]

    0
  • Pomocny post
    #19 24 Paź 2006 06:58
    ktrot
    Poziom 19  

    Jeżeli chodzi o multipleksowanie to zamiast multipleksować poszczególne cyfry proponuję multipleksować segmenty - we wszystkich cyfrach na raz. Znamy treść napisu więc sprawdzamy, w których cyfrach ma być zapalany segment 'a' następnie 'b' itd.
    Zalety:
    1. Stała częstotliwość multipleksowania niezależna od ilości cyfr i wynosząca 7 (lub 8 z kropką dziesiętną)
    2. Jeden program dla praktycznie dowolnej ilości cyfr - piszemy np program obsługujący 32 wyświetlacze a czy w rzeczywistości bedzię ich 3, 8 czy 20 nie ma znaczenia. To, że program bedzie próbował wyswietlać na niestniejących wyświetlaczach nie ma znaczenia dla jego pracy (patrz punkt 1)
    3. Łatwiej panować nad jednakową jasnością segmentów w poszczególnych wyświetlaczach (chociaż to najbardziej zależy od układu)

    Jeżeli chodzi o ikład elektroniczny to niezależnie od sposobu multipleksowania proponuję odejście od rozwiązania typu: jeden procesor + elementy sterujące (ekspandery, rejestry itd). Zamiast tego proponuję użyć procesor pomocniczy (lub procesory).

    Przykładowe rozwiazania:
    1. Avr ATMega8535 - wykorzystane wszystkie porty, możliwość sterowania 21 lub 22 wyswietlaczami w zalezności czy sterowanie przez SPI czy I2C z procesorem głównym.
    2. 2xATMega8 - dwa moduły, kazdy z nich może obsłużyć do 12 (13) wyświetlaczy, transmisja I2C
    3. 3xATmega8 - to polecam - modyfikacja punktu 2, kazdy z procesorów obsługuje 8 wyświetlaczy, ze względu na to, że nie musimy uzywać 'kawałków' portów łatwiejszy program i łatwiejsza realizacja elektroniczna, niedużo większy koszt - 1 procesor to ok 6zł.
    4. Rozwiązanie najdroższe i najbardziej pracochłonne (pod względem elektronicznym nie programowym) - jeden procesor na jeden wyswietlacz. Procesor np ATTiny2313 lub ATTiny26 ew Mega8, koszt około od 60 do 120zł, wyświetlanie statyczne. Wspominam o tym rozwiązaniu ze względu na dwie zalety: ze względu na modułowy charakter poszczególnych wyswietlaczy można je dowolnie rozstawiać ( w przypadku użycia magistrali I2C te rozstawianie będzie ograniczone), podłączając moduły do zasilania i magistrali (nie musi być to I2C), driga zaleta to mozliwość fotografowania takiej tablicy co w przypadku wyświetlania multipleksowego jest raczej niemożliwe, w przypadku filmowania jest trochę lepiej ale i tu mogą wystąpić kłopoty.

    Wszystkie wymienione rozwiązania mają jedną cechę wspólną - odciążają procesor główny pozwalając skupić się w nim na obsłudze klawiatury, transmisji radiowej, ponadto nie zajmują portów procesora. Przykładowe rozwiązania 1 do 3 są prawdopodobnie tańsze niż rozwiązanie z ekspanderami PCF.

    Pozdrawiam

    0
  • Pomocny post
    #20 24 Paź 2006 08:53
    adamusx
    Poziom 27  

    Zgadzam się z kolegą wyżej. Najkorzystniejsze jest rozwiązanie nr 3 (ew 2) Procesor Atmetga8 kosztuje kolo 5-6zł ( mniej niz ekspander PCF) nie musisz sie bawic sie w zadne ekspandery, zatrzaski, rejestry itp. Mniej skomplikowany uklad elektroniczny, latwiej oprogramowac i moze nawet taniej wyjdzie. Poza tym co najwazniejsze taki modul bedziesz mogl wykorzystac w inncyh projektach - sterowanie za pomoca np I2C.

    0
  • #21 24 Paź 2006 09:31
    kamyczek
    Poziom 34  

    I2C jest magistrtalą woną jeśli dochodzi do tego fakt obsługi kilku układów na tej szynie dzieje sie to bardzo wolno znacznie szybciej można to wykonać stosując magistralę spi i rejestry 4094 a najszybciej zamiast całej tej elektroniki mega8 musisz zdac sobie sprawę że chcąc używać tego samego procesora do innych celów będziesz musiał przewidzieć ciągłe przerwania do obsługi wyświetlacza albo napisać program tak aby co określony czas dokonywał odpowiednio odswieżania wartości wyświetlacza led

    0
  • #22 24 Paź 2006 13:31
    adamusx
    Poziom 27  

    I2C moze szybka nie jest ale w zupelnosci wystarczy do wyslania 3 krotkich ramek dla trzech sterownikow LEDow. Przeciez za pomoca I2C nie musimy juz przszesylac danych multipleksowanych tylko gotowe wartosci liczbowe na poszczegolne bloki wyswietlaczy!!!

    0
  • #23 24 Paź 2006 13:33
    mirekk36
    Poziom 42  

    Witam,

    oczywiście koledzy wyżej mają rację, problem wyświetlania można rozwiązać nawet na 1000sposobów. Ale ja z kolei pozostanę przy swoim zdaniu, że do tego aby wyświetlać cyfry na wyświetlaczach i aby odciążyć procesor - zastosujmy jak najprostsze rozwiązania. Wg mnie propozycje kolegi ktrot również będą działały i można jeszcze je mnożyć ale.... ludzie dochodzimy do absurdu - angażować na każdy wyświetlacz 1 procesor ???!!!!???? - to już "lekka" przesada ;) a nawet "ciężka"

    ... wogóle angażowanie do zwykłego wyświetlania już kilku procesorów to prawie absurd (sorry) - ale problemy z programowaniem każdego z nich oddzielnie, później wykrywanie ew usterek czy problemów, przeprogramowania procesorów itd itp .... to masakra (nie wspominając już o MEGA marnotrastwie portów i to nie jednego a wielu procków) - na uruchamianiu takiego układu mniej doświadczony adept elektroniki mógłby spędzić miesiące!!! (oczywiście braki umiejętności programowania można czasem rozwiązywać dobudowywaniem wszędzie procesorków aby uzyskać w efekcie końcowym statyczne (najprostsze) wyświetlanie a zarazem to marnotrastwo prądu i energii)

    ... kolega badyl00 na początku wspomniał o procesorku, I2C i RS232 - dlatego zasugerowałem mu rozwiązanie na PCFach ale już kolejny kolega balu mówił też o rejestrach 595 miał tylko obawy czy to wyrobi na atmelku ;)....

    ... przedstawiam więc jeszcze jeden projekt. Tutaj można sobie bez problemu rozbudowywać i pomniejszać układ dostosowując go dowolnie do potrzebnej ilości wyświetlaczy. Odświeżanie można zrobić z dosyć dużą częstotliwością tak że nie będzie żadnych problemów z fotografowaniem i filmowaniem. Obsługa programowa MEGA PROSTA w jednym przerwaniu (kolego kamyczek przerwania to jedno z podstawowych narzędzi w uC i nie mów tak jakby to był jakiś cięzki grzech że:
    "...będziesz musiał przewidzieć ciągłe przerwania do obsługi wyświetlacza ..."
    ... więc jak mówię w tym przerwaniu kolego badyl00 i tylko w jednym procku!!! zorganizujesz sobie wyświetlanie - obojętnie czy z multipleksowaniem cyfr czy wyświetlaczy! - "zmarnujesz" na to tylko 3-4 linie sterujące procesora - więc cała reszta pozostanie ci na obsługę innych urządzeń przez I2C, przez RS232, obsługę klawiatury i wielu innych pomysłów. Klawiaturkę - jesli będzie potrzebna można wykorzystywać w tym samym przerwaniu albo znowu użyć 8bitowego PCFka i zrobić sobie super klawiaturkę , która będzie generowała przerwanie po naciśnięciu dowolnego klawisza i np w INT1 sobie to obsłużysz! (mam nadzieję, że w kolejnych postach nie pojawią się kolejne kontr propozycje aby robić klawiaturę i do obsługi każdego klawisza zaprzęgać ODDZIELNY PROCESOREK ? ;) ;) ;)

    Jak podłączyć ok 20 wyśw. siedmiosegmentowych do jednego uP?

    n - oznacza, że można to rozbudować o kolejne moduły

    pozdrawiam[/b]

    (PS... oczywiście tak jak wspomniał powyżej kolega adamusx można również zastosować poprzedni projekt na PCFkach - to bardzo miłe scalaki i wcale nie są droższe niż procki!!! ;) )

    0
  • Pomocny post
    #24 24 Paź 2006 13:37
    zumek
    Poziom 39  

    A co byście powiedzieli na: 2 x 74154 + 2 x 74164 + 32 x PNP + 8 x PNP/NPN = 32 wyświetlacze 7-seg. sterowane 4 pinami :?:
    Trzeba również pamiętać , że należy znacząco zwiększyć prąd segmentów , by przy multipleksowaniu nie świeciły za słabo , a przy 20-tu 7-seg. AVR-ek , czy też PCF8574 , mogą takiego prądu nie wytrzymać , więc tranzystorki na segmenty też się przydadzą :(
    Zaś sterowanie takim ustrojstwem , to mniej niż 1% czasu proca , przy 60Hz na segment i F_CPU=16MHz.
    Tak sobie teoretyzuję :)

    Piotrek

    0
  • #25 24 Paź 2006 13:41
    mirekk36
    Poziom 42  

    ... no własnie kolego zumek powyżej przedstawiłem chyba również i twoją koncepcję ;) a co do zastosowania pośrednich bądź to tranzystorków czy buforków typu ULN2803 to masz rację - zawsze można to bez problemu dołożyć ;)

    pozdrówka

    0
  • #26 24 Paź 2006 13:43
    zumek
    Poziom 39  

    mirekk36 napisał:
    ... no własnie kolego zumek powyżej przedstawiłem chyba również i twoją koncepcję ;) a co do zastosowania pośrednich bądź to tranzystorków czy buforków typu ULN2803 to masz rację - zawsze można to bez problemu dołożyć ;)

    pozdrówka

    Jakoś tak jednocześnie nam się myślało/pisało :D

    Piotrek

    0
  • #27 24 Paź 2006 14:40
    badyl00
    Poziom 26  

    Dzięki za dotychczasowe odpowiedzi. Raczej zdecyduję sie na układ z scalakami 74HC595. Oczywiście dojdą do tego ULN2803 bo wyświetlacze będą zbudowane z kilkudziesięciu LEDów. Tylko prosiłbym kogoś o napisanie przykładowego programu w BASCOMie AVR do sterowania tym ustrojstwem. Sorki że tak tylko prosze o coś ale tak jak wcześniej wspomniałem tyle co zaczołem sie bawić w programowanie i nie za bardzo znam jeszcze te wszystkie pojęcia (przerwania,wypełnienie,czasy itp) także proszę o to aby ktoś mi to wytłumaczył albo dał odnośnik do jakiegoś opisu.

    0
  • #28 24 Paź 2006 15:23
    mirekk36
    Poziom 42  

    Witam,

    kolego badyl00 napisanie programu tak "wprost" w baskomie to nie takie proste. Przecież twój procek musi realizować jeszcze inne rzeczy zapewne jak klawiatura, wysyłanie czegoś po RS232 czy I2C lub inne i ciężko tak w oderwaniu od wszytskiego zaproponować kawałek kodu tylko do wyświetlacza - trzeba by było znać przynajmniej algorytm działania całości - ale chyba nie chodzi ci o napisanie programu dla procesorka, który będzie ci robił "wszystko" ? bo bo co to miałoby być to wszystko? ;) ... poza tym ja sam niedawno tzn ok miesiąc temu wziąłem się za programowanie w asemblerze - to nie takie trudne jak piszą, już mam za sobą wiele różnych procedur zrobionych i sprawdzonych na moje potrzeby... ;) przecież "grzebanie" się w tym i uczenie się tego to sama przyjemność ! ;) .... ale jeśli tobie chodzi tylko o to aby tutaj ktoś od początku do końca ze szczegółami i wsadem programowym coś zrobił to chyba troszeczkę nie tak ;) .... albo ja czegoś nie rozumiem w twoim ostatnim pytaniu ;)

    ja akurat w baskomie prawie wogóle nic nie robię tylko asm - ale mogę postarać się podać ci przynajmniej wstępny algorytm jak tym sterować: (jeśli popełnię jakiś bład to napewno inni koledzy mnie zaraz poprawią)
    1. przeznacz część pamięci RAM na dane ukazujące się na wyświetlaczu (w baskomie będą to zmienne albo tablica zmiennych)
    2. postaraj się jednak zapoznać w minimalnym stopniu z uruchomieniem przerwania od Timera (to podstawa i nie trudne) - przygotowujesz poprostu procedurę, która będzie wyłączne się wykonywać w czasie gdy ruszy przerwanie.
    3. Ustaw wartość Timera na np częstotliwość ok kilkaset Hz - później ustawieniem preskalera będziesz mógł łatwo to zmieniać aby dobrać odpowiednią do oswieżania i jasności
    4. W procedurze przerwania Timera (zakładając, że mutipleksujemy segmenty a nie cyfry) sprawdzaj cyklicznie na których cyfach w pamięci RAM występuje zapalony segment A potem B potem C itd
    5. "Wsuń" potem zapalony segment jako najbardziej znaczący bajt i potem kolejno bajty które zapalą odpowiednie cyfry gdzie znajduje się zapalony segment - wsuń to wszystko szeregowo do widocznych na schemacie rejestrów
    6. Po operacju "wsunięcia" zatrzaśnij dane na wyjściu (dzięki temu wsuwane dane nie będą psuły obrazu)
    7. powtarzaj te kroki od pkt.4 cały czas w przerwaniu.
    8. W programie głównym możesz natomiast bezpośrednio wpisywać odpowiednie dla ciebie wartości do poszczególnych zmiennych, które odpowiadają za dane wyświetlane na poszczególnych wyświetlaczach. Jeśli chcesz obsługiwać to tylko przez RS to w procedurze obsługi RSa poprostu odbieraj dane i odrazu wpisuj je do tej pamięci "obrazu" ;) analogicznie w procedurze odbioru radiowego - wczytuj i odrazu wpisuj do pamięci i to wszystko. Całą resztą bezboleśnie i bez narzekania na trudności zajmie się za ciebie przerwanie(procedura) Timera ;)

    .... a jeśli to jest projekt komercyjny i chcesz, żeby zrobił go ktoś tu na forum to poprostu zleć to komuś i już ;)

    pozdrawiam

    0
  • #29 24 Paź 2006 15:45
    ktrot
    Poziom 19  

    Tak już OT:

    Cytat:
    wogóle angażowanie do zwykłego wyświetlania już kilku procesorów to prawie absurd


    Przyznaję się publicznie do wielu absurdów, które popełniłem:

    - nie używam NE555 , zamiast tego używam np ATTiny11/12/15 - dlaczego? Bo nie lubię dobierać rezystorków, lubię większą precyzję doboru częstotliwości i wypełnienia, między innym generator napięcia ujemnego dla LCD zrobiłem na uC.

    - w samochodzie wskaznik sondy lambda pracuje na avr zamiast na normalnej kości obsługującej linijkę świetlną

    - w zasilaczu zamiast 4 potencjometrów użyłem, o zgrozo!! 4 procesorków połączonych z impulsatorami ze starych myszy - dlaczego? bo lubię zmienne zakresy przestrajania napięcia, bo 10 obrotowe potencjometry są drogie a z resztą nie zawsze potrzebne, bo nie lubię jak mi dziecko pokręci gałkami zmieniając nastawy.

    - zamiast uzyć jak normalny elektronik ICL8038, MAX038 czy czegoś podobnego uzyłem uC do zbudowania generatora sygnałowego

    i wiele innych przestępstw...

    Moze do tego aby traktować uP jako normalne kości elektroniczne wystarczyłaby zmiana nazwy? np na 'uniwersalny układ programowalny' w skrócie UP zamiast uP

    Żeby nie było całkiem OT odniosę się do jednej wypowiedzi:


    Cytat:
    oczywiście braki umiejętności programowania można czasem rozwiązywać dobudowywaniem wszędzie procesorków aby uzyskać w efekcie końcowym statyczne (najprostsze) wyświetlanie a zarazem to marnotrastwo prądu i energii)


    przypomne koledze, ze jasność wyświetlaczy LED zależy od wartości skutecznej przepływającego przez nie prądu a co za tym idzie przy wyświetlaniu statycznym i dynamicznym pobór pradu jest taki sam (jezeli segmenty maja świecic jednakową jasnością) natomiast pobór pradu przez uC wynosi (przy małej czestotliwości zegara) 1 do 2mA co oznacza przy 20 wyświetlaczach pobór prądu jak przez 2-3 segmenty. Z resztą można przeczytać mój post - nie jestem zwolennikiem statycznego wyświetlania.

    0
  • #30 24 Paź 2006 16:18
    adamusx
    Poziom 27  

    Popieram kolege wyżej.
    Co za problem wgrać jeden program do prcoka wiecej. W zasadzie jak uklad ma byc cyfrowy to odchodzi sie od analogowych rozwiazan typu generatory na 555, potencjometry analogowe itp. AVRka mozna juz kupic za 3 zł, co do marnowania pinow... i co z tego ze sie zmarnuja przecież to nie koniec swiata:) Czy odrazu trzeba wykorzystac wszystkie piny ??

    0