4-mestni indikator povezave Arduino. Sedemsegmentni indikator. Izhod v indikatorje delnih števil, plavajoči format

Obstajajo parametri, za katere bi bilo primerneje zagotoviti objektivne informacije in ne le navedbo. Na primer, temperatura zraka zunaj ali čas na budilki. Da, vse to bi lahko naredili z žarečimi žarnicami ali LED. Ena stopinja – ena goreča LED ali žarnica itd. Ampak štetje teh kresnic – no, ne! Ampak, kot pravijo, najbolj enostavne rešitve- najbolj zanesljiv. Zato so razvijalci brez dolgotrajnega razmišljanja vzeli preproste LED trakove in jih razporedili v pravilnem vrstnem redu.

Na začetku dvajsetega stoletja s prihodom vakuumske cevi pojavili so se prvi indikatorji praznjenja plina

S pomočjo takšnih kazalnikov je bilo mogoče sklepati digitalne informacije v arabskih številkah. Prej so bile na takih svetilkah izdelane različne indikacije za naprave in drugo elektronske naprave. Trenutno se elementi za praznjenje plina skoraj nikjer ne uporabljajo. Toda retro je vedno v modi, zato mnogi radijski amaterji zase in za svoje ljubljene zbirajo čudovite ure na indikatorjih praznjenja v plinu.


Pomanjkljivost plinskih sijalk je, da porabijo veliko električne energije. O trajnosti se lahko prepiramo. Na naši univerzi še vedno uporabljamo frekvenčne števce v naših laboratorijih. indikatorji izpusta plina.

Sedemsegmentni indikatorji

S prihodom LED diod se je situacija dramatično spremenila na bolje. LED same porabljajo majhen tok. Če jih postavite na pravi položaj, lahko prikažete popolnoma vse informacije. Za poudarjanje vseh arabskih številk je dovolj le sedem svetlečih LED trakov - segmentov, nastavljenih na določen način:

Skoraj vsem takim sedemsegmentnim indikatorjem je dodan tudi osmi segment - pika, tako da je mogoče prikazati celo in delno vrednost katerega koli parametra.

V teoriji dobimo osemsegmentni indikator, po staromodno pa ga imenujemo tudi sedemsegmentni indikator.

Kakšen je rezultat? Vsak trak na sedemsegmentnem indikatorju je osvetljen z LED ali skupino LED. Posledično lahko z osvetlitvijo določenih segmentov prikažemo številke od 0 do 9 ter črke in simbole.

Vrste in oznake na diagramu

Obstajajo enomestni, dvomestni, trimestni in štirimestni sedemsegmentni indikatorji. Nikoli nisem videl več kot štirih kategorij.

V diagramih je sedemsegmentni indikator videti nekako takole:

Pravzaprav ima vsak sedemsegmentni indikator poleg glavnih priključkov tudi skupni priključek s skupno anodo (OA) ali skupno katodo (OC)

Notranje vezje sedemsegmentnega indikatorja s skupno anodo bo videti takole:


in s takole skupno katodo:


Če imamo sedemsegmentni indikator s skupno anodo (OA), potem moramo v vezju na ta zatič napajati "plus" moč, in če s skupno katodo (OC), potem "minus" ali ozemljitev.

Kako preveriti sedemsegmentni indikator

Imamo naslednje indikatorje:


Za preverjanje sodobnega sedemsegmentnega indikatorja potrebujemo samo multimeter s funkcijo testiranja diod. Za začetek iščemo splošen zaključek - lahko je OA ali OK. Tukaj samo naključno. No, potem preverimo delovanje preostalih segmentov indikatorja v skladu z zgornjimi diagrami.

Kot lahko vidite na spodnji fotografiji, segment, ki se preskuša, sveti. Na enak način preverimo ostale segmente. Če so vsi segmenti osvetljeni, potem je tak indikator nedotaknjen in ga lahko uporabite pri svojem razvoju.


Včasih napetost na multimetru ni dovolj za testiranje segmenta. Zato vzamemo napajalnik in ga nastavimo na 5 voltov. Da omejimo tok skozi segment, preverimo skozi upor 1-2 Kilo-Ohm.


Na enak način preverimo indikator iz kitajskega sprejemnika


V tokokrogih so sedemsegmentni indikatorji povezani z upori na vsakem zatiču

V našem sodobni svet sedemsegmentne indikatorje nadomestijo indikatorji s tekočimi kristali, ki lahko prikažejo absolutno vse informacije

vendar za njihovo uporabo potrebujete določene veščine pri načrtovanju vezja takšnih naprav. Zato se sedemsegmentni indikatorji zaradi nizkih stroškov in enostavne uporabe uporabljajo še danes.

Sedemsegmentni LED indikatorji so zelo priljubljeni med napravami za digitalni prikaz vrednosti in se uporabljajo na sprednjih ploščah mikrovalovnih pečic, pralni stroji, digitalne ure, števci, časovniki itd. V primerjavi z LCD indikatorji segmenti LED indikatorjev svetijo močno in so vidni na veliki razdalji in pod širokim kotom gledanja. Za povezavo sedemsegmentnega 4-bitnega indikatorja z mikrokontrolerjem bo potrebnih vsaj 12 I/O linij. Zato je skoraj nemogoče uporabiti te indikatorje z mikrokontrolerji z majhnim številom zatičev, na primer serije podjetja. Seveda lahko uporabite različne metode multipleksiranje (opis le-tega najdete na spletni strani v razdelku »Sheme«), vendar tudi v tem primeru obstajajo določene omejitve za posamezno metodo in pogosto uporabljajo zapletene programske algoritme.

Ogledali si bomo način povezave indikatorja preko vmesnika SPI, ki bo zahteval samo 3 I/O linije mikrokontrolerja. Hkrati bo ostal nadzor nad vsemi segmenti indikatorjev.

Za povezavo 4-bitnega indikatorja z mikrokrmilnikom prek vodila SPI se uporablja specializiran gonilniški čip, ki ga proizvaja podjetje. Mikrovezje je sposobno poganjati osem sedemsegmentnih indikatorjev s skupno katodo in vključuje dekoder BCD, gonilnike segmentov, vezje za multipleksiranje in statični RAM za shranjevanje vrednosti števk.

Tok skozi indikatorske segmente se nastavi samo z enim zunanjim uporom. Poleg tega čip podpira nadzor svetlosti indikatorja (16 stopenj svetlosti) z uporabo vgrajenega PWM.

Vezje, obravnavano v članku, je vezje zaslonskega modula z vmesnikom SPI, ki se lahko uporablja v amaterskih radijskih zasnovah. In bolj nas ne zanima samo vezje, ampak delo z mikrovezjem prek vmesnika SPI. Napajanje modula +5 V se napaja na pin Vcc, signalne linije MOSI, CLK in CS so zasnovani za komunikacijo med glavno napravo (mikrokrmilnik) in podrejeno napravo (čip MAX7219).

Mikrovezje se uporablja v standardni povezavi, potrebne so le zunanje komponente, ki so upor, ki nastavlja tok skozi segmente, zaščitna dioda za napajanje in filtrirni kondenzator za napajanje.

Podatki se na čip prenašajo v 16-bitnih paketih (dva bajta), ki se na vsakem naraščajočem robu signala CLK umestijo v vgrajeni 16-bitni preklopni register. 16-bitni paket označujemo kot D0-D15, kjer biti D0-D7 vsebujejo podatke, D8-D11 vsebujejo naslov registra, biti D12-D15 nimajo pomena. Bit D15 je najpomembnejši bit in je prvi prejeti bit. Čeprav je čip sposoben nadzorovati osem indikatorjev, bomo razmislili o delu le s štirimi. Upravljajo jih izhodi DIG0 - DIG3, ki se nahajajo v zaporedju od desne proti levi, 4-bitni naslovi (D8-D11), ki jim ustrezajo, so 0x01, 0x02, 0x03 in 0x04 (šestnajstiški format). Številčni register je implementiran z uporabo RAM-a na čipu z organizacijo 8x8 in je neposredno naslovljiv, tako da je mogoče vsako posamezno številko na zaslonu kadar koli posodobiti. Naslednja tabela prikazuje naslovljive števke in kontrolne registre čipa MAX7219.

Registrirajte se

Naslov

HEX vrednost

Brez operacije

Način dekodiranja

Število indikatorjev

Ugasniti

Test indikatorja

Nadzorni registri

Čip MAX1792 ima 5 kontrolnih registrov: način dekodiranja (Decode-Mode), nadzor svetlosti indikatorja (Intensity), register števila priključenih indikatorjev (Scan Limit), nadzor vklopa/izklopa (Shutdown), testni način (Display Test).

Vklop in izklop čipa

Ko je čip priključen na napajanje, se vsi registri ponastavijo in gre v način zaustavitve. V tem načinu je zaslon izklopljen. Za preklop v običajni način delovanja mora biti nastavljen bit D0 registra zaustavitve (naslov 0Сh). Ta bit je mogoče kadar koli počistiti, da se gonilnik prisili k izklopu, vsebina vseh registrov pa ostane nespremenjena. Ta način lahko uporabite za varčevanje z energijo ali v načinu alarma z utripanjem indikatorja (zaporedno vklop in izklop načina izklopa).

Mikrovezje se preklopi v način zaustavitve z zaporednim prenosom naslova (0Сh) in podatkov (00h), prenos 0Ch (naslov) in nato 01h (podatki) pa se vrne v normalno delovanje.

Način dekodiranja

Z uporabo registra za izbiro načina dekodiranja (naslov 09h) lahko uporabite dekodiranje BCD kode B (prikaz znakov 0-9, E, H, L, P, -) ali brez dekodiranja za vsako števko. Vsak bit v registru ustreza eni števki, nastavitev logične enote ustreza vklopu dekoderja za ta bit, nastavitev 0 pomeni, da je dekoder onemogočen. Če se uporablja dekoder BCD, se upošteva samo najnižji zalogaj podatkov v digitalnih registrih (D3-D0), biti D4-D6 se ne upoštevajo, bit D7 ni odvisen od dekoderja BCD in je odgovoren za vklop decimalno vejico na indikatorju, če je D7 = 1. Na primer, ko sta bajta 02h in 05h poslana zaporedoma, bo indikator DIG1 (druga številka z desne) prikazal številko 5. Podobno bo indikator DIG0 pri pošiljanju 01h in 89h prikazal številko 9 z decimalno vejico. . Spodnja tabela prikazuje celoten seznam znakov, prikazanih pri uporabi dekoderja BCD čipa.

Simbol

Podatki v registrih

Omogočeni segmenti = 1

Prazno

*Decimalno vejico nastavi bit D7=1

Ko je dekoder BCD izključen iz delovanja, podatkovni biti D7-D0 ustrezajo segmentnim linijam (A-G in DP) indikatorja.

Nadzor svetlosti indikatorja

Čip vam omogoča programsko upravljanje svetlosti indikatorjev z vgrajenim PWM. Izhod PWM nadzira nibble nizkega reda (D3-D0) registra intenzivnosti (naslov 0Ah), ki vam omogoča nastavitev ene od 16 ravni svetlosti. Ko so vsi bitovi gricka nastavljeni na 1, je izbrana največja svetlost indikatorja.

Število povezanih indikatorjev

Register Scan-Limit (naslov 0Bh) nastavi vrednost števila bitov, ki jih servisira mikrovezje (1 ... 8). Za našo 4-bitno različico je treba vrednost 03h zapisati v register.

Test indikatorja

Register, odgovoren za ta način, se nahaja na naslovu 0Fh. Z nastavitvijo bita D0 v registru uporabnik vklopi vse indikatorske segmente, vsebina krmilnega in podatkovnega registra pa se ne spremeni. Če želite onemogočiti način Display-Test, mora bit D0 biti 0.

Vmesnik z mikrokontrolerjem

Indikatorski modul je mogoče povezati s katerimkoli mikrokontrolerjem, ki ima tri proste I/O linije. Če ima mikrokrmilnik vgrajen strojni modul SPI, lahko indikatorski modul priključimo kot pomožno napravo na vodilo. V tem primeru je mogoče signalne linije SPI SDO (serijski izhod podatkov), SCLK (zaporedna ura) in SS (izbira podrejenega) mikrokrmilnika neposredno povezati z zatiči MOSI, CLK in CS čipa (modula) MAX7219, CS signal je aktiven nizek.

Če mikrokrmilnik nima strojnega SPI, lahko vmesnik organiziramo programsko. Komunikacija z MAX7219 se začne s potegom in držanjem nizke linije CS, nato zaporedno pošiljanjem 16 bitov podatkov (najprej MSB) na liniji MOSI na naraščajočem robu signala CLK. Po zaključku prenosa gre linija CS spet visoko.

