Afișajul este o parte foarte importantă a oricărei aplicații de sistem încorporat, deoarece ajută utilizatorii să cunoască starea sistemului și afișează, de asemenea, ieșirea sau orice mesaj de avertizare generat de sistem. Există multe tipuri de afișaje utilizate în electronică, cum ar fi afișajul pe 7 segmente, afișajul LCD, afișajul cu ecran tactil TFT, afișajul cu LED-uri etc.
Am interfațat deja ecranul LCD 16x2 cu ARM7-LPC2148 în tutorialul nostru anterior. Astăzi în acest tutorial vom interfața un afișaj cu 7 segmente cu ARM7-LPC2148. Înainte de a intra în detalii, vom vedea cum să controlăm modulul cu 7 segmente pentru a afișa orice număr de caractere.
Afișaj pe 7 segmente
Afișajele pe 7 segmente sunt printre cele mai simple unități de afișare pentru a afișa numerele și caracterele. Este, în general, utilizat pentru afișarea numerelor și are o iluminare mai strălucitoare și o construcție mai simplă decât afișajul cu matrice de puncte. Și datorită iluminării mai strălucitoare, ieșirea poate fi vizualizată de la distanță mai mare decât LCD. Așa cum se arată în imaginea de mai sus a unui afișaj cu 7 segmente, acesta constă din 8 LED-uri, fiecare LED utilizat pentru iluminarea unui segment de unitate și cel de-al 8-lea LED utilizat pentru iluminarea DOT în afișajul pe 7 segmente. 8thLED este utilizat atunci când sunt utilizate două sau mai multe module cu 7 segmente, de exemplu pentru a afișa (0,1). Un singur modul este utilizat pentru a afișa o singură cifră sau caracter. Pentru a afișa mai mult de o cifră sau caracter, sunt utilizate mai multe 7 segmente.
Pinii afișajului pe 7 segmente
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. Acești anod / catod comun sunt scurtcircuitați intern, deci trebuie să conectăm un singur pin COM
În funcție de conexiune, clasificăm 7 segmente în două tipuri:
Catod comun
În aceasta 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 singure sau conectate la pinii microcontrolerului. Dacă folosim microcontrolerul, setăm logica HIGH pentru a ilumina particularul și setăm LOW pentru a opri LED-ul.
Anod comun
În acest sens, toate terminalele pozitive (anode) ale tuturor celor 8 LED-uri sunt conectate împreună, denumite COM. Și toate termicele negative sunt lăsate singure sau conectate la pinii microcontrolerului. Dacă folosim microcontrolerul, setăm logica LOW pentru a ilumina particularitatea și setăm logica High pentru a dezactiva LED-ul.
Deci, în funcție de valoarea pinului, un anumit segment sau linie de 7 segmente poate fi activat sau dezactivat pentru a afișa numărul sau alfabetul dorit. De exemplu pentru a afișa 0 cifră trebuie să setăm pinii ABCDEF ca HIGH și doar G ca LOW. Deoarece LED-urile ABCDEF sunt ON și G este OFF, aceasta formează cifra 0 în modulul cu 7 segmente. (Aceasta este pentru catod comun, pentru anod comun este opus).
Tabelul de mai jos prezintă valorile HEX și cifra corespunzătoare conform pinilor LPC2148 pentru configurația catodului comun.
Cifră |
Valori HEX pentru LPC2148 |
A |
B |
C |
D |
E |
F |
G |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
IMPORTANT: În tabelul de mai sus am dat valorile HEX în funcție de pinii pe care i-am folosit în LPC2148, verificați schema de circuit de mai jos. Puteți utiliza orice pini doriți, dar puteți modifica valorile hex.
Pentru a afla mai multe despre afișajul pe 7 segmente, accesați linkul. Verificați, de asemenea, interfețele de afișare pe 7 segmente cu alte microcontrolere:
- Interfață de afișare pe 7 segmente cu Raspberry Pi
- Interfațarea afișajului pe 7 segmente cu microcontrolerul PIC
- Interfață de afișare pe 7 segmente cu Arduino
- Interfațarea afișajului pe 7 segmente cu microcontrolerul 8051
- 0-99 Contor folosind microcontrolerul AVR
Materiale necesare
Hardware
- ARM7-LPC2148
- Modul de afișare cu șapte segmente (o singură cifră)
- Breadboard
- Conectarea firelor
Software
- Keil uVision5
- Flash Magic
Diagrama circuitului
Pentru interfațarea cu 7 segmente cu LPC2148, nu este necesară nicio componentă externă așa cum se arată în schema de circuit de mai jos:
Tabelul de mai jos prezintă conexiunile de circuit între modulul cu 7 segmente și LPC2148
Șapte pini ai modulului |
LPC2148 Pin |
A |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Uzual |
GND |
Programare ARM7 LPC2148
Am învățat cum să programăm ARM7-LPC2148 folosind Keil în tutorialul nostru anterior. Folosim același Keil uVision 5 aici pentru a scrie codul și a crea fișier hexagonal, apoi încărcăm fișierul hexagonal în LPC2148 folosind instrumentul flash magic. Folosim cablu USB pentru a alimenta și încărca codul în LPC2148
Un cod complet cu explicații video este dat la sfârșitul acestui tutorial. Aici explicăm câteva părți importante ale codului.
Mai întâi trebuie să includem fișierul antet pentru microcontrolerul serie LPC214x
#include
Apoi setați pinii ca ieșire
IO0DIR = IO0DIR-0xffffffff
Aceasta setează pinii P0.0 la P0.31 ca ieșire, dar vom folosi numai pinii (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 și P0.8).
Apoi setați anumiți pini la LOGIC HIGH sau LOW în funcție de cifra numerică care trebuie afișată. Aici vom afișa valori de la (0 la 9). Vom folosi o matrice care conține valori HEX pentru valorile de la 0 la 9.
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Valorile vor fi afișate în mod continuu ca codul a fost pus în timp ce bucla
while (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // setează pinii corespunzători HIGH delay (9000); // Funcția de întârziere a apelurilor IO0CLR = IO0CLR-a; // Setează pinii corespunzători LOW } }
Aici IOSET și IOCLR sunt folosite pentru a seta pinii HIGH și respectiv LOW. Deoarece am folosit pinii PORT0, avem și IO0SET și IO0CLR .
Bucla For este utilizată pentru a crește i-ul în fiecare iterație și de fiecare dată când crește i , segmentul 7 crește, de asemenea, cifra care apare pe ea.
funcția de întârziere este utilizată pentru a genera timp de întârziere între SET și CLR
void delay (int k) // Funcție pentru întârzierea { int i, j; pentru (i = 0; i
Codul complet și descrierea videoclipului de lucru sunt prezentate mai jos. De asemenea, verificați aici toate proiectele legate de afișarea în 7 segmente.