3-miestny 7-segmentový indikátorový protón. Ako funguje sedemsegmentový indikátor?

Zhotovenie digitálnej váhy

Trochu teórie
Čo sú to 7-segmentové indikátory, asi netreba rozpisovať. Aké ťažké je predstaviť si oblasť techniky, kde sa neuplatňujú. V súlade s tým bolo napísaných veľa článkov o ich spojení, ale aj tak sa pokúsim napísať svoj vlastný :)
Takže: čo je 7-segmentový indikátor?
Obráťme sa na Wikipédiu: "Sedemsegmentový indikátor je zariadenie na zobrazovanie digitálnych informácií. Ide o najjednoduchšiu implementáciu indikátora, ktorý dokáže zobraziť arabské číslice.
Sedemsegmentový indikátor, ako už jeho názov napovedá, pozostáva zo siedmich zobrazovacích prvkov (segmentov), ​​ktoré sa jednotlivo zapínajú a vypínajú. Ak ich zahrniete do rôznych kombinácií, môžete z nich vytvoriť zjednodušené obrázky arabských číslic. Sedemsegmentové ukazovatele sú často písané kurzívou.


Segmenty sú označené písmenami od A do G; ôsmy segment je desatinná čiarka (DP), určená na zobrazenie zlomkových čísel.

V skutočnosti je tento indikátor 8 LED umiestnených na paneli určitým spôsobom.
V súlade s tým je najjednoduchším spínacím obvodom pripojiť všetkých 8 nožičiek k výstupom mikrokontroléra (mikroobvod - dekodér) cez predradné odpory a použiť buď "+" (pre indikátory so spoločnou anódou) alebo "-" (pre indikátory so spoločná katóda) k spoločnému drôtu.
Príklad pripojenia indikátora so spoločnou anódou pre automatickú prevodovku Lancer na obvode indikácie prevodového stupňa je uvedený nižšie



Čo ak však potrebujete zobraziť nie 1 číslicu, ale 2, 3, 4 alebo viac?
A tu prichádza na rad pomoc. ľudská psychika. Ak sa mozgu zobrazí niekoľko rýchlo sa meniacich obrázkov, potom bez toho, aby mal čas spracovať každý jednotlivo, ich „zlúči“ dohromady. Tento princíp tvoril základ animácie. Tie. na výstup niekoľkých číslic (niekoľko číslic), musíte k mikrokontroléru pripojiť nielen vodiče segmentov, ale aj spoločné vodiče každej z číslic. Potom, aby ste dostali na výstup prvú číslicu (opäť pre obvod so spoločnou anódou), musíte použiť „+“ iba na spoločný vodič prvej číslice a „-“ na správne drôty segmentov. Podržte obrázok 2-3 milisekúnd, prepnite na druhý bit a urobte s ním to isté, potom prepnite do tretieho (štvrtého atď.) poľa alebo sa vráťte do prvého. Tým, že to všetko urobíme dostatočne rýchlo, dostaneme v mozgu jediný obraz, kde horia všetky výboje súčasne. Pre obvod so spoločnou katódou musíte prevrátiť "-".



Mimochodom, tranzistory v tomto obvode sú voliteľné - výstupy indikátora môžete pripojiť priamo k výstupom mikrokontroléra a potom na ne neprivádzať napätie (piny 8-10 tohto obvodu), ale skôr "priťahovať k zemi" výstupom „nízke“ napätie alebo, jednoducho povedané, 0 A „vysoké“ napätie (alebo 1) sa aplikuje na spoločné svorky výbojov, ktoré by nemali byť tento moment horieť.
Viac podrobností o tomto spôsobe pripojenia nájdete tu - arduino-kit.com.ua/instru…-indikator-i-arduino.html

Aký je „byaka“ tejto schémy? A faktom je, že na výstup napríklad trojmiestneho čísla musíte použiť 11 pinov mikrokontroléra a 7 z nich, aby sa program nenafúkol, musí odkazovať na jeden port.
To všetko je dobré, ale napríklad Attiny2313 má iba port B, na ktorom "visia" oba vstupy analógového komparátora.
A tu prídu na pomoc špeciálni vodiči.
Najčastejšie používané ovládače sú MAX7219 a MAX7221 riadené SPI. Materiál o práci s týmito ovládačmi bol uverejnený nedávno serdgos tu - . Preto sa nebudem opakovať - ​​kto chce, môže čítať. Tieto ovládače umožňujú znížiť počet zapojených výstupov, ale opäť vyžadujú použitie dodatočnej knižnice a sú „naviazané“ na presne definované piny mikrokontroléra. Existuje viac „hardcore“ riešení? Ukázalo sa, že existuje ovládač CD4026.

Popis ovládača
Čip CD4026 je určený na ovládanie 7-segmentových indikátorov a je to počítadlo do desať so zabudovaným posuvným registrom.

Počítadlo sa zvýši vždy, keď sa kolík "hodiny" posunie na VYSOKÚ (na stúpajúcej hrane). Výstupy a-g sa stanú HIGH podľa hodnoty počítadla a zobrazia svoju hodnotu ako arabské číslo, keď je pripojený 7-segmentový displej so spoločnou katódou.


"Reset" kolík by mal byť vo všeobecnosti pritiahnutý k zemi. Keď sa stane HIGH, počítadlo sa vynuluje.
Kolík „vypnúť hodiny“ by sa mal vo všeobecnosti pritiahnuť k zemi. Kým je VYSOKÝ, signály na kolíku „hodiny“ sa ignorujú.
Kontakt "povoliť zobrazenie" musí byť napájaný. Inak výstupy a-g bude nastavená na LOW. Kontakt "Enable out" vráti svoju hodnotu s miernym oneskorením.
Kontakt "÷10" (v tabuľke označený ako h) akceptuje HIGH pre hodnoty 0-4 a LOW pre 5-9. Jeho výstup môže byť odoslaný na „hodinový“ vstup ďalšieho 7-segmentového ovládača, aby sa zorganizovalo viacmiestne počítadlo čísel.
Pin „nie 2“ je NÍZKY práve vtedy, ak je hodnota počítadla 2. V opačnom prípade je VYSOKÝ.
Prevádzkové napájacie napätie: 3-15V.

Zdroj signálu bol Arduino Pro Micro so zapojenými kolíkmi
Výstup počítadla Pin2
Pin3 Vynulovanie počítadla
Pin4 Vybíjanie 1 pripojenie
Pin6 Výboj 2 pripojenie
Pin9 Vybíjacie pripojenie 3
Bod som nepripojil, pretože teraz je to zbytočné, ale princíp pripojenia je rovnaký.

Program
Keďže ide o Arduino. potom sa zodpovedajúci jazyk upraví pomocou C.
Program stopiek, ktorý počíta sekundy od zapnutia, bol „rýchlo nahodený“ na kontrolu výkonu, takže je trochu nemotorný – pardon.

#define CLOCK_PIN 2
#define RESET_PIN 3
#define DIGIT_1PIN 4
#define DIGIT_2PIN 6
#define DIGIT_3PIN 9

void resetNumber()
{
// Ak chcete na chvíľu resetovať, vložte kontakt
// reset na HIGH a späť na LOW
digitalWrite(RESET_PIN, HIGH);
digitalWrite(RESET_PIN, NÍZKY);
digitalWrite(DIGIT_1PIN, VYSOKÝ);
digitalWrite(DIGIT_2PIN, HIGH);
digitalWrite(DIGIT_3PIN, HIGH);
}
void showNumber(float t)
(int n;
// Najprv resetujte aktuálnu hodnotu
resetNumber();
// Výstup prvej číslice
digitalWrite(DIGIT_1PIN, NÍZKY);
n=int(t-int(t/10)*10);

// hodnoty
zatiaľ čo (n--) (

digitalWrite(CLOCK_PIN, LOW);
}
oneskorenie(2);
// Vynulujte počítadlo
resetNumber();
// Výstup druhého bitu
digitalWrite(DIGIT_2PIN, NÍZKY);
n=int(t/10-int(t/100)*10);
// Ďalej rýchlo "kliknite" na počítadlo na požadované
// hodnoty
zatiaľ čo (n--) (
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
oneskorenie(2);
// Vynulujte počítadlo
resetNumber();
// Výstup tretieho bitu
digitalWrite(DIGIT_3PIN, NÍZKY);
n=int(t/100);
// Ďalej rýchlo "kliknite" na počítadlo na požadované
// hodnoty
zatiaľ čo (n--) (
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
oneskorenie(2);

}
void setup()(
pinMode(RESET_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(DIGIT_1PIN, OUTPUT);
pinMode(DIGIT_2PIN, OUTPUT);
pinMode(DIGIT_3PIN, OUTPUT);

// Počítadlo pri štarte vynulujeme, aby sa neukázalo, že je
// v náhodnom stave
resetNumber();
}

// Hlavná slučka
void loop()
{
showNumber((millis() / 1000));
}

No výsledok

Stále môžete znížiť počet pinov pomocou posuvných registrov, ale o tom si povieme samostatne :)

1 rok

V tomto článku budeme hovoriť o digitálnom displeji.
Sedemsegmentové LED indikátory sú určené na zobrazenie arabských číslic od 0 do 9 (obr. 1).

Takéto ukazovatele sú jednomiestne, ktoré zobrazujú iba jedno číslo, ale v jednom prípade môže byť kombinovaných viac sedemsegmentových skupín (viacmiestne). V tomto prípade sú čísla oddelené desatinnou čiarkou (obr. 2)



Obr.2.

Indikátor sa nazýva sedemsegmentový, pretože zobrazený symbol je zostavený zo siedmich samostatných segmentov. Vo vnútri puzdra takéhoto indikátora sú LED diódy, z ktorých každá osvetľuje svoj vlastný segment.
Na takýchto indikátoroch je problematické zobrazovať písmená a iné symboly, preto sa na tieto účely používajú 16-segmentové indikátory.

Existujú dva typy LED indikátorov.
V prvom z nich sú všetky katódy, t.j. záporné svorky všetkých LED diód sú spojené dohromady a je im priradený zodpovedajúci výstup na puzdre.
Zvyšné výstupy indikátora sú pripojené k anóde každej z LED (obr. 3, a). Takýto obvod sa nazýva "obvod so spoločnou katódou".
Existujú aj indikátory, v ktorých sú LED diódy každého zo segmentov spojené podľa schémy so spoločnou anódou (obr. 3, b).



Obr.3.

Každý segment je označený zodpovedajúcim písmenom. Obrázok 4 ukazuje ich umiestnenie.

Obr.4.

Ako príklad uvažujme dvojmiestny sedemsegmentový indikátor GND-5622As-21 s červenou žiarou. Mimochodom, existujú aj iné farby, v závislosti od modelu.
Pomocou trojvoltovej batérie môžete zapnúť segmenty a ak spojíte skupinu kolíkov do zväzku a pripojíte na ne energiu, môžete dokonca zobraziť čísla. Ale táto metóda je nepohodlná, preto sa na ovládanie sedemsegmentových indikátorov používajú posuvné registre a dekodéry. Tiež často sú výstupy indikátorov pripojené priamo k výstupom mikrokontroléra, ale len pri použití indikátorov s nízkou spotrebou prúdu. Obrázok 5 zobrazuje časť obvodu s použitím PIC16F876A.



Obr.5.

Pre manažment sedemsegmentový indikátorčasto sa používa dekodér K176ID2.
Tento mikroobvod je schopný konvertovať binárny kód pozostávajúci z núl a jednotiek na desatinné číslice od 0 do 9.

Aby ste pochopili, ako to všetko funguje, musíte zbierať jednoduchý obvod(obr. 6). Dekodér K176ID2 je vyrobený v balení DIP16. Má 7 výstupných kolíkov (piny 9 - 15), z ktorých každý je určený pre konkrétny segment. Bodový manažment tu nie je poskytovaný. Mikroobvod má tiež 4 vstupy (piny 2 - 5) pre napájanie binárneho kódu. 16. a 8. kolík je napájaný plus a mínus. Zvyšné tri závery sú pomocné, o nich budem hovoriť o niečo neskôr.



Obr.6.

DD1 - K176ID2
R1 - R4 (10 - 100 kOhm)
HG1-GND-5622As-21

V obvode sú 4 prepínače (možné sú ľubovoľné tlačidlá), po ich stlačení sa na vstupy dekodéra z power plus privádza logická jednotka. Mimochodom, samotný mikroobvod je napájaný napätím 3 až 15 voltov. V tomto príklade je celý obvod napájaný 9-voltovou „korunou“.

V obvode sú tiež 4 odpory. Ide o takzvané pull-up rezistory. Sú potrebné na zaručenie nízkej úrovne na logickom vstupe pri absencii signálu. Bez nich sa hodnoty na indikátore nemusia zobrazovať správne. Odporúča sa použiť to istéodpor od 10 kOhm do 100 kOhm.

V schéme nie sú kolíky 2 a 7 indikátora HG1 zapojené. Ak pripojíte výstup DP k mínusu výkonu, rozsvieti sa desatinná čiarka. A ak použijete mínus na výstup Dig.2, potom sa rozsvieti aj druhá skupina segmentov (ukáže rovnaký symbol).

Vstupy dekodéra sú navrhnuté tak, že na zobrazenie číslic 1, 2, 4 a 8 na indikátore je potrebné stlačiť iba jedno tlačidlo (na rozložení sú nainštalované prepínače zodpovedajúce vstupom D0, D1, D2 a D3) . Ak nie je signál, zobrazí sa nula. Keď je signál privedený na vstup D0, zobrazí sa číslo 1. A tak ďalej. Ak chcete zobraziť ďalšie čísla, musíte stlačiť kombináciu prepínačov. Tabuľka 1 nám prezradí, ktoré stlačiť.


Stôl 1.

Pre zobrazenie čísla "3" je potrebné použiť logickú jednotku na vstup D0 a D1. Ak použijete signál na D0 a D2, zobrazí sa číslo „5“.(obr. 6).



Obr.6.

Tu je rozšírená tabuľka, v ktorej vidíme nielen očakávaný údaj, ale aj tie segmenty (a - g), ktoré budú tento údaj tvoriť.



Tabuľka 2

Pomocné sú 1., 6. a 7. kolík mikroobvodu (S, M, K).

Na schéme (obr. 6) je 6. pin "M" uzemnený (na mínus výkon) a na výstupe mikroobvodu je kladné napätie pre prácu s indikátorom so spoločnou katódou. Ak sa použije indikátor so spoločnou anódou, potom by mala byť jednotka aplikovaná na 6. výstup.

Ak sa na 7. výstup "K" aplikuje logická jednotka, potom znamienko indikátora zhasne, nula umožňuje indikáciu. V obvode je tento kolík uzemnený (na mínus výkon).

Na prvý výstup dekodéra je privedená logická jednotka (power plus), ktorá umožňuje zobrazenie konvertovaného kódu na indikátore. Ak však na tento výstup (S) použijete logickú nulu, vstupy prestanú prijímať signál a aktuálne zobrazené znamienko na indikátore zamrzne.

Jedna zaujímavá vec je, že vieme, že prepínač D0 zapína číslo „1“ a prepínač D1 zapína číslo „2“. Ak stlačíte oba prepínače, zobrazí sa číslo 3 (1 + 2 = 3). A v iných prípadoch indikátor zobrazuje súčet čísel, ktoré tvoria túto kombináciu. Dospeli sme k záveru, že vstupy dekodéra sú usporiadané premyslene a majú veľmi logické kombinácie.

Môžete si tiež pozrieť video k tomuto článku.

Na žiadosť robotníkov som sa rozhodol porozprávať o úžasnej veci zvanej 7-segment led indikátor. Na začiatok, čo to je. Tu je taká vec. Toto je jedna číslica, existujú aj dve číslice, tri a štyri číslice. Videl som ďalších šesť číslic. Za každou číslicou nasleduje desatinná čiarka. Ak sú štyri číslice, potom najčastejšie za druhou číslicou nájdete pri zobrazení času dvojbodku na označenie sekúnd. Keď sme sa vysporiadali s kúskami železa, prejdime k štúdiu obvodu. Čo je dynamický displej a prečo je potrebný. Keďže je indikátor 7-segmentový, na zobrazenie čísla sa používa iba 7 segmentov. Vždy sú označené s latinskými písmenami A, B, C, D, E, F, G a DP Pozeráme sa na obrázok. Pod každým segmentom je LED. Všetky LED diódy sú pripojené na jednom konci. Buď anódy alebo katódy a opačné konce sú vyvedené. Je ľahké vidieť, že na zobrazenie čísla je potrebné použiť 8 pinov. Jeden spoločný a sedem pre segmenty. Ak sa to týka jedného vybitia, tak nie je o čom rozmýšľať, všetko zavesíme na jeden port. Čo ak sú tam štyri číslice? Osem krát štyri je tridsaťdva. Ach ... Áno, 32 mega bude jediný, kto bude prenikať cez takýto indikátor. Takto veci fungovať nebudú. Sú dve riešenia. Naša s vami dynamická indikácia alebo statická. Aby sme to pochopili ďalej, pozrime sa na schému prepínania indikátorov.


Táto schéma predpokladá dynamickú indikáciu. Áno, som dynamický a statický. V čom je rozdiel?. Statická indikácia je, keď nastavíme každú číslicu na jej vlastnú číslicu a je neustále zapnutá, a dynamická je, keď číslicu zobrazíme na prvej číslici, potom ju zhasneme a vydáme na druhú číslicu, potom ju vypneme a zobrazíme v tretej číslici a tak ďalej, kým sa pozície nevyčerpajú. Po poslednom vybití sa vrátime k prvému a tak ďalej v kruhu. Ak sa to robí pomaly, potom bude možné vidieť digitálnu bežnú čiaru a ak zvýšite rýchlosť napríklad na 50 Hz, neuvidíte blikanie vašich očí. Takto funguje dynamické zobrazenie. Poďme sa teraz pozrieť na diagram. Naľavo od ATmega8 MK za ním visí na porte D čip 74ALS373. Prečo je potrebná? Faktom je, že indikátor je len 8 LED diód zostavených do určitej matice. To znamená, že indikátor môže byť reprezentovaný ako riadok 8 LED. A ako viete, LED diódy jedia veľa vo vzťahu k MK. Priame pripojenie samozrejme nie je zakázané, ale medzi MK a indikátor je lepšie dať nejaký opakovač. Na tieto účely som sa rozhodol použiť 8-bitový latch buffer. Prečo on. Berúc do úvahy skutočnosť, že indikátor používam so spoločnou anódou, teda pre číslicovú úlohu je aktívna úroveň 0, bolo by bezpečné použiť čip ULN2003A (7 tranzistorových zostáv podľa Darlingtonovho obvodu) a nie starajte sa o vyrovnávaciu pamäť, ale ... Faktom je, že ULN2003A má na doske iba tranzistory NPN a indikátor môžem použiť iba so spoločnou anódou, ale čo keď ho potrebujem dať so spoločnou katódou? Tu pomôže buffer, keďže to, čo tam napíšem, bude výstup. Chcete 0, chcete 1. Ovládacie nohy sú pripojené v režime prekladača. To znamená, že vyrovnávacia pamäť vydáva rovnaký výstup ako vstup. Ala pseudo galvanická izolácia. Po vyrovnávacej pamäti nasledujú odpory obmedzujúce prúd. Pamätajte, že ide o LED diódy a vyhoria bez rezistorov. Hodnota rezistorov musí byť zvolená o niečo menej, ako je prijateľné. Dynamická indikácia totiž zobrazuje znaky s určitou frekvenciou a súvisí to s PWM, teda čím vyššia frekvencia, tým je takpovediac vyšší kontrast. A pri najpohodlnejšom kontraste budú čísla svietiť o niečo slabšie. Preto je potrebné brať odpory o niečo nižšiu hodnotu. 360 ohmov som použil len preto, že som ich mal na sklade. Ďalej po rezistoroch je náš indikátor. Na druhej strane, kde sú anódy, som pripojil prvé štyri bity portu C. Takže sme nejako prišli na obvod. Teraz poďme diskutovať o algoritme programu. Aby sme mohli striedavo zapínať indikačné bity, napíšeme samostatnú funkciu a budeme ju donekonečna volať v hlavnom tele programu. Presnejšie povedané, funkcia vezme číslo od 0 do 9999, analyzuje ho na číslice a potom vypíše každú číslicu na svoje miesto. Ak má číslo počet číslic menší ako 4, prázdne miesta naľavo budú vyplnené nulami. Zoraďujeme sa na pravý okraj. Prejdeme radmi zľava doprava. Aby sme videli nejaké akcie, potom pomocou prerušení z počítadla raz za sekundu zvýšime zobrazené číslo o jeden. Úloha je teda nastavená, bojovať. #define F_CPU 7372800UL // Frekvencia kremeňa #include #include #include volatile unsigned int test = 9980; // Premenná pre výstup do indikátora ISR(TIMER1_COMPA_vect) // Obsluha prerušenia na časovači 1 zápas (test++; // Zvýšenie výstupného čísla if(test > 9999) test = 0; // Ak je viac ako štyri číslice, resetujte TCNT1H=0x00; // Resetovať register TCNT1L=0x00; // účty ) void dig_out(int num); // Deklarácia funkcie pre zobrazenie indikátora int main(void) ( DDRC = 0x0F; // Nastavenie portov DDRD=0xFF; // pre prácu s indikátorom Port C pre číslice, Port D pre čísla TCCR1A=0x00; // Nastavenie časovača TCCR1B=0x04; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x70; OCR1AL=0x80; TIMSK=0x10; sei(); // Povoliť prerušenia while(1) ( dig_out(test); //Neustále volanie funkcie na zobrazenie aktuálneho čísla ) ) void dig_out(int num) // Funkcia pre zobrazenie 4 číslic na indikátore ( znak bez znamienka i = 0; // premenná počítadla unsigned charraz = 1; // Číselné číslo unsigned char dig_num = (0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10); // Číselné kódy pre indikátor so spoločnou anódou unsigned char dig = (0, 0, 0, 0); // Pole pre bitovú hodnotu ak(č ( dig =0; dig =0; dig =0; ) if(num // Na vyplnenie ľavých číslic nulami ( dig =0; dig =0; ) if(num // Na vyplnenie ľavých číslic nulami ( dig =0; ) while(num > 999) // Získajte počet tisícov ( dig++; num -= 1000; ) while(num > 99) // Získajte počet stoviek ( dig++; num -= 100; ) while(num > 9) // Získajte počet desiatok ( dig++; num -= 10; ) dig = num; // Získanie počtu jednotiek zatiaľ čo(raz // Točte, kým sa nezaplnia všetky 4 bity (PORTC=raz; // Vyberte trochu PORTD = dig_num]; // Výstup čísla raz = raz// Presun na ďalšiu číslicu i++; // Zvýšenie indexu ďalšej číslice _delay_ms(1); // Oneskorenie 1 ms } } To je celý kód. Nebudem to maľovať, pretože na každom riadku sú komentáre. Nižšie si môžete stiahnuť archív s projektom pod AtmelStudio6.2 Ak máte stále otázky, ste vítaní vo fóre. No, pre tých najnáročnejších, nižšie je video celej tejto balalajky))).

Dnes v článku chcem implementovať základ pre nový jednoduchý projekt - teplomer počasia. Môj starý analógový teplomer sa zjavne pokazil a teraz ukazuje +16, hoci za oknom je jeseň v plnom prúde a gismeteo tvrdí, že nie je teplejšie ako +3 - +4 stupne. V tomto smere som sa rozhodol vyrobiť digitálny teplomer, z náhradných dielov chýba už len samotný teplomer - už je na objednávku a o pár týždňov, keď príde tovar, bude. Medzitým sa môžete zaoberať výstupom informácií, na tieto účely mám 4-bitový 7-segmentový indikátor hs420561k-32. Existujú oveľa úspešnejšie a pokročilejšie verzie takýchto indikátorov s už zabudovanými riadiacimi mikročipmi. Nie je však zaujímavé zaoberať sa takýmito modulmi, existujú iba 4 alebo 5 nôh - z toho dve sú potraviny. Ako začiatočník je pre mňa oveľa zábavnejšie prísť na veci sám. A indikátor hs420561k-32 mi v tomto smere úplne vyhovuje. Nižšie je fotografia obvodu zostaveného na doštičke.

Čo je 4-miestny 7-segmentový indikátor hs420561k-32

Ako môžete vidieť na fotografii, 4-miestny 7-segmentový indikátor je ideálny pre zamýšľané zariadenie. Jedna číslica bude zodpovedná za výstup mínus, v prípade potreby necháme druhú a tretiu číslicu pre výstup stupňov a štvrtá bude len pre krásu, vždy zobrazte ikonu stupňov.

Najprv musíte pochopiť, ako indikátor funguje. Modul má 12 nožičiek, 4 z nich sú katódy a každá je zodpovedná za jeden výboj zo štyroch - ktorá nožička bude mínus, výboj bude aktívny. 8 ďalších sú anódy a každá je zodpovedná za jeden zo 7 segmentov a za bodku v spodnej časti čísla. Takto môžeme ovládať každý segment a číslicu. Jediný problém spočíva v tom, že na každej číslici môžete zobraziť vždy iba jednu číslicu. Nie je ťažké to prekonať, stačí, aby sa potrebné informácie postupne dostali na každú z číslic vo veľmi krátkom čase. Ľudské oko nezachytí vypínač a bude sa zdať, že všetky výboje horia súčasne. Ani foťák to nedokázal zachytiť – môžete to vidieť na fotke, ktorú som priložil vyššie.
Na obrázku nižšie môžete vidieť, ktorá vetva indikátora je za čo zodpovedná.


Pre pohodlie práce a pre upevnenie vedomostí z posledného článku o posuvnom registri som sa rozhodol použiť v obvode čip 74HC595. Tým sa zníži počet zapojených pinov arduina. Nižšie som dal schému zapojenia, ukázalo sa, že je to krivka, dúfam, že časom sa ich naučím lepšie kresliť :). P.S. Na diagram som nenakreslil 3 odpory - chýbali mi, je potrebné ich pridať medzi kolíky arduino a nohy hs420561k-32 s názvami A, F a B.


Čo bolo použité v projekte

  • Arduino (použil som arduino nano, ale môžete použiť akékoľvek iné). Kúpené tu: arduino nano
  • Displej hs420561k-32. Kúpené tu: Analógový displej hs420561k-32
  • 1 Posuvný register 74HC595. Kúpené tu: posuvné registre 10 kusov
  • 8 rezistorov s odporom 300 ohmov. Kúpil som tu: sadu odporov 700 ks. 10 ohm až 1 megaohm
  • Niekoľko spojovacích vodičov. Kúpené tu: prepojovacie vodiče
  • Doska na chlieb. Použil som s 830 otvormi. Kúpené tu: Breadboard

Náčrt pre ovládanie indikátora hs420561k-32

Teraz zostáva len napísať náčrt, jeho kód je uvedený nižšie a je tiež k dispozícii na stiahnutie tu: stiahnuť.

//Kolík pripojený k vstupu SH_CP 74HC595 int clockPin = 6; //Kolík pripojený k vstupu ST_CP 74HC595 int latchPin = 7; //Kolík pripojený k vstupu DS 74HC595 int dataPin = 8; // Pins of digits digits int pins_numbers = (2, 3, 4, 5); // Bity na zobrazenie čísel od 0-9, mínus a Celzia symbol Byte_array = (B001111111, B00000110, B01011011, B0100111111111111111111111111111111101111111101, B01101101, B01111101, B00000111, // 4 5 6111 B01101111, B01000000, B01100011 // 8 9 - o ); void setup() ( //Nastavenie režimu OUTPUT pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); for(int i; i<4; i++){ pinMode(pins_numbers[i], OUTPUT); } } void loop() { // включить сразу несколько цифр нельзя, поэтому очень быстро показываем по одной showNumber(1, 11); showNumber(2, 7); showNumber(3, 2); showNumber(4, 10); } void showNumber(int numNumber, int number){ // зажигаем нужные сегменты digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, numbers_array); digitalWrite(latchPin, HIGH); // включаем нужный разряд(одну из четырех цифр) int num_razryad = pins_numbers; for(int i; i<4; i++){ // выключаем все digitalWrite(pins_numbers[i], HIGH); } // включаем нужную digitalWrite(num_razryad, LOW); delay(5); }

Autor Belov A.V.

Tento článok popisuje rôzne spôsoby pripojenia sedemsegmentových LED indikátorov k mikrokontroléru.

Aby mikroprocesorové zariadenie dokázalo zobrazovať informácie vo forme čísel a znakov, je vhodné použiť sedemsegmentové LED indikátory. Existuje obrovské množstvo rôznych modelov LED indikátorov, rôznych veľkostí, farieb žiary. Existujú oba indikátory predstavujúce samostatnú jednu číslicu na zobrazenie iba jednej číslice a viacmiestne indikátorové panely. V závislosti od modelu a schémy pripojenia sa môže líšiť. Okrem toho sú všetky ukazovatele rozdelené do dvoch veľkých skupín. Ide o indikátory so spoločnou anódou a indikátory so spoločnou katódou. Schéma zapojenia jedného indikátora so spoločnou anódou je znázornená na obrázku 1.

Ryža. 1. Pripojenie jedného indikátora

Segmenty indikátora sú pripojené priamo každý na svoj výstup PB portu mikrokontroléra. Spoločná anóda všetkých segmentov je pripojená k zdroju energie. Schéma znázorňuje možnosť napájania indikátora z rovnakého + 5V zdroja, z ktorého je napájaný samotný mikrokontrolér. Ak chcete znížiť zaťaženie stabilizátora napätia, môžete napájať indikátor pred stabilizátorom. Aby sa zvýraznila tá či oná číslica na indikátore, mikrokontrolér jednoducho naprogramuje všetky piny portu PB na výstup a následne podľa potreby vyšle na port kód zodpovedajúci zvolenému znaku. V tomto prípade je každý bit portu zodpovedný za svoj segment indikátora. Ak je v príslušnom bite na výstupe logická jednotka, segment zostane zhasnutý. Ak je na výstupe bitu logická nula, rozsvieti sa príslušný segment. Zostáva vybrať kódy tak, aby svietiace číslice zvýraznili symbol, ktorý potrebujeme.

Vo väčšine prípadov jedna číslica ukazovateľa zjavne nestačí. Spojenie niekoľkých výbojov, z ktorých každý má svoje vlastné závery, samozrejme nebude fungovať. Aj najväčší mikrokontrolér AVR má len štyri plné I/O porty. Jediným spôsobom, ako pripojiť viacmiestne sedemsegmentové indikátory k mikrokontroléru, je teda maticová metóda. Táto metóda je veľmi podobná maticovému spojeniu tlačidiel klávesnice, ktoré je podrobne popísané v článku "Pripájacie tlačidlá". Obrázok 2 ukazuje jednu z možností pripojenia displeja dvoch sedemsegmentových indikátorov.


Ryža. 2. Pripojenie displeja

Vyššie uvedená schéma je určená pre ľahké sedemsegmentové indikátory nízkeho výkonu so spotrebou prúdu najviac 40 mA. Pre výkonnejšie indikátory musíte použiť tranzistorové spínače. Upozorňujeme, že každý z výstupov portu PB mikrokontroléra je pripojený k segmentom s rovnakým názvom na oboch indikátoroch. Takže výstup PB0 cez odpor R1 je pripojený k výstupu segmentu A indikátora HL1 a indikátora HL2. Výstup PB1 cez odpor R2 je pripojený k segmentom B oboch indikátorov atď. Výber jedného z indikátorov sa vykonáva pomocou dvoch najvýznamnejších bitov portu PD. Spoločná anóda indikátora HL1 je pripojená k výstupu PD6 a spoločná anóda indikátora HL2 je pripojená k výstupu PD5. Takáto schéma inklúzie sa nazýva matica. Kolíky portu PB možno vidieť ako osem vodorovných čiar a dva kolíky portu PD ako zvislé čiary matice. V priesečníkoch každej čiary sa rozsvieti jeden segment LED.

Takáto schéma zapnutia indikátora vždy funguje v režime dynamickej indikácie. Dynamická indikácia spočíva v tom, že mikroprocesor neustále zobrazuje symbol na dostatočne vysokej frekvencii, najskôr v prvej a potom v druhej číslici indikátora. Pri spínacej frekvencii nad 24 hertzov oko nezaznamená blikanie a obraz na oboch indikátoroch vníma ako jeden statický obraz. Väčšina zo siedmich segmentových displejov v širokej škále elektronických zariadení už dlho funguje na tomto princípe.

Na implementáciu režimu dynamickej indikácie musí procesor organizovať konštantný cyklus. Zvyčajne sa na to používa vstavaný časovač. Časovač je nakonfigurovaný tak, aby vydal prerušenie pri určitej frekvencii zvolenej pre dynamickú indikáciu. Zakaždým, keď je zavolané prerušenie, radič odošle obraz symbolu do nového bitu indikátora. Za týmto účelom ovládač nastaví kód zodpovedajúci požadovanému znaku na port PB a nastaví logickú jednotku na zodpovedajúci bit portu PD (PD5 alebo PD6). Na bit, ktorý sa má zhasnúť, sa aplikuje logická nula. Tým sa ukončí spracovanie prerušenia, radič prejde k vykonávaniu hlavného programu a signály nastavené na piny portu zostanú až do ďalšieho prerušenia. A po celú dobu sa požadovaný symbol zobrazuje v zodpovedajúcej číslici. Keď dôjde k ďalšiemu prerušeniu, signály sú vyvedené na porty, ktoré zobrazujú obraz iného bitu indikátora.

Obrázok 2 zobrazuje obvod obsahujúci iba dva bity indikácie. Rovnakým spôsobom môžete spojiť tri, štyri alebo viac číslic. V prípade použitia mikrokontroléra ATtiny2313 je maximálny počet bitov 7. Keďže PD port tohto radiča má iba sedem pinov. V tomto prípade je počas procesu indikácie len jeden z bitov portu PD dodávaný s logickou jednotkou a všetky ostatné sú logickou nulou.

Je potrebné poznamenať, že v tomto obvode sú najviac zaťažené výstupy PD5 a PD6, ku ktorým sú pripojené spoločné anódy indikátorov. Prúd pretekajúci každým z nich závisí od zobrazeného symbolu av prípade, že sú zapálené všetky segmenty naraz, je osemkrát väčší ako prúd jedného segmentu. Takýto prúd môže ľahko prekročiť maximálny povolený prúd pre jeden výstup. Po prvé, tento prúd má pulzný charakter a priemerná hodnota prúdu je oveľa menšia. A po druhé, prax ukazuje, že mikrokontroléry AVR majú značnú výkonovú rezervu a ľahko vydržia takéto zaťaženie.

Všetko vyššie uvedené platí pre indikátor so spoločnou anódou. Aby sa takéto indikátory rozsvietili, plus zdroja energie by sa mal aplikovať na spoločný vodič a mínus na segmentové výstupy (pripojiť k spoločnému vodiču). Existujú však aj iné indikátory zostavené podľa schémy so spoločnou katódou. Pozrime sa, ako používať tento typ indikátorov. Obvod na obrázku 1 bude musieť byť mierne prerobený. Zmena sa týka len toho, že spoločná anóda indikátora musí byť odpojená od zdroja + 5V a pripojená na spoločný vodič. Trochu sa zmení aj algoritmus práce. Teraz, aby ste rozsvietili segment, musíte naň použiť logickú jednotku a dať ju von - logickú nulu. Schéma na obr. 2 nie je potrebné upravovať. Zmení sa len algoritmus. Len by sa mala zmeniť fáza všetkých signálov. Tam, kde sme dávali nulu, teraz musíme dať jednotku a naopak.

Ovládanie indikátorov ZhKI (LCD).

Autor Belov A.V.

Tento článok popisuje príklad pripojenia displeja z tekutých kryštálov (skrátene LCD alebo LCD) k mikrokontroléru.

Dnes na trhu elektronických komponentov nájdete obrovské množstvo ukazovateľov rôznych spoločností a úprav. Každý indikátor má svoje vlastné charakteristiky, vlastnú vnútornú architektúru a vlastné rozhranie na pripojenie k mikrokontroléru. Všeobecné princípy pripojenia sú však približne rovnaké. Okamžite si všimneme, že všetky LCD možno rozdeliť na indikátory so vstavaným ovládačom a jednoduché indikátory bez mikrokontroléra. Na nezávislé použitie sú vhodnejšie indikátory s mikrokontrolérom. Vstavaný mikrokontrolér už obsahuje zložité programy, ktoré vykonávajú väčšinu operácií pre zobrazenie obrazu na indikátore a zohľadňujú všetky špecifické vlastnosti tohto konkrétneho indikátorového panelu. A komunikačné rozhranie vstavaného ovládača zvyčajne nie je vôbec zložité a umožňuje jednoduché pripojenie k akémukoľvek univerzálnemu ovládaču. Zoberme si napríklad mikrokontrolér ruskej výroby MT-10T7-7. Ide o jednoduchý ukazovateľ, ktorého zobrazenie tvorí riadok desiatich sedemsegmentových znakov. Napájacie napätie takéhoto indikátora je od 3 do 5 voltov. Prúdová spotreba 30 uA. Rozmery 66 X 31,5 X 9,5 mm. Schéma pripojenia takéhoto indikátora k mikrokontroléru je znázornená na obrázku 1.

Ryža. 1. Pripojenie LCD k mikrokontroléru

Port PB sa používa na ovládanie indikátora. Linky PB0...PB3 tvoria dátovú/adresovú zbernicu. A linka PB4 sa používa na prenos nahrávacieho signálu do indikátora. Výstup PB6 slúži na výber adresy/údajov. Riadiace príkazy sa prenášajú do indikátora nasledovne. Najprv je potrebné odovzdať adresu bitu, kam chceme zapísať kód nasledujúceho výstupného znaku. Adresa pozostáva z jedného štvorbitového binárneho čísla. Číslice sú číslované zľava doprava. Číslica úplne vľavo (najvýznamnejšia) má adresu 0 (00002). Ďalšia číslica má adresu 1 (00012). Posledná, úplne vpravo, desiata číslica má adresu 9 (10012). Aby bolo možné zapísať adresu do ovládača indikátora, je potrebné, aby bol na jeho A0 prítomný signál logickej nuly. Hodnota adresy sa nastavuje na výstupoch PB0...PB3. A potom sa na výstup PB4 krátko privedie jediný signál, ktorý sa privedie na vstup WR1 indikátora. Na okraji tohto impulzu sa adresa zapíše do indikátora a uloží sa do jeho vnútornej pamäte. Ak sa teraz do indikátora zapíše dátový bajt, dorazí presne na túto adresu.

Dátový bajt určuje obrázok znaku, ktorý sa zobrazí v príslušnom bite indikátora. Každý bit tohto bajtu je zodpovedný za svoj vlastný segment v sedemsegmentovom poli. Ôsmy bit je zodpovedný za zvýraznenie desatinnej čiarky. Na prenos dátového bajtu musí byť na vstupe A0, a teda na výstupe PB6, prítomný signál logickej jedna. Dátový bajt sa prenáša do indikátora v dvoch krokoch. Najprv sa na kolíky PB0...PB3 nastaví nízky hryz. Na signál do WR1 sa zapíše do pamäte indikátora. Potom sa na rovnakých výstupoch (PB0...PB3) nastaví najvyšší nibble a signálom sa zapíše aj do WR1. Po napísaní druhého (najvyššieho) kúsku sa obrázok zobrazí v zodpovedajúcej číslici indikátora a adresa vo vnútornej pamäti indikátora sa automaticky zvýši o jednotku. Na zápis údajov do ďalšej číslice indikátora už teda nie je potrebné prenášať adresu. Celý proces zápisu adresy a údajov do indikátora je znázornený na obrázku 2.


Ryža. 2. Schéma činnosti rozhrania indikátora

Tento obrázok ukazuje dve možnosti práce s indikátorom. Zaznamenanie jednej známosti a zaznamenanie niekoľkých známostí za sebou. Variabilný odpor R1 (pozri schému na obr. 1) je určený na nastavenie kontrastu displeja. Aby bol obraz na indikátore dobre viditeľný, musíte pri pozorovaní obrazu na obrazovke indikátora nastaviť najvhodnejší kontrast. Pre rôzne osvetlenie a rôzne uhly pohľadu bude potrebné nastaviť gombík do rôznych polôh. Dobre viditeľný obraz u iných sa pri meniacich sa podmienkach pozorovania môže stať úplne neviditeľným. Aby ste to videli, musíte otočiť gombík regulátora v rôznych smeroch.

Na záver chcem poznamenať, že práve tieto portové kolíky na ovládanie indikátora boli zvolené úplne ľubovoľne. V tomto prípade sa autor riadil pohodlnosťou rozloženia PCB. Môžete si vybrať akékoľvek iné piny a dokonca aj iný I/O port mikrokontroléra.

Posledná aktualizácia (05/01/2008)

Pripojenie kodéra

Autor Belov A.V.

V tomto článku sa dozviete, čo je to kodér, čím sa líši od premenlivého odporu a ako pomáha zadávať informácie do mikrokontroléra jednoduchým otočením gombíka.

V súvislosti s úplným prechodom na mikroprocesorové riadenie domácich a iných elektronických zariadení sa zmenili aj nastavovacie telesá používané v týchto zariadeniach. Ak ste predtým, aby ste nastavili hlasitosť rádia alebo televízora, museli jednoducho otočiť príslušným gombíkom, teraz ste často nútení použiť dve tlačidlá: "Hlasitosť +" a "Hlasitosť -". A ak potrebujete upraviť nielen hlasitosť? Pre mnohých používateľov to jednoducho nie je pohodlné. Okrem toho trpí účinnosť úpravy. Stlačením tlačidla zníženia hlasitosti musíte ešte chvíľu počkať, kým sa hlasitosť vyšplhá na požadovanú úroveň. A celý ten čas musíte trpieť hlasným zvukom. Aby sme spojili výhody tradičných regulátorov a zároveň nestratili nové možnosti, ktoré nám mikrokontroléry dávajú, nazýva sa nové zariadenie na vstup informácií, ktoré sa nazýva kodér. Vo vzhľade a rozmeroch inštalácie je kódovač veľmi podobný konvenčnému premenlivému odporu používanému v tradičných analógových zariadeniach. Ale vnútorne je to radikálne odlišné. Kodér, rovnako ako odpor, má vyčnievajúcu os, na ktorú môžete nasadiť rovnakú rukoväť, aká sa zvyčajne nasadzuje na odpor. Otáčanie gombíka kódovača vedie ku generovaniu sekvencie impulzov, ktoré potom idú do mikrokontroléra a dávajú mu informáciu o tom, o koľko treba znížiť alebo zvýšiť tú či onú hodnotu. Napríklad, o koľko potrebujete zvýšiť alebo znížiť hlasitosť signálu atď. Okrem toho je kódovacie zariadenie také, že mikrokontrolér dokáže rozlíšiť nielen množstvo, o ktoré je potrebné parameter zmeniť, ale aj smer tejto zmeny. To umožňuje napríklad otáčaním osi kódovača v jednom smere zvýšiť hlasitosť a otáčaním v opačnom smere ju znižovať.

Ryža. 1. Ako funguje kodér

Zvážte, ako funguje kódovač. Obrázok 1 znázorňuje návrh jednoduchého mechanického kódovača. Ako je zrejmé z obrázku, základom kódovača je kotúč vyrobený z izolačného materiálu, pripevnený na osi, na ktorom je namontovaná rukoväť na jej otáčanie. Špeciálne sloty sú rovnomerne rozmiestnené po obvode disku. Sloty rozdeľujú celý obvod na niekoľko (zvyčajne 6-8) rovnakých sektorov. Okrem toho sa šírka štrbín rovná šírke medzier medzi nimi. Okrem toho existujú dve skupiny kontaktov, ktoré sú inštalované tak, že keď sa disk otáča, buď sa zatvoria, keď spadnú do štrbiny, alebo sa otvoria v medzere medzi štrbinami. Umiestnenie týchto párov kontaktov vzhľadom na štrbiny je veľmi dôležité. Kontakty sú usporiadané tak, že v momente, keď je jeden pár na okraji štrbiny, je druhý pár kontaktov presne v strede medzi dvoma susednými štrbinami. Toto usporiadanie je znázornené na obrázku. V dôsledku toho sa implementuje nasledujúce poradie zatvárania / otvárania kontaktov:

Prvá skupina kontaktov sa uzavrie

Zatvorí druhú skupinu kontaktov

Otvorí sa prvá skupina kontaktov

Otvorí sa druhá skupina kontaktov

5. Všetko sa opakuje od začiatku.

Ryža. 2. Schéma kódovača 3. Pracovný diagram

Obrázok 2 zobrazuje vnútorné obvody jednoduchého mechanického kódovača. Kódovač má iba tri kolíky (čo z neho robí ešte viac ako premenlivý odpor). Spodný výstup podľa schémy je spoločný pre oba páry kontaktov. Výsledkom je, že pri otáčaní rukoväte kódovača dostaneme na výstupe dve sekvencie impulzov. Pri rovnomernej rotácii v jednom smere to budú dva meandre fázovo posunuté o 90 stupňov. Pre názornosť je tento proces znázornený na obrázku 3. Dúfam, že je jasné, ako mikrokontrolér určuje uhol natočenia osi kódovača. Jednoducho počíta počet impulzov. Okrem toho je možné počítať impulzy prichádzajúce z ktorejkoľvek skupiny kontaktov. Hlavným cieľom je určiť smer otáčania. Tu pomáha postupnosť zatvárania a otvárania kontaktov. Keď sa os kódovača otáča na jednu zo strán, zakaždým, keď prvá skupina kontaktov prejde zo zatvorenej do otvorenej, druhá skupina kontaktov sa zatvorí. Navyše moment prechodu prvej skupiny spadá práve do stredu časového intervalu, kedy je druhá skupina uzavretá. To znamená, že odraz sa už skončil a všetky prechodné procesy ustúpili. Pri otáčaní v opačnom smere je poradie otvárania a zatvárania obrátené. Preto v momente, keď prvá skupina kontaktov prechádza zo zatvorenej do otvorenej, druhá skupina je vždy otvorená. Práve pre túto skutočnosť mikrokontrolér určuje smer otáčania.

Ryža. 4. Schéma pripojenia enkodéra k mikrokontroléru

Obrázok 4 ukazuje schému pripojenia kódovača k mikrokontroléru. Kontakty kódovača sa pripájajú rovnakým spôsobom, ako sa pripája jednoduché samostatné tlačidlo (pozri článok „Pripojenie tlačidiel“). Porty PD2 a PD3 musia byť nakonfigurované ako vstupy a musí byť povolený interný zakončovací odpor na oboch vstupoch. Ďalšie informácie o nastavení liniek portu a interných zakončovacích odporov nájdete vo vyššie uvedenom článku „Zapojenie tlačidiel“. Spoločný výstup enkodéra, ako je zrejmé zo schémy, je pripojený k spoločnému vodiču celého zariadenia.

Program spracovania signálu kódovača je mimoriadne jednoduchý. Upozorňujeme, že v schéme (obr. 4) sú na pripojenie snímača zvolené vedenia PD2 a PD3. A to nie je náhoda. Na mikrokontroléri ATtiny2313 tieto kolíky striedavo fungujú ako vstupy externého prerušenia INT0 a INT1. Na prácu s kódovačom sa používa jedno z týchto prerušení. Môžete napríklad použiť prerušenie na externom vstupe INT0. Teda na vstupe PD2 (pin 6). Z čoho pozostáva program? Najprv musíte povoliť prerušenie na INT0. Okrem toho je potrebné zvoliť taký režim, keď k prerušeniu dôjde pozdĺž prednej strany (alebo poklesu) impulzu na tomto vstupe. Potom ešte potrebujete najjednoduchší podprogram na spracovanie tohto prerušenia. Tento podprogram by mal jednoducho skontrolovať hodnotu linky portu PD3 a v závislosti od toho, či je nula alebo jedna, znížiť alebo zvýšiť nastaviteľnú hodnotu.

Pozrime sa na to podrobnejšie. Povedzme, že sme zvolili režim prerušenia na hrane impulzu. Predstavte si, že ovládač vykonáva hlavný program, ktorý nesúvisí s kódovačom. V určitom okamihu používateľ otočí gombík kódovača, napríklad doľava. Kontakty sa začnú zatvárať a otvárať. Na hrane impulzu na vstupe INT0 v mikrokontroléri sa vyvolá prerušenie. To znamená, že práca hlavného programu je dočasne prerušená a ovládač prejde do servisnej rutiny prerušenia. Tento podprogram číta informácie z portu PD a vyhodnocuje obsah bitu PD3. Keďže rukoväť kódovača bola otočená (dohodli sme sa) doprava, mikrokontrolér v tomto bite deteguje logickú jednotku. Po nájdení jednotky obsluha prerušení zvýši hodnotu špeciálnej bunky, kde je uložený kód zodpovedajúci aktuálnemu objemu. Kód sa zvýši o jeden. Potom podprogram svoju prácu ukončí. Mikrokontrolér sa vráti k vykonávaniu svojho hlavného programu. Ak rotácia v rovnakom smere pokračuje, na hrane ďalšieho impulzu na INT0 sa opäť spustí prerušenie a hodnota hlasitosti sa opäť zvýši o jednu. A tak ďalej, kým sa otáčanie rukoväte kódovača nezastaví alebo kým hodnota objemu nepretečie. Podprogram by mal skontrolovať túto hodnotu a nezvyšovať hlasitosť, ak dosiahla maximum.

Ak sa rotor kódovača otáča v opačnom smere, potom rovnaký postup spracovania prerušenia, vyvolaný na hrane signálu na vstupe NT0, zistí hodnotu logickej nuly na vstupe PD3. Po nájdení tejto nuly by mal podprogram znížiť hodnotu kódu v bunke objemu o jednu. Ak rotácia pokračuje, tak na hrane každého impulzu na vstupe INT0 sa vyvolá toto prerušenie a zakaždým sa zníži hodnota hlasitosti. A v tomto prípade by mal program teraz ovládať minimálnu hodnotu hlasitosti. A po dosiahnutí nuly by program už nemal vykonávať procedúru odčítania.

Doteraz sme hovorili o jednoduchom mechanickom kódovači. Prítomnosť mechanických kontaktov je však vždy spojená s javmi, ako je chvenie, ako aj rušenie spôsobené zlým kontaktom v dôsledku upchatia alebo opotrebovania. To všetko vedie k nízkej spoľahlivosti mechanického kódovača. Preto sú optoelektrické snímače v poslednej dobe čoraz populárnejšie. V optoelektrickom kódovači sa namiesto mechanických kontaktov používajú optočleny: LED-fotióda. Takýto enkodér vyžaduje dodatočné externé napájanie, takže má ešte jeden výstup – napájací výstup. Tieto kódovače sú zvyčajne napájané stabilizovaným zdrojom +5V a výstupnými signálmi blízkymi štandardným logickým úrovniam. V tomto ohľade nie je potrebné zahrnúť interné zaťažovacie odpory pre tie vstupy mikrokontroléra, ku ktorým je takýto kódovač pripojený. Inak je práca s optoelektronickými kódovačmi podobná práci s jednoduchými mechanickými modelmi. Bohužiaľ, použitie optoelektronických kódovačov je obmedzené ich vysokou cenou.

Posledná aktualizácia (05/04/2008)

Praktické príklady aplikácie USB-AVR

Projekt USB-AVR bol podľa vkusu mnohých amatérskych dizajnérov z celého sveta. Developerská spoločnosť Objective na svojej stránke vyzýva každého, kto si vyvinul svoj vlastný dizajn pomocou ich technológie, aby poslal jeho popis alebo odkaz na stránku s takýmto popisom a všetky tieto odkazy ochotne umiestni na svoju stránku.

POTOM skutočnosť, že sa na projekte zúčastnili zástupcovia z rôznych krajín, viedla k tomu, že v rôznych jazykoch sa uvádzajú rôzne opisy. Hlavne v angličtine, nemčine, taliančine. Žiaľ, v ruštine zatiaľ nie sú žiadne projekty. Naša stránka však plánuje preložiť popisy najzaujímavejších projektov.