4-numeroinen ilmaisin Arduino-yhteys. Seitsemän segmentin ilmaisin. Tulostus murtolukujen indikaattoreihin, kelluva muoto

On parametreja, joista olisi kätevämpää antaa objektiivista tietoa pelkän viittauksen sijaan. Esimerkiksi ulkoilman lämpötila tai herätyskellon aika. Kyllä, kaikki tämä voitaisiin tehdä hehkuvilla lampuilla tai LEDeillä. Yksi aste – yksi palava LED tai hehkulamppu jne. Mutta näiden tulikärpästen laskeminen - no ei! Mutta kuten sanotaan, eniten yksinkertaisia ​​ratkaisuja- luotettavin. Siksi kehittäjät pitivät miettimättä yksinkertaisia ​​LED-nauhoja ja järjestivät ne oikeaan järjestykseen.

1900-luvun alussa adventin myötä tyhjiöputket ensimmäiset kaasupurkausilmaisimet ilmestyivät

Tällaisten indikaattoreiden avulla oli mahdollista päätellä digitaalista tietoa arabialaisilla numeroilla. Aiemmin tällaisissa lampuissa tehtiin erilaisia ​​​​merkintöjä laitteille ja muille elektroniset laitteet. Tällä hetkellä kaasupurkauselementtejä ei käytetä lähes koskaan missään. Mutta retro on aina muodikas, joten monet radioamatöörit keräävät upeita kelloja kaasupurkausilmaisimiin itselleen ja rakkailleen.


Kaasupurkauslamppujen haittana on, että ne kuluttavat paljon sähköä. Kestävyydestä voi kiistellä. Yliopistossamme käytämme edelleen taajuuslaskuria laboratoriohuoneissamme. kaasupurkausilmaisimet.

Seitsemän segmentin indikaattorit

LEDien myötä tilanne on muuttunut dramaattisesti parempaan suuntaan. LEDit itse kuluttavat pieni virta. Jos asetat ne oikeaan asentoon, voit näyttää mitä tahansa tietoa. Kaikkien arabialaisten numeroiden korostamiseksi riittää vain seitsemän valaisevaa LED-nauhaa - segmenttejä, jotka on asetettu tietyllä tavalla:

Lähes kaikkiin tällaisiin seitsemän segmentin indikaattoreihin lisätään myös kahdeksas segmentti - piste, jotta on mahdollista näyttää minkä tahansa parametrin kokonaisluku ja murtoluku.

Teoriassa saamme kahdeksan segmentin indikaattorin, mutta vanhaan tapaan sitä kutsutaan myös seitsemän segmentin indikaattoriksi.

Mikä on lopputulos? Jokainen seitsemänsegmenttisen ilmaisimen nauha on valaistu LEDillä tai LED-ryhmällä. Tämän seurauksena korostamalla tiettyjä segmenttejä voimme näyttää numeroita 0 - 9 sekä kirjaimia ja symboleja.

Tyypit ja merkinnät kaaviossa

On yksinumeroisia, kaksinumeroisia, kolminumeroisia ja nelinumeroisia seitsemän segmentin ilmaisimia. En ole koskaan nähnyt enempää kuin neljää kategoriaa.

Kaavioissa seitsemän segmentin ilmaisin näyttää tältä:

Itse asiassa jokaisella seitsemänsegmenttisellä osoittimella on pääliittimien lisäksi yhteinen liitin, jossa on yhteinen anodi (OA) tai yhteinen katodi (OC).

Seitsemän segmentin ilmaisimen sisäinen piiri yhteisellä anodilla näyttää tältä:


ja tavallisella katodilla, kuten tämä:


Jos meillä on seitsemän segmentin ilmaisin yhteisellä anodilla (OA), niin piirissä meidän on syötettävä "plus" teho tähän nastaan, ja jos yhteisellä katodilla (OC), niin "miinus" tai maa.

Kuinka tarkistaa seitsemän segmentin ilmaisin

Meillä on seuraavat indikaattorit:


Nykyaikaisen seitsemän segmentin indikaattorin tarkistamiseksi tarvitsemme vain yleismittarin, jossa on dioditestaustoiminto. Aluksi etsimme yleistä johtopäätöstä - se voi olla joko OA tai OK. Täällä vain sattumanvaraisesti. No, sitten tarkistamme indikaattorin muiden segmenttien suorituskyvyn yllä olevien kaavioiden mukaisesti.

Kuten alla olevasta kuvasta näkyy, testattava segmentti syttyy. Tarkistamme muut segmentit samalla tavalla. Jos kaikki segmentit palavat, tällainen ilmaisin on ehjä ja sitä voidaan käyttää kehityksessäsi.


Joskus yleismittarin jännite ei riitä segmentin testaamiseen. Siksi otamme virtalähteen ja asetamme sen 5 volttiin. Segmentin läpi kulkevan virran rajoittamiseksi tarkistamme 1-2 kiloohmin vastuksen.


Samalla tavalla tarkistamme osoittimen kiinalaisesta vastaanottimesta


Piireissä seitsemän segmentin ilmaisimet on kytketty vastuksiin jokaisessa nastassa

Meidän moderni maailma seitsemän segmentin indikaattorit korvataan nestekidenäyttöillä, jotka voivat näyttää mitä tahansa tietoa

mutta käyttääksesi niitä, tarvitset tiettyjä taitoja tällaisten laitteiden piirisuunnittelussa. Siksi seitsemän segmentin indikaattoreita käytetään edelleen tänään, koska ne ovat edullisia ja helppokäyttöisiä.

Seitsensegmenttiset LED-ilmaisimet ovat erittäin suosittuja digitaalisten arvon näyttölaitteiden keskuudessa ja niitä käytetään mikroaaltouunien etupaneeleissa, pesukoneet, digitaaliset kellot, laskurit, ajastimet jne. LCD-ilmaisimiin verrattuna LED-ilmaisinsegmentit hehkuvat kirkkaasti ja ovat näkyvissä pitkän matkan päässä ja laajalla katselukulmalla. Seitsemän segmentin 4-bittisen ilmaisimen liittäminen mikro-ohjaimeen vaatii vähintään 12 I/O-linjaa. Siksi on melkein mahdotonta käyttää näitä indikaattoreita mikro-ohjaimien kanssa, joissa on pieni määrä nastaja, esimerkiksi yrityksen sarjassa. Tietysti saa käyttää erilaisia ​​menetelmiä multipleksointi (jonka kuvaus löytyy verkkosivuston "Kaaviot"-osiosta), mutta myös tässä tapauksessa jokaiselle menetelmälle on tiettyjä rajoituksia, ja ne käyttävät usein monimutkaisia ​​ohjelmistoalgoritmeja.

Tarkastellaan tapaa kytkeä indikaattori SPI-liitännän kautta, mikä vaatii vain 3 mikrokontrollerin I/O-linjaa. Samalla kaikkien indikaattorisegmenttien hallinta säilyy.

4-bittisen ilmaisimen liittämiseksi mikro-ohjaimeen SPI-väylän kautta käytetään yrityksen valmistamaa erikoistunutta ajurisirua. Mikropiiri pystyy ohjaamaan kahdeksaa seitsemänsegmentistä indikaattoria yhteisellä katodilla ja sisältää BCD-dekooderin, segmenttiohjaimet, multipleksointipiirin ja staattisen RAM-muistin numeroarvojen tallentamiseen.

Ilmaisinsegmenttien läpi kulkeva virta asetetaan käyttämällä vain yhtä ulkoista vastusta. Lisäksi siru tukee ilmaisimen kirkkauden ohjausta (16 kirkkaustasoa) sisäänrakennetun PWM:n avulla.

