Indicatoare LED cu șapte segmente. Indicator LED Și acum, cum este totul programat?

În această lecție vom afla despre diagramele pentru conectarea indicatoarelor LED cu șapte segmente la microcontrolere și cum să controlăm indicatoarele.

Indicatoarele LED cu șapte segmente rămân unul dintre cele mai populare elemente pentru afișarea informațiilor digitale.

Următoarele lor calități contribuie la aceasta.

  • Preț scăzut. În ceea ce privește afișajul, nu este nimic mai ieftin decât indicatoarele digitale LED.
  • Varietate de dimensiuni. Cei mai mici și mai mari indicatori sunt LED. Cunosc indicatoare LED cu înălțimi de cifre de la 2,5 mm la 32 cm.
  • Stralucire in intuneric. În unele aplicații această proprietate este aproape decisivă.
  • Au culori strălucitoare diferite. Există chiar și cele două culori.
  • Curenți de control destul de mici. Indicatoarele LED moderne pot fi conectate la pinii microcontrolerelor fără chei suplimentare.
  • Potrivit pentru condiții dure de funcționare (gamă de temperatură, umiditate ridicată, vibrații, medii agresive etc.). Pentru această calitate, indicatoarele LED nu au egal între alte tipuri de elemente de afișare.
  • Durată de viață nelimitată.

Tipuri de indicatoare LED.

Indicatorul LED cu șapte segmente afișează un caracter folosind șapte LED-uri - segmente de cifre. Al optulea LED luminează punctul zecimal. Deci există 8 segmente într-un indicator cu șapte segmente.

Segmentele sunt desemnate prin litere latine de la „A” la „H”.

Anozii sau catozii fiecărui LED sunt combinați în indicator și formează un fir comun. Prin urmare, există indicatori cu un anod comun și un catod comun.

Indicator LED cu anod comun.

Indicator LED cu catod comun.

Control static cu LED.

Indicatoarele LED trebuie conectate la microcontroler prin rezistențe de limitare a curentului.

Calculul rezistențelor este același ca pentru LED-urile individuale.

R = (Ofertă U - segment U) / Segment I

Pentru acest circuit: I segment = (5 – 1,5) / 1000 = 3,5 mA

Indicatoarele LED moderne strălucesc destul de puternic chiar și la un curent de 1 mA. Pentru un circuit cu anod comun, se vor aprinde segmentele, la pinii de control al cărora microcontrolerul va genera un nivel scăzut.

În schema de conectare a unui indicator cu catod comun, polaritatea sursei de alimentare și a semnalelor de control se modifică.

Se va aprinde segmentul, la pinul de control al căruia va fi generat un nivel ridicat (5 V).

Modul multiplexat pentru controlul indicatorilor LED.

Sunt necesari opt pini pentru a conecta fiecare indicator cu șapte segmente la microcontroler. Dacă există 3-4 indicatori (cifre), atunci sarcina devine practic imposibilă. Pur și simplu nu sunt destui pini pentru microcontroler. În acest caz, indicatoarele pot fi conectate în modul multiplexat, în modul indicație dinamică.

Constatările segmentelor cu același nume ale fiecărui indicator sunt combinate. Acest lucru are ca rezultat o matrice de LED-uri conectate între pinii segmentului și pinii indicatori comuni. Iată un circuit pentru controlul multiplexat al unui indicator cu trei cifre cu un anod comun.

Pentru a conecta trei indicatoare, au fost necesari 11 pini, și nu 24, ca în modul de control static.

