Afișajele cu șapte segmente sunt unități de afișare importante în Electronică și utilizate pe scară largă pentru a afișa numere de la 0 la 9. Poate afișa, de asemenea, unele alfabete de caractere, cum ar fi A, B, C, H, F, E etc. În acest tutorial, vom învăța cum să interfațați un afișaj pe 7 segmente cu microcontrolerul 8051. Folosim microcontrolerul AT89S52 din seria 8051.
Înainte de interfață, ar trebui să aflăm despre afișajul pe 7 segmente. Este cea mai simplă unitate pentru afișarea numerelor și a caracterelor. Acesta constă doar din 8 LED-uri, fiecare LED utilizat pentru iluminarea unui segment de unitate și al 8- lea LED utilizat pentru iluminarea DOT în afișajul pe 7 segmente. Putem denumi fiecare segment ca o LINIE, așa cum putem vedea că există 7 linii în unitate, care sunt utilizate pentru a afișa un număr / caracter. Putem referi fiecare linie / segment „a, b, c, d, e, f, g”, iar pentru caracterul punct vom folosi „h”. Există 10 pini, în care 8 pini sunt utilizați pentru a indica a, b, c, d, e, f, g și h / dp, cei doi pini din mijloc sunt anod / catod comun al tuturor LED-urilor sale. Acești anod / catod comun sunt scurtcircuitați intern, deci trebuie să conectăm un singur pin COM.
Există două tipuri de afișaje pe 7 segmente: Anod comun și Catod comun:
Anod comun: în acesta toate terminalele negative (catodul) tuturor celor 8 LED-uri sunt conectate împreună (a se vedea diagrama de mai jos), denumite COM. Și toate terminalele pozitive sunt lăsate în pace.
Catod comun: În aceasta toate terminalele pozitive (anodii) ale tuturor celor 8 LED-uri sunt conectate împreună, denumite COM. Și toate termicele negative sunt lăsate în pace.
Diagrama circuitului și extinderea de lucru
Aici folosim tip anodic comun de 7 segmente, deoarece trebuie să conectăm LED-uri în sens invers. După cum știm că microcontrolerul nu oferă suficientă putere pentru a aprinde LED-ul, deci trebuie să conectăm catodul LED la pinul microcontrolerului și anodul LED-ului la sursa de alimentare. Puteți înțelege acest concept de logică negativă în acest articol „Interfață LED cu microcontroler 8051”. De asemenea, ar trebui să citiți acest articol pentru a înțelege conexiunea de bază a microcontrolerului, cum ar fi cristalul și circuitele de resetare.
Așa cum se arată mai sus schema circuitului pentru interfața afișajului pe 7 segmente cu microcontrolerul 8051, am conectat a, b, c, d, e, f, g, h la pinii 2.0 la 2.7 înseamnă că conectăm 7 segmente la portul 2 al microcontrolerului. Acum, să presupunem că dorim să afișăm 0, apoi trebuie să aprindem toate LED-urile, cu excepția LED-urilor care aparțin liniei „g” (a se vedea diagrama de mai sus), astfel încât pinii 2.0 până la 2.6 ar trebui să fie la 0 (ar trebui să fie 0 la PORNIREA LED-ului per logică negativă) și pinii 2.7 și 2.8 trebuie să fie la 1 (ar trebui să fie 1 pentru a OPRI LED-ul conform logicii negative). Deci, LED-urile conectate la pinii 2.0 la 2.6 (a, b, c, d, e, f) vor fi aprinse și LED-urile conectate la 2.7 și 2.8 (g și h) vor fi stinse, ceea ce va crea un „0” în 7 segment. Deci, avem nevoie de modelul de biți 11000000 (Pinul 8 este cel mai mare bit, deci începând de la P2.7 la P2.0), iar codul HEX pentru binarul 11000000 este „C0”. În mod similar, putem calcula pentru toate cifrele. Aici ar trebui să observăm că menținem „punct / h” întotdeauna OFF,deci trebuie să-i acordăm LOGIC „1” de fiecare dată. Un tabel a fost dat mai jos pentru toate numerele în timp ce se utilizează segmentul Common Anode 7.
Cifra de afișat |
hgfedcba |
Cod hex |
0 |
11000000 |
C0 |
1 |
11111001 |
F9 |
2 |
10100100 |
A4 |
3 |
10110000 |
B0 |
4 |
10011001 |
99 |
5 |
10010010 |
92 |
6 |
10000010 |
82 |
7 |
11111000 |
F8 |
8 |
10000000 |
80 |
9 |
10010000 |
90 |
Explicarea codului
Am creat funcția ms_delay pentru a oferi întârzierea în milisecunde, această întârziere este de obicei furnizată în orice program de microcontroler, astfel încât microcontrolerul să poată finaliza funcționarea sa internă.
Apoi am creat o serie de coduri hexagonale pentru 0 la 9 (a se vedea tabelul de mai sus) și, în cele din urmă, am trimis codurile hex la portul 2, care este conectat la segmentul comun al anodului 7. Deci, în acest fel numerele sunt afișate pe afișajul pe 7 segmente.
Acum avem doar 4 porturi în microcontroler și dacă vrem să arătăm datele în mai mult de patru 7 segmente ?? Pentru a rezolva această problemă, tehnica multiplexării intră în imagine. Trebuie să multiplexăm mai multe unități pe 7 segmente. De asemenea, citiți interfața afișajului pe 7 segmente cu microcontrolerul AVR.