Conectarea indicatorilor cu șapte segmente la avr

Indicatorii pe șapte segmente sunt utilizați pe scară largă în tehnologia digitală: în aparatele de uz casnic, în echipamentele de măsură, în dispozitivele industriale. În comparație cu afișajele cu cristale lichide, LED-urile au avantajele lor, acesta este contrastul afișajului de informații, consumul redus de energie. afișare cu șapte segmente este o matrice de șapte LED-uri dispuse în așa fel încât să le aprinzând în combinații diferite, ați putea afișa orice cifră zecimală, și caractere speciale. În plus, indicatorul este completat de un alt segment, care este proiectat să afișeze un punct zecimal.







Figura 1 arată aspectul indicatorului. Se presupune că fiecare segment al indicatorului este notat cu litera latină: a, b, c, d, e, f, g. Punctul este desemnat de litera h.

În conformitate cu schema de includere, indicatorii cu șapte segmente sunt împărțiți în indicatori cu un catod comun și cu un anod comun. Schemele de conectare sunt prezentate în Figura 2.

Pentru conectarea unui indicator cu șapte segmente și controlul acestuia cu ajutorul unui microcontroler, procedura este simplă. Pentru a face acest lucru, este suficient să conectați segmentele indicatorului la portul microcontrolerului prin intermediul rezistențelor limitatoare de curent de 150 Ohm. Ieșirea comună este conectată la linia unui alt port de pe microcontroler. În funcție de ce număr este necesar pentru a obține un port binar ieșire cod de această cifră, referindu-se la tipul de display conectat (un anod sau catod comun) pentru a furniza sârmă plus sau minus comun. Pentru comoditate, puteți crea un tabel de cod pentru indicator. În cazul în care conexiunea este: PD7-h, PD6-g, PD5-f, PD4-e, PD3-d, PD2-c, PD1-b, PD0-a, apoi pentru a afișa numărul 1 la portul D nevoie de ieșire un cod binar: 0b00000110.

Pentru a afișa datele digitale ale unui singur indicator de 7 segmente nu este de obicei suficient. În astfel de cazuri, mai mulți indicatori sunt conectați simultan la microcontroler. Cu toate acestea, din cauza lipsei unui număr suficient de pini, microcontrolerul folosește metode speciale. O astfel de metodă este o indicație dinamică. Modul de afișare dinamic este utilizat pentru a construi indicatori multipli. În acest mod, cifrele indicatoarelor nu funcționează în același timp, dar la rândul lor. Comutarea evacuărilor are loc la o viteză mare (50 Hz), din cauza căreia ochiul uman nu observă. că indicatorii lucrează la rândul lor. Deoarece LED-urile au o inerție foarte mică, descărcările alternante se îmbină într-o singură imagine. În acest mod, funcționează numai o singură descărcare de gestiune în orice moment, acestea sunt activate la rândul lor de la primul la ultimul, apoi totul începe din nou.

Să facem un simplu cronometru. COUNT secunde se va face pe afișajul de patru cifre (anod comun) de la 0 la 9999. În programul nostru, vom folosi o procedură de întrerupere cronometru, și anume Schimbarea indicatorului biți va apărea de fiecare dată când contorul se numără până la capăt (până la 255). Folosim cronometrul / contorul T2 de opt cifre. acesta va funcționa în modul normal. Dar, de obicei, pentru punerea în aplicare a indicației dinamice STI utilizat (atunci când nu putea suporta o coincidență) mod este modul în care frecvența de apariție a întreruperii prin valori contra coincidență și cronometrul OCR2 determinate de conținutul registrului OCR2 și ceasul prescaler cronometru. Cu acest mod al temporizării, puteți modifica cu ușurință rata de reîmprospătare scriind în registrul de comparare OCR2 valoarea necesară, pre-calculată. Rata de reîmprospătare este, de obicei, 50Hz sau mai mult, deoarece avem 4 biți, rata de reîmprospătare va fi 200Hz. Calculăm frecvența actualizărilor pentru exemplul nostru: frecvența de ceas este 8MHz, prescaler va face la 8. impulsuri de frecvență 1MHz va acționa pe intrarea timer. Apoi, cronometrul va crește valoarea la fiecare 1 microsecundă, va depăși la fiecare 255 * 0.000001 = 255 microsecunde. Rata de reîmprospătare va fi de 1 / 255μs = 3921Hz.