Cu afișajul dinamic, doar o cifră este aprinsă în orice moment. Un semnal de nivel înalt (5 V) este furnizat pinului comun al unuia dintre biți, iar semnalele de nivel scăzut sunt trimise către pinii de segment pentru acele segmente care ar trebui să se aprindă în acest bit. După un anumit timp, următoarea descărcare este aprinsă. Un nivel înalt este aplicat pinului său comun, iar semnalele de stare pentru acest bit sunt trimise către pinii de segment. Și așa mai departe pentru toate cifrele într-o buclă nesfârșită. Durata ciclului se numește timp de regenerare a indicatorului. Dacă timpul de regenerare este suficient de scurt, ochiul uman nu va observa comutarea descărcărilor. Se va părea că toate descărcările strălucesc în mod constant. Pentru a evita pâlpâirea indicatorilor, se crede că frecvența ciclului de regenerare ar trebui să fie de cel puțin 70 Hz. Încerc să folosesc cel puțin 100 Hz.

Circuitul de indicare dinamică pentru LED-urile cu catod comun arată astfel.

Polaritatea tuturor semnalelor se schimbă. Acum se aplică un nivel scăzut firului comun al descărcării active, iar un nivel ridicat este aplicat segmentelor care ar trebui să se aprindă.

Calculul elementelor de afișare dinamice ale indicatoarelor cu diode emițătoare de lumină (LED).

Calculul este ceva mai complicat decât pentru modul static. În timpul calculului este necesar să se determine:

  • curent mediu al segmentelor;
  • curent de impuls al segmentelor;
  • rezistența rezistenței segmentului;
  • curent de impuls al bornelor comune ale descărcărilor.

Deoarece Cifrele indicatoare se aprind pe rând, luminozitatea strălucirii determină curentul mediu. Trebuie să-l alegem în funcție de parametrii indicatorului și de luminozitatea necesară. Curentul mediu va determina luminozitatea indicatorului la un nivel corespunzător controlului static cu același curent constant.

Să alegem un curent de segment mediu de 1 mA.

Acum să calculăm curentul de impuls al segmentului. Pentru a furniza curentul mediu necesar, curentul de impuls trebuie să fie de N ori mai mare. Unde N este numărul de cifre indicatoare.

eu segmentez imp. = I segment medie *N

Pentru schema noastră I segment. imp. = 1 * 3 = 3 mA.

Calculăm rezistența rezistențelor care limitează curentul.

R = (Ofertă U - segment U) / Segment I. imp.

R = (5 – 1,5) / 0,003 = 1166 Ohm

Determinăm curenții de impuls ai bornelor comune ale descărcărilor. 8 segmente se pot aprinde în același timp, ceea ce înseamnă că trebuie să înmulțiți curentul de impuls al unui segment cu 8.

I categoria imp. = I segment imp. * 8

Pentru circuitul nostru categoria I imp. = 3 * 8 = 24 mA.

  • Selectăm rezistența rezistenței să fie de 1,1 kOhm;
  • pinii microcontrolerului de control al segmentului trebuie să furnizeze un curent de cel puțin 3 mA;
  • pinii microcontrolerului pentru selectarea cifrei indicator trebuie să furnizeze un curent de cel puțin 24 mA.

Cu astfel de valori curente, indicatorul poate fi conectat direct la pinii plăcii Arduino, fără a utiliza chei suplimentare. Pentru indicatoarele luminoase, astfel de curenți sunt destul de suficiente.

Scheme cu chei suplimentare.

Dacă indicatoarele necesită mai mult curent, atunci este necesar să folosiți taste suplimentare, în special pentru semnalele de selecție a cifrelor. Curentul total de descărcare este de 8 ori curentul unui segment.

Schema de conectare pentru un indicator LED cu un anod comun în modul multiplexat cu comutatoare cu tranzistori pentru selectarea descărcărilor.

Pentru a selecta un bit în acest circuit, este necesar să generați un semnal de nivel scăzut. Cheia corespunzătoare se va deschide și va furniza energie la descărcarea indicatorului.

Schema de conectare pentru un indicator LED cu catod comun în modul multiplexat cu comutatoare cu tranzistori pentru selectarea descărcărilor.

Pentru a selecta un bit în acest circuit, este necesar să generați un semnal de nivel înalt. Cheia corespunzătoare va deschide și închide borna comună de descărcare la masă.

