4-sifret indikator Arduino-tilkobling. Syv-segment indikator. Utdata til indikatorer for brøktall, flyteformat

Det er parametere som det ville være mer hensiktsmessig å gi objektiv informasjon for i stedet for bare en indikasjon. For eksempel lufttemperaturen ute eller tiden på vekkerklokken. Ja, alt dette kan gjøres med glødende pærer eller lysdioder. En grad – én brennende LED eller lyspære osv. Men å telle disse ildfluene - vel, nei! Men, som de sier, mest enkle løsninger- den mest pålitelige. Derfor, uten å tenke lenge, tok utviklerne enkle LED-striper og ordnet dem i riktig rekkefølge.

På begynnelsen av det tjuende århundre med advent vakuum-rør de første gassutslippsindikatorene dukket opp

Ved hjelp av slike indikatorer var det mulig å utlede digital informasjon i arabiske tall. Tidligere var det på slike lamper det ble laget ulike indikasjoner for enheter og annet elektroniske enheter. For tiden brukes gassutslippselementer nesten aldri noe sted. Men retro er alltid moteriktig, derfor samler mange radioamatører fantastiske klokker på gassutladningsindikatorer for seg selv og sine kjære.


Ulempen med gassutladningslamper er at de bruker mye strøm. Man kan krangle om holdbarhet. På universitetet vårt bruker vi fortsatt frekvenstellere i laboratorierommene våre. gassutslippsindikatorer.

Syv-segmentindikatorer

Med bruken av lysdioder har situasjonen endret seg dramatisk til det bedre. LED selv forbruker liten strøm. Hvis du plasserer dem i riktig posisjon, kan du vise absolutt all informasjon. For å fremheve alle de arabiske tallene, er bare syv lysende LED-striper nok - segmenter, satt på en bestemt måte:

Til nesten alle slike syv-segmentindikatorer legges også et åttende segment - en prikk, slik at det er mulig å vise heltalls- og brøkverdien til en hvilken som helst parameter

I teorien får vi en åttesegmentsindikator, men på gammeldags vis kalles den også en syvsegmentsindikator.

Hva er resultatet? Hver stripe på indikatoren med syv segmenter er opplyst av en lysdiode eller en gruppe med lysdioder. Som et resultat, ved å utheve visse segmenter, kan vi vise tall fra 0 til 9, samt bokstaver og symboler.

Typer og betegnelse på diagrammet

Det er ettsifrede, tosifrede, tresifrede og firesifrede syvsegmentindikatorer. Jeg har aldri sett mer enn fire kategorier.

I diagrammene ser syvsegmentindikatoren omtrent slik ut:

Faktisk, i tillegg til hovedterminalene, har hver syv-segmentindikator også en felles terminal med en felles anode (OA) eller en felles katode (OC)

Den interne kretsen til en syv-segmentsindikator med en felles anode vil se slik ut:


og med en felles katode som dette:


Hvis vi har en syv-segmentsindikator med en felles anode (OA), må vi i kretsen levere "pluss" strøm til denne pinnen, og hvis med en felles katode (OC), så "minus" eller jord.

Hvordan sjekke en syv-segment indikator

Vi har følgende indikatorer:


For å sjekke en moderne syv-segmentindikator trenger vi bare et multimeter med en diodetestfunksjon. Til å begynne med ser vi etter en generell konklusjon – den kan enten være OA eller OK. Her kun tilfeldig. Vel, da sjekker vi ytelsen til de gjenværende segmentene av indikatoren i henhold til diagrammene ovenfor.

Som du kan se på bildet nedenfor, lyser segmentet som testes. Vi sjekker andre segmenter på samme måte. Hvis alle segmenter lyser, er en slik indikator intakt og kan brukes i utviklingen din.


Noen ganger er ikke spenningen på multimeteret nok til å teste et segment. Derfor tar vi en strømforsyning og setter den til 5 Volt. For å begrense strømmen gjennom segmentet sjekker vi gjennom en 1-2 Kilo-Ohm motstand.


På samme måte sjekker vi indikatoren fra den kinesiske mottakeren


I kretsene er syv-segmentindikatorer koblet til motstander ved hver pinne

I vår moderne verden syv-segmentindikatorer erstattes av flytende krystallindikatorer som kan vise absolutt all informasjon

men for å bruke dem, trenger du visse ferdigheter i kretsdesignet til slike enheter. Derfor brukes syv-segmentindikatorer fortsatt i dag, på grunn av deres lave kostnader og brukervennlighet.

Syv-segment LED-indikatorer er veldig populære blant digitale verdivisningsenheter og brukes i frontpanelene til mikrobølgeovner, vaskemaskiner, digitale klokker, tellere, tidtakere osv. Sammenlignet med LCD-indikatorer lyser LED-indikatorsegmenter sterkt og er synlige over lang avstand og i en bred synsvinkel. For å koble en syv-segments 4-bits indikator til en mikrokontroller, vil det være nødvendig med minst 12 I/O-linjer. Derfor er det nesten umulig å bruke disse indikatorene med mikrokontrollere med et lite antall pinner, for eksempel serier fra selskapet. Selvfølgelig kan du bruke ulike metoder multipleksing (en beskrivelse av dette kan finnes på nettstedet i delen "Skjemaer"), men selv i dette tilfellet er det visse begrensninger for hver metode, og de bruker ofte komplekse programvarealgoritmer.

Vi vil se på metoden for å koble til en indikator via SPI-grensesnittet, som vil kreve bare 3 I/O-linjer på mikrokontrolleren. Samtidig vil kontroll over alle indikatorsegmenter forbli.

For å koble en 4-bits indikator til en mikrokontroller via SPI-bussen, brukes en spesialisert driverbrikke produsert av selskapet. Mikrokretsen er i stand til å drive åtte syv-segmentindikatorer med en felles katode og inkluderer en BCD-dekoder, segmentdrivere, en multiplekseringskrets og statisk RAM for lagring av sifferverdier.

Strømmen gjennom indikatorsegmentene stilles inn med kun én ekstern motstand. I tillegg støtter brikken kontroll av indikatorlysstyrke (16 lysstyrkenivåer) ved hjelp av innebygd PWM.

