Indicator din 4 cifre Conexiune Arduino. Indicator cu șapte segmente. Ieșire la indicatorii numerelor fracționale, format flotant

Există parametri pentru care ar fi mai convenabil să se furnizeze informații obiective și nu doar o indicație. De exemplu, temperatura aerului de afară sau ora de pe ceasul cu alarmă. Da, toate acestea s-ar putea face cu becuri luminoase sau cu LED-uri. Un grad – un LED aprins sau un bec etc. Dar numărând acești licurici - ei bine, nu! Dar, după cum se spune, cel mai mult solutii simple- cel mai de încredere. Prin urmare, fără să se gândească mult timp, dezvoltatorii au luat benzi LED simple și le-au aranjat în ordinea corectă.

La începutul secolului al XX-lea odată cu venirea tuburi vid au apărut primii indicatori de descărcare de gaze

Cu ajutorul unor astfel de indicatori s-a putut deduce informatii digitale cu cifre arabe. Anterior, pe astfel de lămpi s-au făcut diverse indicații pentru dispozitive și altele dispozitive electronice. În prezent, elementele de descărcare în gaz nu sunt aproape niciodată folosite nicăieri. Dar retro este întotdeauna la modă, prin urmare, mulți radioamatori adună ceasuri minunate pe indicatorii de descărcare de gaz pentru ei și cei dragi.


Dezavantajul lămpilor cu descărcare în gaz este că acestea consumă multă energie electrică. Se poate discuta despre durabilitate. La universitatea noastră, încă folosim contoare de frecvență în sălile noastre de laborator. indicatoare de descărcare de gaze.

Indicatori cu șapte segmente

Odată cu apariția LED-urilor, situația s-a schimbat dramatic în bine. LED-urile în sine consumă curent mic. Dacă le plasați în poziția corectă, puteți afișa absolut orice informație. Pentru a evidenția toate cifrele arabe, sunt suficiente doar șapte benzi LED luminoase - segmente, așezate într-un anumit fel:

La aproape toți astfel de indicatori cu șapte segmente, se adaugă și un al optulea segment - un punct, astfel încât să fie posibilă afișarea valorii întregi și fracționale a oricărui parametru

În teorie, obținem un indicator cu opt segmente, dar în mod veche se mai numește și indicator cu șapte segmente.

Care este rezultatul? Fiecare bandă de pe indicatorul cu șapte segmente este iluminată de un LED sau un grup de LED-uri. Ca urmare, prin evidențierea anumitor segmente, putem afișa numere de la 0 la 9, precum și litere și simboluri.

Tipuri și denumire pe diagramă

Există indicatori cu o cifră, două cifre, trei cifre și patru cifre și șapte segmente. Nu am văzut niciodată mai mult de patru categorii.

În diagrame, indicatorul cu șapte segmente arată cam așa:

De fapt, pe lângă terminalele principale, fiecare indicator cu șapte segmente are și un terminal comun cu un anod comun (OA) sau un catod comun (OC)

Circuitul intern al unui indicator cu șapte segmente cu un anod comun va arăta astfel:


și cu un catod comun ca acesta:


Dacă avem un indicator cu șapte segmente cu un anod comun (OA), atunci în circuit trebuie să furnizăm putere „plus” acestui pin, iar dacă cu un catod comun (OC), atunci „minus” sau masă.

Cum să verificați un indicator cu șapte segmente

Avem următorii indicatori:


Pentru a verifica un indicator modern cu șapte segmente, avem nevoie doar de un multimetru cu funcție de testare a diodelor. Pentru început, căutăm o concluzie generală - poate fi fie OA, fie OK. Aici doar la întâmplare. Ei bine, atunci verificăm performanța segmentelor rămase ale indicatorului conform diagramelor de mai sus.

După cum puteți vedea în fotografia de mai jos, segmentul testat se aprinde. Verificăm și alte segmente în același mod. Dacă toate segmentele sunt aprinse, atunci un astfel de indicator este intact și poate fi utilizat în dezvoltările dvs.


Uneori, tensiunea de pe multimetru nu este suficientă pentru a testa un segment. Prin urmare, luăm o sursă de alimentare și o setăm la 5 volți. Pentru a limita curentul prin segment, verificăm printr-un rezistor de 1-2 Kilo-Ohm.


În același mod verificăm indicatorul de la receptorul chinezesc


În circuite, indicatoarele cu șapte segmente sunt conectate la rezistențe la fiecare pin

În a noastră lumea modernă indicatorii cu șapte segmente sunt înlocuiți cu indicatori cu cristale lichide care pot afișa absolut orice informație

dar pentru a le folosi, aveți nevoie de anumite abilități în proiectarea circuitelor unor astfel de dispozitive. Prin urmare, indicatorii cu șapte segmente sunt utilizați și astăzi, datorită costului redus și ușurinței de utilizare.

Indicatoarele LED cu șapte segmente sunt foarte populare printre dispozitivele de afișare a valorii digitale și sunt utilizate în panourile frontale ale cuptoarelor cu microunde, mașini de spălat, ceasuri digitale, contoare, cronometre etc. În comparație cu indicatoarele LCD, segmentele indicatoare cu LED-uri strălucesc puternic și sunt vizibile la distanță lungă și la un unghi larg de vizualizare. Pentru a conecta un indicator cu șapte segmente pe 4 biți la un microcontroler, vor fi necesare cel puțin 12 linii I/O. Prin urmare, este aproape imposibil să utilizați acești indicatori cu microcontrolere cu un număr mic de pini, de exemplu, serii de la companie. Desigur că poți folosi metode diferite multiplexarea (a cărei descriere poate fi găsită pe site-ul web în secțiunea „Scheme”), dar chiar și în acest caz există anumite limitări pentru fiecare metodă și folosesc adesea algoritmi software complexi.

Ne vom uita la metoda de conectare a unui indicator prin interfața SPI, care va necesita doar 3 linii I/O ale microcontrolerului. În același timp, controlul tuturor segmentelor indicatoare va rămâne.

Pentru a conecta un indicator pe 4 biți la un microcontroler prin magistrala SPI, se folosește un cip de driver specializat produs de companie. Microcircuitul este capabil să conducă opt indicatori cu șapte segmente cu un catod comun și include un decodor BCD, drivere de segmente, un circuit de multiplexare și RAM statică pentru stocarea valorilor cifrelor.

Curentul prin segmentele indicatoare este setat folosind doar un rezistor extern. În plus, cipul acceptă controlul luminozității indicatorului (16 niveluri de luminozitate) folosind PWM încorporat.