Pot exista circuite în care este necesar să se utilizeze comutatoare cu tranzistori atât pentru segmente, cât și pentru pini de biți comuni. Astfel de scheme sunt ușor de sintetizat din cele două precedente. Toate circuitele prezentate sunt utilizate atunci când indicatorul este alimentat cu o tensiune egală cu sursa de alimentare a microcontrolerului.

Chei pentru indicatoare cu tensiune de alimentare crescută.

Există indicatoare mari în care fiecare segment este format din mai multe LED-uri conectate în serie. Pentru a alimenta astfel de indicatori, este necesară o sursă cu o tensiune mai mare de 5 V. Comutatoarele trebuie să asigure comutarea tensiunii crescute controlată de semnalele de nivel ale microcontrolerului (de obicei 5 V).

Circuitul cheilor care conectează semnalele indicatoare la masă rămâne neschimbat. Și comutatoarele de alimentare ar trebui să fie construite conform unei scheme diferite, de exemplu, așa.

În acest circuit, bitul activ este selectat de nivelul ridicat al semnalului de control.

Între comutarea cifrelor indicatoare, toate segmentele ar trebui să fie oprite pentru o perioadă scurtă de timp (1-5 µs). Acest timp este necesar pentru a finaliza procesele tranzitorii de comutare a tastelor.

Din punct de vedere structural, pinii de descărcare pot fi combinați într-un singur caz de indicator cu mai multe cifre sau un indicator cu mai multe cifre poate fi asamblat din indicatoare separate cu o singură cifră. Mai mult, puteți asambla un indicator din LED-uri individuale combinate în segmente. Acest lucru se face de obicei atunci când este necesar să se monteze un indicator foarte mare. Toate schemele de mai sus vor fi valabile pentru astfel de opțiuni.

În lecția următoare, vom conecta un indicator LED cu șapte segmente la placa Arduino și vom scrie o bibliotecă pentru a-l controla.

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

Nu vă permite să porniți/opriți direct indicatorul LED sau blițul camerei; unele telefoane au această opțiune.

Cum să clipiți programatic lumini multicolore, cum să vă scrieți propria „lanternă” sau ce alte LED-uri de dispozitiv pot fi controlate - veți afla despre acest lucru mai jos.

Totul a început când, în timp ce exploram sistemul de fișiere al HTC Desire folosind ES Explorer, am dat din greșeală de directoare interesante: /sys/class/leds/blue, /sys/class/leds/flashlight etc.
Ce altceva este albastru?! Am văzut doar un indicator portocaliu și verde. Dar cel mai interesant lucru este că în interiorul acestor directoare era un fișier de luminozitate cu permisiunea de scriere! De care am profitat imediat.

De fapt, acesta nu este un fișier simplu, ci o interfață pentru lucrul cu un driver LED. Deci, scriind un număr pozitiv în fișierul /sys/class/leds/blue/brightness, vom aprinde indicatorul albastru de pe carcasa telefonului, scriind 0 - îl vom opri. La fel și cu indicatoarele chihlimbar și verde. Aprinzând împreună două LED-uri, obținem culori noi: chihlimbar + albastru = violet; verde + albastru = aqua.

Acum cum este totul programat?
public void ledControl (nume șir, luminozitate int) (

încerca (

FileWriter fw = new FileWriter("/sys/class/leds/" + nume + "/luminozitate");

fw.write(Integer.toString(luminozitate));

fw.close();

) prinde (Excepția e) (

// Controlul LED nu este disponibil

}

}


// Porniți indicatorul violet

ledControl("chihlimbar" , 255 );

ledControl ("albastru" , ​​255 );


// Faceți afișajul mai întunecat

ledControl("lcd-backlight" , 30 );


// Opriți iluminarea de fundal a butonului

ledControl ("button-backlight" , 0 );


// Organizați o lanternă de luminozitate medie

ledControl("lanterna" , 128 );

Se poate descărca un exemplu de aplicație cu coduri sursă.