Artikkelissa käsitelty piiri on SPI-liitännällä varustettu näyttömoduulipiiri, jota voidaan käyttää radioamatöörimalleissa. Ja meitä ei kiinnosta itse piiri, vaan työskentely mikropiirin kanssa SPI-liitännän kautta. +5 V moduulin virta syötetään Vcc-nastaan, signaalilinjat MOSI, CLK ja CS on suunniteltu tiedonsiirtoon master-laitteen (mikro-ohjain) ja orjalaitteen (MAX7219-siru) välillä.

Mikropiiriä käytetään vakioliitännässä, ainoat ulkoiset komponentit, joita tarvitaan, ovat vastus, joka asettaa virran segmenttien läpi, suojadiodi teholähteelle ja suodatinkondensaattori teholähteelle.

Tiedot siirretään sirulle 16-bittisinä paketteina (kaksi tavua), jotka sijoitetaan sisäänrakennettuun 16-bittiseen siirtorekisteriin CLK-signaalin jokaisella nousevalla reunalla. 16-bittistä pakettia merkitään D0-D15:llä, jossa bitit D0-D7 sisältävät dataa, D8-D11 sisältävät rekisteriosoitteen, biteillä D12-D15 ei ole merkitystä. Bitti D15 on merkittävin bitti ja ensimmäinen vastaanotettu bitti. Vaikka siru pystyy ohjaamaan kahdeksaa indikaattoria, harkitsemme työskentelyä vain neljän kanssa. Niitä ohjataan lähdöillä DIG0 - DIG3, jotka sijaitsevat järjestyksessä oikealta vasemmalle, niitä vastaavat 4-bittiset osoitteet (D8-D11) ovat 0x01, 0x02, 0x03 ja 0x04 (heksadesimaalimuoto). Numerorekisteri on toteutettu sirulla olevalla RAM-muistilla 8x8-organisaatiolla ja se on suoraan osoitettavissa, jotta jokainen yksittäinen näytön numero voidaan päivittää milloin tahansa. Seuraavassa taulukossa näkyvät MAX7219-sirun osoitteelliset numerot ja ohjausrekisterit.

Rekisteröidy

Osoite

HEX-arvo

Ei operaatiota

Dekoodaustila

Indikaattorien lukumäärä

Sammuttaa

Indikaattoritesti

Ohjausrekisterit

MAX1792-sirussa on 5 ohjausrekisteriä: dekoodaustila (Decode-Mode), ilmaisimen kirkkauden säätö (intensiteetti), kytkettyjen ilmaisimien lukumäärän rekisteri (Scan Limit), päälle/pois ohjaus (Shutdown), testitila (Display Test).

Sirun kytkeminen päälle ja pois päältä

Kun piiriin kytketään virta, kaikki rekisterit nollataan ja se siirtyy sammutustilaan. Tässä tilassa näyttö sammuu. Normaaliin toimintatilaan siirtymiseksi on asetettava sammutusrekisterin bitti D0 (osoite 0Сh). Tämä bitti voidaan tyhjentää milloin tahansa pakottaaksesi ohjaimen sammumaan, jolloin kaikkien rekisterien sisältö pysyy muuttumattomana. Tätä tilaa voidaan käyttää energian säästämiseen tai hälytystilassa vilkkumalla merkkivaloa (Shutdown-tilan peräkkäinen aktivointi ja deaktivointi).

Mikropiiri kytketään Shutdown-tilaan lähettämällä peräkkäin osoite (0Сh) ja data (00h) ja siirtämällä 0Ch (osoite) ja sitten 01h (data) palaa normaaliin toimintaan.

Dekoodaustila

Dekoodaustilan valintarekisteriä (osoite 09h) käyttämällä voit käyttää BCD-koodin B dekoodausta (näyttömerkit 0-9, E, H, L, P, -) tai ilman dekoodausta jokaiselle numerolle. Jokainen rekisterin bitti vastaa yhtä numeroa, loogisen bitin asettaminen vastaa dekooderin käynnistämistä tälle bitille, asetus 0 tarkoittaa, että dekooderi on poistettu käytöstä. Jos käytetään BCD-dekooderia, vain numerorekisterien (D3-D0) datan alin nippu huomioidaan, bitit D4-D6 jätetään huomioimatta, bitti D7 ei riipu BCD-dekooderista ja on vastuussa päälle kytkemisestä. osoittimen desimaalipilkku, jos D7 = 1. Esimerkiksi kun tavut 02h ja 05h lähetetään peräkkäin, DIG1-osoitin (toinen numero oikealta) näyttää numeron 5. Vastaavasti lähetettäessä 01h ja 89h, DIG0-ilmaisin näyttää numeron 9 desimaalipilkun kanssa. . Alla oleva taulukko näyttää täydellinen lista merkit näkyvät, kun käytetään sirun BCD-dekooderia.

Symboli

Tiedot rekistereissä

Käytössä olevat segmentit = 1

Tyhjä

*Desimaalipiste asetetaan bitillä D7=1

Kun BCD-dekooderi on suljettu pois toiminnasta, databitit D7-D0 vastaavat indikaattorin segmenttijuovia (A-G ja DP).

Ilmaisimen kirkkauden säätö

Sirun avulla voit ohjelmoidusti ohjata ilmaisimien kirkkautta sisäänrakennetun PWM:n avulla. PWM-lähtöä ohjaa Intensity-rekisterin (osoite 0Ah) matalan kertaluokan nibble (D3-D0), jonka avulla voit asettaa yhden 16 kirkkaustasosta. Kun kaikki nibble-bitit on asetettu arvoon 1, ilmaisimen enimmäiskirkkaus valitaan.

Kytkettyjen merkkivalojen määrä

Scan-Limit-rekisteri (osoite 0Bh) asettaa mikropiirin palvelemien bittien lukumäärän arvon (1 ... 8). 4-bittisessä versiossamme arvo 03h tulee kirjoittaa rekisteriin.

Indikaattoritesti

Tästä tilasta vastaava rekisteri sijaitsee osoitteessa 0Fh. Asettamalla D0-bitin rekisteriin käyttäjä kytkee kaikki indikaattorisegmentit päälle, kun taas ohjaus- ja tietorekisterien sisältö ei muutu. Display-Test-tilan poistamiseksi käytöstä bitin D0 on oltava 0.

Liitäntä mikrokontrolleriin

Ilmaisinmoduuli voidaan liittää mihin tahansa mikro-ohjaimeen, jossa on kolme vapaata I/O-linjaa. Jos mikro-ohjaimessa on sisäänrakennettu SPI-laitteistomoduuli, ilmaisinmoduuli voidaan kytkeä orjalaitteena väylään. Tässä tapauksessa mikro-ohjaimen SPI-signaalilinjat SDO (serial data out), SCLK (serial clock) ja SS (slave select) voidaan kytkeä suoraan MAX7219-sirun (moduulin) MOSI-, CLK- ja CS-nastoihin. CS-signaali on aktiivinen matala.

Jos mikro-ohjaimessa ei ole laitteisto-SPI:tä, käyttöliittymä voidaan järjestää ohjelmistoon. Viestintä MAX7219:n kanssa alkaa vetämällä ja pitämällä CS-linja alhaalla ja lähettämällä sitten 16 bittiä dataa peräkkäin (MSB ensin) MOSI-linjalla CLK-signaalin nousevalla reunalla. Lähetyksen päätyttyä CS-linja nousee jälleen korkealle.