Circuitul discutat în articol este un circuit de modul de afișare cu o interfață SPI care poate fi utilizat în proiecte de radio amatori. Și suntem mai interesați nu de circuitul în sine, ci de lucrul cu microcircuitul prin interfața SPI. Alimentarea modulului de +5 V este furnizată pinului Vcc, linii de semnal MOSI, CLK și CS sunt proiectate pentru comunicarea între un dispozitiv master (microcontroller) și un dispozitiv slave (cip MAX7219).

Microcircuitul este utilizat într-o conexiune standard; singurele componente externe necesare sunt un rezistor care stabilește curentul prin segmente, o diodă de protecție pentru sursa de alimentare și un condensator de filtru pentru alimentare.

Datele sunt transferate la cip în pachete de 16 biți (doi octeți), care sunt plasate în registrul de deplasare de 16 biți încorporat pe fiecare margine ascendentă a semnalului CLK. Notăm un pachet de 16 biți D0-D15, unde biții D0-D7 conțin date, D8-D11 conțin adresa registrului, biții D12-D15 nu au nicio semnificație. Bit D15 este cel mai semnificativ bit și este primul bit primit. Deși cipul este capabil să controleze opt indicatori, ne vom gândi să lucrăm cu doar patru. Acestea sunt controlate de iesirile DIG0 - DIG3, situate in secventa de la dreapta la stanga, adresele de 4 biti (D8-D11) care le corespund sunt 0x01, 0x02, 0x03 si 0x04 (format hexazecimal). Registrul de cifre este implementat folosind RAM pe cip cu o organizare 8x8 și este direct adresabil, astfel încât fiecare cifră individuală de pe afișaj poate fi actualizată în orice moment. Următorul tabel prezintă cifrele adresabile și registrele de control ale cipului MAX7219.

Inregistreaza-te

Abordare

Valoare HEX

Nicio operațiune

Modul de decodare

Numărul de indicatori

Închide

Testul indicatorului

Registre de control

Cipul MAX1792 are 5 registre de control: mod decodare (Decode-Mode), control al luminozității indicatorului (Intensitate), registru al numărului de indicatoare conectate (Scan Limit), control on/off (Shutdown), modul test (Display Test).

Pornirea și oprirea cipului

Când cip este alimentat, toate registrele sunt resetate și intră în modul de oprire. În acest mod, afișajul este oprit. Pentru a comuta în modul de funcționare normal, trebuie setat bitul D0 al registrului de oprire (adresa 0Сh). Acest bit poate fi șters în orice moment pentru a forța driverul să se oprească, lăsând neschimbat conținutul tuturor registrelor. Acest mod poate fi folosit pentru a economisi energie sau în modul alarmă prin clipirea indicatorului (activare și dezactivare secvențială a modului Oprire).

Microcircuitul este comutat în modul Oprire prin transmiterea secvențială a adresei (0Сh) și a datelor (00h), transferând 0Ch (adresă) și apoi 01h (date) revine la funcționarea normală.

Modul de decodare

Folosind registrul de selecție a modului de decodare (adresa 09h), puteți utiliza decodarea codului BCD B (afișează caracterele 0-9, E, H, L, P, -) sau fără decodare pentru fiecare cifră. Fiecare bit din registru corespunde unei cifre, setarea unei cifre logice corespunde cu pornirea decodorului pentru acest bit, setarea 0 înseamnă că decodorul este dezactivat. Dacă se folosește un decodor BCD, atunci se ia în considerare doar cea mai mică picătură de date din registrele de cifre (D3-D0), biții D4-D6 sunt ignorați, bitul D7 nu depinde de decodorul BCD și este responsabil pentru pornire. punctul zecimal de pe indicator dacă D7 = 1. De exemplu, când octeții 02h și 05h sunt trimiși în secvență, indicatorul DIG1 (a doua cifră din dreapta) va afișa numărul 5. În mod similar, la trimiterea 01h și 89h, indicatorul DIG0 va afișa numărul 9 cu punctul zecimal inclus. . Tabelul de mai jos arată lista plina caracterele afișate atunci când utilizați decodorul BCD al cipului.

Simbol

Date în registre

Segmente activate = 1

Gol

*Punctul zecimal este setat de bitul D7=1

Când decodorul BCD este exclus din funcționare, biții de date D7-D0 corespund liniilor de segment (A-G și DP) ale indicatorului.

Controlul luminozității indicatorului

Cipul vă permite să controlați programatic luminozitatea indicatoarelor folosind PWM-ul încorporat. Ieșirea PWM este controlată de nibble-ul de ordin scăzut (D3-D0) al registrului de intensitate (adresa 0Ah), care vă permite să setați unul dintre cele 16 niveluri de luminozitate. Când toți biții dintr-un nibble sunt setați la 1, este selectată luminozitatea maximă a indicatorului.

Numărul de indicatoare conectate

Registrul Scan-Limit (adresa 0Bh) stabilește valoarea numărului de biți deserviți de microcircuit (1 ... 8). Pentru versiunea noastră pe 4 biți, valoarea 03h ar trebui să fie scrisă în registru.

Testul indicatorului

Registrul responsabil pentru acest mod se află la adresa 0Fh. Prin setarea bitului D0 în registru, utilizatorul pornește toate segmentele indicatoare, în timp ce conținutul registrelor de control și date nu se modifică. Pentru a dezactiva modul Display-Test, bitul D0 trebuie să fie 0.

Interfață cu microcontroler

Modulul indicator poate fi conectat la orice microcontroler care are trei linii I/O libere. Dacă microcontrolerul are un modul hardware SPI încorporat, atunci modulul indicator poate fi conectat ca dispozitiv slave pe magistrală. În acest caz, liniile de semnal SPI SDO (serial data out), SCLK (serial clock) și SS (slave select) ale microcontrolerului pot fi conectate direct la pinii MOSI, CLK și CS ai chipului MAX7219 (modul), Semnalul CS este activ scăzut.

Dacă microcontrolerul nu are SPI hardware, interfața poate fi organizată în software. Comunicarea cu MAX7219 începe prin tragerea și menținerea scăzută a liniei CS, apoi trimiterea a 16 biți de date secvenţial (în primul rând MSB) pe linia MOSI pe marginea ascendentă a semnalului CLK. La finalizarea transmisiei, linia CS se ridică din nou.