V razdelku za prenose lahko uporabniki prenesejo izvorno besedilo testnega programa in datoteko HEX vdelane programske opreme, ki izvaja običajen 4-bitni števec s prikazom vrednosti na indikatorskem modulu z vmesnikom SPI. Uporabljeni mikrokrmilnik je programsko implementiran vmesnik, signalne linije CS, MOSI in CLK indikatorskega modula so priključene na vrata GP0, GP1 in GP2. Prevajalnik mikroC se uporablja za PIC mikrokontrolerji(mikroelektronika

Za komentiranje materialov s spletnega mesta in prejemanje popoln dostop na naš forum, ki ga potrebujete register .


Shema povezave za enomestni sedemsegmentni indikator
Shema povezave za večmestni sedemsegmentni indikator

Naprava za digitalni prikaz informacij. To je najpreprostejša izvedba indikatorja, ki lahko prikaže arabske številke. Za prikaz črk se uporabljajo bolj zapleteni večsegmentni in matrični indikatorji.

Kot že ime pove, je sestavljen iz sedmih prikazovalnih elementov (segmentov), ​​ki se ločeno vklapljajo in izklapljajo. Če jih vključimo v različne kombinacije, jih lahko uporabimo za ustvarjanje poenostavljenih slik arabskih številk.
Segmenti so označeni s črkami od A do G; osmi segment - decimalna vejica (decimalna vejica, DP), zasnovana za prikaz delnih števil.
Občasno se na sedemsegmentnem indikatorju prikažejo črke.

Na voljo so v različnih barvah, običajno beli, rdeči, zeleni, rumeni in modri. Poleg tega so lahko različnih velikosti.

Tudi LED indikator je lahko enomestno (kot na zgornji sliki) ali večmestno. V praksi se v osnovi uporabljajo eno-, dvo-, tri- in štirimestni LED indikatorji:

Poleg desetih števk lahko sedemsegmentni indikatorji prikazujejo tudi črke. Toda malo črk ima intuitivno sedemsegmentno predstavitev.
V latinici: velika A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, male a, b, c, d, e, g , h, i, n, o, q, r, t, u.
V cirilici: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (dve števki), b, E/Z.
Zato se sedemsegmentni indikatorji uporabljajo samo za prikaz preprostih sporočil.

Skupaj lahko sedemsegmentni LED indikator prikaže 128 znakov:

Tipičen LED indikator ima devet vodnikov: eden gre do katod vseh segmentov, ostalih osem pa do anode vsakega segmenta. Ta shema se imenuje "skupno katodno vezje", obstajajo tudi sheme s skupno anodo(potem je obratno). Pogosto na različnih koncih podstavka nista ena, ampak dva skupna priključka - to poenostavi ožičenje brez povečanja dimenzij. Obstajajo tudi tako imenovani "univerzalni", vendar osebno nisem srečal takšnih. Poleg tega obstajajo indikatorji z vgrajenim pomičnim registrom, ki močno zmanjša število vpletenih pinov mikrokontrolerskih vrat, vendar so veliko dražji in se v praksi redko uporabljajo. In ker neizmernosti ni mogoče dojeti, takih indikatorjev zaenkrat ne bomo obravnavali (obstajajo pa tudi indikatorji z veliko večjim številom segmentov, matrični).

Večmestni LED indikatorji pogosto delujejo po dinamičnem principu: izhodi istoimenskih segmentov vseh števk so povezani skupaj. Za prikaz informacij na takem indikatorju mora krmilno mikrovezje ciklično dovajati tok na skupne sponke vseh števk, medtem ko se tok napaja na segmentne sponke glede na to, ali je dani segment osvetljen v dani števki.

Priključitev enomestnega sedemsegmentnega indikatorja na mikrokontroler

Spodnji diagram prikazuje, kako priključen je enomestni sedemsegmentni indikator na mikrokontroler.
Upoštevati je treba, da če indikator z SKUPNA KATODNA, potem je njegov skupni izhod povezan z "zemlja", segmenti pa se vžgejo s hranjenjem logična enota na izhod vrat.
Če je indikator SKUPNA ANODA, potem se napaja na njegovo skupno žico "plus" napetost, segmenti pa se vžgejo s preklopom izhoda vrat v stanje logična ničla.

Indikacija v enomestnem LED indikatorju se izvede z uporabo binarne kode na zatičih vrat mikrokrmilnika ustrezne številke ustreznega logičnega nivoja (za indikatorje z OK - logične enote, za indikatorje z OA - logične ničle).

Upori za omejevanje toka je lahko prisoten v diagramu ali pa tudi ne. Vse je odvisno od napajalne napetosti, ki se napaja na indikator in tehnične lastnosti indikatorji. Če je na primer napetost, ki se napaja na segmentih, 5 voltov in so zasnovani za delovno napetost 2 voltov, je treba namestiti upore za omejevanje toka (za omejitev toka skozi njih za povečano napajalno napetost in ne gorijo ne samo indikator, ampak tudi vrata mikrokrmilnika).
Zelo enostavno je izračunati vrednost uporov za omejevanje toka z uporabo dedkove formule Ohm.
Na primer, značilnosti indikatorja so naslednje (vzeto iz podatkovnega lista):
- delovna napetost - 2 volta
— delovni tok — 10 mA (=0,01 A)
— napajalna napetost 5 voltov
Formula za izračun:
R= U/I (vse vrednosti v tej formuli morajo biti v ohmih, voltih in amperih)
R= (napajalna napetost - delovna napetost)/obratovalni tok
R = (5-2)/0,01 = 300 ohmov

Shema povezave za večmestni sedemsegmentni LED indikator V bistvu enako kot pri priključitvi enomestnega indikatorja. Edina stvar je, da so krmilni tranzistorji dodani v katode (anode) indikatorjev:

Na diagramu ni prikazano, toda med bazami tranzistorjev in zatiči vrat mikrokrmilnika je treba vključiti upore, katerih upor je odvisen od vrste tranzistorja (vrednosti uporov so izračunane, vendar lahko poskusite uporabiti tudi upore z nazivno vrednostjo 5-10 kOhm).

Indikacija z izpusti se izvaja dinamično:
— binarna koda ustrezne števke je nastavljena na izhodih vrat PB za 1. števko, nato pa se logični nivo uporabi za krmilni tranzistor prve števke
— binarna koda ustrezne števke je nastavljena na izhodih vrat PB za 2. števko, nato pa se logični nivo uporabi za krmilni tranzistor druge števke
— binarna koda ustrezne števke je nastavljena na izhodih vrat PB za 3. števko, nato pa se logični nivo uporabi za krmilni tranzistor tretje števke
- torej v krogu
V tem primeru je treba upoštevati:
— za indikatorje z v redu uporabljena je struktura krmilnega tranzistorja NPN(krmiljeno z logično enoto)
- za indikator z OA- strukturni tranzistor PNP(krmiljeno z logično ničlo)

Od pojava radijske tehnike in elektronike Povratne informacije elektronsko napravo in osebo so spremljale različne signalne lučke, gumbi, preklopna stikala, zvonci (signal pripravljenosti mikrovalovne pečice - ding!). Nekatere elektronske naprave zagotavljajo minimalno količino informacij, saj več ne bi bilo potrebno. Na primer, svetleča LED na polnilniku vašega kitajskega telefona pomeni, da je polnilnik priključen in prejema napajanje. Obstajajo pa tudi parametri, za katere bi bilo primerneje zagotoviti objektivne informacije. Na primer, temperatura zraka zunaj ali čas na budilki. Da, vse to bi lahko naredili tudi z žarečimi žarnicami ali LED. Ena stopinja - ena goreča dioda ali žarnica. Koliko stopinj je, toliko indikatorjev je prižganih. Štetje teh kresnic je morda običajna stvar, a še enkrat, koliko teh lučk bo potrebnih za prikaz temperature z natančnostjo desetinke stopinje? In na splošno, kakšno površino bodo te LED in žarnice zasedle na elektronski napravi?

Praktični sedemsegmentni prikazovalniki morajo imeti najmanj osem zunanjih priključnih sponk; sedem jih omogoča dostop do posameznih fotovoltaičnih segmentov, osmi pa skupno povezavo do vseh segmentov. V prvem primeru je naprava znana kot sedemsegmentni zaslon s skupno anodo; v slednjem primeru je naprava znana kot sedemsegmentni zaslon s skupno katodo.

Za poganjanje zaslona s skupno anodo mora imeti gonilnik aktivni nizki izhod, pri katerem je pogon vsakega segmenta običajno visok, vendar preide nizko, da vklopi segment. Za pogon prikazovalnika s skupno katodo mora imeti gonilnik aktiven aktivni izhod.

In na začetku dvajsetega stoletja, s prihodom elektronskih cevi, so se pojavili prvi indikatorji praznjenja v plinu

S pomočjo takšnih indikatorjev je bilo mogoče prikazati digitalne informacije v arabskih številkah. Prej so bile te svetilke uporabljene za izdelavo različnih indikacije za instrumente in druge elektronske naprave. Trenutno se elementi za praznjenje plina skoraj nikjer ne uporabljajo. Toda retro je vedno v modi, zato mnogi radijski amaterji zase in za svoje ljubljene zbirajo čudovite ure s plinskim praznjenjem.

Popolna razlaga tega je nekoliko bolj zapletena, kot sledi. Ko je napetost enaka nič, je segment dejansko neviden. Ko pa je vhodna napetost izrazito pozitivna ali negativna, segment postane dejansko viden, če pa se pogonska napetost vzdržuje več kot nekaj sto milisekund, lahko postane segment trajno viden in nima več pomena.

Pod temi pogoji je segment onemogočen. Tako je segment vključen pod temi pogoji. Ta oblika pogona je splošno znana kot sistem "mostnega pogona" s podvojitvijo napetosti. Zaporedje dejanj sheme je naslednje. Prej opisan preprost kaskadni sistem ima resno napako, saj postane zaslon med dejanskim obdobjem štetja zamegljen in postane stabilen in berljiv šele, ko je vsako štetje končano in so vhodna vrata zaprta. Ta "zamegljen in berljiv" tip zaslona je zelo moteč.

Slabosti plinskih žarnic - veliko jedo. O trajnosti se lahko prepiramo. Na naši univerzi še vedno uporabljamo frekvencmetre na plinskih razbremenilnikih v laboratorijih.

S prihodom LED se je situacija dramatično spremenila. LED same porabijo majhno količino toka. Če jih postavite na pravi položaj, lahko prikažete popolnoma vse informacije. Da bi poudarili vse arabske številke, je bilo dovolj le nekaj sedem (od tod ime sedemsegmentni indikator) svetleči LED trakovi razporejeni na določen način:

Slika 13 prikazuje izboljšano vezje frekvenčnega števca, ki uporablja zaklepanje zaslona za premagovanje zgornje napake. Ta shema deluje na naslednji način. Istočasno se odprejo vhodna vrata in števci začnejo seštevati impulze vhodnega signala. Ta števec deluje točno eno sekundo in v tem času štiribitni zapahi preprečujejo, da bi izhod števca dosegel gonilnike zaslona; zaslon v tem času ostane stabilen.

Po nekaj sekundah se zaporedje znova ponovi, pri čemer se števci znova zaženejo in nato eno sekundo štejejo impulze vhodne frekvence, med katerimi se na zaslonu neprekinjeno prikaže prejšnje štetje itd.

Skoraj vsi takšni sedemsegmentni indikatorji dodajo tudi osmi segment - piko, tako da je mogoče prikazati celo in delno vrednost katerega koli parametra.

Tako vezje na sliki 13 proizvaja stabilen zaslon, ki se posodablja enkrat na sekundo; v praksi je dejansko obdobje štetja tega in diagrama na sliki 12 mogoče narediti v kateri koli dekadi z več ali delnimi sekundami, pod pogojem, da je izhodni prikaz ustrezno prilagojen.

Upoštevajte, da lahko trimestni frekvenčni števec prikaže največje frekvence 999 Hz pri uporabi enosekundne časovne baze, 99 kHz pri uporabi 100 ms časovne baze, 9 kHz pri uporabi 10 ms časovne baze in 999 kHz pri uporabi 1 ms časovna osnova.

V teoriji se izkaže, da gre za osemsegmentni indikator, po starem pa se imenuje tudi sedemsegmentni in v tem ni nobene napake.

Skratka, sedemsegmentni indikator so LED diode, ki se nahajajo relativno ena proti drugi v določenem vrstnem redu in so zaprte v enem ohišju.

To metodo je mogoče razumeti s pomočjo slik 14 in 15. Ta stikala so povezana skupaj in zagotavljajo dejansko delovanje multiplekserja in jih je treba obravnavati kot elektronska stikala visoke hitrosti, ki se večkrat preklopijo skozi položaje 1, 2 in zaporedje operacij vezje je naslednje. Najprej predpostavimo, da je stikalo v položaju.

Nekaj ​​trenutkov kasneje se stikalo premakne v položaj 3, kar povzroči, da zaslon 3 po nekaj minutah prikaže številko, celoten cikel se začne znova ponavljati in tako naprej, dodajanje neskončnosti. V praksi se približno 50 teh ciklov zgodi vsako sekundo, tako da oko ne vidi ločenega vklopa in izklopa zaslonov, ampak jih zazna kot navidezno stabilen zaslon, ki prikazuje številko 327 ali kakšno drugo številko, ki jo narekuje podatkovni segment.

Če upoštevamo diagram enega sedemsegmentnega indikatorja, je videti takole:

Kot vidimo, je sedemsegmentni indikator lahko bodisi z skupna anoda (CA), torej z skupna katoda (OC). Grobo rečeno, če imamo sedem segmentov s skupno anodo (OA), potem bi morali v vezju na ta zatič obesiti "plus", in če s skupno katodo (OC), potem "minus" ali ozemljitev . Na kateri pin damo napetost, bo zasvetila ta LED. Vse to pokažimo v praksi.

V praktičnih multiplekserjih je najvišji prikazni tok precej visok, da zagotovi zadostno svetlost zaslona. Na sl. Slika 15 prikazuje primer izboljšane metode multipleksiranja, uporabljene za trimestni frekvenčni števec. Ta metoda ima dve glavni prednosti.

Če so ti terminali aktivni visoko, bodo imeli naslednje značilnosti. sl. 18 in 19. Slika 18 prikazuje tehniko zatiranja valovanja, ki se uporablja za zagotavljanje zatiranja vodilne ničle na štirimestnem zaslonu, ki bere količino.

Na zalogi imamo naslednje LED indikatorje:

Kot lahko vidimo, so sedemsegmentne naprave lahko eno- in večbitne, to je dve, tri, štiri sedemsegmentne naprave v enem ohišju. Za preverjanje sodobne sedemsegmentne naprave potrebujemo le multimeter s funkcijo testiranja diod. Iščemo splošen zaključek - lahko je OA ali OK - naključno in nato pogledamo uspešnost vseh segmentov indikatorja. Preverimo tri-bitni sedem segmentov:

Tako se prikaže na zaslonu. V bistvu so enostavni za uporabo, napajajo in svetijo. Lahko so moteči, ker imajo nekakšno polarnost, kar pomeni, da bodo delovali le, če jih pravilno povežete. Če prekličete pozitivno in negativno napetost, sploh ne bosta zasvetili.

Čeprav je nadležno, je tudi precej uporabno. Druga žica je katoda. Katoda je povezana z maso. V bistvu bo prišlo do tega. Za navadno katodo uporabite tok na zatičih, ki jih želite vklopiti. Multipleksiranje. Za to obstajajo celo krmilniki zaslona, ​​če ne želite skrbeti za preklapljanje v programski opremi.

Ups, en segment je zagorel, zato na enak način preverjamo ostale segmente.

Včasih napetost na risanki ni dovolj za preverjanje segmentov indikatorja. Zato vzamemo napajalnik, ga nastavimo na 5 voltov, na eno sponko napajalnika pritrdimo upor 1-2 kiloohmov in začnemo preverjati sedemsegmentno enoto.

7-segmentni nadzor zaslona

Torej, ko imate 4-mestno, multipleksirano 7 segmentno skupno anodo. Najprej moramo vedeti, kakšno vrsto zaslona imamo, saj sta možni dve obliki: skupna katoda in skupna anoda. Stvari, ki jih boste potrebovali za to vadnico. Levo: grafični pogled 7-segmentnega zaslona, ​​ki prikazuje eno splošno postavitev za notranje ožičenje in lokacije nožic.

Na tej točki bodite pozorni na začetni izpis, saj ga boste potrebovali kasneje pri nalaganju programa. Če bi bil zaslon navadna katoda, bi jo preklicali. Na dnu članka je fotografija vezja, ki je na moji prototipni plošči. Ponujamo tudi knjižnico za nadzor več kot enega zaslona.

Zakaj potrebujemo upor? Ko se na LED priključi napetost, ob vklopu začne močno porabljati tok. Zato lahko v tem trenutku izgori. Za omejitev toka je upor zaporedno povezan z LED. Več si lahko preberete v tem članku.

Hex štetje na enem 7-segmentnem zaslonu

Slaba stran je, da zahtevajo veliko virov. Ta poseben zaslon ima štiri števke in dva dvopičja. Vendar pa naprava tudi zagotavlja digitalni nadzor svetlost zaslona prek notranjega širokopasovnega modulatorja. V takšnih primerih se lahko izhod izvede na več 7-segmentnih zaslonih.

S tem prihranimo kontakte na ohišju in nato na krmiljenju. V skladu s tem se imenujejo zasloni s skupno anodo ali skupno katodo. Izhod, ki ustreza segmentu ali decimalni vejici, je najbolje izvleči iz podatkovnega lista za prikaz. 7-segmentni zaslon, ki je ocenjen na običajnih 10-20 mA, bo še vedno svetil, čeprav slabo. Vendar to ne zahteva dodeljevanja stikov. Naslednja porazdelitev tega segmenta temelji na.

Na enak način preverimo štirimestno sedemsegmentno iz kitajskega radia

Mislim, da s tem ne bi smelo biti posebnih težav. V vezjih so sedemsegmentna vezja povezana z upori na vsakem zatiču. To je tudi posledica dejstva, da LED-diode, ko se na njih napaja napetost, mrzlično porabljajo tok in izgorevajo.

Če je uporabljen drug namen, je to načeloma možno, vendar je to treba upoštevati pri programiranju. Pretvarjanje posameznih števk v določen izhodni vzorec je mogoče izvesti z uporabo nečesa, kar se imenuje. Vsi ostali segmenti morajo biti temni. Če je to potrditveno polje označeno za vse števke, je podana naslednja tabela.

IN testni programštevilke od 0 do 9 so zaporedno prikazane na 7-segmentnem zaslonu. Izhodna številka je shranjena v števcu registra in se v ciklu poveča za 1. Če register doseže vrednost 10, se znova ponastavi na 0. Ko je dvignjen, pride do čakalne zanke, ki zagotovi, da je v naslednji izdaji minilo določeno obdobje. Običajno ne bi izvajali tako dolgih čakalnih ciklov, vendar tukaj ne gre za čakanje, temveč za nadzor 7-segmentnega zaslona. Uporaba časovnika za to je prevelik napor.

V našem sodobnem svetu sedemsegmentne naprave že nadomeščajo LCD indikatorji, ki lahko prikazujejo popolnoma drugačne informacije

vendar za njihovo uporabo potrebujete določene veščine pri načrtovanju vezja takšnih naprav. Zaenkrat ni nič preprostejšega ali cenejšega od sedemsegmentnih LED indikatorjev.

Dejanska težava in zato zanimiv del tega članka pa se pojavi neposredno po zanki oznake. Upoštevajte, da je treba vrednost števca podvojiti. To je neposredno povezano z dejstvom, da je bliskovni pomnilnik besedni in ne bajtni. Drugi primer na tej strani naredi drugače. Prikazuje, kako lahko asembler prek drugega vnosa v tabelo prepreči ustvarjanje polnilnih bajtov. Zanimivo je tudi, da izračun zahteva register, ki vsebuje vrednost 0.

Zato je treba to konstanto najprej naložiti v register in šele nato je mogoče izvesti seštevanje z uporabo tega registra. Zanimivo je, da to dejstvo najdemo v mnogih programih, konstante pa so v veliki večini primerov konstanta 0. Zato mnogi programerji že na začetku rezervirajo register za to in ga imenujejo ničelni register.

V tem članku bomo govorili o digitalnem zaslonu.
Sedemsegmentni LED indikatorji so zasnovani za prikaz arabskih številk od 0 do 9 (slika 1).

Takšni indikatorji so enomestni, ki prikazujejo samo eno številko, lahko pa je več sedemsegmentnih skupin, združenih v eno ohišje (večmestno). V tem primeru so številke ločene z decimalno vejico (slika 2)

Na žalost obstaja težava, ker zaslon potrebuje osem vrat – štirje oglasi bi potrebovali 32 vrat. Obstaja pa več načinov. Shift registri so že opisani v drugi vadnici. To bi olajšalo ustvarjanje potrebnih 32 izhodnih linij s samo tremi nožicami. Načelo krmiljenja se ne razlikuje od vožnje z enim samim 7-segmentnim zaslonom, le način, kako se "izhodni zatiči" približajo svojim vrednostim, je drugačen in je določen z uporabo premikovnih registrov. Vklopljeno ta trenutek vendar mora biti prikazana druga možnost upravljanja.



Slika 2.

Indikator se imenuje sedemsegmentni zaradi dejstva, da je prikazani simbol sestavljen iz sedmih ločenih segmentov. Znotraj ohišja takšnega indikatorja so LED diode, od katerih vsaka osvetljuje svoj segment.
Na takih indikatorjih je problematično prikazati črke in druge simbole, zato se za te namene uporabljajo 16-segmentni indikatorji.

Spodaj si bomo ponovno ogledali multipleksiranje. Multipleksiranje pomeni, da niso vklopljeni vsi štirje zasloni hkrati, ampak samo eden naenkrat kratek čas. Če se menjava med zasloni zgodi hitreje, kot lahko ljudje zaznamo, se zdi, da vse štiri lučke delujejo hkrati, čeprav le ena sveti za kratek čas. Na ta način si lahko štirje zasloni delijo posamezne segmente segmentov, vse kar je potrebno pa so 4 dodatne krmilne linije za 4 zaslone, s katerimi je zaslon omogočen.

En vidik te vrste nadzora je pogostost multipleksiranja, to je celoten cikel prehoda z enega zaslona na drugega. Biti mora dovolj visok, da prepreči utripanje zaslona. Človeško oko je počasno, v kinu 24 sličic na sekundo, pri čemer je TV za varno, da so tudi mirne slike mirne, vsak segment mora biti kontroliran vsaj 100 Hz, torej se poveže vsaj vsakih 10 ms. V izjemnih primerih pa lahko še vedno utripa tudi 100 Hz, na primer, ko se zaslon hitro premika ali ko pride do motenj z umetnimi viri svetlobe, ki delujejo na izmenični tok.

LED indikatorji so na voljo v dveh vrstah.
V prvem od njih so vse katode, tj. negativni priključki vseh LED so združeni in na ohišju jim je dodeljen ustrezen priključek.
Preostale sponke indikatorja so povezane z anodo vsake LED (slika 3, a). To vezje se imenuje "skupno katodno vezje".
Obstajajo tudi indikatorji, v katerih so LED diode vsakega segmenta povezane po vezju s skupno anodo (slika 3, b).



Slika 3.

Vsak segment je označen z ustrezno črko. Slika 4 prikazuje njihovo lokacijo.

Slika 4.

Kot primer upoštevajte dvomestni sedemsegmentni indikator GND-5622As-21 rdeče barve. Mimogrede, obstajajo tudi druge barve, odvisno od modela.
S pomočjo trivoltne baterije lahko vklopite segmente, in če združite skupino nožic v šop in jih napajate, lahko celo prikažete številke. Toda ta metoda je neprijetna, zato se za krmiljenje sedemsegmentnih indikatorjev uporabljajo preklopni registri in dekoderji. Prav tako so pogosto indikatorski pini priključeni neposredno na izhode mikrokontrolerja, vendar le, če se uporabljajo indikatorji z nizko porabo toka. Slika 5 prikazuje delček vezja z uporabo PIC16F876A.



Slika 5.

Za nadzor sedemsegmentnega indikatorja se pogosto uporablja dekoder K176ID2.
Ta čip je sposoben pretvoriti binarno kodo, sestavljeno iz ničel in enic, v decimalne številke od 0 do 9.

Da bi razumeli, kako vse deluje, morate sestaviti preprosto vezje (slika 6). Dekoder K176ID2 je v ohišju DIP16. Ima 7 izhodnih zatičev (zatiči 9 - 15), od katerih je vsak namenjen določenemu segmentu. Kontrola točk tukaj ni na voljo. Mikrovezje ima tudi 4 vhode (pins 2 - 5) za dovajanje binarne kode. 16. in 8. nožica sta napajana s plusom oziroma minusom. Preostali trije sklepi so pomožni, o njih bom govoril malo kasneje.



Slika 6.

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

V vezju so 4 preklopna stikala (možni so kateri koli gumbi), ko jih pritisnete, se na vhode dekoderja iz napajalnika plus napaja logična. Mimogrede, samo mikrovezje se napaja z napetostjo od 3 do 15 voltov. V tem primeru celotno vezje napaja 9-voltno napajanje.

V vezju so tudi 4 upori. To so tako imenovani pull-up upori. Potrebni so za zagotovitev, da je logični vhod nizek, ko ni signala. Brez njih odčitki na indikatorju morda ne bodo pravilno prikazani. Priporočljivo je, da uporabite enakoodpornost od 10 kOhm do 100 kOhm.

Na diagramu nožice 2 in 7 indikatorja HG1 niso povezane. Če pin DP priključite na minus napajalnik, bo decimalna vejica zasvetila. In če na izhodu Dig.2 dodate minus, bo zasvetila tudi druga skupina segmentov (prikazala bo isti simbol).

Vhodi dekoderja so zasnovani tako, da za prikaz številk 1, 2, 4 in 8 na indikatorju morate pritisniti samo en gumb (postavitev ima preklopna stikala, ki ustrezajo vhodom D0, D1, D2 in D3). Če signala ni, se prikaže številka nič. Ko je signal dodan na vhod D0, se prikaže številka 1. In tako naprej. Če želite prikazati druge številke, morate pritisniti kombinacijo preklopnih stikal. Tabela 1 nam bo povedala, katere moramo pritisniti.


Tabela 1.

Za prikaz številke "3" morate na vhod D0 in D1 uporabiti logično eno. Če uporabite signal za D0 in D2, bo prikazana številka "5".(slika 6).



Slika 6.

Tukaj je razširjena tabela, v kateri vidimo ne samo pričakovano sliko, ampak tudi tiste segmente (a - g), ki bodo sestavljali to sliko.



Tabela 2.

1., 6. in 7. zatiči mikrovezja so pomožni (S, M, K).

V diagramu (slika 6) je 6. nožica "M" ozemljena (na napajalni minus) in na izhodu mikrovezja je pozitivna napetost za delo z indikatorjem s skupno katodo. Če se uporablja indikator s skupno anodo, je treba eno pritrditi na 6. nožico.

Če se na 7. zatič "K" uporabi logična ena, potem znak indikatorja ugasne, ničla omogoča indikacijo. V shemi ta sklep ozemljen (na minus napajanja).

Na prvi izhod dekoderja se napaja logična enota (plus moč), ki omogoča prikaz pretvorjene kode na indikatorju. Toda če na ta zatič (S) uporabite logično ničlo, bodo vhodi prenehali prejemati signal in trenutno prikazan znak bo zamrznil na indikatorju.

Zanimiva stvar je, da vemo, da preklopno stikalo D0 vklopi številko "1", preklopno stikalo D1 pa vklopi številko "2". Če pritisnete obe preklopni stikali, se prikaže številka 3 (1+2=3). In v drugih primerih indikator prikazuje vsoto številk, ki sestavljajo to kombinacijo. Ugotovimo, da so vhodi dekoderja razporejeni premišljeno in imajo zelo logične kombinacije.

Ogledate si lahko tudi video za ta članek.

Povežimo sedemsegmentni LED indikator na ploščo Arduino in se naučimo, kako ga upravljati s knjižnico Led4Digits.h.

Prejšnja lekcija je podrobno opisala mikrokrmilnike. Povežimo tak indikator na ploščo Arduino.

Diagram za priključitev indikatorja na ploščo Arduino izgleda takole.

Sestavil sem ga na vezje.

Za upravljanje indikatorjev sem napisal knjižnico Led4Digits.h:

In plačati.

Knjižnica vam omogoča upravljanje sedemsegmentnih indikatorjev:

  • do štirimestna velikost;
  • s poljubnimi različicami polarnosti krmilnega impulza (vse);
  • deluje v vzporednem procesu;
  • omogoča prikaz na indikatorju:
    • segmenti vsake kategorije;
    • števko vsake števke;
    • celo število 0 ... 9999;
  • za izpis celega števila je mogoče določiti število števk;
  • Obstaja način za zatiranje nepomembnih števk.

Knjižnico Led4Digits.h lahko prenesete s te povezave:

In plačati. Samo 40 rubljev. na mesec za dostop do vseh virov spletnega mesta!

Kako namestiti je napisano v .

Izvornih besedil ne bom posredoval. Lahko jih poiščete v datotekah knjižnice. Kot vedno je tudi tukaj veliko komentarjev. Natančno bom s primeri opisal, kako uporabljati knjižnico.

Nadzorna knjižnica LED za Arduino Led4Digits.

Tukaj je opis razreda. Podal sem samo javne metode in lastnosti.

razred Led4Digits (
javnost:
bajtna številka; // kontrolne kode bitnega segmenta
void regen(); // regeneracijo, je treba metodo redno klicati
void tetradToSegCod(byte dig, byte tetrad); // pretvorbo tetradnih v segmentne kode
logični izpis (nepodpisana int vrednost, bajt digitNum, bajt prazen); // celoštevilski izpis



} ;

Konstruktor.

Led4Digits (byte typeLed, byte digitPin0, byte digitPin1, byte digitPin2, byte digitPin3,
bajt segPinA, bajt segPinB, bajt segPinC, bajt segPinD,
bajt segPinE, bajt segPinF, bajt segPinG, bajt segPinH);

typeLed Nastavi polariteto krmilnega impulza za signale izbire bitov in segmentov. Podpira vse povezovalne sheme ().

typeLed Izbira kategorije Izbira segmenta Vrsta vezja
0 -_- -_- Skupna anoda s tipkami za izbiro razelektritve
1 _-_ -_- Skupna anoda
2 -_- _-_ Skupna katoda
3 _-_ _-_ Skupna katoda s tipkami za izbiro razelektritve

digitPin0...digitPin3– izhodi za izbiro števk. Če je digitPin = 255, je številka onemogočena. To vam omogoča povezovanje indikatorjev z manj števkami. digitPin0 – nizka (desna) številka.

segPinA...segPinH– krmilni izhodi segmentov.

na primer

pomeni: tip indikatorja 1; izhodi za praznjenje 5,4,3,2; izhodi segmentov 6,7,8,9,10,11,12,13.

metoda void regen().

Metodo je treba redno klicati v vzporednem procesu. Regenerira sliko na indikatorjih. Čas cikla regeneracije je enak obdobju klica metode, pomnoženemu s številom bitov.

na primer

// upravljalnik prekinitev 2 ms
void timerInterrupt() (
disp.regen(); // regeneracija indikatorja
}

Bajtno števčno polje

Vsebuje stanje segmentov. števka je najmanj pomemben bit, najmanj pomemben bit števke je segment "A" najmanj pomembnega bita. Bitno stanje 1 pomeni, da je segment osvetljen.

na primer

številka = B0000101;

pomeni, da v drugi števki svetita segmenta "A" in "C".

Primer programa, ki zaporedno osvetli vse segmente vsake števke.

// tekaški segmenti
#vključi
#vključi

//
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
prekinitev časovnika 2 ms
MsTimer2::start(); // omogoči prekinitev
}