Kretsen som diskuteres i artikkelen er en skjermmodulkrets med et SPI-grensesnitt som kan brukes i amatørradiodesign. Og vi er ikke mer interessert i selve kretsen, men i å jobbe med mikrokretsen via SPI-grensesnittet. +5 V-modulstrømmen leveres til Vcc-pinnen, signallinjer MOSI, CLK og CS er designet for kommunikasjon mellom en masterenhet (mikrokontroller) og en slaveenhet (MAX7219-brikke).

Mikrokretsen brukes i en standardforbindelse; de ​​eneste eksterne komponentene som trengs er en motstand som setter strømmen gjennom segmentene, en beskyttelsesdiode for strømforsyningen og en filterkondensator for strømforsyningen.

Data overføres til brikken i 16-bits pakker (to byte), som plasseres i det innebygde 16-bits skiftregisteret på hver stigende flanke av CLK-signalet. Vi betegner en 16-bits pakke som D0-D15, der bitene D0-D7 inneholder data, D8-D11 inneholder registeradressen, bitene D12-D15 har ingen betydning. Bit D15 er den mest signifikante biten og er den første biten som mottas. Selv om brikken er i stand til å kontrollere åtte indikatorer, vil vi vurdere å jobbe med bare fire. De styres av utgangene DIG0 - DIG3, plassert i rekkefølge fra høyre til venstre, 4-bits adressene (D8-D11) som tilsvarer dem er 0x01, 0x02, 0x03 og 0x04 (heksadesimalt format). Sifferregisteret implementeres ved hjelp av on-chip RAM med en 8x8 organisasjon og er direkte adresserbart slik at hvert enkelt siffer på skjermen kan oppdateres når som helst. Tabellen nedenfor viser de adresserbare sifrene og kontrollregistrene til MAX7219-brikken.

Registrere

Adresse

HEX-verdi

Ingen operasjon

Dekodingsmodus

Antall indikatorer

Skru av

Indikator test

Kontrollregistre

MAX1792-brikken har 5 kontrollregistre: dekodingsmodus (Decode-Mode), indikatorlysstyrkekontroll (Intensitet), register over antall tilkoblede indikatorer (Scan Limit), på/av-kontroll (Shutdown), testmodus (Display Test).

Slå av og på brikken

Når strøm tilføres brikken, tilbakestilles alle registre og den går i avstengningsmodus. I denne modusen er skjermen slått av. For å bytte til normal driftsmodus må bit D0 i Shutdown-registeret (adresse 0Сh) settes. Denne biten kan slettes når som helst for å tvinge sjåføren til å slå av, slik at innholdet i alle registre forblir uendret. Denne modusen kan brukes til å spare energi eller i alarmmodus ved å blinke indikatoren (sekvensiell aktivering og deaktivering av avstengningsmodus).

Mikrokretsen byttes til Shutdown-modus ved å sende sekvensielt adressen (0Сh) og data (00h), og overføring av 0Ch (adresse) og deretter 01h (data) går tilbake til normal drift.

Dekodingsmodus

Ved å bruke registeret for valg av dekodingsmodus (adresse 09h), kan du bruke BCD-kode B-dekoding (vis tegnene 0-9, E, H, L, P, -) eller uten dekoding for hvert siffer. Hver bit i registeret tilsvarer ett siffer, å sette en logisk tilsvarer å slå på dekoderen for denne biten, innstilling 0 betyr at dekoderen er deaktivert. Hvis det brukes en BCD-dekoder, tas kun den laveste biten av data i sifferregistrene (D3-D0) i betraktning, bit D4-D6 ignoreres, bit D7 er ikke avhengig av BCD-dekoderen og er ansvarlig for å slå på desimaltegnet på indikatoren hvis D7 = 1. For eksempel, når byte 02h og 05h sendes i rekkefølge, vil DIG1-indikatoren (andre siffer fra høyre) vise tallet 5. På samme måte, når du sender 01h og 89h, vil DIG0-indikatoren vise tallet 9 med desimaltegn inkludert . Tabellen nedenfor viser full liste tegn som vises når du bruker brikkens BCD-dekoder.

Symbol

Data i registre

Aktiverte segmenter = 1

Tømme

*Desimaltegnet settes av bit D7=1

Når BCD-dekoderen er ekskludert fra drift, tilsvarer databitene D7-D0 segmentlinjene (A-G og DP) til indikatoren.

Indikatorlysstyrkekontroll

Brikken lar deg programmere kontrollere lysstyrken til indikatorene ved hjelp av den innebygde PWM. PWM-utgangen styres av lavordens nibble (D3-D0) til intensitetsregisteret (adresse 0Ah), som lar deg stille inn ett av 16 lysstyrkenivåer. Når alle biter av en nibble er satt til 1, velges maksimal lysstyrke for indikatoren.

Antall tilkoblede indikatorer

Scan-Limit-registeret (adresse 0Bh) setter verdien av antall biter som betjenes av mikrokretsen (1 ... 8). For vår 4-bits versjon bør verdien 03h skrives til registeret.

Indikator test

Registeret som er ansvarlig for denne modusen ligger på adressen 0Fh. Ved å sette D0-biten i registeret slår brukeren på alle indikatorsegmenter, mens innholdet i kontroll- og dataregisteret ikke endres. For å deaktivere Display-Test-modus må bit D0 være 0.

Grensesnitt med mikrokontroller

Indikatormodulen kan kobles til enhver mikrokontroller som har tre ledige I/O-linjer. Hvis mikrokontrolleren har en innebygd SPI maskinvaremodul, kan indikatormodulen kobles til som en slaveenhet på bussen. I dette tilfellet kan SPI-signallinjene SDO (seriell data ut), SCLK (seriell klokke) og SS (slavevalg) til mikrokontrolleren kobles direkte til MOSI-, CLK- og CS-pinnene til MAX7219-brikken (modulen), CS-signalet er aktivt lavt.

Hvis mikrokontrolleren ikke har hardware SPI, kan grensesnittet organiseres i programvare. Kommunikasjon med MAX7219 begynner med å trekke og holde CS-linjen lavt, og deretter sende 16 biter med data sekvensielt (MSB først) på MOSI-linjen på den stigende kanten av CLK-signalet. Når overføringen er fullført, går CS-linjen høyt igjen.

