Syv segmentdisplays er vigtige displayenheder i elektronik og bruges meget til at vise numre fra 0 til 9. Det kan også vise nogle tegnalfabet som A, B, C, H, F, E osv. I denne vejledning skal vi lære hvordan man interface et 7-segment display med 8051 microcontroller. Vi bruger AT89S52 mikrocontroller fra 8051-serien.
Før vi grænseflader, bør vi lære om 7-segmentvisning. Det er den enkleste enhed til at vise tal og tegn. Den består kun 8 lysdioder, hver LED bruges til at belyse en del af enheden og 8 th LED bruges til at belyse DOT i 7 segment display. Vi kan henvise til hvert segment som en LINE, da vi kan se, er der 7 linjer i enheden, der bruges til at vise et tal / tegn. Vi kan henvise til hver linje / segment "a, b, c, d, e, f, g" og for priktegn bruger vi "h". 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.
Der er to typer af 7 segmentskærme: Common Anode og Common Cathode:
Almindelig anode: 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.
Fælles katode: I dette er alle de positive terminaler (anoder) på alle de 8 lysdioder forbundet sammen, navngivet som COM. Og alle de negative termikere er alene.
Kredsløbsdiagram og arbejdsudvidelse
Her bruger vi almindelig anode type 7 segment, fordi vi har brug for at forbinde lysdioder i omvendt retning. Som vi ved, at mikrokontroller ikke giver tilstrækkelig strøm til at lyse lysdioden, så er vi nødt til at forbinde LED's katode til mikrocontrollerstift og LED-anoder til strømforsyning. Du kan forstå dette negative logiske koncept i denne artikel “LED-grænseflade med 8051 Microcontroller”. Du bør også læse denne artikel for at forstå den grundlæggende forbindelse til mikrocontroller som krystal og reset-kredsløb.
Som vist ovenfor er kredsløbsdiagrammet til grænseflade mellem 7-segmentvisning og 8051-mikrocontroller, vi har tilsluttet a, b, c, d, e, f, g, h til ben 2.0 til 2.7 betyder, at vi forbinder 7 segment til port 2 på mikrokontroller. Antag nu, at vi vil vise 0, så skal vi gløde alle lysdioder undtagen LED, der hører til linje “g” (se diagrammet ovenfor), så ben 2.0 til 2.6 skal være ved 0 (skal være 0 for at TÆNDE LED som pr. negativ logik) og pin 2,7 og 2,8 skal være ved 1 (skal være 1 for at SLÅ LED'en til pr. negativ logik). Så lysdioderne, der er tilsluttet ben 2.0 til 2.6 (a, b, c, d, e, f), vil være TÆND og LED'er, der er tilsluttet 2,7 og 2,8 (g og h), vil være FRA, hvilket vil skabe et "0" i 7 segment. Så vi har brug for bitmønster 11000000 (Pin 8 er den højeste bit, så startende fra P2.7 til P2.0), og HEX-koden for binær 11000000 er "C0". På samme måde kan vi beregne for alle cifrene. Her skal vi bemærke, at vi holder "dot / h" altid FRA,så vi er nødt til at give LOGIK ”1” til det hver gang. En tabel er angivet nedenfor for alle numre, mens du bruger Common Anode 7-segmentet.
Ciffer, der skal vises |
hgfedcba |
Hex-kode |
0 |
11000000 |
C0 |
1 |
11111001 |
F9 |
2 |
10100100 |
A4 |
3 |
10110000 |
B0 |
4 |
10011001 |
99 |
5 |
10010010 |
92 |
6 |
10000010 |
82 |
7 |
11111000 |
F8 |
8 |
10000000 |
80 |
9 |
10010000 |
90 |
Kode Forklaring
Vi har oprettet ms_delay-funktion til at give forsinkelsen i millisekunder. Denne forsinkelse findes normalt i ethvert mikrokontrollerprogram, så mikrokontroller kan gennemføre sin interne drift.
Derefter har vi oprettet en matrix med hex-koder for 0 til 9 (se tabel ovenfor), og til sidst har vi sendt hex-koder til port 2, som er forbundet til fælles anode 7-segment. Så på denne måde vises tallene på displayet med 7 segmenter.
Nu har vi kun 4 porte i mikrocontroller, og hvad hvis vi vil vise dataene i mere end fire 7 segmenter ?? For at løse dette problem kommer Multiplexing- teknik ind i billedet. Vi skal multiplexere flere 7 segmentenheder. Læs også interface 7-segment display med AVR-mikrocontroller.