Concluzie
Toate! Acum telefonul se aprinde ca un pom de Crăciun. Codul a fost testat doar pe HTC Desire care rulează Android 2.2, dar probabil va funcționa pe alte dispozitive. Scrie-mi dacă focalizarea va funcționa sau nu pe telefonul tău.

Afișați simboluri pe tablouri de bord, ceasuri electronice și multe altele. Un indicator LED este un design simplu care afișează caractere alfabetice sau simbolice. Din punct de vedere structural, este un ansamblu de LED-uri, unde fiecare element este iluminat de un indicator de semn-segment.

Caracteristici și tipuri de design

Indicatoarele LED constau din circuite integrate care afișează diverse informații. Tensiunea de funcționare variază de la 2V la 8V. Ei pot fi:

Segmentală;
- Matrice;
- scară liniară;
- Singur

Primul soi este folosit cel mai des și este tipul standard. În funcție de model, structura poate fi asamblată din 1-4 grupuri de șapte segmente. Mărimea obiectului și numărul de caractere afișate depind de numărul acestora. Astfel, un grup de șapte segmente va afișa doar un număr sau o literă. Patru grupuri sunt folosite în ceasurile electronice. Atunci când alegeți un circuit pentru uz casnic, cumpărătorul ar trebui să acorde atenție prezenței unui anod și catod comun.
Pe lângă micii indicatori, există și cei care pot fi văzute în locuri publice. Pentru a le crește luminozitatea, se folosesc LED-uri conectate secvenţial, încorporate în fiecare componentă individuală. Pentru ca indicatorul să arate un anumit număr sau simbol, se aplică o tensiune de 11,2 volți. Elementele au propriile nume: A, B, C, D, F sau G. Funcționarea este determinată de registre și decodoare digitale cu deplasare.

Criptarea datelor și circuite integrate

Astfel de elemente sunt instalate pe o placă care controlează alimentarea cu tensiune. Lucrarea se datorează accesului la codul programului și utilizării de microcontrolere speciale. Folosind programare, se setează sincronizarea care afectează afișarea componentelor la un anumit moment.
Circuitul integrat convertește codul zecimal binar și binar furnizat pe afișaj. Circuitele comune pentru controlul indicatoarelor interne sunt K514ID2 sau K176ID2, în modelele importate 74HC595. Managementul este posibil în două moduri:

Direct, prin microcontrolere;
- Utilizarea registrelor de deplasare

Prima opțiune este mai puțin reușită din cauza necesității de a conecta mulți pini. În plus, consumul de curent poate fi mai mare decât este posibil cu microcontrolere. Indicatorii mari cu șapte segmente depind de cipul MBI5026.

Caracteristicile indicatorilor de segment

În electronică, acestea sunt utilizate pentru inspecția vizuală. Structura este formată din următoarele elemente:

Un indicator de sintetizare a caracterelor este un dispozitiv în care informațiile vizuale sunt afișate folosind una sau mai multe componente;
- Câmp de afișare a datelor – în el sunt afișate numere sau alte simboluri;
- Element de afișare – o parte structurală care are propriul control;
- Segment – ​​un element de afișare a informațiilor, prezentat sub formă de linii drepte sau curbe;
- Spațiu familiar – spațiul necesar pentru afișarea unui caracter

Toate dispozitivele electronice îndeplinesc sarcini de bază:

1. Informații vizuale.
2. Au un design complet.
3. Echipat cu control electronic

Modificările de segment diferă de modificările matricei prin faptul că fiecare element este unic. Forma caracterelor este concepută special pentru a afișa anumite numere sau simboluri. Acestea din urmă se bazează nu pe șapte, ci pe nouă, paisprezece sau șaisprezece segmente. Când numărul depășește 7, atunci este destul de rațional să folosiți indicația de comutare dinamică. Afișajul și indicarea cu LED-uri sunt, de asemenea, posibile în formă bicoloră. Sunt folosite becuri de diferite culori și conectate la un circuit comun. Prin combinarea constatărilor, se obține o nuanță combinată.