I nedlastingsdelen kan brukere laste ned kildeteksten til testprogrammet og HEX-filen til fastvaren, som implementerer en konvensjonell 4-bits teller med visning av verdier på en indikatormodul med et SPI-grensesnitt. Mikrokontrolleren som brukes er et grensesnitt implementert i programvare, signallinjene CS, MOSI og CLK til indikatormodulen er koblet til henholdsvis portene GP0, GP1 og GP2. MikroC-kompilatoren brukes til PIC mikrokontrollere(microElektronika

For å kommentere materiale fra nettstedet og motta full tilgang til vårt forum du trenger registrere .


Tilkoblingsskjema for en en-sifret syv-segment indikator
Tilkoblingsskjema for en flersifret syv-segment indikator

Digital informasjonsvisningsenhet. Dette er den enkleste implementeringen av en indikator som kan vise arabiske tall. Mer komplekse multisegment- og matriseindikatorer brukes til å vise bokstaver.

Som navnet sier, består den av syv skjermelementer (segmenter) som slås av og på separat. Ved å inkludere dem i forskjellige kombinasjoner, kan de brukes til å lage forenklede bilder av arabiske tall.
Segmentene er betegnet med bokstavene A til G; åttende segment - desimaltegn (desimaltall, DP), designet for å vise brøktall.
Noen ganger vises bokstaver på indikatoren med syv segmenter.

De kommer i en rekke farger, vanligvis hvit, rød, grønn, gul og blå. I tillegg kan de ha forskjellige størrelser.

LED-indikatoren kan også være ensifret (som i figuren ovenfor) eller flersifret. I utgangspunktet brukes en-, to-, tre- og firesifrede LED-indikatorer i praksis:

I tillegg til ti sifre, er syv-segmentindikatorer i stand til å vise bokstaver. Men få bokstaver har en intuitiv representasjon med syv segmenter.
På latin: store bokstaver A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, små bokstaver a, b, c, d, e, g , h, i, n, o, q, r, t, u.
På kyrillisk: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (to sifre), b, E/Z.
Derfor brukes syv-segmentindikatorer kun for å vise enkle meldinger.

Totalt kan LED-indikatoren med syv segmenter vise 128 tegn:

En typisk LED-indikator har ni avledninger: en går til katodene til alle segmenter, og de andre åtte går til anoden til hvert segment. Denne ordningen kalles "felles katodekrets", det finnes også ordninger med felles anode(da er det omvendt). Ofte er ikke en, men to vanlige terminaler laget i forskjellige ender av basen - dette forenkler ledningen uten å øke dimensjonene. Det finnes også såkalte "universelle", men jeg personlig har ikke møtt slike. I tillegg er det indikatorer med innebygd skiftregister, noe som i stor grad reduserer antallet mikrokontrollerportpinner som er involvert, men de er mye dyrere og brukes sjelden i praksis. Og siden omfanget ikke kan forstås, vil vi ikke vurdere slike indikatorer foreløpig (men det er også indikatorer med et mye større antall segmenter, matrise).

Flersifrede LED-indikatorer fungerer ofte etter et dynamisk prinsipp: utgangene til segmentene med samme navn på alle sifre er koblet sammen. For å vise informasjon om en slik indikator, må styremikrokretsen syklisk levere strøm til fellesklemmene for alle sifre, mens strøm tilføres segmentklemmene avhengig av om et gitt segment lyser i et gitt siffer.

Koble til en ettsifret syv-segment indikator til en mikrokontroller

Diagrammet nedenfor viser hvordan en ensifret syv-segment indikator er tilkoblet til mikrokontrolleren.
Det bør tas i betraktning at hvis indikatoren med FELLES KATODE, så kobles dens felles utgang til "jord", og segmentene antennes ved mating logisk enhet til portutgangen.
Hvis indikatoren er FELLES ANODE, så tilføres den til sin felles ledning "Plus" spenning, og segmentene tennes ved å bytte portutgangen til tilstanden logisk null.

Indikasjon i en ensifret LED-indikator utføres ved å bruke en binær kode til pinnene til mikrokontrollerporten til det tilsvarende sifferet til det tilsvarende logiske nivået (for indikatorer med OK - logiske, for indikatorer med OA - logiske nuller).

Strømbegrensende motstander kan være til stede i diagrammet eller ikke. Alt avhenger av forsyningsspenningen som leveres til indikatoren og tekniske egenskaper indikatorer. Hvis for eksempel spenningen som leveres til segmentene er 5 volt, og de er designet for en driftsspenning på 2 volt, må det installeres strømbegrensende motstander (for å begrense strømmen gjennom dem for økt forsyningsspenning og ikke brenne ikke bare indikatoren, men også mikrokontrollerporten).
Det er veldig enkelt å beregne verdien av strømbegrensende motstander ved å bruke bestefarens formel Ohm.
For eksempel er egenskapene til indikatoren som følger (hentet fra dataarket):
— driftsspenning — 2 volt
— driftsstrøm — 10 mA (=0,01 A)
— forsyningsspenning 5 volt
Formel for beregning:
R= U/I (alle verdier i denne formelen må være i ohm, volt og ampere)
R= (forsyningsspenning - driftsspenning)/driftsstrøm
R= (5-2)/0,01 = 300 Ohm

Tilkoblingsskjema for en flersifret LED-indikator med syv segmenter I utgangspunktet det samme som når du kobler til en ensifret indikator. Det eneste er at kontrolltransistorer er lagt til i katodene (anodene) til indikatorene:

Det er ikke vist i diagrammet, men mellom basene til transistorene og pinnene til mikrokontrollerporten, er det nødvendig å inkludere motstander, hvis motstand avhenger av typen transistor (motstandsverdiene beregnes, men du kan også prøve å bruke motstander med en nominell verdi på 5-10 kOhm).

Indikasjon ved utslipp utføres dynamisk:
— binærkoden til det tilsvarende sifferet settes på utgangene til PB-porten for det første sifferet, deretter blir det logiske nivået påført kontrolltransistoren til det første sifferet
— binærkoden til det tilsvarende sifferet settes på utgangene til PB-porten for det andre sifferet, deretter blir det logiske nivået påført kontrolltransistoren til det andre sifferet
— binærkoden til det tilsvarende sifferet settes på utgangene til PB-porten for det tredje sifferet, deretter blir det logiske nivået påført kontrolltransistoren til det tredje sifferet
- så i en sirkel
I dette tilfellet er det nødvendig å ta hensyn til:
— for indikatorer med OK kontrolltransistorstruktur brukes NPN(kontrollert av logisk enhet)
- for indikator med OA- struktur transistor PNP(kontrollert av logisk null)

Siden bruken av radioteknikk og elektronikk Tilbakemelding elektronisk enhet og person ble ledsaget av forskjellige signallys, knapper, vippebrytere, bjeller (mikrobølgeklar signal - ding!). Noen elektroniske enheter gir et minimum av informasjon, fordi mer ville være unødvendig. For eksempel indikerer en lysende LED på den kinesiske telefonladeren at laderen er koblet til og får strøm. Men det er også parametere som det ville være mer praktisk å gi objektiv informasjon for. For eksempel lufttemperaturen ute eller tiden på vekkerklokken. Ja, alt dette kan også gjøres med glødende pærer eller lysdioder. En grad - en brennende diode eller lyspære. Hvor mange grader det er, så mange indikatorer er på. Å telle disse ildfluene kan være en vanlig ting, men igjen, hvor mange av disse lysene vil være nødvendig for å vise temperaturen med en nøyaktighet på en tiendedel av en grad? Og generelt, hvilket område vil disse LED-ene og lyspærene okkupere på en elektronisk enhet?

Praktiske syv-segments displayenheter må ha minst åtte eksterne tilkoblingsterminaler; syv av dem gir tilgang til individuelle solcellesegmenter, og den åttende gir felles tilkobling til alle segmenter. I det første tilfellet er enheten kjent som en syv-segments felles anodeskjerm; i det siste tilfellet er enheten kjent som en syv-segments felles katodeskjerm.

For å kjøre et felles anodedisplay, må sjåføren ha en aktiv-lav utgang, der hvert segmentdrev normalt er høyt, men går lavt for å slå på segmentet. For å drive en felles katodeskjerm, må driveren ha en aktiv aktiv utgang.

Og på begynnelsen av det tjuende århundre, med bruken av elektroniske rør, dukket de første gassutslippsindikatorene opp

Ved hjelp av slike indikatorer var det mulig å vise digital informasjon i arabiske tall. Tidligere var det disse lampene som ble brukt til å lage ulike indikasjoner for instrumenter og andre elektroniske enheter. For tiden brukes gassutslippselementer nesten aldri noe sted. Men retro er alltid moteriktig, og det er grunnen til at mange radioamatører samler fantastiske gassutladningsklokker til seg selv og sine kjære.

Den fullstendige forklaringen på dette er litt mer komplisert, som følger. Når spenningen er null, er segmentet i praksis usynlig. Imidlertid, når inngangsspenningen er betydelig positiv eller negativ, blir segmentet effektivt synlig, men hvis drivspenningen opprettholdes i mer enn noen få hundre millisekunder, kan segmentet bli permanent synlig og har ingen videre betydning.

Under disse forholdene er segmentet deaktivert. Dermed er segmentet inkludert under disse betingelsene. Denne formen for drift er vanligvis kjent som et spenningsdobling "brodrift"-system. Handlingssekvensen til ordningen er som følger. Det enkle kaskadesystemet beskrevet tidligere lider av en alvorlig defekt ved at displayet blir uskarpt under den faktiske telleperioden, og blir stabilt og lesbart bare når hver telling er fullført og inngangsporten lukkes. Denne typen "uskarp og les" skjerm er veldig irriterende å se på.

Ulemper med gassutladningslamper - de spiser mye. Man kan krangle om holdbarhet. Ved universitetet vårt bruker vi fortsatt frekvensmålere på gassutladere i laboratorierom.

Med bruken av lysdioder har situasjonen endret seg dramatisk. LED selv bruker en liten mengde strøm. Hvis du plasserer dem i riktig posisjon, kan du vise absolutt all informasjon. For å fremheve alle de arabiske tallene, var bare noe nok syv (derav navnet syv-segment indikator) glødende LED-striper arrangert på en bestemt måte:

Figur 13 viser en forbedret frekvenstellerkrets som bruker displaylåsing for å overvinne defekten ovenfor. Denne ordningen fungerer som følger. Samtidig åpnes inngangsporten og tellerne begynner å summere inngangssignalpulsene. Denne telleren fortsetter i nøyaktig ett sekund, og i løpet av denne perioden hindrer fire-bits låsene tellerutgangen fra å nå frem til skjermdriverne; displayet forblir stabilt i denne perioden.

Etter noen sekunder gjentas sekvensen igjen, med tellerne som starter på nytt og teller deretter inngangsfrekvenspulser i ett sekund, hvor displayet gir en kontinuerlig avlesning av forrige telling osv.

Nesten alle slike syv-segmentindikatorer legger også til et åttende segment - en prikk, slik at det er mulig å vise heltalls- og brøkverdien til en hvilken som helst parameter

Dermed produserer kretsen i figur 13 et stabilt display som oppdateres en gang per sekund; i praksis kan den faktiske telleperioden for denne og diagrammet i figur 12 gjøres til å være i et hvilket som helst tiår med flere eller delvise sekunder, forutsatt at utgangsdisplayet skaleres tilsvarende.

Merk at en tresifret frekvensteller kan indikere maksimale frekvenser på 999 Hz når du bruker en ett-sekunds tidsbase, 99 kHz når du bruker en 100 ms tidsbase, 9 kHz når du bruker en 10 ms tidsbase, og 999 kHz når du bruker en 1 ms tidsbase.

I teorien viser det seg å være en indikator på åtte segmenter, men på gammeldags måte kalles den også syv-segment, og det er det ingen feil i.

Kort sagt, en syv-segmentsindikator er lysdioder plassert i forhold til hverandre i en viss rekkefølge og innelukket i ett hus.

Denne metoden kan forstås ved hjelp av figur 14 og 15. Disse bryterne er koblet sammen og gir den faktiske multiplekserhandlingen og bør betraktes som høyhastighets elektroniske brytere som gjentatte ganger byttes gjennom posisjon 1, 2 og operasjonssekvensen til kretsen er som følger. La oss først anta at bryteren er i posisjon.

Noen få øyeblikk senere flyttes bryteren til posisjon 3, noe som får display 3 til å vise et tall etter noen minutter, hele syklusen begynner å gjenta seg igjen og så videre, og legger til uendelig. I praksis skjer omtrent 50 av disse syklusene hvert sekund, så øyet ser ikke at skjermene slås av og på separat, men oppfatter dem som en tilsynelatende jevn visning som viser tallet 327, eller et annet tall diktert av datasegmentet.

Hvis vi vurderer diagrammet til en enkelt syv-segmentindikator, ser det slik ut:

Som vi ser, kan syv-segmentindikatoren være enten med felles anode (CA), så med felles katode (OC). Grovt sett, hvis vi har et syv-segment med en felles anode (OA), bør vi i kretsen henge et "pluss" på denne pinnen, og hvis med en felles katode (OC), så en "minus" eller jord . Til hvilken pinne vi tilfører spenning, vil denne LED-en lyse. La oss demonstrere alt dette i praksis.

I praktiske multipleksere er toppvisningsstrømmen ganske høy for å sikre tilstrekkelig lysstyrke på skjermen. I fig. Figur 15 viser et eksempel på en forbedret multiplekseringsmetode anvendt på en tresifret frekvensteller. Denne metoden har to hovedfordeler.

Hvis disse terminalene er aktive høy, vil de ha følgende egenskaper. Fig. 18 og 19. Figur 18 viser ripple-undertrykkelsesteknikken som brukes for å gi innledende null-undertrykkelse på en firesifret skjerm som leser kvantitet.

Vi har følgende LED-indikatorer på lager:

Som vi kan se, kan syv-segment-enheter være enkelt- og multi-bit, det vil si to, tre, fire syv-segment-enheter i ett tilfelle. For å sjekke en moderne syv-segments enhet trenger vi bare et multimeter med en diodetestfunksjon. Vi ser etter en generell konklusjon - den kan være enten OA eller OK - tilfeldig, og så ser vi på ytelsen til alle segmenter av indikatoren. Vi sjekker tre-bits syv-segmentet:

Så displayet viser. I utgangspunktet er de enkle å bruke, gir dem strøm og lyser opp. De kan være irriterende fordi de har en slags polaritet, noe som betyr at de bare vil fungere hvis du kobler dem riktig. Hvis du avbryter den positive og negative spenningen, vil de ikke lyse i det hele tatt.

Irriterende som det er, er det også ganske nyttig. Den andre ledningen er katoden. Katoden er koblet til jord. I utgangspunktet vil det komme ned til det. For vanlig katode bruker du strøm til pinnene du vil skru på. Multipleksing. Det finnes til og med skjermkontrollere for dette hvis du ikke vil bekymre deg for å bytte inn programvaren.

Oops, ett segment tok fyr, så vi sjekker de andre segmentene på samme måte.

Noen ganger er spenningen på tegneserien ikke nok til å sjekke indikatorsegmentene. Derfor tar vi strømforsyningen, setter den til 5 volt, kobler en 1-2 kiloOhm-motstand til den ene terminalen på strømforsyningen og begynner å sjekke syv-segmentenheten.

7-segments displaykontroll

Så når du har en 4-sifret, multiplekset 7 segment, felles anode. Først må vi vite hvilken type skjerm vi har, siden det er to mulige former: felles katode og felles anode. Ting du trenger for denne opplæringen. Venstre: En grafisk visning av en 7-segments skjerm som viser en generell layout for interne ledninger og pinneplasseringer.

På dette tidspunktet, vær oppmerksom på den første utgangen, siden du vil trenge den senere når du laster programmet. Hvis skjermen var en vanlig katode, ville vi kansellere den. Nederst i artikkelen er et bilde av kretsen som går på prototypekortet mitt. Vi tilbyr også et bibliotek for å kontrollere mer enn én skjerm.

Hvorfor trenger vi en motstand? Når spenning påføres lysdioden, begynner den å forbruke kraftig strøm når den er slått på. Derfor kan det i dette øyeblikket brenne ut. For å begrense strømmen kobles en motstand i serie med LED-en. Du kan lese mer i denne artikkelen.

Hex-telling på én 7-segments skjerm

Ulempen er at de er ressurskrevende. Denne spesielle skjermen har fire sifre og to kolon-skjermer. Imidlertid gir enheten også digital kontroll skjermlysstyrke gjennom en intern bredbåndsmodulator. I slike tilfeller kan utgangen gjøres på flere 7-segments skjermer.

Dette sparer kontakter på huset og deretter på kontroll. Følgelig refereres det til vanlige anode- eller vanlige katodeskjermer. Utdataene som tilsvarer et segment eller desimaltegn trekkes best ut fra dataarket for visning. En 7-segments skjerm som er klassifisert for den vanlige 10-20mA vil fortsatt lyse opp, om enn svakt. Men dette krever ikke tildeling av kontakter. Følgende fordeling av dette segmentet er basert på.

På samme måte sjekker vi det firesifrede syv-segmentet fra en kinesisk radio

Jeg tror det ikke burde være noen spesielle problemer med dette. I kretsene er syv-segmentkretser koblet til motstander ved hver pinne. Dette er også på grunn av det faktum at LED-er, når spenningen påføres dem, febrilsk forbruker strøm og brenner ut.

Benyttes et annet formål er dette i prinsippet mulig, men det må tas hensyn til ved programmering. Konvertering av individuelle sifre til et spesifikt utdatamønster kan gjøres ved å bruke noe som kalles. Alle andre segmenter skal være mørke. Hvis denne avmerkingsboksen er merket for alle sifre, vises følgende tabell.

I testprogram tall fra 0 til 9 vises sekvensielt på en 7-segments skjerm. Utgangsnummeret lagres i en registerteller og økes med 1 i syklusen. Hvis registeret når en verdi på 10, tilbakestilles det til 0. Når det er hevet, oppstår det en venteløkke som sikrer at det har gått en viss tid i neste utgivelse. Normalt ville du ikke gjort så lange ventesykluser, men dette handler ikke om å vente, det handler om å kontrollere en 7-segments skjerm. Å bruke en tidtaker for dette er for mye innsats.

I vår moderne verden blir enheter med syv segmenter allerede erstattet av LCD-indikatorer som kan vise helt annen informasjon

men for å bruke dem, trenger du visse ferdigheter i kretsdesignet til slike enheter. Så langt er det ikke noe enklere eller billigere enn LED-indikatorer med syv segmenter.

Selve problemet, og derfor den interessante delen av denne artikkelen, oppstår imidlertid rett etter etikettsløyfen. Vær oppmerksom på at tellerverdien må dobles. Dette er direkte relatert til det faktum at flash-minne er ordmessig og ikke bytemessig. Det andre eksemplet på denne siden gjør det annerledes. Den viser hvordan, gjennom en annen tabelloppføring, generering av utfyllingsbyte kan forhindres av assembleren. Det er også interessant at beregningen krever et register som inneholder verdien 0.

Derfor må denne konstanten først lastes inn i et register og først da kan addisjon utføres ved hjelp av dette registeret. Det interessante er at dette faktum finnes i mange programmer, og konstanter i de aller fleste tilfeller er konstanten 0. Derfor reserverer mange programmerere et register helt fra starten for dette og kaller det nullregisteret.

I denne artikkelen vil vi snakke om digital visning.
LED-indikatorer med syv segmenter er designet for å vise arabiske tall fra 0 til 9 (fig. 1).

Slike indikatorer er ensifrede, som viser bare ett tall, men det kan være flere syv-segmentgrupper kombinert til ett hus (flersifret). I dette tilfellet er tallene atskilt med et desimaltegn (fig. 2)

Dessverre er det et problem fordi skjermen krever åtte porter - fire annonser krever 32 porter. Men det er flere måter. Skiftregistre er allerede beskrevet i en annen opplæring. Dette vil gjøre det lettere å lage de nødvendige 32 utgangslinjene med bare tre pinner. Kontrollprinsippet er ikke forskjellig fra å kjøre en enkelt 7-segments skjerm, bare hvordan "utgangspinnene" nærmer seg verdiene deres er forskjellig og bestemmes av bruken av skiftregistre. På dette øyeblikket et annet kontrollalternativ må imidlertid vises.



Fig.2.

Indikatoren kalles syv-segment på grunn av at det viste symbolet er bygget opp av syv separate segmenter. Inne i huset til en slik indikator er det lysdioder, som hver lyser opp sitt eget segment.
Det er problematisk å vise bokstaver og andre symboler på slike indikatorer, så 16-segmentindikatorer brukes til disse formålene.

Vi skal se på multipleksing igjen nedenfor. Multipleksing betyr at ikke alle fire skjermene er slått på samtidig, men bare én om gangen en kort tid. Hvis endringen mellom skjermer skjer raskere enn vi mennesker kan oppfatte, ser det ut til at alle fire lysene fungerer samtidig, selv om bare ett lyser i en kort periode. På denne måten kan fire displayer dele individuelle segmentsegmenter, og alt som kreves er 4 ekstra kontrolllinjer for de 4 displayene som displayet er aktivert med.

Et aspekt ved denne typen kontroll er frekvensen av multipleksing, det vil si hele overgangssyklusen fra en skjerm til en annen. Den skal være høy nok til å forhindre at skjermen flimrer. Det menneskelige øyet er tregt, i en kino 24 bilder i sekundet, med TV-en for å være på den sikre siden at også stillbilder er rolige, hvert segment må styres minst 100 Hz, så det kobles til minst hver 10. ms. I unntakstilfeller kan imidlertid selv 100 Hz fortsatt flimre, for eksempel når skjermen beveger seg raskt eller når det oppstår forstyrrelser med kunstige lyskilder som opererer med vekselstrøm.

LED-indikatorer kommer i to typer.
I den første av dem er alle katoder, dvs. de negative terminalene til alle lysdiodene er kombinert sammen og en tilsvarende terminal er tildelt dem på kabinettet.
De resterende terminalene på indikatoren er koblet til anoden til hver LED (fig. 3, a). Denne kretsen kalles en "vanlig katodekrets".
Det er også indikatorer der LED-ene til hvert segment er koblet i henhold til en krets med en felles anode (fig. 3, b).



Fig.3.

Hvert segment er angitt med en tilsvarende bokstav. Figur 4 viser plasseringen deres.

Fig.4.

Som et eksempel, vurdere en tosifret syv-segment indikator GND-5622As-21 rød. Forresten, det er andre farger, avhengig av modell.
Ved å bruke et tre-volts batteri kan du slå på segmenter, og hvis du kombinerer en gruppe pinner til en haug og bruker strøm til dem, kan du til og med vise tall. Men denne metoden er upraktisk, så skiftregistre og dekodere brukes til å kontrollere syv-segmentindikatorer. Også ofte er indikatorpinnene koblet direkte til mikrokontrollerutgangene, men bare når indikatorer med lavt strømforbruk brukes. Figur 5 viser et fragment av en krets som bruker PIC16F876A.



Fig.5.

For å kontrollere syv-segmentindikatoren brukes ofte K176ID2-dekoderen.
Denne brikken er i stand til å konvertere binær kode bestående av nuller og enere til desimalsifre fra 0 til 9.

For å forstå hvordan det hele fungerer, må du sette sammen en enkel krets (fig. 6). K176ID2-dekoderen er plassert i en DIP16-pakke. Den har 7 utgangspinner (pinner 9 - 15), hver dedikert til et spesifikt segment. Punktkontroll er ikke gitt her. Mikrokretsen har også 4 innganger (pinner 2 - 5) for tilførsel av binær kode. 16. og 8. pinne leveres med henholdsvis pluss og minus kraft. De resterende tre konklusjonene er hjelpemidler, jeg vil snakke om dem litt senere.



Fig.6.

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

Det er 4 vippebrytere i kretsen (alle knapper er mulige), når du trykker på dem, leveres en logisk en til dekoderinngangene fra strømforsyningen pluss. Forresten, selve mikrokretsen drives med en spenning på 3 til 15 volt. I dette eksemplet er hele kretsen drevet av en 9-volts strømforsyning.

Det er også 4 motstander i kretsen. Dette er såkalte pull-up motstander. De er nødvendige for å sikre at den logiske inngangen er lav når det ikke er noe signal. Uten dem kan det hende at avlesningene på indikatoren ikke vises riktig. Det anbefales å bruke det sammemotstand fra 10 kOhm til 100 kOhm.

I diagrammet er ikke pinnene 2 og 7 til HG1-indikatoren koblet til. Hvis du kobler DP-pinnen til minusstrømforsyningen, vil desimaltegnet lyse opp. Og hvis du bruker et minus på Dig.2-utgangen, vil den andre gruppen av segmenter også lyse opp (vil vise det samme symbolet).

Dekoderinngangene er utformet på en slik måte at for å vise tallene 1, 2, 4 og 8 på indikatoren, trenger du bare å trykke på én knapp (oppsettet har vippebrytere som tilsvarer inngangene D0, D1, D2 og D3). Hvis det ikke er noe signal, vises tallet null. Når et signal tilføres inngang D0, vises tallet 1. Og så videre. For å vise andre tall, må du trykke på en kombinasjon av vippebrytere. Tabell 1 vil fortelle oss hvilke vi må trykke på.


Tabell 1.

For å vise tallet "3" må du bruke en logisk på inngangen D0 og D1. Hvis du bruker et signal til D0 og D2, vil tallet "5" vises(Fig. 6).



Fig.6.

Her er en utvidet tabell der vi ikke bare ser den forventede figuren, men også de segmentene (a - g) som vil utgjøre denne figuren.



Tabell 2.

Den 1., 6. og 7. pinnene til mikrokretsen er hjelpemidler (henholdsvis S, M, K).

I diagrammet (fig. 6) er den 6. pinne "M" jordet (til strømforsyningen minus) og det er en positiv spenning ved utgangen av mikrokretsen for å arbeide med en indikator med en felles katode. Hvis det brukes en indikator med en felles anode, bør en påføres den sjette pinnen.

Hvis en logisk påføres den 7. pinne "K", slukkes indikatortegnet, null tillater indikasjonen. I ordningen denne konklusjonen jordet (til strømforsyningen minus).

En logisk enhet (pluss strøm) leveres til den første utgangen på dekoderen, som gjør at den konverterte koden kan vises på indikatoren. Men hvis du bruker en logisk null på denne pinnen (S), vil inngangene slutte å motta et signal, og det nåværende viste tegnet vil fryse på indikatoren.

En interessant ting å merke seg er at vi vet at vippebryteren D0 slår på tallet "1", og vippebryteren D1 slår på tallet "2". Hvis du trykker på begge vippebryterne, vil tallet 3 vises (1+2=3). Og i andre tilfeller viser indikatoren summen av tallene som utgjør denne kombinasjonen. Vi kommer til den konklusjon at dekoderinngangene er ordnet gjennomtenkt og har svært logiske kombinasjoner.

Du kan også se videoen til denne artikkelen.

La oss koble en syv-segments LED-indikator til Arduino-kortet og lære hvordan du kontrollerer det ved hjelp av Led4Digits.h-biblioteket.

Den forrige leksjonen beskrevet i detalj mikrokontrollere. La oss koble en slik indikator til Arduino-kortet.

Diagrammet for å koble indikatoren til Arduino-kortet ser slik ut.

Jeg satt den sammen på et kretskort.

For å administrere indikatorer skrev jeg Led4Digits.h-biblioteket:

Og betale.

Biblioteket lar deg administrere syv-segmentindikatorer:

  • opptil fire sifre i størrelse;
  • med alle varianter av kontrollpulspolariteter (alle);
  • arbeider i en parallell prosess;
  • lar deg vise på indikatoren:
    • segmenter av hver kategori;
    • sifferet til hvert siffer;
    • heltall 0 ... 9999;
  • for å skrive ut et heltall, kan antall sifre spesifiseres;
  • Det er en modus for å undertrykke ubetydelige sifre.

Du kan laste ned Led4Digits.h-biblioteket fra denne lenken:

Og betale. Bare 40 gni. per måned for tilgang til alle nettstedets ressurser!

Hvordan du installerer er skrevet i .

Jeg vil ikke gi kildetekstene. Du kan slå dem opp i bibliotekfilene. Som alltid er det mange kommentarer der. Jeg vil beskrive i detalj, med eksempler, hvordan du bruker biblioteket.

LED-kontrollbibliotek for Arduino Led4Digits.

Her er klassebeskrivelsen. Jeg ga kun offentlige metoder og egenskaper.

klasse Led4Digits (
offentlig:
byte siffer; // bitsegmentkontrollkoder
void regen(); // regenerering, må metoden kalles regelmessig
void tetradToSegCod(byte grave, byte tetrad); // konvertere tetrad til segmentkoder
boolsk utskrift (usignert int-verdi, byte sifferNum, byte blank); // heltallsutgang



} ;

Konstruktør.

Led4Digits (bytetypeLed, byte sifferPin0, byte sifferPin1, byte sifferPin2, byte sifferPin3,
byte segPinA, byte segPinB, byte segPinC, byte segPinD,
byte segPinE, byte segPinF, byte segPinG, byte segPinH);

typeLed Stiller kontrollpulspolariteter for bit- og segmentvalgsignaler. Støtter alle tilkoblingsordninger ().

typeLed Valg av kategori Segmentvalg Kretstype
0 -_- -_- Felles anode med utladningsvalgtaster
1 _-_ -_- Felles anode
2 -_- _-_ Vanlig katode
3 _-_ _-_ Felles katode med utladningsvalgtaster

sifferPin0...digitPin3– utganger for valg av sifre. Hvis sifferPin = 255, er sifferet deaktivert. Dette lar deg koble til indikatorer med færre sifre. digitPin0 – lavt (høyre) siffer.

segPinA...segPinH– segmentkontrollutganger.

For eksempel,

betyr: indikator type 1; utløpsutganger 5,4,3,2; utganger av segmentene 6,7,8,9,10,11,12,13.

void regen() metode

Metoden må kalles jevnlig i en parallell prosess. Det regenererer bildet på indikatorene. Regenereringssyklustiden er lik metodeanropsperioden multiplisert med antall biter.

For eksempel,

// avbruddsbehandler 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Byte siffer array

Inneholder tilstanden til segmentene. siffer er den minst signifikante biten, den minst signifikante biten av siffer er "A"-segmentet til den minst signifikante biten. En bittilstand på 1 betyr at segmentet lyser.

For eksempel,

siffer = B0000101;

betyr at i det andre sifferet lyser segmentene "A" og "C".

Et eksempel på et program som sekvensielt lyser opp alle segmenter av hvert siffer.

// løpende segmenter
#inkludere
#inkludere

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

void oppsett() (
timeravbrudd 2 ms
MsTimer2::start(); // avbryte aktiver
}

void loop() (
for (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;
ellers(
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
forsinkelse(250);
}
}

//avbruddsbehandler 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

I siffermatrisen forskyves 1 og indikatorene viser dette.

Metode void tetradToSegCod(byte dig, byte tetrad)

Metoden lar deg vise tall og bokstaver med heksadesimal kode i individuelle sifre. Har argumenter:

  • dig – siffernummer 0 ... 3;
  • tetrad – desimaltegnkode. Kode 0 vil vise tallet "0", kode 1 - tallet "1", kode 14 - bokstaven "E".

For eksempel,

tetrad(2,7);

vil vise tallet "7" i det tredje sifferet.

Et eksempel på et program som endrer tegn i hvert siffer etter tur.

// tall én etter én
#inkludere
#inkludere

// indikator type 1; utløpsutganger 5,4,3,2; segmentutganger 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void oppsett() (
MsTimer2::set(2, timeravbrudd); // timeravbrudd 2 ms
MsTimer2::start(); // avbryte aktiver
}

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

// avbruddsbehandler 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Metode boolesk utskrift (usignert int-verdi, byte sifferNum, byte blank)

Metoden viser et heltall på indikatorene. Den konverterer det binære tallet til BCD for hvert siffer. Har argumenter:

  • verdi – tallet som vises på indikatoren.
  • digitNum – antall sifre for nummeret. Dette må ikke forveksles med antall indikatorsiffer. Det kan være lurt å vise et tall på 2 sifre, og vise tegn på de to andre ved å bruke siffer.
  • blank – et tegn på undertrykkelse av ubetydelige sifre. blank=0 betyr at tallet skal vises med alle nuller. Tallet "7" vil se ut som "0007". Hvis blank er forskjellig fra 0, vil ubetydelige nuller bli undertrykt.

Hvis tallverdien overstiger det tillatte tallet for det valgte antallet sifre (digitNum), vil funksjonen vise "---" på indikatoren og returnere usant.

Et eksempel på et tallutdataprogram.

// utdatanummer
#inkludere
#inkludere

// indikator type 1; utløpsutganger 5,4,3,2; segmentutganger 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void oppsett() (
MsTimer2::set(2, timeravbrudd); // timeravbrudd 2 ms
MsTimer2::start(); // avbryte aktiver
}

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

// avbruddsbehandler 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

De to siste metodene endrer ikke tilstanden til "H" -segmentet - desimaltegnet. For å endre tilstanden til et punkt, kan du bruke kommandoene:

siffer |= 0x80; // lys desimaltegnet
siffer &= 0x7f; // slukk desimaltegnet

Utgang til indikatorer for negative tall (int).

Negative tall kan skrives ut som følger:

  • Sjekk tegnet på tallet.
  • Hvis tallet er negativt, skriv ut et minustegn ved det mest signifikante sifferet og endre fortegnet til tallet til positivt i print()-funksjonen.
  • Hvis tallet er positivt, slå av tegnbiten og skriv ut tallet ved hjelp av print()-funksjonen.

Her er et program som demonstrerer denne metoden. Den sender ut tall fra -999 til 999.

// ut negative tall
#inkludere
#inkludere

// indikator type 1; utløpsutganger 5,4,3,2; segmentutganger 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void oppsett() (
MsTimer2::set(2, timeravbrudd); // timeravbrudd 2 ms
MsTimer2::start(); // avbryte aktiver
}

void loop() (

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

hvis jeg< 0) {
// tallet er negativt
disp.digit= B01000000; // tegn -
disp.print(i * -1, 3, 1);
}
ellers(
disp.digit= B00000000; // fjern skiltet
disp.print(i, 3, 1);
}