Conectarea indicatorilor cu șapte segmente la avr

De fiecare dată când întrerupem, trebuie să stingem mai întâi toți indicatorii din handler, apoi să selecem următorul caracter din matricea de caractere pregătite anterior, să-l scoatem în portul D. Apoi instalezi jurnalul. 1 pe linia portului B. care corespunde indicatorului următor. Astfel, putem actualiza informația despre indicatori unul câte unul, ceea ce va crea efectul stralucirii lor continue. Efectuați codul binar la portul D conform tabelului de mai jos.

O matrice cu codurile de numere va fi după cum urmează:

În dispozitivul de tratare a întreruperii, folosim instrucțiunea switch. acest operator vă permite să înlocuiți o funcție complexă din instrucțiunile if. În general, se arată astfel:

Operatorul dat face o alegere la exprimare, de obicei acest număr. Dacă expresia este prezentă în valoarea cazului. atunci comenzile sunt executate după caz ​​înainte de pauză. în caz contrar, codul este executat după implicit.

Mai jos este textul integral al programului:

Bine ai venit!
Vă rog să explicați de ce este folosit cuvântul cheie volatil?

Bine ai venit!
Vă rog să explicați de ce este folosit cuvântul cheie volatil?


Deoarece variabila este utilizată atât în ​​dispozitivul de întrerupere, cât și în buclă principală

O zi bună. Este posibil să se emită date din două variabile folosind acest algoritm? De exemplu, ora variabila in primele doua cifre si min in a doua (sa zicem ore).

Puteți, de exemplu:
cod:
comutator (segcounter)
<
cazul 0:
PORTD =

(SEGMENTE [oră% 100/10]);
pauză;
cazul 1:
PORTD =

(SEGMENTE [oră% 10]);
pauză;
cazul 2:
PORTD =

(SEGMENTE [minute% 100/10]);
pauză;
cazul 3:
PORTD =

Mulțumesc foarte mult. Răspunsul dvs. a determinat ideea că, în principiu, puteți crea patru variabile pentru fiecare cifră, iar în codul principal puteți direcționa biții după cum doriți. Ce crezi?
cod:
comutator (segcounter)
<
cazul 0:
PORTD =

(SEGMENTE [raz2]);
pauză;
cazul 2:
PORTD =

(SEGMENTE [raz3]);
pauză;
cazul 3:
PORTD =

Verificat în Proteus, funcționează. A fost necesar.

Bună ziua, este posibil să punem în aplicare controlul unui indicator de 2 cifre, controlând doar un singur pic de picioare? adică, conectez segmentele ca în diagramă. dar descărcările le conectez la piciorul MK, al doilea prin logica (NU) la același picior al MK. Și, în mod corespunzător, la 0, o lumină este aprinsă, cu un alt bit. Este posibil să o implementăm programat?

Bună ziua, este posibil să punem în aplicare controlul unui indicator de 2 cifre, controlând doar un singur pic de picioare?


Da, puteți, de exemplu:
cod:
ISR (TIMER2_OVF_vect)
PORTD = 0xFF;
comutator (segcounter)
cazul 0:
PORTD =

(SEGMENTE [afișare% 10]);
PORTB | = (1 <pauză;
cazul 1:
PORTD =

(SEGMENTE [afișare% 100/10]);
PORTB =

Bună seara. Spune-mi cum este posibil și cum puteți adăuga un codificator pentru a face un metru invers pe indicator LED spamyatyu EEPROM, te rog ajută-mă Pliz. Pentru mulțumiri mai devreme.







Trimiteți-le prietenilor: