Operácie

Hodiny na orientačný beh: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentDVPS (diskusia | príspevky)
Bez shrnutí editace
StudentDVPS (diskusia | príspevky)
Bez shrnutí editace
Riadok 45: Riadok 45:


/* //   0-nič 0 1   2   3 4 5 6   7 8            9    pomlčka(12)
/* //   0-nič 0 1   2   3 4 5 6   7 8            9    pomlčka(12)
unsigned char num[12] = {0b11111111, 0b11000000, 0b11111001 , 0b10100100 , 0b10110000, 0b10011001,0b10010010, 0b10000010 , 0b11111000 ,  0b10000000 , 0b10010000 , 0b10111111};     
    PORTD = num[number];

Verzia z 10:20, 18. december 2012

Záverečný projekt
  • Vypracovali:
Bc. Andrej Berčák
Bc. Juraj Harmata
  • Študijný odbor: Aplikovaná mechatronika
  • Ročník: 2. Ing.


  • Úloha:
Veľkoplošný 7-segmentový LED displej treba pripojiť k mikroprocesoru a naprogramovať tak, aby po zapnutí odpočítaval minúty nasledujúce po štarte, pričom posledných 5 sekúnd pred každou celou minútou odpípa. Posledné pípnutie bude dlhšie a bude sprevádzané inkrementovaním čísla na displeji. Pred časom 00 bude displej zobrazovať pripravenosť symbolmi --.

K zapojeniu treba vypracovať dokumentáciu, popis programu, schému zapojenia displeja a riadiacej jednotky.

Obr. 1. Doska plošného spoja so zapojeným displejom
  • Vypracovanie:
Schéma zapojenia:


Sedem segmentový displej slúži na zobrazovanie desatinných čísel a obmedzený počet znakov abecedy. Často sa vyskytuje v displejoch vo vreckových kalkulačkách, VHS a DVD prehrávačoch, digitálnych hodinkách, audio záznamníkoch atď. V našom prípade jednotlivé segmenty sú aktívne v nule. Zobrazený znak je riadený z registra D. Najnižší bit zodpovedá segmentu A, posledný bit je desatinná bodka.

Obr. 2. Označenie jednotlivých segmentov

Polohu znaku môžeme určiť portom B. Určíme ho otváraním jednotlivých tranzistorov, kde znaku na poslednom mieste zodpovedá PB.0 a takto ďalej až ku PB.3 . Vysvietenie všetkých štyroch znakov naraz je možné riešiť rýchlim prepínaním medzi nimi.

Príkaz na určenie polohy:

PORTB = ~(1<<place) & 0b11011111;

Výpis znakov:

Jednotlivé znaky vypisujeme pomocou funkcie „znak“

void znak(int number, unsigned char place)

{

  PORTB = ~(1<<place) & 0b11011111;    // nastavenie miesta displeja ktorý chceme zobraziť

/* // 0-nič 0 1 2 3 4 5 6 7 8 9 pomlčka(12)

unsigned char num[12] = {0b11111111, 0b11000000, 0b11111001 , 0b10100100 , 0b10110000, 0b10011001,0b10010010, 0b10000010 , 0b11111000 , 0b10000000 , 0b10010000 , 0b10111111};

   PORTD = num[number];