forsinkelse(50);
}
}

// avbruddsbehandler 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Utdata til indikatorer for brøktall, flyteformat.

Det er mange måter å vise flytende kommatall (flyter) ved å bruke standard C-språkfunksjoner. Dette er først og fremst sprint()-funksjonen. Det fungerer veldig sakte, krever ekstra konverteringer av tegnkoder til binære desimalkoder, du må trekke ut et punkt fra en streng. Samme problemer med andre funksjoner.

Jeg bruker en annen metode for å vise verdiene til flytevariabler på indikatorer. Metoden er enkel, pålitelig, rask. Reduserer til følgende operasjoner:

  • Flytallstallet multipliseres med 10 i potensen som tilsvarer det nødvendige antall desimaler. Hvis du trenger å vise 1 desimal på indikatorer, multipliser med 10, hvis 2, multipliser med 100, 3 desimaler med 1000.
  • Deretter konverteres flyttallnummeret eksplisitt til et heltall (int) og vises på indikatorene ved hjelp av print()-funksjonen.
  • En prikk plasseres i det nødvendige sifferet.

For eksempel vil de følgende linjene sende ut en flytevariabel med to desimaler til LED-ene med syv segmenter.

float x = 2,12345;

disp.digit |= 0x80; //

Vi multipliserer tallet med 100, og ved å plassere en prikk i det tredje sifferet deler vi resultatet på 100.