Lataukset-osiossa käyttäjät voivat ladata testiohjelman lähdetekstin ja laiteohjelmiston HEX-tiedoston, joka toteuttaa perinteisen 4-bittisen laskurin arvojen näyttämisellä indikaattorimoduulissa, jossa on SPI-liitäntä. Käytetty mikro-ohjain on ohjelmistollisesti toteutettu rajapinta, indikaattorimoduulin signaalilinjat CS, MOSI ja CLK on kytketty portteihin GP0, GP1 ja GP2. MikroC-kääntäjää käytetään PIC-mikro-ohjaimet(mikroelektroniikka

Kommentoida sivuston materiaaleja ja vastaanottaa täysi pääsy tarvitsemasi foorumiin rekisteröidy .


Yksinumeroisen seitsemän segmentin ilmaisimen kytkentäkaavio
Moninumeroisen seitsemän segmentin ilmaisimen kytkentäkaavio

Digitaalinen tietojen näyttölaite. Tämä on yksinkertaisin toteutus ilmaisimesta, joka voi näyttää arabialaisia ​​numeroita. Monimutkaisempia monisegmenttisiä ja matriisi-indikaattoreita käytetään kirjaimien näyttämiseen.

Kuten nimikin kertoo, se koostuu seitsemästä näyttöelementistä (segmentistä), jotka kytkeytyvät päälle ja pois päältä erikseen. Yhdistämällä niitä erilaisiin yhdistelmiin niistä voidaan luoda yksinkertaistettuja kuvia arabialaisista numeroista.
Segmentit on merkitty kirjaimilla A - G; kahdeksas segmentti - desimaalipilkku (desimaalipiste, DP), suunniteltu näyttämään murtolukuja.
Toisinaan kirjaimia näytetään seitsemän segmentin osoittimessa.

Niitä on useita värejä, yleensä valkoinen, punainen, vihreä, keltainen ja sininen. Lisäksi ne voivat olla erikokoisia.

LED-merkkivalo voi myös olla yksinumeroinen (kuten yllä olevassa kuvassa) tai moninumeroinen. Käytännössä käytetään periaatteessa yksi-, kaksi-, kolmi- ja nelinumeroisia LED-ilmaisimia:

Kymmenen numeron lisäksi seitsemän segmentin osoittimet pystyvät näyttämään kirjaimia. Mutta harvoilla kirjaimilla on intuitiivinen seitsemän segmentin esitys.
Latinaksi: isot kirjaimet A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, pienet a, b, c, d, e, g , h, i, n, o, q, r, t, u.
Kyrillisillä kirjaimilla: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (kaksi numeroa), b, E/Z.
Siksi seitsemän segmentin ilmaisimia käytetään vain yksinkertaisten viestien näyttämiseen.

Seitsemän segmentin LED-ilmaisin voi näyttää yhteensä 128 merkkiä:

Tyypillisessä LED-ilmaisimessa on yhdeksän johtoa: yksi menee kaikkien segmenttien katodille ja loput kahdeksan kunkin segmentin anodille. Tätä kaavaa kutsutaan "yhteinen katodipiiri", on myös suunnitelmia yhteisellä anodilla(silloin se on toisin päin). Usein ei yksi, vaan kaksi yhteistä liitintä tehdään alustan eri päihin - tämä yksinkertaistaa johdotusta lisäämättä mittoja. On olemassa myös niin sanottuja "universaaleja", mutta en ole henkilökohtaisesti törmännyt sellaisiin. Lisäksi on olemassa indikaattoreita, joissa on sisäänrakennettu vaihtorekisteri, mikä vähentää huomattavasti mukana olevien mikro-ohjainporttien nastojen määrää, mutta ne ovat paljon kalliimpia ja niitä käytetään harvoin käytännössä. Ja koska äärimmäisyyttä ei voida käsittää, emme käsittele tällaisia ​​indikaattoreita toistaiseksi (mutta on myös indikaattoreita, joissa on paljon suurempi määrä segmenttejä, matriisi).

Moninumeroiset LED-ilmaisimet toimivat usein dynaamisella periaatteella: kaikkien numeroiden samannimien segmenttien lähdöt on kytketty yhteen. Tietojen näyttämiseksi tällaisesta ilmaisusta ohjausmikropiirin on syötettävä syklisesti virtaa kaikkien numeroiden yhteisiin liittimiin, kun taas segmenttiliittimiin syötetään virtaa riippuen siitä, palaako tietty segmentti tietyllä numerolla.

Yksinumeroisen seitsemän segmentin ilmaisimen liittäminen mikro-ohjaimeen

Alla oleva kaavio näyttää kuinka yksinumeroinen seitsemän segmentin ilmaisin on kytketty mikrokontrolleriin.
On otettava huomioon, että jos indikaattori on YHTEINEN KATODI, sitten sen yhteinen lähtö on kytketty "maa", ja segmentit syttyvät syöttämällä looginen yksikkö portin lähtöön.
Jos ilmaisin on YHTEINEN ANODI, sitten se syötetään sen yhteiseen johtoon "plus" jännite, ja segmentit sytytetään kytkemällä portin lähtö tilaan looginen nolla.

Yksinumeroisen LED-ilmaisimen osoitus suoritetaan käyttämällä binäärikoodia vastaavan loogisen tason vastaavan numeron mikro-ohjainportin nastoihin (ilmaisimille, joissa on OK - loogiset, indikaattoreille, joissa on OA - loogisia nollia).

Virtaa rajoittavat vastukset voi olla tai ei ole kaaviossa. Kaikki riippuu syöttöjännitteestä, joka syötetään indikaattoriin ja tekniset ominaisuudet indikaattoreita. Jos esimerkiksi segmenteille syötettävä jännite on 5 volttia ja ne on suunniteltu 2 voltin käyttöjännitteelle, on asennettava virtaa rajoittavat vastukset (rajojen läpi kulkevan virran rajoittamiseksi syöttöjännitteen lisäämiseksi eikä palamiseksi ei vain ilmaisimen vaan myös mikro-ohjaimen portti).
Virtaa rajoittavien vastusten arvo on erittäin helppo laskea isoisän kaavalla Ohm.
Esimerkiksi indikaattorin ominaisuudet ovat seuraavat (otettu tietolomakkeesta):
— käyttöjännite — 2 volttia
— käyttövirta — 10 mA (=0,01 A)
- syöttöjännite 5 volttia
Laskentakaava:
R = U/I (kaikki tämän kaavan arvojen on oltava ohmeina, voltteina ja ampeerina)
R= (syöttöjännite - käyttöjännite)/käyttövirta
R = (5-2)/0,01 = 300 ohmia

Moninumeroisen seitsemän segmentin LED-merkkivalon kytkentäkaavio Pohjimmiltaan sama kuin kun kytketään yksinumeroinen ilmaisin. Ainoa asia on, että ohjaustransistorit lisätään indikaattoreiden katodeihin (anodeihin):

Sitä ei näy kaaviossa, mutta transistorien kannan ja mikro-ohjainportin nastojen väliin on sisällytettävä vastukset, joiden resistanssi riippuu transistorin tyypistä (vastuksen arvot lasketaan, mutta voit myös kokeilla käyttää vastuksia, joiden nimellisarvo on 5-10 kOhm).

Purkausten osoittaminen tapahtuu dynaamisesti:
— vastaavan numeron binäärikoodi asetetaan PB-portin lähtöihin 1. numeroa varten, sitten loogista tasoa sovelletaan ensimmäisen numeron ohjaustransistoriin
— vastaavan numeron binäärikoodi asetetaan PB-portin lähtöihin 2. numeroa varten, sitten loogista tasoa sovelletaan toisen numeron ohjaustransistoriin
— vastaavan numeron binäärikoodi asetetaan PB-portin lähtöihin 3. numeroa varten, sitten loogista tasoa sovelletaan kolmannen numeron ohjaustransistoriin
- siis ympyrässä
Tässä tapauksessa on tarpeen ottaa huomioon:
— osoittimille OK ohjaustransistorirakennetta käytetään NPN(loogisen yksikön ohjaama)
- indikaattorille OA- rakennetransistori PNP(loogisen nollan ohjaama)

Radiotekniikan ja elektroniikan tulon jälkeen Palaute elektronisen laitteen ja henkilön mukana oli erilaisia ​​merkkivaloja, painikkeita, vaihtokytkimiä, kelloja (mikroaaltovalmis signaali - ding!). Jotkut elektroniset laitteet tarjoavat vain vähän tietoa, koska lisää olisi tarpeetonta. Esimerkiksi kiinalaisessa puhelimesi laturissa oleva hehkuva LED osoittaa, että laturi on kytkettynä ja saa virtaa. Mutta on myös parametreja, joista olisi kätevämpää antaa objektiivista tietoa. Esimerkiksi ulkoilman lämpötila tai herätyskellon aika. Kyllä, kaikki tämä voitaisiin tehdä myös hehkuvilla lampuilla tai LEDeillä. Yksi aste - yksi palava diodi tai hehkulamppu. Kuinka monta astetta on, niin monet indikaattorit ovat päällä. Näiden tulikärpästen laskeminen voi olla yleistä, mutta kuinka monta näistä valoista tarvitaan, jotta lämpötila voidaan näyttää asteen kymmenesosan tarkkuudella? Ja yleensä, minkä alueen nämä LEDit ja hehkulamput vievät elektronisessa laitteessa?

Käytännöllisissä seitsemän segmentin näyttölaitteissa on oltava vähintään kahdeksan ulkoista liitintä; seitsemän niistä tarjoaa pääsyn yksittäisiin aurinkosähkölohkoihin ja kahdeksas tarjoaa yhteisen yhteyden kaikkiin segmentteihin. Ensimmäisessä tapauksessa laite tunnetaan seitsemänsegmenttisenä yhteisanodinäyttönä; jälkimmäisessä tapauksessa laite tunnetaan seitsemänsegmenttisenä yhteiskatodinäytönä.

Yleisen anodinäytön käyttämiseksi kuljettajalla on oltava aktiivinen-matala lähtö, jossa jokainen segmenttitaajuusmuuttaja on normaalisti korkealla, mutta menee matalaksi segmentin käynnistämiseksi. Yhteisen katodin näytön käyttämiseksi ohjaimella on oltava aktiivinen aktiivinen lähtö.

Ja 1900-luvun alussa, elektronisten putkien tultua käyttöön, ilmestyivät ensimmäiset kaasupurkausilmaisimet

Tällaisten indikaattoreiden avulla oli mahdollista näyttää digitaalista tietoa arabialaisin numeroin. Aiemmin näitä lamppuja käytettiin erilaisiin osoitteisiin instrumenteille ja muille elektronisille laitteille. Tällä hetkellä kaasupurkauselementtejä ei käytetä lähes koskaan missään. Mutta retro on aina muodikasta, minkä vuoksi monet radioamatöörit keräävät upeita kaasupurkauskelloja itselleen ja läheisilleen.

Tämän täydellinen selitys on hieman monimutkaisempi seuraavasti. Kun jännite on nolla, segmentti on käytännössä näkymätön. Kuitenkin, kun tulojännite on merkittävästi positiivinen tai negatiivinen, segmentti tulee tehokkaasti näkyväksi, mutta jos käyttöjännitettä ylläpidetään yli muutaman sadan millisekunnin, segmentti voi tulla pysyvästi näkyväksi, eikä sillä ole enää merkitystä.

Näissä olosuhteissa segmentti on poistettu käytöstä. Siten segmentti on mukana näillä ehdoilla. Tämä käyttömuoto tunnetaan yleisesti jännitteen kaksinkertaistavana "siltakäyttöjärjestelmänä". Järjestelmän toimintojen järjestys on seuraava. Aiemmin kuvattu yksinkertainen kaskadijärjestelmä kärsii vakavasta viasta, koska näyttö hämärtyy varsinaisen laskentajakson aikana, muuttuen vakaaksi ja luettavaksi vasta, kun jokainen laskenta on suoritettu ja syöttöportti on suljettu. Tämä "sumea ja luettava" näyttö on erittäin ärsyttävää katsoa.

Kaasupurkauslamppujen haitat - ne syövät paljon. Kestävyydestä voi kiistellä. Yliopistollamme käytetään edelleen taajuusmittareita laboratoriohuoneiden kaasupurkauslaitteissa.

LEDien myötä tilanne on muuttunut dramaattisesti. LEDit itse kuluttavat pienen määrän virtaa. Jos asetat ne oikeaan asentoon, voit näyttää mitä tahansa tietoa. Kaikkien arabialaisten numeroiden korostamiseksi vain jokin riitti seitsemän (siitä syystä nimi seitsemän segmentin ilmaisin) hehkuvat LED-nauhat, jotka on järjestetty tietyllä tavalla:

Kuvassa 13 on esitetty parannettu taajuuslaskuripiiri, joka käyttää näytön lukitusta edellä mainitun vian voittamiseksi. Tämä kaava toimii seuraavasti. Samalla tuloportti avautuu ja laskurit alkavat laskea tulosignaalipulsseja. Tämä laskuri jatkuu täsmälleen yhden sekunnin, ja tänä aikana nelibittiset salvat estävät laskurin lähtöä pääsemästä näytön ohjaimiin; näyttö pysyy vakaana tänä aikana.

Muutaman sekunnin kuluttua sarja toistetaan uudelleen, jolloin laskurit käynnistyvät uudelleen ja laskevat sitten sisääntulotaajuuspulsseja yhden sekunnin ajan, jonka aikana näyttö näyttää jatkuvan edellisen lukeman jne.

Lähes kaikki tällaiset seitsemän segmentin indikaattorit lisäävät myös kahdeksannen segmentin - pisteen, jotta on mahdollista näyttää minkä tahansa parametrin kokonaisluku ja murtoluku

Siten kuvion 13 piiri tuottaa vakaan näytön, joka päivittyy kerran sekunnissa; Käytännössä tämän ja kuvan 12 kaavion todellinen laskentajakso voidaan asettaa mihin tahansa vuosikymmeneen, jossa on useita tai osittaisia ​​sekunteja, mikäli lähtönäyttö on skaalattu vastaavasti.

Huomaa, että kolminumeroinen taajuuslaskuri voi näyttää maksimitaajuudet 999 Hz käytettäessä yhden sekunnin aikakantaa, 99 kHz käytettäessä 100 ms aikakantaa, 9 kHz käytettäessä 10 ms aikakantaa ja 999 kHz käytettäessä 1 ms aikakanta.

Teoriassa se osoittautuu kahdeksan segmentin indikaattoriksi, mutta vanhaan tapaan sitä kutsutaan myös seitsemän segmentin indikaattoriksi, eikä siinä ole virhettä.

Lyhyesti sanottuna seitsemän segmentin ilmaisin on LED-valoja, jotka sijaitsevat suhteessa toisiinsa tietyssä järjestyksessä ja jotka on suljettu yhteen koteloon.

Tämä menetelmä voidaan ymmärtää kuvien 14 ja 15 avulla. Nämä kytkimet on kytketty toisiinsa ja suorittavat varsinaisen multiplekserin toiminnan ja niitä tulee pitää nopeina elektronisina kytkiminä, joita kytketään toistuvasti asentojen 1, 2 ja toimintosarjan kautta. piiri on seuraava. Oletetaan ensin, että kytkin on asennossa.

Muutama hetki myöhemmin kytkin siirtyy asentoon 3, jolloin näyttö 3 näyttää numeron muutaman minuutin kuluttua, koko sykli alkaa toistua uudelleen ja niin edelleen, lisäämällä ääretöntä. Käytännössä näitä syklejä tapahtuu noin 50 sekunnissa, joten silmä ei näe näyttöjen käynnistymistä ja sammumista erikseen, vaan näkee ne näennäisesti tasaisena näyttönä, jossa näkyy numero 327 tai jokin muu datasegmentin sanelema luku.

Jos tarkastelemme yhden seitsemän segmentin indikaattorin kaaviota, se näyttää tältä:

Kuten näemme, seitsemän segmentin indikaattori voi olla joko yhteinen anodi (CA), niin kanssa yhteinen katodi (OC). Karkeasti sanottuna, jos meillä on seitsemän segmenttiä yhteisellä anodilla (OA), niin piirissä meidän pitäisi ripustaa "plus" tähän nastaan, ja jos yhteisellä katodilla (OC), niin "miinus" tai maa. . Mihin nastaan ​​syötämme jännitteen, tämä LED syttyy. Osoitetaan tämä kaikki käytännössä.

Käytännöllisissä multipleksereissä näytön huippuvirta on melko suuri riittävän näytön kirkkauden varmistamiseksi. Kuvassa Kuvassa 15 on esimerkki kolminumeroiseen taajuuslaskuriin sovelletusta parannetusta multipleksointimenetelmästä. Tällä menetelmällä on kaksi pääasiallista etua.

Jos nämä liittimet ovat aktiivisia korkealla, niillä on seuraavat ominaisuudet. Kuva. 18 ja 19. Kuva 18 esittää aaltoilun vaimennustekniikkaa, jota käytetään johtavan nollan vaimennuksen aikaansaamiseen nelinumeroisella näytöllä, joka lukee määrää.

Meillä on varastossa seuraavat LED-ilmaisimet:

Kuten näemme, seitsemän segmentin laitteet voivat olla yksi- ja monibittisiä, eli kaksi, kolme, neljä seitsemänsegmentistä laitetta yhdessä tapauksessa. Nykyaikaisen seitsemän segmentin laitteen tarkistamiseksi tarvitsemme vain dioditestaustoiminnolla varustetun yleismittarin. Etsimme yleistä johtopäätöstä - se voi olla joko OA tai OK - satunnaisesti ja sitten tarkastelemme indikaattorin kaikkien segmenttien suorituskykyä. Tarkistamme kolmibittisen seitsemän segmentin:

Joten näyttö näyttää. Pohjimmiltaan niitä on helppo käyttää, ne kytketään päälle ja ne syttyvät. Ne voivat olla ärsyttäviä, koska niissä on jonkinlainen napaisuus, mikä tarkoittaa, että ne toimivat vain, jos liität ne oikein. Jos peruutat positiivisen ja negatiivisen jännitteen, ne eivät syty ollenkaan.

Vaikka se on ärsyttävää, se on myös varsin hyödyllinen. Toinen lanka on katodi. Katodi on kytketty maahan. Periaatteessa se jää siihen. Tavallista katodia käytettäessä syötät virtaa nastoihin, jotka haluat kytkeä päälle. Multipleksointi. Tätä varten on jopa näytönohjaimet, jos et halua huolehtia ohjelmiston vaihtamisesta.

Hups, yksi segmentti syttyi tuleen, joten tarkistamme muut segmentit samalla tavalla.

Joskus sarjakuvan jännite ei riitä indikaattorisegmenttien tarkistamiseen. Siksi otamme virtalähteen, asetamme sen 5 volttiin, kiinnitämme 1-2 kiloohmin vastuksen virtalähteen yhteen napaan ja aloitamme seitsemän segmentin yksikön tarkistamisen.

7-segmenttinen näytönohjain

Joten kun sinulla on 4-numeroinen, multipleksoitu 7 segmentti, yhteinen anodi. Ensinnäkin meidän on tiedettävä, minkä tyyppinen näyttö meillä on, koska on olemassa kaksi mahdollista muotoa: yhteinen katodi ja yhteinen anodi. Asiat, joita tarvitset tässä opetusohjelmassa. Vasemmalla: Graafinen näkymä 7-segmenttisestä näytöstä, joka näyttää yhden yleisen asettelun sisäisille johdotuksille ja pinnojen sijainnille.

Kiinnitä tässä vaiheessa huomiota alkutulokseen, sillä tarvitset sitä myöhemmin ohjelmaa ladatessasi. Jos näyttö olisi tavallinen katodi, peruuttaisimme sen. Artikkelin alaosassa on valokuva prototyyppilevylleni tulevasta piiristä. Tarjoamme myös kirjaston useamman kuin yhden näytön ohjaamiseen.

Miksi tarvitsemme vastuksen? Kun LEDiin syötetään jännite, se alkaa kuluttaa virtaa jyrkästi, kun se kytketään päälle. Siksi tällä hetkellä se voi palaa loppuun. Virran rajoittamiseksi vastus kytketään sarjaan LEDin kanssa. Voit lukea lisää tästä artikkelista.

Hex laskenta yhdessä 7-segmenttisessä näytössä

Huono puoli on, että ne ovat resurssivaltaisia. Tässä näytössä on neljä numeroa ja kaksi kaksoispistenäyttöä. Laite tarjoaa kuitenkin myös digitaalinen ohjaus näytön kirkkaus sisäisen laajakaistamodulaattorin kautta. Tällaisissa tapauksissa ulostulo voidaan tehdä useille 7-segmenttisille näytöille.

Tämä säästää koskettimet kotelossa ja sitten ohjauksessa. Vastaavasti viitataan yleisiin anodi- tai yhteiskatodinäytöihin. Segmenttiä tai desimaalipistettä vastaava tuloste voidaan parhaiten poimia tietosivulta näyttöä varten. 7-segmenttinen näyttö, joka on mitoitettu tavalliselle 10-20 mA:lle, palaa edelleen, vaikkakin himmeästi. Mutta tämä ei vaadi yhteystietojen osoittamista. Seuraava tämän segmentin jakauma perustuu.

Samalla tavalla tarkistamme nelinumeroisen seitsemän segmentin kiinalaisesta radiosta

Mielestäni tässä ei pitäisi olla erityisiä vaikeuksia. Piireissä seitsemän segmentin piirit on kytketty vastuksiin jokaisessa nastassa. Tämä johtuu myös siitä, että LEDit kuluttavat kiihkeästi virtaa ja palavat, kun niihin syötetään jännite.

Jos käytetään muuta tarkoitusta, se on periaatteessa mahdollista, mutta se on otettava huomioon ohjelmoitaessa. Yksittäisten numeroiden muuntaminen tietyksi lähtökuvioksi voidaan tehdä käyttämällä jotain ns. Kaikkien muiden segmenttien tulee olla tummia. Jos tämä valintaruutu on valittuna kaikille numeroille, annetaan seuraava taulukko.

SISÄÄN testiohjelma numerot 0-9 näytetään peräkkäin 7-segmenttisessä näytössä. Lähtönumero tallennetaan rekisterilaskuriin ja sitä kasvatetaan yhdellä syklin sisällä. Jos rekisteri saavuttaa arvon 10, se nollataan uudelleen arvoon 0. Kun rekisteri on nostettu, tapahtuu odotussilmukka, joka varmistaa, että tietty aika on kulunut seuraavassa julkaisussa. Normaalisti et tekisi niin pitkiä odotusjaksoja, mutta tässä ei ole kyse odottamisesta, vaan 7-segmenttisen näytön ohjaamisesta. Ajastimen käyttäminen tähän on liikaa vaivaa.

Nykymaailmassamme seitsemän segmentin laitteet korvataan jo LCD-näytöillä, jotka voivat näyttää täysin erilaista tietoa

mutta käyttääksesi niitä, tarvitset tiettyjä taitoja tällaisten laitteiden piirisuunnittelussa. Toistaiseksi mikään ei ole yksinkertaisempaa tai halvempaa kuin seitsemän segmentin LED-ilmaisimet.

Varsinainen ongelma ja siksi tämän artikkelin mielenkiintoinen osa esiintyy kuitenkin heti etikettisilmukan jälkeen. Huomaa, että laskurin arvo tulee kaksinkertaistaa. Tämä liittyy suoraan siihen tosiasiaan, että flash-muisti on sana- eikä tavukohtainen. Tämän sivun toinen esimerkki tekee sen toisin. Se osoittaa, kuinka kokoaja voi estää täytetavujen luomisen toisen taulukkomerkinnän avulla. On myös mielenkiintoista, että laskenta vaatii rekisterin, joka sisältää arvon 0.

Siksi tämä vakio on ensin ladattava rekisteriin ja vasta sitten voidaan suorittaa lisääminen tämän rekisterin avulla. Mielenkiintoista on, että tämä tosiasia löytyy monista ohjelmista, ja vakiot suurimmassa osassa tapauksista ovat vakio 0. Siksi monet ohjelmoijat varaavat alusta alkaen rekisterin tätä varten ja kutsuvat sitä nollarekisteriksi.

Tässä artikkelissa puhumme digitaalisesta näytöstä.
Seitsemänsegmenttiset LED-ilmaisimet on suunniteltu näyttämään arabialaisia ​​numeroita 0-9 (kuva 1).

Tällaiset indikaattorit ovat yksinumeroisia, jotka näyttävät vain yhden numeron, mutta yhdeksi koteloksi (moninumeroinen) voi olla useampiakin seitsemän segmenttiryhmiä yhdistettynä. Tässä tapauksessa numerot erotetaan desimaalipilkulla (kuva 2)

Valitettavasti on ongelma, koska näyttö vaatii kahdeksan porttia - neljä mainosta vaatisi 32 porttia. Mutta on olemassa useita tapoja. Vaihtorekisterit on jo kuvattu toisessa opetusohjelmassa. Tämä helpottaisi tarvittavien 32 lähtölinjan luomista vain kolmella nastalla. Ohjausperiaate ei eroa yksittäisen 7-segmentin näytön ohjaamisesta, vain se, miten "lähtönastat" lähestyvät arvojaan, on erilainen ja määräytyy siirtorekisterien avulla. Päällä Tämä hetki kuitenkin toinen ohjausvaihtoehto on näytettävä.



Kuva 2.

Indikaattoria kutsutaan seitsemäsegmentiseksi, koska näytettävä symboli on rakennettu seitsemästä erillisestä segmentistä. Tällaisen ilmaisimen kotelon sisällä on LEDit, joista jokainen valaisee oman segmenttinsä.
Kirjaimien ja muiden symbolien näyttäminen tällaisissa indikaattoreissa on ongelmallista, joten näihin tarkoituksiin käytetään 16-segmenttisiä indikaattoreita.

Tarkastellaan multipleksointia uudelleen alla. Multipleksointi tarkoittaa, että kaikki neljä näyttöä eivät ole päällä yhtä aikaa, vaan vain yksi kerrallaan lyhyt aika. Jos näyttöjen välinen vaihto tapahtuu nopeammin kuin me ihmiset ymmärrämme, kaikki neljä valoa näyttävät toimivan samanaikaisesti, vaikka vain yksi palaa lyhyen ajan. Tällä tavalla neljä näyttöä voivat jakaa yksittäisiä segmenttilohkoja, ja tarvitaan vain 4 lisäohjauslinjaa neljälle näytölle, joilla näyttö on käytössä.

Eräs tämäntyyppisen ohjauksen näkökohta on multipleksoinnin taajuus, toisin sanoen näytöstä toiseen siirtymisen täydellinen sykli. Sen tulee olla riittävän korkea estämään näytön välkkymistä. Ihmissilmä on hidas, elokuvateatterissa 24 kuvaa sekunnissa, TV:n varmuuden vuoksi, että myös still-kuvat ovat rauhallisia, jokaista segmenttiä tulee ohjata vähintään 100 Hz, joten se kytkeytyy vähintään 10 ms:n välein. Poikkeustapauksissa 100 Hzkin voi kuitenkin edelleen välkkyä, kuten näytön liikkuessa nopeasti tai vaihtovirralla toimivien keinovalonlähteiden häiriöiden yhteydessä.

LED-ilmaisimia on kahta tyyppiä.
Ensimmäisessä niistä kaikki katodit, ts. kaikkien LEDien negatiiviset liittimet yhdistetään yhteen ja niille varataan vastaava liitin koteloon.
Ilmaisimen loput liittimet on kytketty kunkin LEDin anodiin (kuva 3, a). Tätä piiriä kutsutaan "yhteiskatodipiiriksi".
On myös ilmaisimia, joissa kunkin segmentin LEDit on kytketty piirin mukaisesti, jossa on yhteinen anodi (kuva 3, b).



Kuva 3.

Jokainen segmentti on merkitty vastaavalla kirjaimella. Kuva 4 näyttää niiden sijainnin.

Kuva 4.

Esimerkkinä voidaan harkita kaksinumeroista seitsemän segmentin ilmaisinta GND-5622As-21 punainen. Muuten, on myös muita värejä mallista riippuen.
Kolmen voltin akun avulla voit kytkeä segmentit päälle, ja jos yhdistät ryhmän nastoja nippuun ja syötät niihin virtaa, voit jopa näyttää numeroita. Mutta tämä menetelmä on hankala, joten siirtorekistereitä ja dekoodeja käytetään ohjaamaan seitsemän segmentin ilmaisimia. Usein myös ilmaisimen nastat kytketään suoraan mikro-ohjaimen lähtöihin, mutta vain silloin, kun käytetään indikaattoreita, joilla on pieni virrankulutus. Kuvassa 5 on osa PIC16F876A:ta käyttävästä piiristä.



Kuva 5.

Seitsemän segmentin ilmaisimen ohjaamiseen käytetään usein K176ID2-dekooderia.
Tämä siru pystyy muuttamaan noloista ja ykkösistä koostuvan binäärikoodin desimaaliluvuiksi 0-9.

Ymmärtääksesi kuinka se kaikki toimii, sinun on koottava yksinkertainen piiri (kuva 6). K176ID2-dekooderi on DIP16-pakkauksessa. Siinä on 7 lähtönastaa (nastat 9 - 15), joista jokainen on omistettu tietylle segmentille. Pisteohjausta ei tarjota tässä. Mikropiirissä on myös 4 tuloa (nastat 2 - 5) binäärikoodin syöttämiseen. 16. ja 8. nasta toimitetaan vastaavasti plus- ja miinusteholla. Loput kolme johtopäätöstä ovat avustavia, puhun niistä hieman myöhemmin.



Kuva 6.

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

Piirissä on 4 vaihtokytkintä (kaikki painikkeet ovat mahdollisia), kun painat niitä, looginen kytkin syötetään dekooderin tuloihin virtalähteestä plus. Muuten, itse mikropiiri saa virtansa 3-15 voltin jännitteellä. Tässä esimerkissä koko piiri saa virtansa 9 voltin virtalähteestä.

Piirissä on myös 4 vastusta. Nämä ovat niin sanottuja vetovastuksia. Niitä tarvitaan varmistamaan, että logiikkatulo on alhainen, kun signaalia ei ole. Ilman niitä ilmaisimen lukemat eivät ehkä näy oikein. On suositeltavaa käyttää samaavastus 10 kOhm - 100 kOhm.

Kaaviossa HG1-ilmaisimen nastat 2 ja 7 eivät ole kytkettyinä. Jos liität DP-nastan miinusvirtalähteeseen, desimaalipilkku syttyy. Ja jos lisäät miinuksen Dig.2-lähtöön, myös toinen segmenttiryhmä syttyy (näyttää saman symbolin).

Dekooderin tulot on suunniteltu siten, että numeroiden 1, 2, 4 ja 8 näyttämiseksi ilmaisimessa tarvitsee painaa vain yhtä painiketta (asettelussa on vaihtokytkimet, jotka vastaavat tuloja D0, D1, D2 ja D3). Jos signaalia ei ole, numero nolla näytetään. Kun signaali syötetään tuloon D0, näytössä näkyy numero 1. Ja niin edelleen. Jos haluat näyttää muita numeroita, sinun on painettava vaihtokytkimien yhdistelmää. Taulukko 1 kertoo meille, mitä meidän on painettava.


Pöytä 1.

Numeron "3" näyttämiseksi sinun on käytettävä loogista numeroa tuloihin D0 ja D1. Jos annat signaalin D0:lle ja D2:lle, numero “5” tulee näkyviin(Kuva 6).



Kuva 6.

Tässä on laajennettu taulukko, jossa näemme paitsi odotetun luvun, myös ne segmentit (a - g), jotka muodostavat tämän luvun.



Taulukko 2.

Mikropiirin 1., 6. ja 7. nastat ovat apu (S, M, K, vastaavasti).

Kaaviossa (kuva 6) kuudes napa "M" on maadoitettu (virtalähteeseen miinus) ja mikropiirin lähdössä on positiivinen jännite yhteisellä katodilla varustetun ilmaisimen kanssa. Jos käytetään yhteisellä anodilla varustettua ilmaisinta, se tulee asettaa kuudenteen nastaan.

Jos looginen ykkönen asetetaan 7. nastalle “K”, ilmaisinmerkki sammuu, nolla sallii ilmaisun. Kaavassa tämä johtopäätös maadoitettu (virtalähteeseen miinus).

Looginen yksikkö (plus teho) syötetään dekooderin ensimmäiseen lähtöön, mikä mahdollistaa muunnetun koodin näyttämisen ilmaisimessa. Mutta jos asetat loogisen nollan tähän nastaan ​​(S), tulot lakkaavat vastaanottamasta signaalia ja nykyinen näytettävä merkki jäätyy ilmaisimeen.

Yksi mielenkiintoinen asia on huomata, että tiedämme, että vipukytkin D0 kytkee päälle numeron "1" ja vipukytkin D1 kytkee päälle numeron "2". Jos painat molempia vaihtokytkimiä, numero 3 tulee näkyviin (1+2=3). Ja muissa tapauksissa ilmaisin näyttää tämän yhdistelmän muodostavien numeroiden summan. Tulemme siihen tulokseen, että dekooderin tulot on järjestetty harkiten ja niillä on erittäin loogisia yhdistelmiä.

Voit myös katsoa tämän artikkelin videon.

Yhdistetään seitsemän segmentin LED-merkkivalo Arduino-korttiin ja opitaan ohjaamaan sitä Led4Digits.h-kirjaston avulla.

Edellisellä oppitunnilla kuvattiin yksityiskohtaisesti mikrokontrollerit. Yhdistetään tällainen ilmaisin Arduino-levyyn.

Kaavio ilmaisimen liittämiseksi Arduino-korttiin näyttää tältä.

Kokosin sen piirilevylle.

Ilmaisimien hallitsemiseksi kirjoitin Led4Digits.h-kirjaston:

Ja maksaa.

Kirjaston avulla voit hallita seitsemän segmentin indikaattoreita:

  • enintään neljän numeron kokoinen;
  • millä tahansa ohjauspulssin polariteetin muunnelmilla (kaikki);
  • toimii rinnakkaisessa prosessissa;
  • voit näyttää osoittimessa:
    • kunkin luokan segmentit;
    • kunkin numeron numero;
    • kokonaisluku 0 ... 9999;
  • kokonaisluvun tulostamiseksi voidaan määrittää numeroiden määrä;
  • On olemassa tila, jolla voidaan vaimentaa merkityksettömiä numeroita.

Voit ladata Led4Digits.h-kirjaston tästä linkistä:

Ja maksaa. Vain 40 ruplaa. kuukaudessa, jotta pääset käyttämään kaikkia sivuston resursseja!

Kuinka asentaa on kirjoitettu .

En anna lähdetekstejä. Voit etsiä ne kirjaston tiedostoista. Kuten aina, siellä on paljon kommentteja. Kuvaan yksityiskohtaisesti, esimerkkien avulla, kuinka kirjastoa käytetään.

LED-ohjauskirjasto Arduino Led4Digitsille.

Tässä on luokan kuvaus. Annoin vain julkiset menetelmät ja ominaisuudet.

luokka Led4Digits (
julkinen:
tavun numero; // bittisegmentin ohjauskoodit
void regen(); // regeneraatioon, menetelmä on kutsuttava säännöllisesti
void tetradToSegCod(tavun kaivaus, tavun tetrad); // tetradin muuntaminen segmenttikoodeiksi
boolean print(signed int value, tavun numeronumero, tavun tyhjä); // kokonaislukutulostus



} ;

Rakentaja.

Led4Digits (tavutyyppiLed, tavu digitPin0, tavu digitPin1, tavu digitPin2, tavu digitPin3,
tavu segPinA, tavu segPinB, tavu segPinC, tavu segPinD,
tavu segPinE, tavu segPinF, tavu segPinG, tavu segPinH);

tyyppiLed Asettaa ohjauspulssin polariteetin bitti- ja segmenttivalintasignaaleille. Tukee kaikkia yhteysjärjestelmiä ().

tyyppiLed Luokan valinta Segmentin valinta Piirin tyyppi
0 -_- -_- Yhteinen anodi purkauksen valintanäppäimillä
1 _-_ -_- Yhteinen anodi
2 -_- _-_ Yhteinen katodi
3 _-_ _-_ Yhteinen katodi purkauksen valintanäppäimillä

digitPin0...digitPin3– lähdöt numeroiden valintaa varten. Jos digitPin = 255, numero ei ole käytössä. Näin voit yhdistää ilmaisimia, joissa on vähemmän numeroita. digitPin0 – pieni (oikea) numero.

segPinA...segPinH– segmentin ohjauslähdöt.

Esimerkiksi,

tarkoittaa: indikaattorityyppi 1; purkauslähdöt 5,4,3,2; segmenttien 6,7,8,9,10,11,12,13 lähdöt.

void regen() -menetelmä

Menetelmää on kutsuttava säännöllisesti rinnakkaisessa prosessissa. Se luo uudelleen kuvan indikaattoreihin. Regenerointijakson aika on yhtä suuri kuin menetelmän kutsujakso kerrottuna bittien lukumäärällä.

Esimerkiksi,

// keskeytyskäsittelijä 2 ms
void timerInterrupt() (
disp.regen(); // indikaattorin regenerointi
}

Tavunumerotaulukko

Sisältää segmenttien tilan. numero on vähiten merkitsevä bitti, numeron vähiten merkitsevä bitti on vähiten merkitsevän bitin A-segmentti. Bittitila 1 tarkoittaa, että segmentti on valaistu.

Esimerkiksi,

numero = B0000101;

tarkoittaa, että toisessa numerossa segmentit "A" ja "C" palavat.

Esimerkki ohjelmasta, joka sytyttää peräkkäin jokaisen numeron kaikki segmentit.

// juoksevia segmenttejä
#sisältää
#sisältää

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

void setup() (
ajastimen keskeytys 2 ms
MsTimer2::start(); // keskeytys käytössä
}

void loop() (
for (int i = 0; i< 32; i++) {
jos (i == 0) disp.digit = 1;
muuten jos (i == 8) disp.digit = 1;
muuten jos (i == 16) disp.digit= 1;
muuten jos (i == 24) disp.digit = 1;
muu(
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
viive (250);
}
}

//keskeytyskäsittelijä 2 ms
void timerInterrupt() (
disp.regen(); // indikaattorin regenerointi
}

Numerotaulukossa 1 on siirtynyt ja ilmaisimet näyttävät tämän.

Menetelmä void tetradToSegCod(tavun kaivaus, tavutetrad)

Menetelmän avulla voit näyttää heksadesimaalikoodin numerot ja kirjaimet yksittäisinä numeroina. On argumentteja:

  • dig – numeronumero 0 ... 3;
  • tetrad – desimaalimerkkikoodi. Koodi 0 näyttää numeron "0", koodi 1 - numero "1", koodi 14 - kirjaimen "E".

Esimerkiksi,

tetradi(2, 7);

näyttää numeron "7" kolmantena numerona.

Esimerkki ohjelmasta, joka muuttaa merkkejä jokaisessa numerossa vuorotellen.

// numerot yksitellen
#sisältää
#sisältää

// indikaattorityyppi 1; purkauslähdöt 5,4,3,2; segmentin lähdöt 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); // ajastimen keskeytys 2 ms
MsTimer2::start(); // keskeytys käytössä
}

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

// keskeytyskäsittelijä 2 ms
void timerInterrupt() (
disp.regen(); // indikaattorin regenerointi
}

Menetelmä boolen tulostus (allekirjoittamaton int-arvo, tavun numeronumero, tavu tyhjä)

Menetelmä näyttää indikaattoreissa kokonaisluvun. Se muuntaa kunkin numeron binääriluvun BCD:ksi. On argumentteja:

  • arvo – ilmaisimessa näkyvä numero.
  • digitNum – numeron numeroiden määrä. Tätä ei pidä sekoittaa indikaattorin numeroiden määrään. Voit halutessasi näyttää numeron kahdella numerolla ja näyttää merkit kahdella muulla numerolla.
  • tyhjä - merkki merkityksettömien numeroiden tukahduttamisesta. tyhjä=0 tarkoittaa, että numero tulee näyttää kaikkien nollien kanssa. Numero "7" näyttää muodossa "0007". Jos tyhjä poikkeaa 0:sta, merkityksettömät nollat ​​piilotetaan.

Jos numeroarvo ylittää sallitun luvun valitulle numeromäärälle (digitNum), funktio näyttää "---" ilmaisimessa ja palauttaa false.

Esimerkki numerotulostusohjelmasta.

// lähtönumero
#sisältää
#sisältää

// indikaattorityyppi 1; purkauslähdöt 5,4,3,2; segmentin lähdöt 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); // ajastimen keskeytys 2 ms
MsTimer2::start(); // keskeytys käytössä
}

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