Concluzie

Funcționarea indicatoarelor este imposibilă fără LED-uri. Astfel de dispozitive sunt relevante nu numai pentru echipamentele radio, ci sunt utilizate cu succes pentru semne, cronometre și indicatoare. Dispozitivele de diferite tipuri de circuite și control pot fi utilizate pentru a afișa informații.
Distribuiți informații pe paginile dvs. de socializare cu privire la acest subiect.

Fig.1 Amplasarea segmentelor indicatoare LED

Indicatoarele LED sunt cele mai simple mijloace de afișare a informațiilor simbolice. Designul lor este un set de LED-uri realizate sub formă de segmente de o anumită formă. Figura 1 prezintă cea mai obișnuită aspect al segmentului, care vă permite să afișați numerele 0...9 și multe alte caractere suplimentare. În interiorul carcasei, toate LED-urile au un punct de conectare comun. Integrați împreună pot fi anozi (anod comun) sau catozi (catod comun). Cele mai comune culori strălucitoare sunt roșu și verde. Cu un consum de curent egal, LED-urile roșii, de regulă, au o putere de lumină mai mare. Consumul de energie depinde de tensiunea de alimentare și de tehnologia de fabricație. Curentul de segment al indicatoarelor moderne poate fi mai mic de 1 mA.


Fig.2 Conectarea indicatorului pentru indicarea dinamică

Pentru a evidenția simbolul necesar pe indicator, va trebui să utilizați 8 pini pe microcontroler. O linie poate fi salvată prin eliminarea segmentului H când nu este necesară afișarea punctului (virgulă). Cu un număr mai mare de indicatori utilizați, numărul de linii I/O va crește semnificativ. Doi indicatori vor necesita 16 linii, 3 indicatori vor necesita 24 etc. În mod clar, pentru majoritatea aplicațiilor, o astfel de utilizare irosită a știfturilor este complet inacceptabilă. Această problemă poate fi rezolvată prin utilizarea afișajului dinamic. Pentru a face acest lucru, în loc să conecteze direct segmentele la microcontroler, acestea sunt combinate în grupuri comune, așa cum se arată în Fig. 2. Circuitul folosește un indicator TOT-3361AH-LN pentru 3 locații familiare cu catozi comuni. Portul D este folosit pentru a controla LED-urile segmentelor A...H. Catozii K0...K2 sunt conectați direct la liniile 0...2 ale portului B, respectiv (pentru indicatoare de alte tipuri cu un curent total ≥20 mA, vor fi necesare elemente tampon suplimentare). La început, simbolul corespunzător familiarității zero este afișat pe indicator. În acest caz, nivelul de tensiune este setat la scăzut pe linia PB0 și ridicat pe PB1 și PB2 (în caz contrar, simbolul va fi afișat în toate cele trei poziții). După o anumită perioadă de timp, următorul simbol în ordine este scos și acum catodul K1 este conectat la masă (există un nivel scăzut pe linia PB1, un nivel ridicat pe PB0 și PB2). În continuare, informațiile sunt afișate în cea mai înaltă poziție a indicatorului (la PB2 log.0, la PB0, PB1 log.1), apoi din nou la zero, etc. La rate de reîmprospătare a caracterelor ≥ 50 Hz, începe să apară inerția vederii umane. Pâlpâirea (efectul de comutare) dispare. Imaginea este percepută continuu, ca și cum toate simbolurile sunt iluminate constant. Un exemplu de subrutină de afișare dinamică este prezentat mai jos. Este nevoie de doi parametri: codul caracterului și numărul de poziție în care acest caracter ar trebui să fie afișat.