Her er et program som viser flyttall fra 0,00 til 99,99 på indikatorene.

// flytepunktutgang
#inkludere
#inkludere

// indikator type 1; utløpsutganger 5,4,3,2; segmentutganger 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void oppsett() (
MsTimer2::set(2, timeravbrudd); // timeravbrudd 2 ms
MsTimer2::start(); // avbryte aktiver
}

void loop() (
flyte x = 0;

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

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // lys opp det tredje nivåpunktet

forsinkelse(50);
}
}

//avbruddsbehandler 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Som du kan se, forenkler Led4Digits.h-biblioteket arbeidet med syv-segments lysdiode (LED)-indikatorer koblet til Arduino-kortet. Jeg har ikke funnet en analog til et slikt bibliotek.

Det finnes biblioteker for arbeid med LED-skjermer via et skiftregister. Noen skrev til meg at de fant et bibliotek som fungerer med en LED-skjerm direkte koblet til Arduino-kortet. Men når du bruker den, lyser indikatorsifrene ujevnt og blunker.

I motsetning til sine analoger, Led4Digits.h-biblioteket:

  • Kjører som en parallell prosess. I hovedsløyfen laster programmet data inn i visse variabler, som automatisk vises på displayet. Informasjonsutgang og indikatorregenerering skjer i et timeravbrudd, usynlig for hovedprogrammet.
  • Displaynumrene lyser jevnt, uten å blinke. Denne egenskapen er sikret ved at regenerering skjer i en syklus strengt definert av et timeravbrudd.
  • Biblioteket har kompakt kode, kjører raskt og belaster kontrolleren minimalt.

I neste leksjon vil vi koble en LED-indikator og en knappematrise til Arduino-kortet samtidig. La oss skrive et bibliotek for et slikt design.

Kategori: . Du kan bokmerke den.


Topp