Hodiny na orientačný beh: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 44: | Riadok 44: | ||
PORTB = ~(1<<place) & 0b11011111; // nastavenie miesta displeja ktorý chceme zobraziť | PORTB = ~(1<<place) & 0b11011111; // nastavenie miesta displeja ktorý chceme zobraziť | ||
if (number==10) //prázdny znak | |||
{ | |||
PORTD = 0b11111111; | |||
} | |||
if (number==11) // pomlčka | |||
{ | |||
PORTD = 0b10111111; | |||
} | |||
if (number==0) //0 | |||
{ | |||
PORTD = 0b11000000; | |||
} | |||
if (number==1) //1 | |||
{ | |||
PORTD = 0b11111001; | |||
} | |||
if (number==2) //2 | |||
{ | |||
PORTD = 0b10100100; | |||
} | |||
if (number==3) //3 | |||
{ | |||
PORTD = 0b10110000; | |||
} | |||
if (number==4) //4 | |||
{ | |||
PORTD = 0b10011001; | |||
} | |||
if (number==5) //5 | |||
{ | |||
PORTD = 0b10010010; | |||
} | |||
if (number==6) //6 | |||
{ | |||
PORTD = 0b10000010; | |||
} | |||
if (number==7) //7 | |||
{ | |||
PORTD = 0b11111000; | |||
} | |||
if (number==8) //8 | |||
{ | |||
PORTD = 0b10000000; | |||
} | |||
if (number==9) //9 | |||
{ | |||
PORTD = 0b10010000; | |||
} | |||
if (number==0) //0 | |||
{ | |||
PORTD = 0b11000000; | |||
} |
Verzia z 10:21, 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ť
if (number==10) //prázdny znak { PORTD = 0b11111111; }
if (number==11) // pomlčka { PORTD = 0b10111111; } if (number==0) //0 { PORTD = 0b11000000; }
if (number==1) //1 { PORTD = 0b11111001; }
if (number==2) //2 { PORTD = 0b10100100; }
if (number==3) //3 { PORTD = 0b10110000; }
if (number==4) //4 { PORTD = 0b10011001; }
if (number==5) //5 { PORTD = 0b10010010; }
if (number==6) //6 { PORTD = 0b10000010; }
if (number==7) //7 { PORTD = 0b11111000; }
if (number==8) //8 { PORTD = 0b10000000; }
if (number==9) //9 { PORTD = 0b10010000; }
if (number==0) //0 { PORTD = 0b11000000; }