Wyświetlacz jest bardzo ważną częścią każdej aplikacji systemu wbudowanego, ponieważ pomaga użytkownikom poznać stan systemu, a także pokazuje dane wyjściowe lub wszelkie komunikaty ostrzegawcze generowane przez system. Istnieje wiele typów wyświetlaczy stosowanych w elektronice, takich jak wyświetlacz 7-segmentowy, wyświetlacz LCD, wyświetlacz dotykowy TFT, wyświetlacz LED itp.
W naszym poprzednim samouczku połączyliśmy już wyświetlacz LCD 16x2 z ARM7-LPC2148. Dzisiaj w tym samouczku połączymy 7-segmentowy wyświetlacz z ARM7-LPC2148. Zanim przejdziemy do szczegółów, zobaczymy, jak sterować 7-segmentowym modułem, aby wyświetlać dowolną liczbę znaków.
7-segmentowy wyświetlacz
Wyświetlacze 7-segmentowe należą do najprostszych jednostek wyświetlających do wyświetlania cyfr i znaków. Zwykle jest używany do wyświetlania liczb i ma jaśniejsze oświetlenie i prostszą konstrukcję niż wyświetlacz z matrycą punktową. A dzięki jaśniejszemu oświetleniu obraz wyjściowy można oglądać z większej odległości niż wyświetlacz LCD. Jak pokazano na powyższym obrazie 7-segmentowego wyświetlacza, składa się on z 8 diod LED, z których każda służy do podświetlenia jednego segmentu jednostki, a ósma dioda LED służy do podświetlenia DOT na 7-segmentowym wyświetlaczu. 8thLED jest używany, gdy używane są dwa lub więcej modułów 7-segmentowych, na przykład do wyświetlania (0,1). Pojedynczy moduł służy do wyświetlania pojedynczej cyfry lub znaku. Aby wyświetlić więcej niż jedną cyfrę lub znak, używa się wielu 7-segmentowych.
Piny wyświetlacza 7-segmentowego
Jest 10 pinów, w których 8 pinów jest używanych do odniesienia a, b, c, d, e, f, g i h / dp, dwa środkowe piny są wspólną anodą / katodą wszystkich diod LED. Te wspólne anody / katody są wewnętrznie zwarte, więc musimy podłączyć tylko jeden pin COM
W zależności od połączenia klasyfikujemy 7-segmentowe na dwa typy:
Wspólna katoda
W tym przypadku wszystkie ujemne zaciski (katoda) wszystkich 8 diod LED są połączone razem (patrz schemat poniżej), nazywane COM. Wszystkie dodatnie zaciski są pozostawione same lub podłączone do pinów mikrokontrolera. Jeśli korzystamy z mikrokontrolera, ustawiamy logikę WYSOKI, aby podświetlić dany element i ustawiamy NISKI, aby wyłączyć diodę LED.
Wspólna anoda
W tym przypadku wszystkie dodatnie zaciski (anody) wszystkich 8 diod LED są połączone razem, nazywane COM. A wszystkie ujemne termiki są pozostawione same lub podłączone do pinów mikrokontrolera. Jeśli używamy mikrokontrolera, ustawiamy logikę LOW, aby podświetlić konkretny i ustawiamy logikę High, aby wyłączyć diodę LED.
Zatem w zależności od wartości pinu, określony segment lub linia 7 segmentów może być włączana lub wyłączana, aby wyświetlić żądaną liczbę lub alfabet. Na przykład, aby wyświetlić cyfrę 0, musimy ustawić piny ABCDEF jako HIGH, a tylko G jako LOW. Ponieważ diody ABCDEF są włączone, a G jest wyłączony ten tworzy 0 cyfrowy w module 7 segmentu. (To jest dla wspólnej katody, dla wspólnej anody jest odwrotnie).
Poniższa tabela pokazuje wartości HEX i odpowiadającą im cyfrę zgodnie z pinami LPC2148 dla konfiguracji wspólnej katody.
Cyfra |
Wartości szesnastkowe dla LPC2148 |
ZA |
b |
do |
re |
mi |
fa |
sol |
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 |
WAŻNE: W powyższej tabeli podałem wartości HEX zgodnie z pinami, które użyłem w LPC2148, sprawdź poniższy schemat obwodu. Możesz użyć dowolnych szpilek, ale zgodnie z tym zmień wartości szesnastkowe.
Aby dowiedzieć się więcej na temat wyświetlacza 7-segmentowego, przejdź przez łącze. Sprawdź także interfejsy 7-segmentowego wyświetlacza z innymi mikrokontrolerami:
- 7-segmentowy wyświetlacz współpracujący z Raspberry Pi
- 7-segmentowy wyświetlacz współpracujący z mikrokontrolerem PIC
- 7-segmentowy wyświetlacz współpracujący z Arduino
- 7-segmentowy wyświetlacz współpracujący z mikrokontrolerem 8051
- 0-99 Licznik za pomocą mikrokontrolera AVR
Wymagane materiały
Sprzęt komputerowy
- ARM7-LPC2148
- Moduł wyświetlacza siedmiosegmentowego (pojedyncza cyfra)
- Płytka prototypowa
- Podłączanie przewodów
Oprogramowanie
- Keil uVision5
- Flash Magic
Schemat obwodu
Do połączenia 7-segmentowego z LPC2148 nie jest potrzebny żaden element zewnętrzny, jak pokazano na schemacie poniżej:
Poniższa tabela przedstawia połączenia obwodów między modułem 7-segmentowym a LPC2148
Piny modułu z siedmioma segmentami |
Piny LPC2148 |
ZA |
P0.0 |
b |
P0.1 |
do |
P0.4 |
re |
P0.5 |
mi |
P0.6 |
fa |
P0.7 |
sol |
P0.8 |
Wspólny |
GND |
Programowanie ARM7 LPC2148
Dowiedzieliśmy się, jak programować ARM7-LPC2148 za pomocą Keil w naszym poprzednim samouczku. Używamy tego samego Keil uVision 5 tutaj, aby napisać kod i utworzyć plik hex, a następnie przesłać plik hex do LPC2148 za pomocą magicznego narzędzia flash. Używamy kabla USB do zasilania i przesyłania kodu do LPC2148
Kompletny kod z objaśnieniem wideo znajduje się na końcu tego samouczka. Tutaj wyjaśniamy kilka ważnych części kodu.
Najpierw musimy załączyć plik nagłówkowy mikrokontrolera serii LPC214x
#zawierać
Następnie ustaw piny jako wyjście
IO0DIR = IO0DIR-0xffffffff
To ustawia piny P0.0 do P0.31 jako wyjście, ale będziemy używać tylko pinów (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 i P0.8).
Następnie ustaw określone piny na LOGIC HIGH lub LOW zgodnie z wyświetlaną cyfrą. Tutaj wyświetlimy wartości od (0 do 9). Będziemy używać tablicy składającej się z wartości HEX dla wartości od 0 do 9.
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Wartości będą wyświetlane kolejno, jako kod został wprowadzony w podczas pętli
while (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // ustawia odpowiednie piny na WYSOKIE opóźnienie (9000); // wywołuje funkcję opóźnienia IO0CLR = IO0CLR-a; // Ustawia odpowiednie szpilki LOW } }
Tutaj IOSET i IOCLR są używane do ustawiania pinów odpowiednio HIGH i LOW. Ponieważ użyliśmy pinów PORT0, mamy IO0SET i IO0CLR .
Pętla For służy do zwiększania wartości i w każdej iteracji i za każdym razem, gdy zwiększa się i , 7 segmentów zwiększa również wyświetlaną na nim cyfrę.
Funkcja opóźnienia służy do generowania czasu opóźnienia między ustawieniami SET i CLR
void delay (int k) // Funkcja do tworzenia opóźnienia { int i, j; dla (i = 0; i
Pełny kod i działający opis wideo znajduje się poniżej. Sprawdź również wszystkie projekty związane z 7-segmentowym wyświetlaczem tutaj.