; Deoarece indicatorul conține 3 locuri familiare, subrutina; ieșirea caracterelor trebuie apelată cu o frecvență ≥ 150 Hz (3 ; familiaritate x 50 Hz = 150 Hz). Perioada de comutare ar trebui; fie 1/150 Hz = 6667 μs, care este la o frecvență de 1 MHz pentru AVR; va fi de 6667 de cicluri ale frecvenței de ceas a generatorului. Permanent; Cel mai convenabil este să măsurați intervalele de timp cu un cronometru de rulare; în modul de resetare coincidență (mod CTC). ATmega8 are asta; modul există pentru timer-counter pe 16 biți 1 și 8-; bit timer-counter 2. În aceste scopuri (în cazul utilizării timer-counter 1) există două registre; Spații RVV: OCR1AH ​​​​(octet mare), OCR1AL (octet scăzut). ; Când circuitul de comparație este activat, registrul de numărare; TCNT1H:TCNT1L pornește după fiecare impuls de intrare; unitatea își mărește conținutul până când acesta; valoarea nu este egală cu valoarea înscrisă în; OCR1AH:OCR1AL. În acest moment, conținutul TCNT1H:TCNT1L ; este resetat și indicatorul OCF1A este setat în TIMSK RV. Dacă; presetați bitul OCIE1A în TIMSK și bitul I în SREG, ; atunci va avea loc o tranziție la manipulatorul de întreruperi prin coincidență; din modulul de comparație A. Există și cronometru 1; de asemenea, un al doilea modul similar pentru compararea B cu registrele; comparații OCR1BH:OCR1BL a căror funcționare este similară; descris mai sus. .def data = R16 ;înregistrați cu codul simbol.def pos = R17 ;înregistrați cu numărul poziției indicatorului curent.def temp = R18 ;înregistrați pentru operațiuni intermediare.dseg .org SRAM_START ;celule în SRAM pentru buffer de afișare: . octetul 3 ;on indicator.cseg .org 0 rjmp initial ;start program.org 0x0006 ;manager de întrerupere pentru rjmp service_T1COMPA ;potrivire din modulul de comparare A ; Perioada de întrerupere în modul CTC: T=(OCR1AH:OCR1AL+1); /(Fclk/N), unde N este coeficientul de diviziune prescaler; frecvența la intrarea temporizatorului-contor 1. Modul de funcționare este setat; biți WGM13:WGM10 (WGM10 și WGM11 în controlul RV TCCR1A, ; WGM12 și WGM13 în TCCR1B), iar valoarea N este specificată prin biți; CS12:CS10 în registrul TCCR1A. Pentru perioada T = 6667 μs; (WGM13:WGM10 = 0100 – cut CTC), N =1(CS12:CS10 = 001 – ; prescaler dezactivat) și Fclk=1 MHz – conținutul OCR1AH:OCR1AL ; = 6667. .org 0x0020 initial: ldi temp,high(RAMEND) ;stack initialization out SPH,temp ldi temp,low(RAMEND) out SPL,temp . clr pos clr temp ldi temp,1 ;umpleți tamponul de afișare cu numerele 1...3 sts buffer,temp ldi temp,2 sts buffer+1,temp ldi temp,3 sts buffer+2,temp out TCCR1A,temp ldi temp ,(1<< WGM12)|(1<< CS10) out TCCR1B,temp ldi temp,high(6667) out OCR1AH,temp ldi temp,low(6667) out OCR1AL,temp ldi temp,1<< OCIE1A out TIMSK,temp sei . service_T1COMPA: ;обработчик прерывания по совпадению OCR1A in temp,SREG ;при входе сохраняем в стеке push temp ;регистры temp, SREG clr temp ldi YH,high(buffer) ;заносим в указатель Y адрес ldi YL,low(buffer) ;буфера индикации buffer add YL,pos ;добавляем к Y смещение, что соответствует adc YH,temp ;ячейке с текущей позицией pos индикатора ld data,Y ;заносим в data кодом символа текущей позиции rcall din_ind ;вызов подпрограммы индикации inc pos ;циклически изменяем номер позиции cpi pos,3 ;индикатора 0->1->2->0 etc. brne PC+2 clr pos pop temp ;la ieșire, restaurare din stack out SREG,temp ;registers temp, SREG reti ; Subrutină de afișare dinamică; ZH:ZL – index pentru conversie tabelară; R18 – registru pentru operațiuni intermediare; R16 – numărul caracterului din tabelul de conversie ind_tabl; la intrarea într-o subrutină; R17 – numărul poziţiei la intrarea în subrutină (0…2); steagul T de la intrarea în subrutină determină; prezența (T=1) sau absența (T=0) a unei virgule din_ind: clr R18 ;șterge registrul auxiliar la intrarea ldi ZH,high(2*ind_tabl) ;introduceți adresa de început a ldi ZL,low(2*ind_tabl ) în indexul Z; tabelele de conversie a caracterelor se adaugă ZL,R16 ;se adaugă la indicatorul Z un offset, adc ZH,R18 ;corespunzător poziției simbolului în tabelul lpm R16,Z ;se extrage simbolul bld R16,7 din tabelul în R16;introduceți valoarea în bitul cel mai semnificativ al lui R16 (segmentul H) clt ;virgulă, care este transmisă prin flag T ldi R18,0b11111110 sbrc R17,0 ;dacă cifra curentă este 1, atunci introducem R18 masca ldi R18,0b11111101 ;portul B pentru a porni catodul K1 sbrc R17,1 ;dacă cifra curentă este 2, atunci puneți în R18 masca ldi R18,0b11111011 ;portul B pentru a porni catodul K2 apăsați R17 ; salvați pe stivă registrul cu numărul de poziție în R17,PORTB;citește în buffer R17 starea curentă a portului ori R17,0b00000111 și R18,R17 afară PORTB,R17;stinge toate segmentele aplicând log.1 la K0. ..K2 out PORTD,R16 ; scoateți următorul simbol afară PORTB, R18 la portul D ; conectați următorul catod pop R17 la masă ; restaurați registrul cu numărul de poziție din stiva ret ind_tabl: ; tabelul unor simboluri cu un comun comun catod; HGFEDCBA Numărul de caractere HGFEDCBA din tabel.db 0b00111111, 0b00000110 ; 0,1 0, 1 .db 0b01011011, 0b01001111; 2,3 2, 3 .db 0b01100110, 0b01101101; 4,5 4, 5 .db 0b01111101, 0b00000111; 6,7 6, 7 .db 0b01111111, 0b01101111; 8,9 8, 9 .db 0b01110111, 0b01111100; A,b 10, 11 .db 0b01011110, 0b01011110; C,d 12, 13.db 0b01111001, 0b01110001; E,F 14, 15 .db 0b01000000, 0b00000000; -,spațiul 16, 17