// keskeytyskäsittelijä 2 ms
void timerInterrupt() (
disp.regen(); // indikaattorin regenerointi
}

Kaksi viimeistä menetelmää eivät muuta "H" -segmentin - desimaalipilkun - tilaa. Voit muuttaa pisteen tilaa käyttämällä komentoja:

numero |= 0x80; // sytyttää desimaalipilkun
numero &= 0x7f; // sammuttaa desimaalipisteen

Tulos negatiivisten lukujen indikaattoreille (int).

Negatiiviset luvut voidaan tulostaa seuraavasti:

  • Tarkista numeron etumerkki.
  • Jos luku on negatiivinen, tulosta miinusmerkki merkittävimmän numeron kohdalle ja muuta luvun etumerkki positiiviseksi print()-funktiossa.
  • Jos luku on positiivinen, sammuta etumerkkibitti ja tulosta numero print()-funktiolla.

Tässä on ohjelma, joka esittelee tämän menetelmän. Se tulostaa numeroita välillä -999 - 999.

// tulostaa negatiivisia lukuja
#sisältää
#sisältää

// indikaattorityyppi 1; purkauslähdöt 5,4,3,2; segmentin lähdöt 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); // ajastimen keskeytys 2 ms
MsTimer2::start(); // keskeytys käytössä
}

