Zeven segmentdisplays zijn belangrijke display-eenheden in elektronica en worden veel gebruikt om getallen van 0 tot 9 weer te geven. Het kan ook een aantal lettertekens weergeven, zoals A, B, C, H, F, E enz. In deze tutorial gaan we leren hoe u een 7-segment-display koppelt aan een 8051 microcontroller. We gebruiken AT89S52-microcontroller uit de 8051-serie.
Voordat we een interface maken, moeten we meer te weten komen over 7-segmentweergave. Het is de eenvoudigste eenheid om cijfers en tekens weer te geven. Bestaat slechts 8 LEDs, elke LED gebruikt om een segment van eenheid branden en de 8 ste LED gebruikt DOT branden in 7-segment display. We kunnen elk segment een LIJN noemen, aangezien we kunnen zien dat er 7 regels in de eenheid zijn, die worden gebruikt om een cijfer / teken weer te geven. We kunnen naar elke regel / segment verwijzen naar "a, b, c, d, e, f, g" en voor punttekens gebruiken we "h". Er zijn 10 pinnen, waarbij 8 pinnen worden gebruikt om a, b, c, d, e, f, g en h / dp te verwijzen, de twee middelste pinnen zijn gemeenschappelijke anode / kathode van alle leds. Deze gemeenschappelijke anode / kathode is intern kortgesloten, dus we hoeven maar één COM-pin aan te sluiten.
Er zijn twee soorten displays met 7 segmenten: gemeenschappelijke anode en gemeenschappelijke kathode:
Gemeenschappelijke anode: hierin zijn alle negatieve aansluitingen (kathode) van alle 8 LED's met elkaar verbonden (zie onderstaande afbeelding), genaamd COM. En alle positieve terminals worden met rust gelaten.
Gemeenschappelijke kathode: hierin zijn alle positieve terminals (anodes) van alle 8 LED's met elkaar verbonden, genaamd COM. En alle negatieve thermiek wordt met rust gelaten.
Schakelschema en werkvergroting
Hier gebruiken we een algemeen anodetype van 7 segmenten omdat we LED's omgekeerd moeten aansluiten. Omdat we weten dat de microcontroller niet genoeg stroom levert om de LED te laten gloeien, moeten we de kathode van de LED aansluiten op de microcontrollerpen en de anode van de LED op de voeding. U kunt dit concept van negatieve logica begrijpen in dit artikel "LED-interface met 8051 Microcontroller". U moet dit artikel ook lezen om de basisverbinding van microcontrollers zoals kristal en resetschakelingen te begrijpen.
Zoals hierboven weergegeven, het schakelschema voor het koppelen van een 7-segmentendisplay met de 8051-microcontroller, we hebben a, b, c, d, e, f, g, h aangesloten op pinnen 2.0 tot 2.7 betekent dat we 7 segmenten verbinden met poort 2 van de microcontroller. Stel nu dat we 0 willen weergeven, dan moeten we alle LED's laten gloeien behalve LED die tot regel "g" behoort (zie diagram hierboven), dus pinnen 2.0 tot 2.6 moeten op 0 staan (zou 0 moeten zijn om de LED AAN te zetten zoals per negatieve logica) en pin 2.7 en 2.8 moeten op 1 staan (moet 1 zijn om de LED UIT te schakelen volgens de negatieve logica). Dus de LED's die zijn aangesloten op pinnen 2.0 tot 2.6 (a, b, c, d, e, f) zullen AAN zijn en LED's die zijn aangesloten op 2.7 en 2.8 (g en h) zullen UIT zijn, wat een "0" zal creëren in 7 segment. We hebben dus bitpatroon 11000000 nodig (pin 8 is het hoogste bit, dus beginnend bij P2.7 tot P2.0), en de HEX-code voor binair 11000000 is "C0". Op dezelfde manier kunnen we alle cijfers berekenen. Hier moeten we opmerken dat we "punt / h" altijd UIT houden,dus we moeten er elke keer LOGIC “1” aan geven. Hieronder is een tabel gegeven voor alle nummers tijdens het gebruik van het Common Anode 7-segment.
Cijfer voor weergave |
hgfedcba |
Hex-code |
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 |
Code Uitleg
We hebben de ms_delay-functie gemaakt om de vertraging in milliseconden te geven, deze vertraging wordt meestal geleverd in elk microcontrollerprogramma, zodat de microcontroller zijn interne werking kan voltooien.
Vervolgens hebben we een array van de hex-codes voor 0 tot 9 gemaakt (zie bovenstaande tabel), en als laatste hebben we de hex-codes naar poort 2 gestuurd, die is verbonden met het gemeenschappelijke anode 7-segment. Op deze manier worden de nummers weergegeven op het display met 7 segmenten.
Nu hebben we slechts 4 poorten in de microcontroller en wat als we de gegevens in meer dan vier 7 segmenten willen weergeven? Om dit probleem op te lossen, komt de multiplextechniek in beeld. We moeten meerdere eenheden van 7 segmenten multiplexen. Lees ook de interface van het 7-segmentendisplay met de AVR-microcontroller.