void loop() (
za (int i = 0; i< 32; i++) {
if (i == 0) disp.digit= 1;
else if (i == 8) disp.digit= 1;
else if (i == 16) disp.digit= 1;
else if (i == 24) disp.digit= 1;
sicer (
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
zamuda (250);
}
}

//upravljalnik prekinitev 2 ms
void timerInterrupt() (
disp.regen(); // regeneracija indikatorja
}

V nizu številk je 1 premaknjena in indikatorji to prikažejo.

Metoda void tetradToSegCod(byte dig, byte tetrad)

Metoda omogoča prikaz številk in črk šestnajstiške kode v posameznih cifrah. Ima argumente:

  • dig – številčna številka 0 ... 3;
  • tetrad – koda decimalnih znakov. Koda 0 bo prikazala številko "0", koda 1 - številko "1", koda 14 - črko "E".

na primer

tetrada (2, 7);

bo na tretji števki prikazal številko "7".

Primer programa, ki po vrsti spreminja znake v vsaki števki.

// številke eno za drugo
#vključi
#vključi

// tip indikatorja 1; izhodi za praznjenje 5,4,3,2; segmentni izhodi 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // prekinitev časovnika 2 ms
MsTimer2::start(); // omogoči prekinitev
}

void loop() (
za (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
zamuda (250);
}
}

