Skjerm er en veldig viktig del av ethvert innebygd systemapplikasjon, da det hjelper brukere å kjenne systemets status og viser også utdataene eller advarsler som genereres av systemet. Det er mange typer skjermer som brukes i elektronikk som 7-segment display, LCD display, TFT berøringsskjerm, LED display etc.
Vi har allerede grensesnitt 16x2 LCD med ARM7-LPC2148 i vår forrige opplæring. I dag i denne opplæringen vil vi grensesnitt en 7-segment skjerm med ARM7-LPC2148. Før vi går i detalj, vil vi se hvordan du styrer 7-segmentmodulen for å vise et hvilket som helst antall tegn.
7-segment display
7 segmentskjermbilder er blant de enkleste skjermenhetene for å vise tall og tegn. Det brukes vanligvis til å vise tall og har lysere belysning og enklere konstruksjon enn punktmatrisevisning. Og på grunn av lysere belysning, kan utgangen sees fra større avstand enn LCD. Som vist på bildet ovenfor av en 7-segment skjerm, består den av 8 lysdioder, hver LED brukes til å belyse ett segment av enheten og 8thLED brukes til å belyse DOT i 7 segment display. 8thLED brukes når to eller flere 7-segmentmoduler brukes, for eksempel for å vise (0.1). En enkelt modul brukes til å vise ett siffer eller tegn. For å vise mer enn ett siffer eller tegn brukes flere 7-segmenter.
Pins med 7-segment display
Det er 10 pinner, hvor 8 pinner brukes til å referere til a, b, c, d, e, f, g og h / dp, de to midterste pinnene er vanlig anode / katode for alle LED-lampene. Disse vanlige anodene / katodene er internt kortsluttet, så vi trenger bare å koble til en COM-pin
Avhengig av tilkobling klassifiserer vi 7-segment i to typer:
Felles katode
I dette er alle de negative terminalene (katoden) til alle de 8 lysdiodene koblet sammen (se diagrammet nedenfor), kalt COM. Og alle de positive terminalene er igjen alene eller koblet til mikrokontrollerpinnene. Hvis vi bruker mikrokontroller, setter vi logikk HØY for å belyse det aktuelle og setter LAVT for å slå AV LED.
Vanlig anode
I dette er alle de positive terminalene (anodene) til alle de 8 lysdiodene koblet sammen, kalt COM. Og alle de negative termikkene er alene eller koblet til mikrokontrollerpinnene. Hvis vi bruker mikrokontroller, setter vi logikken LAV for å belyse den spesielle og setter logikken Høy for å slå AV LED.
Så avhengig av pin-verdien, kan et bestemt segment eller linje med 7 segment slås på eller av for å vise ønsket tall eller alfabet. For eksempel for å vise 0 siffer må vi sette pinner ABCDEF som HØY og bare G som LAV. Som DEFABC LED er ON og G er AV dette danner 0-siffer i 7-segment-modulen. (Dette er for vanlig katode, for vanlig anode er det motsatt).
Tabellen nedenfor viser HEX-verdiene og tilsvarende siffer i henhold til LPC2148-pinner for vanlig katodekonfigurasjon.
Siffer |
HEX-verdier 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 |
VIKTIG: I tabellen ovenfor har jeg gitt HEX-verdiene i henhold til pinnene jeg har brukt i LPC2148, sjekk kretsskjemaet nedenfor. Du kan bruke hvilke pinner du vil, men endre hexverdier i henhold til det.
For å lære mer om 7-segmentvisning, gå gjennom lenken. Sjekk også 7-segment skjermgrensesnitt med andre mikrokontrollere:
- 7-segment skjermgrensesnitt med Raspberry Pi
- 7 segmentskjermgrensesnitt med PIC-mikrokontroller
- 7-segment skjermgrensesnitt med Arduino
- 7-segment skjermgrensesnitt med 8051 mikrokontroller
- 0-99 Teller ved hjelp av AVR Microcontroller
Nødvendig materiale
Maskinvare
- ARM7-LPC2148
- Syv segment skjermmodul (ensifret)
- Brettbrett
- Koble ledninger
Programvare
- Keil uVision5
- Flash Magic
Kretsdiagram
For grensesnitt mellom 7-segment og LPC2148 er det ikke nødvendig med noen ekstern komponent som vist i kretsskjemaet nedenfor:
Tabellen nedenfor viser kretsforbindelsene mellom 7-segmentmodul og LPC2148
Syv segmentmodulpinner |
LPC2148 Pins |
EN |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Vanlig |
GND |
Programmering ARM7 LPC2148
Vi har lært hvordan vi programmerer ARM7-LPC2148 ved hjelp av Keil i vår forrige opplæring. Vi bruker samme Keil uVision 5 her for å skrive koden og lage hex-fil, og laster deretter opp hex-filen til LPC2148 ved hjelp av flash-magisk verktøy. Vi bruker USB-kabel for å drive og laste opp kode til LPC2148
Komplett kode med videoforklaring er gitt på slutten av denne opplæringen. Her forklarer vi noen viktige deler av koden.
Først må vi inkludere toppteksten for LPC214x-serien mikrokontroller
#inkludere
Sett deretter pinnene som utgang
IO0DIR = IO0DIR-0xffffffff
Dette setter pinnene P0.0 til P0.31 som utgang, men vi bruker bare pinner (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 og P0.8).
Sett deretter visse pinner på LOGIC HIGH eller LOW i henhold til det numeriske tallet som skal vises. Her vil vi vise verdier fra (0 til 9). Vi bruker en matrise som består av HEX-verdier for verdiene 0 til 9.
usignert int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Verdiene vises kontinuerlig når koden er lagt inn mens sløyfen er
mens (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // setter tilsvarende pinner HØY forsinkelse (9000); // Anropsforsinkelsesfunksjon IO0CLR = IO0CLR-a; // Angir tilsvarende pinner LAV } }
Her brukes IOSET og IOCLR til å sette henholdsvis pinner HØY og LAV. Som vi har brukt PORT0- pinner, har vi IO0SET & IO0CLR .
For loop brukes til å øke i i hver iterasjon, og hver gang jeg øker, inkrementerer 7 segment også sifferet som vises på den.
forsinkelsesfunksjon brukes til å generere forsinkelsestid mellom SET & CLR
ugyldig forsinkelse (int k) // Funksjon for å gjøre forsinkelse { int i, j; for (i = 0; i
Komplett kode og arbeidsvideobeskrivelse er gitt nedenfor. Sjekk også alle 7-segment Display-relaterte prosjekter her.