Skærm er en meget vigtig del af ethvert integreret systemapplikation, da det hjælper brugerne med at kende systemets status og også viser output eller enhver advarselsmeddelelse, der genereres af systemet. Der er mange typer skærme, der bruges i elektronik som 7-segment display, LCD display, TFT touchscreen display, LED display osv.
Vi har allerede interfaced 16x2 LCD med ARM7-LPC2148 i vores tidligere tutorial. I dag i denne vejledning vil vi interface et 7-segment display med ARM7-LPC2148. Før vi går i detaljer, vil vi se, hvordan man styrer 7-segment modulet til at vise et hvilket som helst antal tegn.
7-segment display
7 segmentskærme er blandt de enkleste displayenheder til visning af numre og tegn. Det bruges generelt til at vise tal og har lysere belysning og enklere konstruktion end dotmatrix-display. Og på grund af lysere belysning kan output ses fra større afstand end LCD. Som vist i ovenstående billede af et 7-segment display, består det af 8 LED'er, hver LED bruges til at belyse et segment af enheden og 8thLED bruges til at belyse DOT i 7 segment display. 8thLED bruges, når der anvendes to eller flere moduler med 7 segmenter, for eksempel til visning (0.1). Et enkelt modul bruges til at vise et enkelt ciffer eller tegn. For at vise mere end et ciffer eller tegn bruges flere 7-segmenter.
Pins med 7-segment display
Der er 10 ben, hvor 8 ben bruges til at henvise til a, b, c, d, e, f, g og h / dp, de to midterste ben er fælles anode / katode for alle LED'erne. Disse almindelige anoder / katoder er internt kortsluttet, så vi behøver kun at forbinde en COM-pin
Afhængig af forbindelse klassificerer vi 7-segment i to typer:
Fælles katode
I dette er alle de negative terminaler (katode) på alle de 8 lysdioder forbundet (se nedenstående diagram), navngivet som COM. Og alle de positive terminaler er alene eller tilsluttet til mikrocontrollerstifter. Hvis vi bruger mikrocontroller, indstiller vi logik HIGH for at belyse det specifikke og indstiller LAV til at slukke for LED.
Almindelig anode
I dette er alle de positive terminaler (anoder) på alle de 8 lysdioder forbundet sammen, navngivet som COM. Og alle de negative termiske forbindelser er alene eller tilsluttet til mikrocontrollerstiftene. Hvis vi bruger mikrocontroller, indstiller vi logik LAV til at belyse den bestemte og indstiller logik Høj for at slukke for LED.
Så afhængigt af pinværdien kan et bestemt segment eller en linje på 7 segment aktiveres eller deaktiveres for at vise det ønskede nummer eller alfabet. For eksempel for at vise 0 cifre skal vi indstille ben ABCDEF som HØJ og kun G som LAV. Da abcdef lysdioder er TIL og G er OFF dette danner 0 cifrede i 7-segment-modul. (Dette er for almindelig katode, for fælles anode er det modsat).
Nedenstående tabel viser HEX-værdierne og det tilsvarende ciffer i henhold til LPC2148-ben til fælles katodekonfiguration.
Ciffer |
HEX-værdier for LPC2148 |
EN |
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 |
VIGTIGT: I tabellen ovenfor har jeg angivet HEX-værdierne i overensstemmelse med de ben, jeg har brugt i LPC2148, se nedenstående kredsløbsdiagram. Du kan bruge hvilke stifter du vil, men ændre hex-værdier efter det.
For at lære mere om 7-segment display, gå gennem linket. Kontroller også 7-segment displaygrænseflader med andre mikrocontrollere:
- 7-segment displaygrænseflade med Raspberry Pi
- 7-segment-skærmgrænseflade med PIC-mikrocontroller
- 7-segment skærmgrænseflade med Arduino
- 7-segment-skærmgrænseflade med 8051-mikrocontroller
- 0-99 Tæller ved hjælp af AVR Microcontroller
Nødvendige materialer
Hardware
- ARM7-LPC2148
- Syv segment display modul (enkelt ciffer)
- Brødbræt
- Tilslutning af ledninger
Software
- Keil uVision5
- Flash Magic
Kredsløbsdiagram
For interface mellem 7-segment og LPC2148 er der ikke behov for en ekstern komponent som vist i kredsløbsdiagrammet nedenfor:
Tabellen nedenfor viser kredsløbsforbindelserne mellem 7-segment modul og LPC2148
Syv segmentmodulstifter |
LPC2148 Pins |
EN |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
almindelige |
GND |
Programmering ARM7 LPC2148
Vi har lært, hvordan man programmerer ARM7-LPC2148 ved hjælp af Keil i vores tidligere tutorial. Vi bruger samme Keil uVision 5 her til at skrive koden og oprette hex-fil og derefter uploade hex-filen til LPC2148 ved hjælp af flash-magisk værktøj. Vi bruger USB-kabel til at tænde og uploade kode til LPC2148
Komplet kode med videoforklaring findes i slutningen af denne vejledning. Her forklarer vi nogle få vigtige dele af koden.
Først skal vi inkludere headerfilen til LPC214x-serien mikrocontroller
#omfatte
Indstil derefter benene som output
IO0DIR = IO0DIR-0xffffffff
Dette indstiller stifterne P0.0 til P0.31 som output, men vi bruger kun stifter (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 og P0.8).
Indstil derefter de bestemte ben på LOGIC HIGH eller LOW i henhold til det numeriske ciffer, der skal vises. Her viser vi værdier fra (0 til 9). Vi bruger et array, der består af HEX-værdier for værdierne 0 til 9.
usigneret int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Værdier vises kontinuerligt, når koden er indsat under loop
mens (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // indstiller tilsvarende ben HIGH delay (9000); // Opkaldsforsinkelsesfunktion IO0CLR = IO0CLR-a; // Indstiller tilsvarende stifter LAV } }
Her bruges IOSET og IOCLR til at indstille hakene henholdsvis HIGH og LOW. Som vi har brugt PORT0- ben, så har vi IO0SET & IO0CLR .
For loop bruges til at inkrementere i i hver iteration og hver gang når jeg inkrementerer, inkrementerer 7 segment også cifret, der vises på det.
forsinkelsesfunktion bruges til at generere forsinkelsestid mellem SET & CLR
ugyldig forsinkelse (int k) // Funktion til at foretage forsinkelse { int i, j; for (i = 0; i
Komplet kode og arbejdsvideobeskrivelse er angivet nedenfor. Tjek også alle 7-segment Display relaterede projekter her.