// upravljalnik prekinitev 2 ms
void timerInterrupt() (
disp.regen(); // regeneracija indikatorja
}

Metoda Boolean print (nepredznačena int vrednost, bajt digitNum, bajt prazen)

Metoda na indikatorjih prikaže celo število. Pretvori binarno število v BCD za vsako števko. Ima argumente:

  • vrednost – številka, ki je prikazana na indikatorju.
  • digitNum – število števk za številko. Tega ne smemo zamenjevati s številom indikatorskih števk. Morda boste želeli prikazati številko na dveh cifrah in prikazati znake na drugih dveh z uporabo števke.
  • prazno – znak za izločitev nepomembnih števk. prazno=0 pomeni, da mora biti število prikazano z ničlami. Številka "7" bo videti kot "0007". Če je prazno mesto drugačno od 0, bodo nepomembne ničle izključene.

Če številska vrednost presega dovoljeno število za izbrano število števk (digitNum), bo funkcija na indikatorju prikazala »---« in vrnila false.

Primer programa za izpis števila.

// izhodno število
#vključi
#vključi

// tip indikatorja 1; izhodi za praznjenje 5,4,3,2; segmentni izhodi 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // prekinitev časovnika 2 ms
MsTimer2::start(); // omogoči prekinitev
}

void loop() (
za (int i = 0; i< 12000; i++) {
disp.print(i, 4, 1);
zamuda (50);
}
}