În secțiunea de descărcări, utilizatorii pot descărca textul sursă al programului de testare și fișierul HEX al firmware-ului, care implementează un contor convențional de 4 biți cu afișare a valorilor pe un modul indicator cu o interfață SPI. Microcontrolerul utilizat este o interfață implementată în software, liniile de semnal CS, MOSI și CLK ale modulului indicator sunt conectate la porturile GP0, GP1 și respectiv GP2. Compilatorul mikroC este folosit pentru Microcontrolere PIC(microElektronika

Pentru a comenta materialele de pe site și a primi acces complet pe forumul nostru de care ai nevoie Inregistreaza-te .


Schema de conectare pentru un indicator cu o cifră și șapte segmente
Schema de conectare pentru un indicator cu mai multe cifre și șapte segmente

Dispozitiv de afișare digitală a informațiilor. Aceasta este cea mai simplă implementare a unui indicator care poate afișa cifre arabe. Pentru afișarea literelor sunt utilizați indicatori multisegment și matrici mai complexi.

După cum spune și numele, este format din șapte elemente de afișare (segmente) care se pornesc și se opresc separat. Incluzându-le în diferite combinații, ele pot fi folosite pentru a crea imagini simplificate ale cifrelor arabe.
Segmentele sunt desemnate cu literele de la A la G; al optulea segment - virgulă zecimală (punct zecimal, DP), conceput pentru a afișa numere fracționale.
Ocazional, litere sunt afișate pe indicatorul cu șapte segmente.

Ele vin într-o varietate de culori, de obicei alb, roșu, verde, galben și albastru. În plus, pot fi de diferite dimensiuni.

De asemenea, indicatorul LED poate fi cu o singură cifră (ca în figura de mai sus) sau cu mai multe cifre. Practic, indicatoarele LED cu una, două, trei și patru cifre sunt utilizate în practică:

Pe lângă zece cifre, indicatorii cu șapte segmente sunt capabili să afișeze litere. Dar puține litere au o reprezentare intuitivă în șapte segmente.
În latină: majuscule A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, litere mici a, b, c, d, e, g , h, i, n, o, q, r, t, u.
În chirilic: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (două cifre), b, E/Z.
Prin urmare, indicatorii cu șapte segmente sunt utilizați doar pentru a afișa mesaje simple.

În total, indicatorul LED cu șapte segmente poate afișa 128 de caractere:

Un indicator LED tipic are nouă fire: unul merge la catozii tuturor segmentelor, iar celelalte opt merg la anodul fiecărui segment. Această schemă se numește "circuit catod comun", există și scheme cu anod comun(atunci este invers). Adesea, nu unul, ci două terminale comune sunt realizate la capete diferite ale bazei - acest lucru simplifică cablarea fără a crește dimensiunile. Există și așa-zise „universale”, dar eu personal nu am întâlnit așa ceva. În plus, există indicatori cu un registru de deplasare încorporat, care reduce foarte mult numărul de pini de port al microcontrolerului implicați, dar sunt mult mai scumpi și sunt rar utilizați în practică. Și întrucât imensitatea nu poate fi sesizată, nu vom lua în considerare deocamdată astfel de indicatori (dar există și indicatori cu un număr mult mai mare de segmente, matrici).

Indicatoare LED cu mai multe cifre adesea funcționează pe un principiu dinamic: ieșirile segmentelor cu același nume ale tuturor cifrelor sunt conectate împreună. Pentru a afișa informații despre un astfel de indicator, microcircuitul de control trebuie să furnizeze ciclic curent la bornele comune ale tuturor cifrelor, în timp ce curentul este furnizat la bornele segmentului în funcție de faptul că un anumit segment este aprins într-o anumită cifră.

Conectarea unui indicator cu o cifră și șapte segmente la un microcontroler

Diagrama de mai jos arată cum este conectat un indicator cu o singură cifră și șapte segmente la microcontroler.
Trebuie avut în vedere că dacă indicatorul cu CATOD COMUN, atunci ieșirea sa comună este conectată la "Pământ", iar segmentele sunt aprinse prin hrănire unitate logică la ieșirea portului.
Dacă indicatorul este ANOD COMUN, apoi este alimentat la firul său comun "la care se adauga" tensiune, iar segmentele sunt aprinse prin comutarea ieșirii portului la starea zero logic.

Indicarea într-un indicator LED cu o singură cifră se realizează prin aplicarea unui cod binar la pinii portului microcontrolerului cifrei corespunzătoare nivelului logic corespunzător (pentru indicatorii cu OK - cei logici, pentru indicatorii cu OA - zerouri logice).

Rezistoare limitatoare de curent pot fi prezente sau nu în diagramă. Totul depinde de tensiunea de alimentare care este furnizată indicatorului și caracteristici tehnice indicatori. Dacă, de exemplu, tensiunea furnizată segmentelor este de 5 volți și acestea sunt proiectate pentru o tensiune de funcționare de 2 volți, atunci trebuie instalate rezistențe de limitare a curentului (pentru a limita curentul prin ele pentru o tensiune de alimentare crescută și pentru a nu arde nu numai indicatorul, ci și portul microcontrolerului).
Este foarte ușor de calculat valoarea rezistențelor de limitare a curentului, folosind formula bunicului Ohm.
De exemplu, caracteristicile indicatorului sunt următoarele (preluate din fișa de date):
— tensiune de funcționare — 2 volți
— curent de funcționare — 10 mA (=0,01 A)
— tensiune de alimentare 5 volți
Formula de calcul:
R= U/I (toate valorile din această formulă trebuie să fie în Ohmi, Volți și Amperi)
R= (tensiune de alimentare - tensiune de lucru)/curent de lucru
R= (5-2)/0,01 = 300 Ohm

Schema de conectare pentru un indicator LED cu șapte segmente cu mai multe cifre Practic, la fel ca atunci când conectați un indicator cu o singură cifră. Singurul lucru este că tranzistorii de control sunt adăugați în catozii (anozii) indicatorilor:

Nu este prezentat în diagramă, dar între bazele tranzistorilor și pinii portului microcontrolerului, este necesar să se includă rezistențe, a căror rezistență depinde de tipul de tranzistor (valorile rezistenței sunt calculate, dar de asemenea, puteți încerca să utilizați rezistențe cu o valoare nominală de 5-10 kOhm).

Indicarea prin descărcări se realizează dinamic:
— codul binar al cifrei corespunzătoare este setat la ieșirile portului PB pentru prima cifră, apoi nivelul logic este aplicat tranzistorului de control al primei cifre
— codul binar al cifrei corespunzătoare este setat la ieșirile portului PB pentru a 2-a cifră, apoi nivelul logic este aplicat tranzistorului de control al celei de-a doua cifre
— codul binar al cifrei corespunzătoare este setat la ieșirile portului PB pentru a treia cifră, apoi nivelul logic este aplicat tranzistorului de control al celei de-a treia cifre
- deci într-un cerc
În acest caz, este necesar să se ia în considerare:
— pentru indicatorii cu Bine se utilizează structura tranzistorului de control NPN(controlat de unitatea logică)
- pentru indicator cu OA- structura tranzistorului PNP(controlat de zero logic)

De la apariția ingineriei radio și a electronicii Părere dispozitivul electronic și persoana a fost însoțită de diverse lumini de semnalizare, butoane, întrerupătoare, clopote (semnal gata cu microunde - ding!). Unele dispozitive electronice oferă un minim de informații, pentru că mai multe ar fi inutil. De exemplu, un LED aprins pe încărcătorul telefonului chinezesc indică faptul că încărcătorul este conectat și primește alimentare. Există însă și parametri pentru care ar fi mai convenabil să se furnizeze informații obiective. De exemplu, temperatura aerului de afară sau ora de pe ceasul cu alarmă. Da, toate acestea s-ar putea face și cu becuri luminoase sau LED-uri. Un grad - o diodă aprinsă sau un bec. Câte grade sunt, atât de mulți indicatori sunt aprinși. Numărarea acestor licurici poate fi un lucru obișnuit, dar din nou, de câte dintre aceste lumini vor fi necesare pentru a afișa temperatura cu o precizie de o zecime de grad? Și în general, ce zonă vor ocupa aceste LED-uri și becuri pe un dispozitiv electronic?

Dispozitivele practice de afișare cu șapte segmente trebuie să aibă cel puțin opt borne de conectare externe; șapte dintre ele oferă acces la segmente fotovoltaice individuale, iar al optulea asigură o conexiune comună la toate segmentele. În primul caz, dispozitivul este cunoscut ca un afișaj anod comun cu șapte segmente; în acest din urmă caz, dispozitivul este cunoscut ca un afișaj cu catod comun cu șapte segmente.

Pentru a conduce un afișaj anod comun, șoferul trebuie să aibă o ieșire activă-scăzută, în care fiecare segment de acționare este în mod normal ridicat, dar scade pentru a porni segmentul. Pentru a conduce un afișaj catod comun, șoferul trebuie să aibă o ieșire activă activă.

Iar la începutul secolului al XX-lea, odată cu apariția tuburilor electronice, au apărut primii indicatori de descărcare în gaz.

Cu ajutorul unor astfel de indicatori a fost posibilă afișarea informațiilor digitale în cifre arabe. Anterior, aceste lămpi erau folosite pentru a face diverse indicații pentru instrumente și alte dispozitive electronice. În prezent, elementele de descărcare în gaz nu sunt aproape niciodată folosite nicăieri. Dar retro este întotdeauna la modă, motiv pentru care mulți radioamatori adună ceasuri minunate cu descărcare în gaz pentru ei și cei dragi.

Explicația completă a acestui lucru este puțin mai complicată, după cum urmează. Când tensiunea este zero, segmentul este efectiv invizibil. Cu toate acestea, atunci când tensiunea de intrare este semnificativ pozitivă sau negativă, segmentul devine efectiv vizibil, dar dacă tensiunea de antrenare este menținută mai mult de câteva sute de milisecunde, segmentul poate deveni permanent vizibil și nu mai are nicio semnificație.

În aceste condiții, segmentul este dezactivat. Astfel, segmentul este inclus în aceste condiții. Această formă de acționare este cunoscută în mod obișnuit ca un sistem de dublare a tensiunii de „acționare în punte”. Secvența de acțiuni a schemei este următoarea. Sistemul simplu în cascadă descris mai devreme suferă de un defect grav, prin aceea că afișajul devine neclar în timpul perioadei de numărare efectivă, devenind stabil și lizibil numai atunci când fiecare numărătoare este finalizată și poarta de intrare este închisă. Acest tip de afișaj „încețoșat și citit” este foarte enervant la privit.

Dezavantajele lămpilor cu descărcare în gaz - mănâncă mult. Se poate discuta despre durabilitate. La universitatea noastră, încă mai folosim frecvențemetre pe descărcătoarele de gaz din sălile de laborator.

Odată cu apariția LED-urilor, situația s-a schimbat dramatic. LED-urile în sine consumă o cantitate mică de curent. Dacă le plasați în poziția corectă, puteți afișa absolut orice informație. Pentru a evidenția toate cifrele arabe, a fost suficient doar ceva Șapte (de aici și numele indicator cu șapte segmente) benzi LED strălucitoare dispuse într-un anumit fel:

Figura 13 prezintă un circuit de contor de frecvență îmbunătățit care utilizează blocarea afișajului pentru a depăși defectul de mai sus. Această schemă funcționează după cum urmează. În același timp, poarta de intrare se deschide și contoarele încep să însumeze impulsurile semnalului de intrare. Acest contor continuă exact o secundă, iar în această perioadă zăvoarele pe patru biți împiedică ieșirea contorului să ajungă la driverele de afișare; display-ul rămâne stabil în această perioadă.

După câteva secunde, secvența se repetă din nou, contoarele repornind și apoi numărând impulsurile de frecvență de intrare timp de o secundă, timp în care afișajul oferă o citire continuă a numărării anterioare etc.

Aproape toți astfel de indicatori cu șapte segmente adaugă și un al optulea segment - un punct, astfel încât este posibil să se arate valoarea întreagă și fracțională a oricărui parametru

Astfel, circuitul din Figura 13 produce un afișaj stabil care se actualizează o dată pe secundă; în practică, perioada reală de numărare a acesteia și diagrama din Figura 12 pot fi făcute să fie în orice deceniu cu secunde multiple sau parțiale, cu condiția ca afișajul de ieșire să fie scalat corespunzător.

Rețineți că un contor de frecvență din trei cifre poate indica frecvențe maxime de 999 Hz când se utilizează o bază de timp de o secundă, 99 kHz când se utilizează o bază de timp de 100 ms, 9 kHz când se utilizează o bază de timp de 10 ms și 999 kHz când se folosește un 1 ms baza de timp.

În teorie, se dovedește a fi un indicator cu opt segmente, dar în mod vechi se mai numește și șapte segmente și nu există nicio greșeală în asta.

Pe scurt, un indicator cu șapte segmente sunt LED-uri situate unul față de celălalt într-o anumită ordine și închise într-o singură carcasă.

Această metodă poate fi înțeleasă cu ajutorul figurilor 14 și 15. Aceste comutatoare sunt conectate între ele și asigură acțiunea reală a multiplexorului și ar trebui considerate ca întrerupătoare electronice de mare viteză care sunt comutate în mod repetat prin pozițiile 1, 2 și secvența operațiilor de circuitul este după cum urmează. Să presupunem mai întâi că comutatorul este în poziție.

Câteva momente mai târziu, comutatorul se deplasează în poziția 3, determinând afișajul 3 să afișeze un număr după câteva minute, întregul ciclu începe să se repete și așa mai departe, adăugând infinit. În practică, aproximativ 50 dintre aceste cicluri au loc în fiecare secundă, astfel încât ochiul nu vede afișajele pornind și oprindu-se separat, ci le percepe ca pe un afișaj aparent constant care arată numărul 327 sau un alt număr dictat de segmentul de date.

Dacă luăm în considerare diagrama unui singur indicator cu șapte segmente, arată astfel:

După cum vedem, indicatorul cu șapte segmente poate fi fie cu anod comun (CA), deci cu catod comun (OC). Aproximativ vorbind, dacă avem șapte segmente cu un anod comun (OA), atunci în circuit ar trebui să atârnăm un „plus” pe acest pin, iar dacă avem un catod comun (OC), atunci un „minus” sau masă. . Cărui pin îi aplicăm tensiune, acest LED se va aprinde. Să demonstrăm toate acestea în practică.

În multiplexoarele practice, curentul de vârf de afișare este destul de mare pentru a asigura o luminozitate suficientă a afișajului. În fig. Figura 15 prezintă un exemplu de metodă de multiplexare îmbunătățită aplicată unui contor de frecvență cu trei cifre. Această metodă are două avantaje principale.

Dacă aceste terminale sunt active ridicate, ele vor avea următoarele caracteristici. Smochin. 18 și 19. Figura 18 prezintă tehnica de suprimare a ondulației utilizată pentru a furniza suprimarea zero de început pe un afișaj cu patru cifre care citește cantitatea.

Avem in stoc urmatoarele indicatoare LED:

După cum putem vedea, dispozitivele cu șapte segmente pot fi unic și multi-biți, adică două, trei, patru dispozitive cu șapte segmente într-un singur caz. Pentru a verifica un dispozitiv modern cu șapte segmente, avem nevoie doar de un multimetru cu funcție de testare a diodelor. Căutăm o concluzie generală - poate fi fie OA, fie OK - la întâmplare și apoi ne uităm la performanța tuturor segmentelor indicatorului. Verificăm segmentul pe trei biți și șapte:

Deci afișajul arată. Practic, sunt ușor de folosit, le pornesc și se aprind. Ele pot fi enervante pentru că au un fel de polaritate, ceea ce înseamnă că vor funcționa doar dacă le conectați corect. Dacă anulați tensiunea pozitivă și negativă, acestea nu se vor aprinde deloc.

Oricât de enervant este, este și destul de util. Celălalt fir este catodul. Catodul este conectat la masă. Practic, se va reduce la asta. Pentru catod obișnuit, aplicați curent pinii pe care doriți să-i activați. Multiplexarea. Există chiar și controlere de afișare pentru aceasta dacă nu doriți să vă faceți griji cu privire la comutarea în software-ul dvs.

Hopa, un segment a luat foc, așa că verificăm celelalte segmente în același mod.

Uneori, tensiunea de pe desene animate nu este suficientă pentru a verifica segmentele indicatoare. Prin urmare, luăm sursa de alimentare, o setăm la 5 volți, atașăm un rezistor de 1-2 kiloOhm la un terminal al sursei de alimentare și începem să verificăm unitatea cu șapte segmente.

Control afișaj cu 7 segmente

Deci, atunci când aveți un anod comun de 4 cifre, multiplexat cu 7 segmente. În primul rând, trebuie să știm ce tip de afișaj avem, deoarece există două forme posibile: catod comun și anod comun. Lucruri de care veți avea nevoie pentru acest tutorial. Stânga: O vedere grafică a unui afișaj cu 7 segmente care arată un aspect general pentru cablarea internă și locațiile pinii.

În acest moment, acordați atenție rezultatului inițial, deoarece veți avea nevoie de ea mai târziu când încărcați programul. Dacă afișajul ar fi un catod obișnuit, l-am anula. În partea de jos a articolului este o fotografie a circuitului care merge pe placa mea prototip. De asemenea, oferim o bibliotecă pentru a controla mai mult de un afișaj.

De ce avem nevoie de un rezistor? Când se aplică tensiune la LED, acesta începe să consume intens curent atunci când este pornit. Prin urmare, în acest moment se poate arde. Pentru a limita curentul, un rezistor este conectat în serie cu LED-ul. Puteți citi mai multe în acest articol.

Numărarea hexagonală pe un afișaj cu 7 segmente

Dezavantajul este că sunt consumatoare de resurse. Acest afișaj special are patru cifre și două afișaje cu două puncte. Cu toate acestea, dispozitivul oferă și control digital luminozitatea afișajului printr-un modulator intern de bandă largă. În astfel de cazuri, ieșirea poate fi realizată pe mai multe afișaje cu 7 segmente.

Acest lucru salvează contactele pe carcasă și apoi pe control. În consecință, se face referire la afișajele anodului comun sau catodului comun. Rezultatul care corespunde unui segment sau punct zecimal este cel mai bine extras din foaia de date pentru afișare. Un afișaj cu 7 segmente care este evaluat pentru 10-20mA obișnuit se va aprinde în continuare, deși slab. Dar acest lucru nu necesită alocarea de contacte. Următoarea distribuție a acestui segment se bazează pe.

În același mod, verificăm segmentul de patru cifre și șapte de la un radio chinezesc

Cred că nu ar trebui să existe dificultăți deosebite cu asta. În circuite, circuitele cu șapte segmente sunt conectate la rezistențe la fiecare pin. Acest lucru se datorează și faptului că LED-urile, atunci când li se aplică tensiune, consumă frenetic curent și se ard.

Dacă se folosește un scop diferit, acest lucru este posibil în principiu, dar trebuie luat în considerare la programare. Convertirea cifrelor individuale într-un model de ieșire specific se poate face folosind ceva numit. Toate celelalte segmente ar trebui să fie întunecate. Dacă această casetă de selectare este bifată pentru toate cifrele, se oferă următorul tabel.

ÎN program de testare numerele de la 0 la 9 sunt afișate succesiv pe un afișaj cu 7 segmente. Numărul de ieșire este stocat într-un contor de registru și incrementat cu 1 în cadrul ciclului. Dacă registrul atinge valoarea 10, este resetat la 0. Odată ridicat, are loc o buclă de așteptare care asigură că a trecut o anumită perioadă de timp în următoarea ediție. În mod normal, nu ai face cicluri de așteptare atât de lungi, dar nu este vorba despre așteptare, ci despre controlul unui afișaj cu 7 segmente. Folosirea unui cronometru pentru aceasta este prea mult efort.

În lumea noastră modernă, dispozitivele cu șapte segmente sunt deja înlocuite cu indicatoare LCD care pot afișa informații complet diferite.

dar pentru a le folosi, aveți nevoie de anumite abilități în proiectarea circuitelor unor astfel de dispozitive. Până acum, nu există nimic mai simplu sau mai ieftin decât indicatoarele LED cu șapte segmente.

Problema reală și, prin urmare, partea interesantă a acestui articol, totuși, apare direct după bucla de etichetă. Vă rugăm să rețineți că valoarea contorului trebuie dublată. Acest lucru este direct legat de faptul că memoria flash este în funcție de cuvinte și nu de octeți. Al doilea exemplu de pe această pagină o face diferit. Arată cum, printr-o altă intrare în tabel, generarea de octeți de umplutură poate fi împiedicată de către asamblator. De asemenea, este interesant că calculul necesită un registru care să conțină valoarea 0.

Prin urmare, această constantă trebuie mai întâi încărcată într-un registru și numai apoi adăugarea poate fi efectuată folosind acest registru. Lucrul interesant este că acest fapt se găsește în multe programe, iar constantele în marea majoritate a cazurilor sunt constanta 0. Prin urmare, mulți programatori își rezervă de la bun început un registru pentru asta și îl numesc registrul zero.

În acest articol vom vorbi despre afișajul digital.
Indicatoarele LED cu șapte segmente sunt proiectate pentru a afișa cifre arabe de la 0 la 9 (Fig. 1).

Astfel de indicatori au o singură cifră, care afișează doar un număr, dar pot exista mai multe grupuri de șapte segmente combinate într-o singură carcasă (cu mai multe cifre). În acest caz, numerele sunt separate printr-un punct zecimal (Fig. 2)

Din păcate, există o problemă deoarece afișajul necesită opt porturi - patru reclame ar necesita 32 de porturi. Dar există mai multe moduri. Registrele de deplasare sunt deja descrise într-un alt tutorial. Acest lucru ar facilita crearea celor 32 de linii de ieșire necesare cu doar trei pini. Principiul de control nu este diferit de conducerea unui singur afișaj cu 7 segmente, doar modul în care „pinii de ieșire” se apropie de valorile lor este diferit și este determinat de utilizarea registrelor de deplasare. Pe acest moment totuși, trebuie afișată o altă opțiune de control.



Fig.2.

Indicatorul se numește șapte segmente datorită faptului că simbolul afișat este construit din șapte segmente separate. În interiorul carcasei unui astfel de indicator există LED-uri, fiecare dintre ele luminând propriul său segment.
Este problematic să afișați litere și alte simboluri pe astfel de indicatori, astfel încât indicatorii cu 16 segmente sunt utilizați în aceste scopuri.

Vom analiza din nou multiplexarea mai jos. Multiplexarea înseamnă că nu toate cele patru afișaje sunt pornite în același timp, ci doar unul câte unul un timp scurt. Dacă schimbarea dintre afișaje are loc mai repede decât putem percepe noi oamenii, toate cele patru lumini par să funcționeze simultan, deși doar unul este aprins pentru o perioadă scurtă de timp. În acest fel, patru afișaje pot partaja segmente de segment individuale și tot ceea ce este necesar sunt 4 linii de control suplimentare pentru cele 4 afișaje cu care este activat afișajul.

Un aspect al acestui tip de control este frecvența multiplexării, adică ciclul complet de tranziție de la un afișaj la altul. Ar trebui să fie suficient de înalt pentru a preveni pâlpâirea afișajului. Ochiul uman este lent, într-un cinema 24 de cadre pe secundă, cu televizorul să fie pe partea sigură că și imaginile statice sunt calme, fiecare segment trebuie controlat cel puțin 100 Hz, deci se conectează cel puțin la fiecare 10 ms. În cazuri excepționale, totuși, chiar și 100 Hz pot pâlpâi în continuare, cum ar fi atunci când afișajul se mișcă rapid sau când apar interferențe cu sursele de lumină artificială care funcționează cu curent alternativ.

Indicatoarele LED vin în două tipuri.
În primul dintre ei, toți catozii, adică bornele negative ale tuturor LED-urilor sunt combinate împreună și un terminal corespunzător este alocat pentru acestea pe carcasă.
Bornele rămase ale indicatorului sunt conectate la anodul fiecărui LED (Fig. 3, a). Acest circuit este numit „circuit catod comun”.
Există și indicatoare în care LED-urile fiecărui segment sunt conectate conform unui circuit cu un anod comun (Fig. 3, b).



Fig.3.

Fiecare segment este desemnat printr-o literă corespunzătoare. Figura 4 arată locația lor.

Fig.4.

Ca exemplu, luați în considerare un indicator cu două cifre și șapte segmente GND-5622As-21 roșu. Apropo, există și alte culori, în funcție de model.
Folosind o baterie de trei volți, puteți porni segmente, iar dacă combinați un grup de pini într-un grup și le aplicați energie, puteți chiar să afișați numere. Dar această metodă este incomodă, astfel încât registrele de deplasare și decodoarele sunt folosite pentru a controla indicatorii cu șapte segmente. De asemenea, adesea, pinii indicatorilor sunt conectați direct la ieșirile microcontrolerului, dar numai atunci când se folosesc indicatoare cu consum redus de curent. Figura 5 prezintă un fragment de circuit folosind PIC16F876A.



Fig.5.

Pentru a controla indicatorul cu șapte segmente, este adesea folosit decodorul K176ID2.
Acest cip este capabil să convertească codul binar format din zerouri și unu în cifre zecimale de la 0 la 9.

Pentru a înțelege cum funcționează totul, trebuie să asamblați un circuit simplu (Fig. 6). Decodorul K176ID2 este găzduit într-un pachet DIP16. Are 7 pini de ieșire (pini 9 - 15), fiecare dedicat unui anumit segment. Controlul punctual nu este furnizat aici. Microcircuitul are și 4 intrări (pinii 2 - 5) pentru furnizarea codului binar. Al 16-lea și al 8-lea pini sunt furnizați cu putere în plus și, respectiv, în minus. Restul de trei concluzii sunt auxiliare, despre ele voi vorbi puțin mai târziu.



Fig.6.

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

Există 4 comutatoare basculante în circuit (orice buton este posibil), atunci când le apăsați, unul logic este furnizat intrărilor decodorului de la sursa de alimentare plus. Apropo, microcircuitul în sine este alimentat cu o tensiune de 3 până la 15 volți. În acest exemplu, întregul circuit este alimentat de o sursă de alimentare de 9 volți.

Există și 4 rezistențe în circuit. Acestea sunt așa-numitele rezistențe pull-up. Sunt necesare pentru a se asigura că intrarea logică este scăzută atunci când nu există semnal. Fără ele, este posibil ca citirile de pe indicator să nu fie afișate corect. Este recomandat să folosiți același lucrurezistență de la 10 kOhm la 100 kOhm.

În diagramă, pinii 2 și 7 ai indicatorului HG1 nu sunt conectați. Dacă conectați pinul DP la sursa de alimentare minus, punctul zecimal se va aprinde. Și dacă aplicați un minus la ieșirea Dig.2, atunci se va aprinde și al doilea grup de segmente (va afișa același simbol).

Intrările decodorului sunt proiectate astfel încât pentru a afișa numerele 1, 2, 4 și 8 pe indicator, trebuie să apăsați doar un buton (dispunerea are comutatoare comutatoare corespunzătoare intrărilor D0, D1, D2 și D3). Dacă nu există niciun semnal, este afișat numărul zero. Când se aplică un semnal la intrarea D0, este afișat numărul 1. Și așa mai departe. Pentru a afișa alte numere, trebuie să apăsați o combinație de comutatoare. Tabelul 1 ne va spune pe care trebuie să apăsăm.


Tabelul 1.

Pentru a afișa numărul „3” trebuie să aplicați unul logic la intrarea D0 și D1. Dacă aplicați un semnal la D0 și D2, va fi afișat numărul „5”.(Fig. 6).



Fig.6.

Iată un tabel extins în care vedem nu numai cifra așteptată, ci și acele segmente (a - g) care vor alcătui această cifră.



Masa 2.

Pinii 1, 6 și 7 ai microcircuitului sunt auxiliari (S, M, K, respectiv).

În diagramă (Fig. 6), al șaselea pin „M” este împământat (la sursa de alimentare în minus) și există o tensiune pozitivă la ieșirea microcircuitului pentru a lucra cu un indicator cu un catod comun. Dacă se folosește un indicator cu un anod comun, atunci ar trebui aplicat unul pe al șaselea pin.

Dacă se aplică unul logic celui de-al 7-lea pin „K”, atunci semnul indicator este stins, zero permite indicarea. În schemă această concluzieîmpământat (la sursa de alimentare minus).

O unitate logică (plus putere) este furnizată la prima ieșire a decodorului, ceea ce permite ca codul convertit să fie afișat pe indicator. Dar dacă aplicați un zero logic acestui pin (S), intrările nu vor mai primi un semnal, iar semnul curent afișat se va îngheța pe indicator.

Un lucru interesant de remarcat este că știm că comutatorul D0 pornește numărul „1”, iar comutatorul D1 pornește numărul „2”. Dacă apăsați ambele comutatoare, va fi afișat numărul 3 (1+2=3). Și în alte cazuri, indicatorul afișează suma numerelor care alcătuiesc această combinație. Ajungem la concluzia că intrările decodorului sunt aranjate atent și au combinații foarte logice.

Puteți viziona și videoclipul acestui articol.

Să conectăm un indicator LED cu șapte segmente la placa Arduino și să învățăm cum să-l controlăm folosind biblioteca Led4Digits.h.

Lecția anterioară a descris în detaliu microcontrolere. Să conectăm un astfel de indicator la placa Arduino.

Diagrama pentru conectarea indicatorului la placa Arduino arată astfel.

L-am asamblat pe o placă de circuit.

Pentru a gestiona indicatorii, am scris biblioteca Led4Digits.h:

Și plătește.

Biblioteca vă permite să gestionați indicatorii cu șapte segmente:

  • dimensiune de până la patru cifre;
  • cu orice variante de polarități ale impulsului de control (toate);
  • lucrează într-un proces paralel;
  • vă permite să afișați pe indicator:
    • segmente din fiecare categorie;
    • cifra fiecărei cifre;
    • întreg 0 ... 9999;
  • pentru a scoate un număr întreg, se poate specifica numărul de cifre;
  • Există un mod de suprimare a cifrelor nesemnificative.

Puteți descărca biblioteca Led4Digits.h de la acest link:

Și plătește. Doar 40 de ruble. pe lună pentru acces la toate resursele site-ului!

Cum se instalează este scris în .

Nu voi furniza textele sursă. Le puteți căuta în fișierele bibliotecii. Ca întotdeauna, există o mulțime de comentarii acolo. Voi descrie în detaliu, cu exemple, modul de utilizare a bibliotecii.

Biblioteca de control LED pentru Arduino Led4Digits.

Iată descrierea clasei. Am oferit doar metode și proprietăți publice.

clasa Led4Digits (
public:
cifra octet; // coduri de control al segmentului de biți
void regen(); // regenerare, metoda trebuie apelată în mod regulat
void tetradToSegCod(byte dig, byte tetrad); // conversia tetradei în coduri de segment
tipărire booleană (valoare int fără semn, octet digitNum, octet gol); // ieșire întreg



} ;

Constructor.

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

typeLed Setează polaritățile impulsului de control pentru semnalele de selecție de biți și segmente. Suporta orice scheme de conexiune ().

typeLed Selectarea categoriei Selectarea segmentului Tipul circuitului
0 -_- -_- Anod comun cu taste de selectare a descărcarii
1 _-_ -_- Anod comun
2 -_- _-_ catod comun
3 _-_ _-_ Catod comun cu taste de selectare a descărcarii

digitPin0...digitPin3– iesiri pentru selectarea cifrelor. Dacă digitPin = 255, atunci cifra este dezactivată. Acest lucru vă permite să conectați indicatoare cu mai puține cifre. digitPin0 – cifră inferioară (dreapta).

segPinA...segPinH– ieșiri de control segment.

De exemplu,

înseamnă: indicator tip 1; ieșiri de descărcare 5,4,3,2; ieșirile segmentelor 6,7,8,9,10,11,12,13.

metoda void regen().

Metoda trebuie apelată în mod regulat într-un proces paralel. Regenerează imaginea de pe indicatoare. Timpul ciclului de regenerare este egal cu perioada apelului metodei înmulțită cu numărul de biți.

De exemplu,

// manevrător de întreruperi 2 ms
void timerInterrupt() (
disp.regen(); // regenerarea indicatorului
}

Matrice de cifre de octeți

Conține starea segmentelor. cifra este bitul cel mai puțin semnificativ, bitul cel mai puțin semnificativ al cifrei este segmentul „A” al bitului cel mai puțin semnificativ. O stare de bit de 1 înseamnă că segmentul este aprins.

De exemplu,

cifra = B0000101;

înseamnă că în a doua cifră sunt aprinse segmentele „A” și „C”.

Un exemplu de program care luminează secvenţial toate segmentele fiecărei cifre.

// segmente de rulare
#include
#include

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

void setup() (
întreruperea temporizatorului 2 ms
MsTimer2::start(); // activare întrerupere
}

void loop() (
pentru (int i = 0; i< 32; i++) {
dacă (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;
altfel(
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
întârziere (250);
}
}

//manevrător de întreruperi 2 ms
void timerInterrupt() (
disp.regen(); // regenerarea indicatorului
}

În matricea de cifre, 1 este deplasat și indicatorii afișează acest lucru.

Metoda void tetradToSegCod(byte dig, byte tetrad)

Metoda vă permite să afișați numere și litere de cod hexazecimal în cifre individuale. Are argumente:

  • dig – cifra cifrei 0 ... 3;
  • tetradă – cod de caractere zecimale. Codul 0 va afișa numărul „0”, codul 1 - numărul „1”, codul 14 - litera „E”.

De exemplu,

tetrad(2, 7);

va afișa numărul „7” în a treia cifră.

Un exemplu de program care schimbă pe rând caracterele din fiecare cifră.

// numerele unul câte unul
#include
#include

// indicator tip 1; ieșiri de descărcare 5,4,3,2; ieșiri de segment 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); // întreruperea temporizatorului 2 ms
MsTimer2::start(); // activare întrerupere
}

void loop() (
pentru (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
întârziere (250);
}
}

// manevrător de întreruperi 2 ms
void timerInterrupt() (
disp.regen(); // regenerarea indicatorului
}

Metodă boolean print (valoare int fără semn, octet digitNum, octet gol)

Metoda afișează un număr întreg pe indicatori. Convertește numărul binar în BCD pentru fiecare cifră. Are argumente:

  • valoare – numărul care este afișat pe indicator.
  • digitNum – numărul de cifre pentru număr. Acest lucru nu trebuie confundat cu numărul de cifre indicatoare. Poate doriți să afișați un număr pe 2 cifre și să afișați caractere pe celelalte două folosind cifre.
  • gol – un semn de suprimare a cifrelor nesemnificative. gol=0 înseamnă că numărul trebuie afișat cu toate zerourile. Numărul „7” va arăta ca „0007”. Dacă golul este diferit de 0, zerourile nesemnificative vor fi suprimate.

Dacă valoarea numărului depășește numărul permis pentru numărul selectat de cifre (digitNum), atunci funcția va afișa „---” pe indicator și va returna fals.

Un exemplu de program de ieșire de numere.

// numărul de ieșire
#include
#include

// indicator tip 1; ieșiri de descărcare 5,4,3,2; ieșiri de segment 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); // întreruperea temporizatorului 2 ms
MsTimer2::start(); // activare întrerupere
}

void loop() (
pentru (int i = 0; i< 12000; i++) {
disp.print(i, 4, 1);
întârziere (50);
}
}

// manevrător de întreruperi 2 ms
void timerInterrupt() (
disp.regen(); // regenerarea indicatorului
}

Ultimele două metode nu schimbă starea segmentului „H” – virgulă zecimală. Pentru a schimba starea unui punct, puteți folosi comenzile:

cifra |= 0x80; // aprinde punctul zecimal
cifra &= 0x7f; // stinge punctul zecimal

Ieșire la indicatorii numerelor negative (int).

Numerele negative pot fi scoase după cum urmează:

  • Verificați semnul numărului.
  • Dacă numărul este negativ, imprimați un semn minus la cea mai semnificativă cifră și schimbați semnul numărului în pozitiv în funcția print().
  • Dacă numărul este pozitiv, atunci dezactivați bitul de semn și tipăriți numărul utilizând funcția print().

Iată un program care demonstrează această metodă. Emite numere de la -999 la 999.

// scoateți numere negative
#include
#include

// indicator tip 1; ieșiri de descărcare 5,4,3,2; ieșiri de segment 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); // întreruperea temporizatorului 2 ms
MsTimer2::start(); // activare întrerupere
}