void loop() (

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

jos minä< 0) {
// luku on negatiivinen
disp.digit = B01000000; // merkki -
disp.print(i * -1, 3, 1);
}
muu(
disp.digit = B00000000; // poista merkki
disp.print(i, 3, 1);
}

viive(50);
}
}

// keskeytyskäsittelijä 2 ms
void timerInterrupt() (
disp.regen(); // indikaattorin regenerointi
}

Tulostus murtolukujen indikaattoreihin, kelluva muoto.

Liukulukuja (floats) voidaan näyttää monella tapaa käyttämällä tavallisia C-kielen funktioita.Tämä on ensinnäkin sprint()-funktio. Se toimii hyvin hitaasti, vaatii ylimääräisiä merkkikoodien muunnoksia binäärisiksi desimaalikoodeiksi, sinun täytyy poimia piste merkkijonosta. Samat ongelmat muiden toimintojen kanssa.

Käytän erilaista menetelmää kelluntamuuttujien arvojen näyttämiseen indikaattoreissa. Menetelmä on yksinkertainen, luotettava ja nopea. Vähentyy seuraaviin toimintoihin:

  • Liukuluku kerrotaan 10:llä potenssiin, joka vastaa vaadittua desimaalien määrää. Jos haluat näyttää 1 desimaalin osoittimissa, kerro 10:llä, jos 2, kerro sitten 100:lla, 3 desimaalia 1000:lla.
  • Seuraavaksi liukuluku muunnetaan eksplisiittisesti kokonaisluvuksi (int) ja näytetään indikaattoreissa print()-funktiolla.
  • Piste sijoitetaan vaadittuun numeroon.

