Displej je veľmi dôležitou súčasťou akejkoľvek aplikácie zabudovaného systému, pretože pomáha používateľom poznať stav systému a tiež zobrazuje výstup alebo výstražné správy vygenerované systémom. V elektronike sa používa veľa druhov displejov, ako napríklad 7-segmentový displej, LCD displej, TFT dotykový displej, LED displej atď.
V našom predchádzajúcom tutoriáli sme už prepojili 16x2 LCD s ARM7-LPC2148. Dnes v tomto výučbe prepojíme 7-segmentový displej s ARM7-LPC2148. Predtým, ako pôjdeme do podrobností, uvidíme, ako ovládať 7-segmentový modul tak, aby zobrazoval ľubovoľný počet znakov.
7-segmentový displej
Sedem segmentové displeje patria medzi najjednoduchšie zobrazovacie jednotky na zobrazovanie čísel a znakov. Spravidla sa používa na zobrazenie čísel a má jasnejšie osvetlenie a jednoduchšiu konštrukciu ako ihličkové zobrazenie. A vďaka jasnejšiemu osvetleniu je možné výstup sledovať z väčšej vzdialenosti ako displej LCD. Ako je znázornené na obrázku vyššie na 7-segmentovom displeji, skladá sa z 8 LED diód, z ktorých každá LED slúži na osvetlenie jedného segmentu jednotky a 8. LED slúži na osvetlenie DOT na 7-segmentovom displeji. 8. LED sa používa, keď sa používajú dva alebo viac 7-segmentových modulov, napríklad na zobrazenie (0,1). Jeden modul sa používa na zobrazenie jednej číslice alebo znaku. Na zobrazenie viac ako jednej číslice alebo znaku sa používa viac 7 segmentov.
Kolíky 7-segmentového displeja
Existuje 10 pinov, v ktorých sa 8 pinov používa na označenie a, b, c, d, e, f, g a h / dp, dva stredné piny sú spoločnou anódou / katódou všetkých LED diód. Tieto bežné anódy / katódy sú vnútorne skratované, takže musíme pripojiť iba jeden pin COM
V závislosti na pripojení klasifikujeme 7-segment do dvoch typov:
Spoločná katóda
V tomto sú všetky záporné vývody (katóda) všetkých 8 LED diód spojené dohromady (pozri schému nižšie), pomenované ako COM. A všetky kladné svorky zostávajú samy alebo sú pripojené k pinom mikrokontroléra. Ak používame mikrokontrolér, nastavíme logiku HIGH na osvetlenie konkrétneho objektu a nastavíme LOW na vypnutie LED.
Spoločná anóda
V tomto sú všetky kladné svorky (anódy) všetkých 8 LED diód spojené dohromady, pomenovaných ako COM. A všetky záporné termiky zostanú samy alebo spojené s kolíkmi mikrokontroléra. Ak používame mikrokontrolér, nastavíme logiku LOW na osvetlenie konkrétneho a nastavíme logiku High na vypnutie LED.
Takže v závislosti na hodnote špendlíka je možné zapnúť alebo vypnúť konkrétny segment alebo riadok 7 segmentu, aby sa zobrazilo požadované číslo alebo abeceda. Napríklad pre zobrazenie 0 číslic musíme nastaviť piny ABCDEF ako HIGH a iba G ako LOW. Ako ABCDEF LED diódy sú ON a G je OFF tento tvorí 0 číslica v 7-segmente modulu. (Toto je pre spoločnú katódu, pre spoločnú anódu je to naopak).
V nasledujúcej tabuľke sú zobrazené hodnoty HEX a zodpovedajúca číslica podľa pinov LPC2148 pre spoločnú konfiguráciu katódy.
Digit |
HEXICKÉ hodnoty pre 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 |
DÔLEŽITÉ: V tabuľke vyššie som uviedol hodnoty HEX podľa pinov, ktoré som použil v LPC2148, skontrolujte schému zapojenia nižšie. Môžete použiť ľubovoľné kolíky, ale podľa toho meniť hexadecimálne hodnoty.
Ak sa chcete dozvedieť viac o sedemsegmentovom displeji, prejdite na odkaz. Skontrolujte tiež 7-segmentové rozhranie displeja s inými mikrokontrolérmi:
- 7-segmentové rozhranie displeja s Raspberry Pi
- 7 segmentové prepojenie displeja s mikrokontrolérom PIC
- 7-segmentové prepojenie displeja s Arduino
- 7-segmentové prepojenie displeja s mikrokontrolérom 8051
- Počítadlo 0-99 pomocou mikrokontroléra AVR
Potrebné materiály
Hardware
- ARM7-LPC2148
- Sedemsegmentový zobrazovací modul (jedna číslica)
- Nepál
- Pripojenie drôtov
Softvér
- Keil uVision5
- Flash Magic
Schéma zapojenia
Pre prepojenie 7 segmentov s LPC2148 nie je potrebný žiadny externý komponent, ako je znázornené na schéme zapojenia nižšie:
Nasledujúca tabuľka zobrazuje zapojenie obvodov medzi 7-segmentovým modulom a LPC2148
Sedem segmentových pinov modulu |
LPC2148 kolíky |
A |
P0.0 |
B |
P0.1 |
C. |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Bežné |
GND |
Programovanie ARM7 LPC2148
Ako sme programovali ARM7-LPC2148 pomocou Keila, sme sa naučili v našom predchádzajúcom tutoriáli. Rovnaký Keil uVision 5 tu používame na napísanie kódu a vytvorenie hexadecimálneho súboru a potom pomocou hex flash nástroja nahráme hexadecimálny súbor na LPC2148. Na napájanie a nahrávanie kódu do LPC2148 používame kábel USB
Kompletný kód s vysvetlením videa je uvedený na konci tohto tutoriálu. Tu vysvetľujeme niekoľko dôležitých častí kódu.
Najprv musíme zahrnúť hlavičkový súbor pre mikrokontrolér série LPC214x
#include
Ďalej nastavte kolíky ako výstup
IO0DIR = IO0DIR-0xffffffff
Týmto nastavíte piny P0.0 na P0.31 ako výstup, ale budeme používať iba piny (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 a P0.8).
Potom nastavte určité kolíky na LOGIC HIGH alebo LOW podľa číselnej číslice, ktorá sa má zobraziť. Tu zobrazíme hodnoty od (0 do 9). Budeme používať pole, ktoré obsahuje hodnoty HEX pre hodnoty 0 až 9.
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Hodnoty budú zobrazené plynule, pretože kód bol uvedený v zatiaľ čo slučka
while (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // nastaví zodpovedajúce piny HIGH delay (9000); // Funkcia oneskorenia hovorov IO0CLR = IO0CLR-a; // Nastaví zodpovedajúce kolíky LOW } }
Tu sa používajú IOSET a IOCLR na nastavenie kolíkov HIGH a LOW. Pretože sme použili piny PORT0, máme aj IO0SET & IO0CLR .
Pre slučky sa používa na zvýšenie hodnoty aj v každej iterácii a zakaždým, keď aj zvýši, 7 segmente tiež zvýši číslice, ktorá sa ukazuje na to.
Funkcia delay sa používa na generovanie času oneskorenia medzi SET & CLR
void delay (int k) // Funkcia na vytvorenie oneskorenia { int i, j; pre (i = 0; i
Celý kód a popis pracovného videa sú uvedené nižšie. Tu tiež skontrolujte všetky súvisiace projekty so 7-segmentovým displejom.