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

Sterowanie wyświetlaczem 7 segmentowym przez port RS232

zincum 23 Sie 2009 10:56 6853 17
REKLAMA
  • #1 6923515
    zincum
    Poziom 10  
    Witam. Na start mówię że dopiero zaczynam przygodę z programowaniem (c++).
    Ale BTW. Chcę podłączyć sobie 7-10 diod LED lub jeden wyświetlacz 7-mio segmentowy pod port RS232 i sterować owymi diodami programem na komputerze. I teraz moje pytanko a raczej kilka.
    1.Ile mogę podłączyć diod LED pod port RS232 nie używając avr.
    2.Jeżeli już to jak zbudować prosty sterownik ale nie oparty na avr
    3.Jak zbudować prosty sterownik na avr.
    Jeżeli coś to proszę o jakieś linki czy informacje.
    Chciałbym się nauczyć trochę obsługiwania portu RS232 i mam już w planach zrobienie prostych gierek typu "jaka cyfra jest na wyświetlaczu numerycznym" lub pojawianie się punktów w grze "tak/nie" na "punktomierzu" RS232.

    (Do moderatorów/administratorów nie wiedziałem gdzie wrzucić ten temat więc jeżeli nie będzie on na właściwym miejscu to proszę o przeniesienie)
  • REKLAMA
  • Pomocny post
    #2 6923550
    Rariusz
    Specjalista Automatyk
    Witam

    Co do ilości podłączanych wyświetlaczy to zależy od układu jakim będziemy sterować diody led.
    Tutaj link gdzie znajdują się takie rozwiązania:

    http://www.lcd.elementy.pl/rs232.htm#DieSeriellen

    Co do budowy sterownika do AVR to można kupić nowy lub zbudować wystarczy poszukać na elektrodzie lub goglach.
    Jeśli chcesz sterować bezpośrednio przez port com to należy zastosować Decoder/Driver wyświetlacza 7 seg z RS 232 ale lepiej zaopatrzyć się w płytkę do AVR oraz programator ISP jak na początek. Programy do AVR są darmowe wiec tylko działać.

    Pozdrawiam
  • Pomocny post
    #3 6923552
    kuuczoo
    Poziom 26  
    Witam
    Wyjść w porcie masz 3 więc o ile korzystasz z portu z płyty głównej a nie jakiejś przejściówki to możesz sterować 6 diodami (na porcie RS232C masz przy "0" -12V więc dioda LED umieszczona w drugą stronę będzie świecić.
    Jeśli chcesz sterować czymś więcej bez AVRa to musisz zaopatrzyć się w dekoder/dmux z 3 bitowym adresem, ale funkcjonalność będzie kiepska.
    Jeśli chodzi o sterownik na avr to sprawa jest banalna, bo podpinasz RS232 przez max232 do linii RX i TX i wysyłasz na avr jakieś znaki/komendy, które powodują odpowiednie wysterowanie portami avra. Nie powinieneś mieć żadnego problemu w znalezieniu pomocy na ten temat na elektrodzie jak i w sieci.
  • #4 6923649
    zincum
    Poziom 10  
    Skłoniłem się do wersji na avr i jednego wyświetlacza 7-seg. Czy ktoś mógłby pomóc albo powiedzieć czy na Atmega8 da się coś takiego zrobić albo zapodać jakieś informacje? Na Elektrodzie nie znalazłem niczego co by było wyjaśnione (schemat czy coś...)
    Z tej stronki co zapodał Rariusz też niewiele się dowiedziałem bo niemieckiego nie znam.
  • REKLAMA
  • Pomocny post
    #5 6923749
    Rariusz
    Specjalista Automatyk
    Witam

    Jasne ze da się zrobić jak kolega chce to mogę wysłać program na maila wystarczy ze klega domnie napisze. Jesli ma byc to 1 wyswietlacz to sprawa jest banalna.
    Choć potem radze zwiększyć ilość wyświetlaczy i popróbować z Driverem.

    Pozdrawiam.
  • REKLAMA
  • Pomocny post
    #6 6923765
    mirekk36
    Poziom 42  
    do sterowania jednym wyświetlaczem 7segmentowym w zupełności wystarczy ci prostszy i nieco tańszy procek - popularny ATtiny2313. Możesz do niego tą kostę wyświetlacza podłączyć i sterować - wprost statycznie bez multipleksowania .... wszystkie segmenty podłączyć przez rezystorki do jednego portu a wspólna katodę lub anodę do GND lub VCC

    procek w pełni obsługuje komunikację RS232 - tyle że nie wiadomo z jakiego portu COM w kompie chcesz to sterować. Jeśli ze zwykłego - złącze DB9 - to po drodze musisz zastosować MAX232 - żeby dopasować sygnały RS232 na poziomy TTL i odwrotnie

    napisanie do tego programu to - na prawdę kilka linijek w dowolnym języku

    .... tylko nie pytaj o gotowy schemat - bo nikt czegoś takiego ci raczej nie poda .... rozrysuj sobie to sam

    a jeśli nie wiesz jak, i nie wiesz jak się pisze programy na procki

    to zacznij lepiej od zapoznania się z tą tematyką po kolei i systematycznie
  • REKLAMA
  • #7 6923838
    zincum
    Poziom 10  
    Trochu ogarniam avr. Chcę z przejściówki COM>USB także otartą na attiny2313 więc znowu MAX232 nie trzeba będzie wstawiać, tak? A i jeszcze jedno, zasilania starczy z portu USB czy trzeba dać jakieś zewnętrze źródło zasilania dodatkowe.
    I w tym przypadku co mam pokombinować? (jak mi mniej więcej dacie namiar co mam użyć [jak podałmirekk36 MAX232 to już po wyprowadzeniu pinów jakoś bym podłączył] to sklecę samemu schemat i wrzucę do sprawdzenia)
    P.S. Przejściówka jest zrobiona za strony Mirley`a.
  • Pomocny post
    #8 6924306
    mirekk36
    Poziom 42  
    Jeśli masz przejściówkę USB/RS232 - i na wyjściu masz już sygnały TTL - to nie musisz dawać już żadnego konwertera MAX232 ;) .... tylko podłączasz wprost tzn na krzyż piny Rx oraz Tx procka i przejściówki

    - zasilanie +5V z USB spokojnie można użyć do takiego celu ;) .... ja z USB zasilam swoje układziki, które zżerają nawet po 700-800mA i nie ma żadnego problemu. A twój układzik jak zje ze 100 może max 200mA to będzie wszystko
  • #9 6926138
    zincum
    Poziom 10  
    Takie coś narysowałem, poprawne?
    Tylko nie wiem skąd dorwę 7-seg :D popatrzę na allegro czy jakieś są tanie.
    Sterowanie wyświetlaczem 7 segmentowym przez port RS232
    A i jeszcze pytanko, gdybym miał już zaszaleć to jak podłączyć 2 wyświetlacze? lub 16 diod (na to samo wychodzi, 7-seg + ".")
  • Pomocny post
    #10 6926166
    mirekk36
    Poziom 42  
    jak to nie wiesz skąd dorwiesz wyświetlacz 7 segmentowy? ;) - przecież pełno tego w około a na allegro to już zatrzęsienie i jakieś zwyklaki to są prawie za darmo ;)

    schemat rozrysowałeś sobie bardzo w miarę fajnie ;) .... tylko dodałbym jeszcze od pinu RESET (1) ... rezystor 10K do VCC

    .... - a jeśli chodzi o szaleństwo - to możesz nawet podłączyć kilka takich wyświetlaczy - ale już będzie trzeba sterować je multipleksowo , dodać dodatkowe tranzystory sterujące a co najważniejsze - napisać sobie procedurkę do multipleksowania.... to nie jest trudne ... ale jeśli jeszcze nic nie programowałeś procków to może cię to na początek trochę przerastać

    spróbuj może najpierw w taki prosty sposób pobawić się programowo z jednym wyświetlaczem - a zapewniam cię że o tym doświadczeniu o wiele więcej będziesz wiedział i stanie się prostsze poznanie np multipleksowania itp

    pozdr
  • #11 6926290
    zincum
    Poziom 10  
    Schemat poprawiłem, dzięki za uświadomienie. Pozostanę na brzegu i pchać na razie się w wodę nie będę jak nie umiem pływać ;) la tego też pozostanę przy jednym wyświetlaczu 7-seg, już i tak wiele bajerów można nim robić :D
    Matrycą zabawię się kiedyś... jak ogarnę programowanie bo na razie to dopiero zaczynam (można nawet powiedzieć że jestem w stanie niewiedzy), zrobię w tedy matrycę 5x5 diod i w tedy to będzie można się pobawić :D

    Pozostaje mi jednak jeszcze zaprogramowanie uC. Czy ktoś mógłby mi pomóc? Napisać program i wrzucić go w dwóch wersjach, txt i hex dzięki temu przeanalizowałbym sobie kod.
  • #12 6926607
    mirekk36
    Poziom 42  
    w HEX to byś sobie za dużo nie poanalizował - to tylko skompilowana binarna wersja

    ... odnośnie źródeł - tak jak mówiłem, weź sobie poczytaj w necie np o programowaniu w języku BASCOM (od tego możesz np zacząć w miarę prosto i szybko). Przy okazji chcesz jakiś kod źródłowy żeby zobaczyć i przeanalizować - jak zassiesz sobie HELP do Bascoma - a można go także znaleźć w jęz. polskim - to będziesz miał pełno przykładów

    będzie ci potrzebny jeszcze programator do procków - polecam także najprostsze i najtańsze rozwiązanie na początek - czyli STK200.

    Poczytaj sobie o Bascomie i o STK200 choćby tu na elektrodzie a dużo się dowiesz
  • #13 6927045
    zincum
    Poziom 10  
    Bascoma raczej nie chcę. Jest to język wyłącznie dla mikrokontrolerów a ja chcę raczej iść w ślady C++ i robić programy na kompa (przede wszystkim na Linuksa ale i też na Win). Mam programator a dokładnie 2. Jeden do bascoma i drugi do ponyproga. Samo użądzonko będzie mi tylko potrzebne do ujarzmienia rs232 za pomocą programów na C++ (komputer). W uC się nie pcham bo z tym raczej przyszłości swej nie wiążę. Nie chcę uczyć się Bascoma którego wykorzystam raz czy dwa, marnować czas który mógłbym przeznaczyć na naukę C++.
  • #14 6927255
    mirekk36
    Poziom 42  
    nikt ci nie każe uczyć się Bascoma ;) jeśli znasz C++ na PC'ty to nie będziesz miał problemu z napisaniem czegoś tak prostego w C na procka. Tylko że w C a nie w C++ - no i trzeba się jednak nauczyć C dla procków. To nie jest trudne - więc powodzenia
  • #15 6928129
    zincum
    Poziom 10  
    C++ dopiero zaczynam (czytam Symfonię i na razie jestem że tak powiem w rozdziałąch wstępu i historii języka), więc można powiedzieć że programowania nie znam, tym bardziej C. Nie chcę też żeby temat był rozgrzebany i pozostawiony. Może mógłbyś mirekk36 napisać te kilka linijek i wrzucić, sądzę że wszyscy by na tym zyskali :D
    Prawda, ja ten projekt może wykorzystam dopiero za pół roku ale ktoś teraz chchiałby się pobawić tym 7-seg na RS232.
    Jeżeli możesz to w wolnej chwili skleć kilka linijek kodu i wrzuć do tematu. Będę bardzo wdzięczny a temat zostanie dokończony i zamknięty.
    Pozdrawiam
  • #16 6928383
    mirekk36
    Poziom 42  
    zincum -> sorki, ale nie mam w ogóle wolych chwil w pracy, żeby teraz pisać jakiś tam kod, który może będzie wykorzystany, może za jakieś tam pół roku i może się komuś innemu przyda w międzyczasie....

    ja jestem w stanie pomóc każdemu jeśli to jest w granicach moich możliwości - i na to zwykle ma się jakąś chwilkę czasu .... ale żeby pisać kod ??? gotowca ??? nie dam rady...... przykro mi

    może ktoś inny tu zajrzy i ci to napisze ?
  • Pomocny post
    #17 6928954
    Rariusz
    Specjalista Automatyk
    Witam

    Trochę kodu nie ręczę ze dobrze i profesjonalnie

    #include "seg.h"
    #include <avr/io.h>
    #define F_CPU 8000000Ul
    #include <util/delay.h>
    //====================================================================================
    // Main
    //====================================================================================
    int main(void){
    PORT_WYJSCIOWY_1=0xFF; //port A jako wyjscie
    PORT_WYJSCIOWY_2=0xF; //wyjscia 0,1,2,3 portu B jako wyjscia
    PORT_WYJ_DANE_1=LICZBA_0; //ustaw wartosc zero na wyswietlaczu

    while(1){


    liczba(0);//Wlacz wyswietlacz nr 0
    WyswietlLiczbe(1);
    _delay_ms(1);



    liczba(1);//Wlacz wyswietlacz nr 1
    WyswietlLiczbe(2);
    _delay_ms(1);


    //itd.

    }
    }


    #include "seg.h"
    #include <avr/io.h>
    #define F_CPU 8000000Ul
    #include <util/delay.h>
    //====================================================================================
    void WyswietlLiczbe(int Liczba){
    switch(Liczba){
    case 0: PORT_WYJ_DANE_1=LICZBA_0; break;
    case 1: PORT_WYJ_DANE_1=LICZBA_1; break;
    case 2: PORT_WYJ_DANE_1=LICZBA_2; break;
    case 3: PORT_WYJ_DANE_1=LICZBA_3; break;
    case 4: PORT_WYJ_DANE_1=LICZBA_4; break;
    case 5: PORT_WYJ_DANE_1=LICZBA_5; break;
    case 6: PORT_WYJ_DANE_1=LICZBA_6; break;
    case 7: PORT_WYJ_DANE_1=LICZBA_7; break;
    case 8: PORT_WYJ_DANE_1=LICZBA_8; break;
    case 9: PORT_WYJ_DANE_1=LICZBA_9; break;
    }
    }
    //===================================================================================
    //Wlaczanie wyswietlaczy
    void liczba(int liczba){
    switch(liczba){
    case 0: PORT_WYJ_DANE_2=0xD; break;
    case 1: PORT_WYJ_DANE_2=0xE; break;
    case 2: PORT_WYJ_DANE_2=0xB; break;


    }

    }

    #ifndef SEG_H_
    #define SEG_H_
    //===========================
    // Porty
    //==========================
    #define PORT_WYJSCIOWY_1 DDRA
    #define PORT_WYJSCIOWY_2 DDRB
    #define PORT_WYJ_DANE_1 PORTA
    #define PORT_WYJ_DANE_2 PORTB
    //===========================
    // 7 seg.
    //===========================
    #define LICZBA_0 0x40
    #define LICZBA_1 0x79
    #define LICZBA_2 0x24
    #define LICZBA_3 0x30
    #define LICZBA_4 0x19
    #define LICZBA_5 0x12
    #define LICZBA_6 0x2
    #define LICZBA_7 0x78
    #define LICZBA_8 0x0
    #define LICZBA_9 0x10
    //============================
    // Metody
    //============================
    void WyswietlLiczbe(int Liczba);
    void liczba(int liczba);
    #endif /* SEG_H_ */




    //////////////////////////////////////////////////////////////////////////////////////

    #include "seg.h"
    #include <avr/io.h>
    #define F_CPU 8000000Ul
    #include <util/delay.h>
    //====================================================================================
    // Main
    //====================================================================================
    int main(void){
    PORT_WYJSCIOWY=0xFF;//port A jako wyjscie

    while(1){
    PORT_WYJ_DANE=LICZBA_0;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_1;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_2;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_3;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_4;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_5;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_6;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_7;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_8;
    _delay_ms(50);

    PORT_WYJ_DANE=LICZBA_9;
    _delay_ms(50);

    }
    }


    #ifndef SEG_H_
    #define SEG_H_
    //===========================
    // Porty
    //==========================

    #define PORT_WYJSCIOWY DDRA
    #define PORT_WYJ_DANE PORTA
    //===========================
    // 7 seg.
    //===========================
    #define LICZBA_0 0x40
    #define LICZBA_1 0x79
    #define LICZBA_2 0x24
    #define LICZBA_3 0x30
    #define LICZBA_4 0x19
    #define LICZBA_5 0x12
    #define LICZBA_6 0x2
    #define LICZBA_7 0x78
    #define LICZBA_8 0x0
    #define LICZBA_9 0x10
    //============================

    #endif /* SEG_H_ */




    ////////////////////////////////////////////////////////////////////////////////////
    #include "seg.h"
    #include <avr/io.h>
    #define F_CPU 8000000Ul
    #include <util/delay.h>
    #define CZEKAJ 100
    //====================================================================================
    // Main
    //====================================================================================
    int main(void){
    PORT_WYJSCIOWY=0xFF;//port A jako wyjscie
    PORT_WYJ_DANE=0xFF;//zalacz (zgas seg.) wyjscie

    while(1){
    WyswietlLiczbe_0();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_0();


    WyswietlLiczbe_1();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_1();

    WyswietlLiczbe_2();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_2();

    WyswietlLiczbe_3();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_3();

    WyswietlLiczbe_4();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_4();

    WyswietlLiczbe_5();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_5();

    WyswietlLiczbe_6();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_6();

    WyswietlLiczbe_7();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_7();

    WyswietlLiczbe_8();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_8();


    WyswietlLiczbe_9();
    _delay_ms(CZEKAJ);//czekaj
    WylaczLiczbe_9();





    }





    }



    #include "seg.h"
    #include <avr/io.h>
    #define F_CPU 8000000Ul
    #include <util/delay.h>
    //==========================

    //====================================================================================
    // Wyswietl liczby
    //====================================================================================
    void WyswietlLiczbe_0(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(D); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(E); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(F); //zapal(wyłącz wyjscie)
    }
    //==========================
    void WyswietlLiczbe_1(void){
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    }
    //==========================
    void WyswietlLiczbe_2(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(E); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(D); //zapal(wyłącz wyjscie)

    }
    //==========================
    void WyswietlLiczbe_3(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(D); //zapal(wyłącz wyjscie)
    }
    //==========================
    void WyswietlLiczbe_4(void){
    PORT_WYJ_DANE&= ~_BV(F); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    }
    //==========================
    void WyswietlLiczbe_5(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(F); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(D); //zapal(wyłącz wyjscie)

    }
    //==========================
    void WyswietlLiczbe_6(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(F); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(D); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(E); //zapal(wyłącz wyjscie)

    }
    //==========================
    void WyswietlLiczbe_7(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    }
    //==========================
    void WyswietlLiczbe_8(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(D); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(E); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(F); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    }
    //==========================
    void WyswietlLiczbe_9(void){
    PORT_WYJ_DANE&= ~_BV(A); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(G); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(F); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(C); //zapal(wyłącz wyjscie)
    PORT_WYJ_DANE&= ~_BV(B); //zapal(wyłącz wyjscie)



    }

    //====================================================================================
    // Zgas liczby
    //====================================================================================
    void WylaczLiczbe_0(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(E); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(F); //zgas(wlacz wyjscie)
    }
    //========================
    void WylaczLiczbe_1(void){
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)
    }
    //========================
    void WylaczLiczbe_2(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(E); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)

    }
    //========================
    void WylaczLiczbe_3(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(E); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)
    }
    //========================
    void WylaczLiczbe_4(void){
    PORT_WYJ_DANE|=_BV(F); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)

    }
    //========================
    void WylaczLiczbe_5(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(F); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)
    }
    //========================
    void WylaczLiczbe_6(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(F); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(E); //zgas(wlacz wyjscie)

    }
    //========================
    void WylaczLiczbe_7(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)

    }
    //========================
    void WylaczLiczbe_8(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(E); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(F); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)


    }
    //========================
    void WylaczLiczbe_9(void){
    PORT_WYJ_DANE|=_BV(A); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(B); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(G); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(F); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(C); //zgas(wlacz wyjscie)
    PORT_WYJ_DANE|=_BV(D); //zgas(wlacz wyjscie)
    }


    #ifndef SEG_H_
    #define SEG_H_

    //===========================
    // Porty
    //==========================

    #define PORT_WYJSCIOWY DDRA
    #define PORT_WYJ_DANE PORTA
    //===========================
    // 7 seg.
    //===========================
    #define A PA0
    #define B PA1
    #define C PA2
    #define D PA3
    #define E PA4
    #define F PA5
    #define G PA6
    //============================
    // Metody
    //============================
    void WyswietlLiczbe_0(void);
    void WyswietlLiczbe_1(void);
    void WyswietlLiczbe_2(void);
    void WyswietlLiczbe_3(void);
    void WyswietlLiczbe_4(void);
    void WyswietlLiczbe_5(void);
    void WyswietlLiczbe_6(void);
    void WyswietlLiczbe_7(void);
    void WyswietlLiczbe_8(void);
    void WyswietlLiczbe_9(void);

    void WylaczLiczbe_0(void);
    void WylaczLiczbe_1(void);
    void WylaczLiczbe_2(void);
    void WylaczLiczbe_3(void);
    void WylaczLiczbe_4(void);
    void WylaczLiczbe_5(void);
    void WylaczLiczbe_6(void);
    void WylaczLiczbe_7(void);
    void WylaczLiczbe_8(void);
    void WylaczLiczbe_9(void);
    //============================

    #endif /* SEG_H_ */

    Pozdro
  • #18 6941481
    zincum
    Poziom 10  
    Wielkie dzięki Rariusz.
REKLAMA