Esimerkiksi seuraavat rivit näyttävät kelluvan muuttujan kahdella desimaalilla seitsemän segmentin LED-valoille.

kelluva x = 2,12345;

disp.digit |= 0x80; //

Kerromme luvun 100:lla ja asettamalla pisteen kolmanteen numeroon jaamme tuloksen 100:lla.

Tässä on ohjelma, joka näyttää liukulukuja 0,00 - 99,99 indikaattoreissa.

// liukulukutulos
#sisältää
#sisältää

// indikaattorityyppi 1; purkauslähdöt 5,4,3,2; segmentin lähdöt 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); // ajastimen keskeytys 2 ms
MsTimer2::start(); // keskeytys käytössä
}

void loop() (
kelluva x = 0;

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

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // sytyttää kolmannen tason pisteen

viive(50);
}
}

//keskeytyskäsittelijä 2 ms
void timerInterrupt() (
disp.regen(); // indikaattorin regenerointi
}

Kuten näet, Led4Digits.h-kirjasto yksinkertaistaa huomattavasti työskentelyä seitsemän segmentin LED-ilmaisimien kanssa, jotka on kytketty Arduino-korttiin. En ole löytänyt analogia tällaiselle kirjastolle.

LED-näyttöjen kanssa työskentelyyn siirtorekisterin kautta on olemassa kirjastoja. Joku kirjoitti minulle, että he löysivät kirjaston, joka toimii LED-näytön kanssa, joka on kytketty suoraan Arduino-levyyn. Mutta sitä käytettäessä ilmaisimen numerot hehkuvat epätasaisesti ja vilkkuvat.

Toisin kuin sen analogit, Led4Digits.h-kirjasto:

  • Toimii rinnakkaisprosessina. Pääsilmukassa ohjelma lataa dataa tiettyihin muuttujiin, jotka näkyvät automaattisesti näytöllä. Tietojen ulostulo ja ilmaisimen regenerointi tapahtuvat ajastimen keskeytyksessä, joka on näkymätön pääohjelmalle.
  • Näytön numerot hehkuvat tasaisesti vilkkumatta. Tämä ominaisuus on varmistettu sillä tosiasialla, että regenerointi tapahtuu jaksossa, joka on tiukasti määritelty ajastimen keskeytyksestä.
  • Kirjastossa on kompakti koodi, se suoritetaan nopeasti ja lataa ohjainta mahdollisimman vähän.

Seuraavalla oppitunnilla yhdistämme Arduino-korttiin LED-ilmaisimen ja painikematriisin samanaikaisesti. Kirjoitetaan kirjasto sellaiselle mallille.

Kategoria: . Voit lisätä sen kirjanmerkkeihin.


Yläosa