// upravljalnik prekinitev 2 ms
void timerInterrupt() (
disp.regen(); // regeneracija indikatorja
}

Zadnji dve metodi ne spremenita stanja segmenta "H" - ​​decimalne vejice. Če želite spremeniti stanje točke, lahko uporabite ukaze:

številka |= 0x80; // osvetli decimalno vejico
številka &= 0x7f; // ugasni decimalno vejico

Izhod v indikatorje negativnih števil (int).

Negativna števila je mogoče izpisati na naslednji način:

  • Preverite znak števila.
  • Če je število negativno, na najpomembnejšo števko natisnite znak minus in v funkciji print() spremenite predznak števila v pozitivno.
  • Če je število pozitivno, potem izključite predznakovni bit in natisnite število s funkcijo print().

Tukaj je program, ki prikazuje to metodo. Izpiše številke od -999 do 999.

// izpiši negativna števila
#vključi
#vključi

// tip indikatorja 1; izhodi za praznjenje 5,4,3,2; segmentni izhodi 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // prekinitev časovnika 2 ms
MsTimer2::start(); // omogoči prekinitev
}

void loop() (

za (int i = -999; i< 1000; i++) {

če jaz< 0) {
// številka je negativna
disp.digit= B01000000; // znak -
disp.print(i * -1, 3, 1);
}
sicer (
disp.digit= B00000000; // počisti znak
disp.print(i, 3, 1);
}

zamuda (50);
}
}