void loop() (

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

dacă eu< 0) {
// numarul este negativ
disp.digit= B01000000; // semn -
disp.print(i * -1, 3, 1);
}
altfel(
disp.digit= B00000000; // şterge semnul
disp.print(i, 3, 1);
}

întârziere (50);
}
}

// manevrător de întreruperi 2 ms
void timerInterrupt() (
disp.regen(); // regenerarea indicatorului
}

Ieșire la indicatorii numerelor fracționale, format flotant.

Există multe modalități de afișare a numerelor în virgulă mobilă (floating) folosind funcții standard ale limbajului C. Aceasta este, în primul rând, funcția sprint(). Funcționează foarte lent, necesită conversii suplimentare ale codurilor de caractere în coduri zecimale binare, trebuie să extrageți un punct dintr-un șir. Aceleași probleme cu alte funcții.

Folosesc o metodă diferită pentru afișarea valorilor variabilelor float pe indicatori. Metoda este simplă, fiabilă, rapidă. Se reduce la următoarele operații:

  • Numărul în virgulă mobilă este înmulțit cu 10 la puterea corespunzătoare numărului necesar de zecimale. Dacă trebuie să afișați 1 zecimală pe indicatori, înmulțiți cu 10, dacă 2, apoi înmulțiți cu 100, 3 zecimale cu 1000.
  • În continuare, numărul în virgulă mobilă este convertit în mod explicit într-un număr întreg (int) și afișat pe indicatori folosind funcția print().
  • Un punct este plasat în cifra necesară.

