Hodiny na orientačný beh: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 43: | Riadok 43: | ||
{ | { | ||
PORTB = ~(1<<place) & 0b11011111; // nastavenie miesta displeja ktorý chceme zobraziť | 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) |
Verzia z 10:18, 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.
- 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.
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)