// upravljalnik prekinitev 2 ms
void timerInterrupt() (
disp.regen(); // regeneracija indikatorja
}

Izhod v indikatorje delnih števil, plavajoči format.

Obstaja veliko načinov za prikaz števil s plavajočo vejico (float) na indikatorjih z uporabo standardnih funkcij jezika C. To je najprej funkcija sprint(). Deluje zelo počasi, zahteva dodatne pretvorbe znakovnih kod v binarne decimalne kode, iz niza je treba izluščiti točko. Enake težave z drugimi funkcijami.

Uporabljam drugačno metodo prikaza vrednosti plavajočih spremenljivk na indikatorjih. Metoda je preprosta, zanesljiva, hitra. Zmanjša se na naslednje operacije:

  • Število s plavajočo vejico se pomnoži z 10 na potenco, ki ustreza zahtevanemu številu decimalnih mest. Če morate na indikatorjih prikazati 1 decimalno mesto, pomnožite z 10, če 2, potem pomnožite s 100, 3 decimalna mesta pa s 1000.
  • Nato se število s plavajočo vejico izrecno pretvori v celo število (int) in prikaže na indikatorjih s funkcijo print().
  • V zahtevani številki se postavi pika.

Naslednje vrstice bodo na primer izpisale plavajočo spremenljivko z dvema decimalnima mestoma za sedemsegmentne LED.