Liniile de porturi I/O ale AVR au caracteristici de sarcină simetrică. Acestea permit curenți egali de intrare și ieșire de până la 20 mA. Prin urmare, indicatorii atât cu un anod comun, cât și cu un catod comun pot fi utilizați cu succes egal. În plus, pinii pentru conectarea segmentelor îndeplinesc foarte des funcții suplimentare ale butoanelor de sondare. În Fig. 2, de exemplu, butonul SBN este conectat la linia segmentului A prin rezistorul de limitare a curentului RN. Periodic, PD0 este configurat ca intrare pentru a citi starea butonului. În acest caz, rezistența internă de tragere acționează ca o rezistență de sarcină.


Fig.3 Reducerea numărului de pini al microcontrolerului
a - folosind un registru de deplasare
b - utilizarea indicatoarelor cu modele diferite de conectare cu LED-uri

Numărul de pini poate fi redus semnificativ dacă se utilizează microcircuite auxiliare împreună cu microcontrolerul. Figura 3a, de exemplu, arată cum este utilizat un registru de deplasare 74HC164 sau similar în acest scop. Această conexiune eliberează 6 linii I/O. În unele cazuri, poate fi justificată utilizarea decodoarelor și contoarelor de cod cu șapte segmente de diferite tipuri. În plus, există o altă oportunitate de economisire bazată pe utilizarea liniilor de port z-state. Circuitul din Fig. 3b este similar cu circuitul din Fig. 2, cu singura excepție că un indicator cu trei cifre cu un anod comun HG2 este conectat suplimentar în paralel cu indicatorul cu un catod comun HG1. Liniile PB0...PB2 realizează simultan comutarea anozilor A0...A2 ai indicatorului HG2 și, respectiv, a catozilor K0...K2 ai HG1. Când informațiile sunt afișate în poziția zero a HG2 (anodul A0), pe linia PB0 este generat un nivel de tensiune ridicat. Pe liniile portului D se setează log.0 în acele segmente care trebuie iluminate și starea z în segmentele care trebuie stinse. Când semnul cel mai mic HG1 (catodul K0) este activ, trebuie să fie prezent un nivel de tensiune scăzut pe linia PB0 și o valoare logică este scoasă la portul D la care nivelul logic 1 de pe linii corespunde segmentelor iluminate și stării z. la stins. Dacă caracterele sunt transmise în alte poziții ale indicatorului decât A0 și K0, atunci PB0 trebuie să fie comutat la o stare de impedanță ridicată. Desigur, programul de ieșire cu o astfel de schemă de comutare va fi vizibil mai complicat decât cel prezentat în Fig. Tabelul de simboluri se va dovedi a fi mult mai mare, deoarece, în primul rând, pentru fiecare dintre ele este necesar, pe lângă valoarea PORTD, va fi necesară și stocarea conținutului registrului DDRD, prin care liniile corespunzătoare trebuie să fie transferat în starea z (setat pentru intrare). Și în al doilea rând, simbolurile lui HG1 vor corespunde altor valori PORTD inverse în raport cu indicatorul cu un catod comun HG2.