De exemplu, următoarele linii vor scoate o variabilă float cu două zecimale către LED-urile cu șapte segmente.

float x = 2,12345;

disp.digit |= 0x80; //

Înmulțim numărul cu 100 și plasând un punct în a treia cifră, împărțim rezultatul la 100.

Iată un program care afișează numere în virgulă mobilă de la 0,00 la 99,99 pe indicatoare.

// ieșire în virgulă mobilă
#include
#include

// indicator tip 1; ieșiri de descărcare 5,4,3,2; ieșiri de segment 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); // întreruperea temporizatorului 2 ms
MsTimer2::start(); // activare întrerupere
}

void loop() (
float x = 0;

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

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // aprinde punctul de al treilea nivel

întârziere (50);
}
}

//manevrător de întreruperi 2 ms
void timerInterrupt() (
disp.regen(); // regenerarea indicatorului
}

După cum puteți vedea, biblioteca Led4Digits.h simplifică foarte mult lucrul cu indicatoare cu diode emițătoare de lumină (LED) cu șapte segmente conectate la placa Arduino. Nu am găsit un analog al unei astfel de biblioteci.

Există biblioteci pentru lucrul cu afișaje LED prin intermediul unui registru de deplasare. Cineva mi-a scris că a găsit o bibliotecă care funcționează cu un afișaj LED conectat direct la placa Arduino. Dar atunci când îl utilizați, cifrele indicatorului strălucesc neuniform și fac cu ochiul.

Spre deosebire de analogii săi, biblioteca Led4Digits.h:

  • Funcționează ca un proces paralel. În bucla principală, programul încarcă date în anumite variabile, care sunt afișate automat pe afișaj. Ieșirea informațiilor și regenerarea indicatorului au loc într-o întrerupere a temporizatorului, invizibilă pentru programul principal.
  • Numerele afișajului luminează uniform, fără să clipească. Această proprietate este asigurată de faptul că regenerarea are loc într-un ciclu strict definit de o întrerupere a temporizatorului.
  • Biblioteca are cod compact, se execută rapid și încarcă minim controlerul.

În lecția următoare, vom conecta un indicator LED și o matrice de butoane la placa Arduino în același timp. Să scriem o bibliotecă pentru un astfel de design.

Categorie: . Puteți să-l marcați.


Top