float x = 2,12345;

disp.digit |= 0x80; //

Število pomnožimo s 100 in tako, da na tretjem mestu postavimo piko, rezultat delimo s 100.

Tukaj je program, ki na indikatorjih prikazuje števila s plavajočo vejico od 0,00 do 99,99.

// izhod s plavajočo vejico
#vključi
#vključi

// tip indikatorja 1; izhodi za praznjenje 5,4,3,2; segmentni izhodi 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // prekinitev časovnika 2 ms
MsTimer2::start(); // omogoči prekinitev
}

void loop() (
float x = 0;

za (int i = 0; i< 10000; i++) {
x += 0,01;

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // osvetli točko tretje stopnje

zamuda (50);
}
}

//upravljalnik prekinitev 2 ms
void timerInterrupt() (
disp.regen(); // regeneracija indikatorja
}

Kot lahko vidite, knjižnica Led4Digits.h močno poenostavi delo s sedemsegmentnimi indikatorji svetlečih diod (LED), ki so priključeni na ploščo Arduino. Nisem našel analoga takšne knjižnice.

Obstajajo knjižnice za delo z LED zasloni prek premičnega registra. Nekdo mi je pisal, da je našel knjižnico, ki deluje z LED zaslonom, neposredno povezanim s ploščo Arduino. Toda pri uporabi indikatorske številke svetijo neenakomerno in mežikajo.

Za razliko od svojih analogov, knjižnica Led4Digits.h:

  • Teče kot vzporedni proces. V glavni zanki program naloži podatke v določene spremenljivke, ki se samodejno prikažejo na zaslonu. Izhod informacij in regeneracija indikatorja se pojavita v prekinitvi časovnika, nevidni za glavni program.
  • Številke na zaslonu svetijo enakomerno, brez utripanja. Ta lastnost je zagotovljena z dejstvom, da regeneracija poteka v ciklu, ki je strogo določen s prekinitvijo časovnika.
  • Knjižnica ima kompaktno kodo, se hitro izvaja in minimalno obremenjuje krmilnik.

V naslednji lekciji bomo na ploščo Arduino hkrati povezali LED indikator in matriko gumbov. Napišimo knjižnico za takšno zasnovo.

Kategorija: . Lahko ga dodate med zaznamke.


Vrh