Am fost într-un magazin de electronice zilele trecute. Uneori, diverse componente radio folosite apar în el la un preț mic. De data asta am vazut microcircuitul, din moment ce a costat un ban, l-am cumparat fara ezitare. Am decis să fac un simplu indicator de semnal mono. De ce mono și nu stereo? Pentru că există un singur cip. Voi termina al doilea canal mai târziu...

După ce am imprimat circuitul folosind o imprimantă laser pe hârtie lucioasă, vom trece la transferul tonerului (cerneala) pe placă. Facem asta astfel: asezam hartia pe o placa care a fost bine slefuita si o trecem peste placa cu un fier de calcat incalzit timp de 10 minute. Așteptăm până când placa se răcește și scoatem cu grijă hârtia sub apă fierbinte. Ar trebui să arate așa:

Apoi gravăm placa în clorură ferică. După aproximativ o oră, placa mea a fost complet gravată. Folosind un solvent, scăpăm de vopsea și folosim șmirghel pentru a da plăcii un aspect mai dreptunghiular.

Facem plata. Apoi începem să lipim piesele. Mai întâi am lipit cipul. După LED-uri și apoi restul pieselor. Fotografie cu placa complet finisată:


Funcționarea circuitului

Vă voi spune pe scurt despre scopul pieselor. Folosind R2 reglam nivelul semnalului de intrare. Prin condensatorul C1, semnalul ajunge la baza tranzistorului VT1, care servește ca amplificator. Rezistorul R3 stabilește polarizarea la baza tranzistorului. Apoi semnalul amplificat „vine” prin condensatorul C2 către diodele VD1 și VD2.

Semnalul negativ merge la minus, semnalul pozitiv la al 5-lea picior al microcircuitului. C3 și R4 servesc drept filtru. Cu cât tensiunea de pe piciorul 5 este mai mare, cu atât se aprind mai multe LED-uri. Apropo, dacă scurtați pinul 9 la pozitiv, LED-urile se vor aprinde liniar. În videoclip puteți vedea cum funcționează chestia asta.

Video cu funcționarea indicatorului LED