Dynamische indicatie. Korte theoretische informatie

Vandaag zullen we proberen niet één indicator van één cijfer op de microcontroller aan te sluiten, maar twee. Dat wil zeggen, laten we nog zo'n indicator aansluiten. Alleen als we het op precies dezelfde manier aansluiten als de eerste, zullen we bijna alle poten van de controllerpoorten gebruiken, wat ons project niet levensvatbaar zal maken.

Daarom zal een andere methode ons in dit geval te hulp komen: deze dynamische weergave.

Met dynamische weergave geven we op elk moment een getal weer op slechts één indicator. Dat wil zeggen dat we achtereenvolgens de cijfers weergeven die voor beide indicatoren bedoeld zijn. Maar we zullen ze één voor één weergeven met zo’n frequentie dat onze ogen het niet zullen opmerken. En het zal ons lijken dat de indicatoren constant werken, en niet op hun beurt. Hierdoor kunnen we segmenten van beide indicatoren, en vervolgens meer indicatoren, verbinden met dezelfde poortpinnen, dat wil zeggen parallel. Bij deze methode worden beide indicatoren direct achtereenvolgens voorzien, eerst met het nummer bedoeld voor de eerste indicator, en daarna met het nummer bedoeld voor de tweede. En zodat we niet tegelijkertijd twee cijfers op elke indicator zien, zullen we bij het weergeven van een nummer dat bedoeld is voor een specifieke indicator een positieve spanning aanleggen op de anode ervan, maar niet op de andere anode, maar deze verbinden met een gemeenschappelijke draad. Daarom zal, ongeacht de toestand van de kathodes, geen van de segmenten gloeien. Als er nul op het segment staat, is er helemaal geen potentiaalverschil, en als er wel een is, dan is er wel een potentiaalverschil, maar de stroom wordt de andere kant op gericht en de LED gaat niet branden. deze richting.

We zullen zoals gewoonlijk een nieuw project maken, waarbij we de code naar main.c kopiëren vanuit het bestand met dezelfde naam uit het vorige project. Laten we het project een naam geven Proef08.

Laten we eerst het circuit in Proteus samenstellen, zoals gewoonlijk het projectbestand uit de vorige les kopiëren en het pad verbinden met het nieuwe project in de controllereigenschappen. Eerst zullen we de knop opnieuw verbinden met een andere poortpoot. Waarom dit nodig is, zullen we later zien

Laten we voorlopig de gemeenschappelijke anode loskoppelen van de voeding en een andere indicator toevoegen die lijkt op degene die we al in het project hebben.

Om dit te doen, selecteert u het eenvoudigweg in het linkerpaneel; u hoeft het niet opnieuw toe te voegen vanuit de bibliotheek. Vervolgens verbinden we de kathodes van deze indicator met dezelfde kathodes van de eerste

De vrijgekomen anodes gaan we aansluiten op de poten van een andere poort. Maar we zullen niet rechtstreeks verbinding maken, maar via sleuteltransistors, want wanneer verschillende segmenten van de indicator tegelijkertijd branden, zal er te veel stroom door de poortpoot stromen die is verbonden met de anode van de indicator. De poort kan falen. Dit is voor ons totaal niet interessant. Daarom zullen we onze anodes via transistors verbinden met de benen B0 en B1. Daarom hebben we de knoop naar het andere been verplaatst. Bovendien hebben we het met een reserve verplaatst, omdat we vervolgens vier indicatoren zullen verbinden.

Laten we een transistor uit de bibliotheek toevoegen. We zullen het in de omgekeerde modus inschakelen, dus we kiezen de p-n-p-structuur

Laten we deze twee transistors op het circuit aansluiten en nog twee weerstanden van 2 kilo-ohm toevoegen om de basisstroom te beperken. We sluiten de emitters aan op de voeding en de collectoren op de anodes van de indicatoren (klik op de foto om de afbeelding te vergroten)

Ik zal ook het volledige schema van onze montage laten zien (klik op de foto om de afbeelding te vergroten)

In deze les leren we over de diagrammen voor het aansluiten van LED-indicatoren met zeven segmenten op microcontrollers en hoe we de indicatoren kunnen besturen.

LED-indicatoren met zeven segmenten blijven een van de meest populaire elementen voor het weergeven van digitale informatie.

Hun volgende kwaliteiten dragen hieraan bij.

  • Lage prijs. Qua weergave is er niets goedkoper dan digitale LED-indicatoren.
  • Verschillende maten. De kleinste en grootste indicatoren zijn LED. Ik ken LED-knipperlichten met cijferhoogtes van 2,5 mm tot 32 cm.
  • Gloed in het donker. In sommige toepassingen is deze eigenschap bijna doorslaggevend.
  • Ze hebben verschillende gloedkleuren. Er zijn zelfs tweekleurige exemplaren.
  • Vrij lage stuurstromen. Moderne LED-indicatoren kunnen zonder extra toetsen op de pinnen van microcontrollers worden aangesloten.
  • Geschikt voor zware bedrijfsomstandigheden (temperatuurbereik, hoge luchtvochtigheid, trillingen, agressieve omgevingen, enz.). Voor deze kwaliteit hebben LED-indicatoren geen gelijke onder andere soorten weergave-elementen.
  • Onbeperkte levensduur.

Soorten LED-indicatoren.

De uit zeven segmenten bestaande LED-indicator geeft een teken weer met behulp van zeven LED's: cijfersegmenten. De achtste LED verlicht de komma. Er zijn dus 8 segmenten in een indicator met zeven segmenten.

Segmenten worden aangeduid met Latijnse letters van “A” tot “H”.

De anodes of kathodes van elke LED zijn gecombineerd in de indicator en vormen een gemeenschappelijke draad. Daarom zijn er indicatoren met een gemeenschappelijke anode en een gemeenschappelijke kathode.

LED-indicator met gemeenschappelijke anode.

LED-indicator met gemeenschappelijke kathode.

Statische LED-besturing.

LED-indicatoren moeten via stroombegrenzende weerstanden op de microcontroller worden aangesloten.

De berekening van weerstanden is hetzelfde als voor individuele LED's.

R = (U aanbod - U-segment) / I-segment

Voor dit circuit: I-segment = (5 – 1,5) / 1000 = 3,5 mA

Moderne LED-indicatoren gloeien behoorlijk helder, zelfs bij een stroomsterkte van 1 mA. Bij een schakeling met een gemeenschappelijke anode zullen de segmenten oplichten, op de stuurpinnen waarvan de microcontroller een laag niveau zal genereren.

In het aansluitschema van een indicator met een gemeenschappelijke kathode verandert de polariteit van de voeding en stuursignalen.

Het segment gaat branden, bij de stuurpin wordt een hoog niveau (5 V) gegenereerd.

Multiplexmodus voor het aansturen van LED-indicatoren.

Er zijn acht pinnen nodig om elke indicator met zeven segmenten op de microcontroller aan te sluiten. Als er 3-4 indicatoren (cijfers) zijn, wordt de taak praktisch onmogelijk. Er zijn gewoon niet genoeg microcontroller-pinnen. In dit geval kunnen de indicatoren worden aangesloten in multiplexmodus, in dynamische indicatiemodus.

De bevindingen van de gelijknamige segmenten van elke indicator worden gecombineerd. Dit resulteert in een matrix van LED's die zijn verbonden tussen de segmentpinnen en de gemeenschappelijke indicatorpinnen. Hier is een circuit voor multiplexregeling van een driecijferige indicator met een gemeenschappelijke anode.

Om drie indicatoren aan te sluiten waren 11 pinnen nodig, en niet 24, zoals in de statische bedieningsmodus.

Bij dynamische weergave brandt er altijd slechts één cijfer. Een signaal op hoog niveau (5 V) wordt naar de gemeenschappelijke pin van een van de bits gestuurd, en signalen op laag niveau worden naar de segmentpinnen gestuurd voor die segmenten die in dit bit zouden moeten oplichten. Na een bepaalde tijd wordt de volgende ontlading aangestoken. Er wordt een hoog niveau toegepast op de gemeenschappelijke pin, en statussignalen voor dit bit worden naar de segmentpinnen gestuurd. En zo verder voor alle cijfers in een eindeloze lus. De cyclustijd wordt de indicatorregeneratietijd genoemd. Als de regeneratietijd kort genoeg is, zal het menselijk oog het wisselen van ontladingen niet opmerken. Het lijkt erop dat alle ontladingen constant gloeien. Om flikkeren van indicatoren te voorkomen, wordt aangenomen dat de frequentie van de regeneratiecyclus minimaal 70 Hz moet zijn. Ik probeer minimaal 100 Hz te gebruiken.

Het dynamische indicatiecircuit voor LED's met een gemeenschappelijke kathode ziet er als volgt uit.

De polariteit van alle signalen verandert. Nu wordt een laag niveau toegepast op de gemeenschappelijke draad van de actieve ontlading, en een hoog niveau op de segmenten die moeten oplichten.

Berekening van dynamische weergave-elementen van light-emitting diode (LED)-indicatoren.

De berekening is iets ingewikkelder dan voor de statische modus. Tijdens de berekening is het noodzakelijk om te bepalen:

  • gemiddelde stroom van segmenten;
  • pulsstroom van segmenten;
  • weerstand van segmentweerstand;
  • pulsstroom van de gemeenschappelijke aansluitingen van de ontladingen.

Omdat De indicatorcijfers lichten beurtelings op, de helderheid van de gloed bepaalt de gemiddelde stroomsterkte. We moeten het kiezen op basis van de indicatorparameters en de vereiste helderheid. De gemiddelde stroom bepaalt de helderheid van de indicator op een niveau dat overeenkomt met statische controle met dezelfde constante stroom.

Laten we een gemiddelde segmentstroom van 1 mA kiezen.

Laten we nu de pulsstroom van het segment berekenen. Om de vereiste gemiddelde stroom te leveren, moet de pulsstroom N keer groter zijn. Waarbij N het aantal indicatorcijfers is.

Ik segmenteer imp. = Ik segmenteer gem. *N

Voor ons schema segmenteer ik. imp. = 1 * 3 = 3mA.

We berekenen de weerstand van de weerstanden die de stroom beperken.

R = (U aanbod - U-segment) / I-segment. imp.

R = (5 – 1,5) / 0,003 = 1166 Ohm

We bepalen de pulsstromen van de gemeenschappelijke aansluitingen van de ontladingen. Er kunnen 8 segmenten tegelijkertijd oplichten, wat betekent dat u de pulsstroom van één segment met 8 moet vermenigvuldigen.

Ik categorie imp. = Ik segmenteer imp. * 8

Voor ons circuit I categorie imp. = 3 * 8 = 24mA.

  • De weerstandsweerstand is gekozen op 1,1 kOhm;
  • de pinnen van de moeten een stroomsterkte van minimaal 3 mA leveren;
  • de pinnen van de microcontroller voor het selecteren van het indicatiecijfer moeten een stroomsterkte van minimaal 24 mA leveren.

Met dergelijke stroomwaarden kan de indicator rechtstreeks op de pinnen van het Arduino-bord worden aangesloten, zonder gebruik te maken van extra sleutels. Voor heldere indicatoren zijn dergelijke stromen voldoende.

Regelingen met extra sleutels.

Als indicatoren meer stroom vereisen, is het noodzakelijk om extra toetsen te gebruiken, vooral voor cijferselectiesignalen. De totale ontlaadstroom is 8 keer de stroom van één segment.

Aansluitschema voor een LED-indicator met een gemeenschappelijke anode in multiplexmodus met transistorschakelaars voor het selecteren van ontladingen.

Om een ​​bit in dit circuit te selecteren, is het noodzakelijk om een ​​signaal met een laag niveau te genereren. De bijbehorende sleutel gaat open en levert stroom aan de indicatorontlading.

Aansluitschema voor een LED-indicator met een gemeenschappelijke kathode in multiplexmodus met transistorschakelaars voor het selecteren van ontladingen.

Om een ​​bit in dit circuit te selecteren, is het noodzakelijk om een ​​signaal op hoog niveau te genereren. De bijbehorende sleutel opent en sluit de gemeenschappelijke ontladingsterminal naar aarde.

Er kunnen circuits zijn waarin het nodig is om transistorschakelaars te gebruiken voor beide segmenten en gemeenschappelijke bitpinnen. Dergelijke schema's kunnen gemakkelijk worden gesynthetiseerd uit de vorige twee. Alle weergegeven circuits worden gebruikt wanneer de indicator wordt gevoed met een spanning die gelijk is aan de voeding van de microcontroller.

Toetsen voor indicatoren met verhoogde voedingsspanning.

Er zijn grote indicatoren waarbij elk segment uit meerdere in serie geschakelde LED's bestaat. Om dergelijke indicatoren van stroom te voorzien, is een bron met een spanning van meer dan 5 V vereist. De schakelaars moeten zorgen voor het schakelen van verhoogde spanning, bestuurd door signalen op microcontrollerniveau (meestal 5 V).

Het circuit van toetsen dat de indicatorsignalen met aarde verbindt, blijft ongewijzigd. En de stroomschakelaars moeten bijvoorbeeld volgens een ander schema worden gebouwd, zoals dit.

In dit circuit wordt de actieve bit geselecteerd door het hoge niveau van het stuursignaal.

Tussen de schakelindicatorcijfers moeten alle segmenten gedurende een korte tijd (1-5 μs) worden uitgeschakeld. Deze tijd is nodig om de tijdelijke processen van het wisselen van sleutels te voltooien.

Structureel kunnen de ontladingspinnen worden gecombineerd in één geval van een meercijferige indicator, of een meercijferige indicator kan worden samengesteld uit afzonderlijke eencijferige indicatoren. Bovendien kunt u een indicator samenstellen uit individuele LED's gecombineerd in segmenten. Dit wordt meestal gedaan als het nodig is een zeer grote indicator te monteren. Alle bovenstaande schema's zijn geldig voor dergelijke opties.

In de volgende les zullen we een LED-indicator met zeven segmenten aansluiten op het Arduino-bord en een bibliotheek schrijven om deze te besturen.

Categorie: . U kunt er een bladwijzer van maken.

In een van de vorige lessen hebben we geleerd hoe we LED-segmenten kunnen verlichten. Hoewel dit alleen mogelijk is met Arduino, hebben we in onze tutorial een extra component gebruikt: . Dit nuttige IC heeft ons een aantal waardevolle microcontrollerpinnen bespaard. Maar één indicator met zeven segmenten is vrijwel nutteloos. Er wordt slechts één nummer weergegeven. Wat als we een groot getal willen uitvoeren, bijvoorbeeld van 0 tot 500? We hebben maar liefst drie cijfers nodig, en dus drie indicatoren. Hoe gaan we ze verbinden met de controller? Dat kan direct, maar dan nemen we 7*3 = 21 uitgangen! Het is erg verspillend. Bovendien heb je een ander bord nodig, omdat de Arduino Uno simpelweg niet over voldoende digitale pinnen beschikt. Laten we proberen een schuifregister te gebruiken? Al beter. Nu hebben we drie registers nodig die in een keten zijn verbonden, evenals drie Arduino-pinnen om ze te besturen. Over het algemeen zouden we hier kunnen stoppen met de optimalisatie van ons schema, maar we gaan verder. Met slechts één ploegenregister komen we wel rond!

Dynamische weergave

Zoals u weet heeft onze visie de eigenschap van traagheid of volharding. Dit is het vermogen van het oog om snel veranderende beelden tot één beeld te combineren. Om iemand een driecijferig nummer op de indicator te laten zien, is het dus helemaal niet nodig om alle cijfers tegelijk op te lichten. Het is voldoende om slechts één afzonderlijke indicator tegelijk in te schakelen. Om een ​​persistentie-effect te verkrijgen moet er met grote frequentie worden gewisseld tussen aangrenzende indicatoren. Deze benadering van gegevensuitvoer wordt dynamische weergave genoemd. In feite werken veel karakter- en matrix-LED- en HID-indicatoren precies volgens dit principe. Laten we proberen een dynamisch displaycircuit samen te stellen om drie indicatoren met zeven segmenten te besturen.

Verbinding maken met Arduino

In deze tutorial gebruiken we drie zevensegmentindicatoren met een gemeenschappelijke kathode. We hebben ook één schuifregister nodig dat tegelijkertijd op alle indicatoren is aangesloten. Om slechts één indicator tegelijk aan te zetten, gebruiken we drie veldeffecttransistors, die de kathode op het juiste moment met aarde verbinden. Overigens is het beter om in plaats van drie afzonderlijke indicatoren één driecijferige indicator te gebruiken. Dit zal de essentie van het circuit niet veranderen, maar er zullen minder draden zijn! Schematisch diagram
Lay-out uiterlijk
Wij adviseren het gebruik van transistors in een TO92-pakket, bijvoorbeeld 2N7000, als elektronische sleutels. Om elke transistor aan te sluiten heb je twee weerstanden nodig: 100-150 Ohm en 2,2-10 kOhm. De eerste weerstand is ontworpen om de controlleruitgang te beschermen tegen stroompieken die bij de poort optreden tijdens het creëren van velden. De tweede weerstand zal helpen om de schakelaar snel uit te schakelen wanneer we een laag niveau toepassen op de overeenkomstige uitgang van de controller (hierdoor zal de restlading van de poort naar de grond wegvloeien). Op elke lijn van het register naar de indicator is een stroominstelweerstand van 200-300 Ohm vereist, zodat de LED's in de indicator niet doorbranden. We hebben deze nuance van het werken met LED's besproken. We stellen het diagram zorgvuldig samen en gaan verder met het programma. Programma voor dynamische weergave const byte digit_pins = (5,6,7); const-byte data_pin = 2; const-byte sh_pin = 4; const-byte st_pin = 3; niet-ondertekende lange tm, next_flick; const niet-ondertekend int to_flick = 1; bytecijfer = 0; niet-ondertekende int-teller = 125; const byte cijfers = (B11101110, B10000010, B11011100, B11010110, B10110010, B01110110, B01111110, B11000010, B11111110, B11110110); leegte opvullen(byte d)( for(char i=0; i<8; i++){ digitalWrite(sh_pin, LOW); digitalWrite(data_pin, digits[d] & (1<next_flick)( next_flick = tm + to_flick; digit++; if(digit == 3) digit = 0; setDigit(digit, counter); ) ) Onderdeel van dit programma, inclusief variabelen gegevens_pin, sh_pin, st_pin en functie vullen al bij ons bekend van. Array cijfers slaat tien combinaties van segmenten op voor de cijfers 0 tot en met 9. Om geheugen te besparen, slaan we elke combinatie op in één byte, en voor een beter begrip hebben we ze in binaire vorm geschreven. Om van indicator te wisselen zullen we gebruiken . Elke milliseconde vullen we het register met de gewenste combinatie en zetten we de bijbehorende indicator aan. Hiervoor gebruiken we de functie setCijfer. Argument cijfer is de index van de indicator die momenteel is ingeschakeld, en balie- een driecijferig nummer dat we willen benadrukken. Parameter naar_vegen is verantwoordelijk voor de indicatoromschakelperiode. Het is gelijk aan 1, wat betekent dat de weergegeven cijfers elke milliseconde veranderen. Wat als we deze parameter verhogen? Laten we zeggen tot 100 ms, of zelfs tot 500 ms. Het effect van visuele traagheid zal verdwijnen en we zullen een verandering in de aantallen gaan opmerken. Tellerprogramma met dynamische weergave In het vorige voorbeeld de variabele balie standaard het nummer 125 opgeslagen. Laten we nu proberen een secondenteller aan het programma toe te voegen, zodat balie elke seconde met één verhoogd, tot het getal 999. const byte digit_pins = (5,6,7); const-byte data_pin = 2; const-byte sh_pin = 4; const-byte st_pin = 3; niet-ondertekende lange tm, next_sec, next_flick; const unsigned int to_sec = 1000; const niet-ondertekend int to_flick = 1; niet-ondertekende int-teller = 0; bytecijfer = 0; const byte cijfers = (B11101110, B10000010, B11011100, B11010110, B10110010, B01110110, B01111110, B11000010, B11111110, B11110110); leegte opvullen(byte d)( for(char i=0; i<8; i++){ digitalWrite(sh_pin, LOW); digitalWrite(data_pin, digits[d] & (1<volgende_sec)( volgende_sec = tm + tot_sec; teller++; if(teller == 1000) teller = 0; ) tm = millis();

if(tm > next_flick)( next_flick = tm + to_flick; digit++; if(digit == 3) digit = 0; setDigit(digit, counter); ) ) Laad het programma op Arduino en zie hoe de teller werkt!

  1. Zoektochten
  2. Digitale stopwatch. Monteer een circuit met een driecijferige indicator. Voeg toe aan diagram. Wanneer u op de knop drukt, moet de stopwatch beginnen met tellen. Wanneer u nogmaals drukt, stopt u. Bovendien kunt u een fractioneel deel aan de stopwatch toevoegen, weergegeven op de derde indicator via een punt.

Digitale voltmeter voor spanningen van 0 tot 10 Volt. Monteer een circuit met een driecijferige indicator. Voeg een spanningsdeler van twee weerstanden van 10 kOhm toe aan de schakeling, aangesloten op de analoge ingang van de Arduino. Schrijf een programma dat elke 100 ms de waarde aan de analoge ingang uitleest, omzet naar volt en op de indicator weergeeft. Om het fractionele deel correct weer te geven, moet u het achtste segment verbinden: een punt.

Conclusie


In feite is dynamische weergave niet zo ingewikkeld. Aan ons oude circuit met register zijn slechts drie transistors toegevoegd, die worden bestuurd door begrijpelijke logica. In de volgende lessen zullen we proberen dynamische indicatie te gebruiken om de LED-matrix te besturen, en ook leren werken met een gespecialiseerde microschakeling die ons programma aanzienlijk zal vereenvoudigen.
Aansluitschema voor een ééncijferige zevensegmentindicator

Aansluitschema voor een meercijferige zevensegmentindicator

Digitaal informatieweergaveapparaat. Dit is de eenvoudigste implementatie van een indicator die Arabische cijfers kan weergeven. Complexere multi-segment- en matrixindicatoren worden gebruikt om letters weer te geven.
De segmenten worden aangeduid met de letters A tot en met G; achtste segment - decimaalpunt (decimale punt, DP), ontworpen om fractionele getallen weer te geven.
Af en toe worden letters weergegeven op de uit zeven segmenten bestaande indicator.

Ze zijn verkrijgbaar in verschillende kleuren, meestal wit, rood, groen, geel en blauw. Bovendien kunnen ze verschillende afmetingen hebben.

Ook kan de LED-indicator uit één cijfer bestaan ​​(zoals in de afbeelding hierboven) of uit meerdere cijfers bestaan. In principe worden in de praktijk één-, twee-, drie- en viercijferige LED-indicatoren gebruikt:

Naast tien cijfers kunnen indicatoren met zeven segmenten ook letters weergeven. Maar weinig letters hebben een intuïtieve weergave van zeven segmenten.
In het Latijn: hoofdletter A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, kleine letters a, b, c, d, e, g , h, ik, n, o, q, r, t, u.
In Cyrillisch: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (twee cijfers), b, E/Z.
Daarom worden indicatoren met zeven segmenten alleen gebruikt om eenvoudige berichten weer te geven.

In totaal kan de uit zeven segmenten bestaande LED-indicator 128 tekens weergeven:

Een typische LED-indicator heeft negen aansluitingen: één gaat naar de kathodes van alle segmenten en de andere acht gaan naar de anode van elk segment. Dit schema heet "gemeenschappelijk kathodecircuit", er zijn ook regelingen met gemeenschappelijke anode(dan is het andersom). Vaak worden er niet één, maar twee gemeenschappelijke aansluitingen gemaakt aan verschillende uiteinden van de basis - dit vereenvoudigt de bedrading zonder de afmetingen te vergroten. Er zijn ook zogenaamde 'universele', maar die ben ik persoonlijk niet tegengekomen. Daarnaast zijn er indicatoren met een ingebouwd schuifregister, waardoor het aantal betrokken microcontrollerpoortpinnen aanzienlijk wordt verminderd, maar deze zijn veel duurder en worden in de praktijk zelden gebruikt. En omdat de onmetelijkheid niet te vatten is, zullen we dergelijke indicatoren voorlopig niet in overweging nemen (maar er zijn ook indicatoren met een veel groter aantal segmenten, matrix-segmenten).

Meercijferige LED-indicatoren werken vaak volgens een dynamisch principe: de uitgangen van de segmenten met dezelfde naam van alle cijfers zijn met elkaar verbonden. Om informatie over een dergelijke indicator weer te geven, moet de besturingsmicroschakeling cyclisch stroom leveren aan de gemeenschappelijke aansluitingen van alle cijfers, terwijl stroom wordt geleverd aan de segmentaansluitingen, afhankelijk van of een bepaald segment in een bepaald cijfer verlicht is.

Een ééncijferige indicator met zeven segmenten aansluiten op een microcontroller

Het onderstaande diagram laat zien hoe er is een eencijferige indicator met zeven segmenten aangesloten naar de microcontroller.
Er moet rekening mee worden gehouden dat als de indicator met GEMEENSCHAPPELIJKE KATHODE, waarna de gemeenschappelijke uitgang wordt aangesloten "aarde", en de segmenten worden ontstoken door te voeren logische eenheid naar de poortuitgang.
Als de indicator dat is GEMEENSCHAPPELIJKE ANODE, vervolgens wordt het aan de gemeenschappelijke draad geleverd "plus" spanning, en de segmenten worden ontstoken door de poortuitgang naar de status te schakelen logische nul.

Indicatie in een LED-indicator met één cijfer wordt uitgevoerd door een binaire code toe te passen op de pinnen van de microcontrollerpoort van het overeenkomstige cijfer van het overeenkomstige logische niveau (voor indicatoren met OK - logische, voor indicatoren met OA - logische nullen).

Stroombegrenzende weerstanden kan wel of niet aanwezig zijn in het diagram. Het hangt allemaal af van de voedingsspanning die aan de indicator wordt geleverd en de technische kenmerken van de indicatoren. Als de aan de segmenten geleverde spanning bijvoorbeeld 5 volt is en ze zijn ontworpen voor een bedrijfsspanning van 2 volt, dan moeten stroombegrenzende weerstanden worden geïnstalleerd (om de stroom er doorheen te beperken voor een verhoogde voedingsspanning en niet te verbranden niet alleen de indicator, maar ook de microcontrollerpoort).
Het is heel eenvoudig om de waarde van stroombegrenzende weerstanden te berekenen met behulp van de formule van grootvader Ohm.
De kenmerken van de indicator zijn bijvoorbeeld als volgt (overgenomen uit het gegevensblad):
— bedrijfsspanning — 2 volt
— bedrijfsstroom — 10 mA (=0,01 A)
— voedingsspanning 5 volt
Formule voor berekening:
R= U/I (alle waarden in deze formule moeten in Ohm, Volt en Ampère zijn)
R= (voedingsspanning - bedrijfsspanning)/bedrijfsstroom
R= (5-2)/0,01 = 300 Ohm

Aansluitschema voor een meercijferige LED-indicator met zeven segmenten In principe hetzelfde als bij het aansluiten van een eencijferige indicator. Het enige is dat er stuurtransistors worden toegevoegd in de kathodes (anodes) van de indicatoren:

Het is niet in het diagram weergegeven, maar tussen de bases van de transistors en de pinnen van de microcontrollerpoort moeten weerstanden worden opgenomen, waarvan de weerstand afhangt van het type transistor (de weerstandswaarden worden berekend, maar je kunt ook proberen weerstanden te gebruiken met een nominale waarde van 5-10 kOhm).

Indicatie door lozingen gebeurt dynamisch:
— de binaire code van het overeenkomstige cijfer wordt ingesteld op de uitgangen van de PB-poort voor het eerste cijfer, waarna het logische niveau wordt toegepast op de stuurtransistor van het eerste cijfer
— de binaire code van het overeenkomstige cijfer wordt ingesteld op de uitgangen van de PB-poort voor het tweede cijfer, waarna het logische niveau wordt toegepast op de stuurtransistor van het tweede cijfer
— de binaire code van het overeenkomstige cijfer wordt ingesteld op de uitgangen van de PB-poort voor het derde cijfer, waarna het logische niveau wordt toegepast op de stuurtransistor van het derde cijfer
- dus in een cirkel
In dit geval is het noodzakelijk om rekening te houden met:
— voor indicatoren met OK Er wordt gebruik gemaakt van een regeltransistorstructuur NPN(bestuurd door logische eenheid)
- voor indicator met OA- structuurtransistor PNP(bestuurd door logische nul)

Praktijkwerk nr. 2

Onderwerp: Ontwikkeling van een dynamisch weergavecircuit.

Doel: Praktische vaardigheden verwerven bij het ontwerpen van weergave-elementen voor digitale apparaten.

Oefening: Ontwikkel een elektrisch schakelschema van een digitaal LED-display met zeven segmenten op basis van een microcontroller in overeenstemming met de technische specificaties.

Korte theoretische informatie

Om digitale en symbolische informatie in embedded systemen weer te geven, worden zeven-segment- en matrixindicatoren gebruikt. Indicatoren met zeven segmenten zijn verkrijgbaar in vloeibare kristallen en LED-types.

De uit zeven segmenten bestaande LED-indicator bestaat uit acht LED's met aangesloten kathodes of anodes. De segmenten worden aangeduid met de letters A,B,C,D,E,F,G,H, zoals weergegeven in Figuur 1.

Figuur 1

Het segment gloeit wanneer een positieve spanning wordt aangelegd op de gemeenschappelijke aansluiting en een nulspanning op de kathode.

Er zijn twee manieren om een ​​interface met een display te organiseren: statisch en dynamisch. Het nadeel van de eerste is de behoefte aan een groot aantal controlelijnen (het aantal cijfers van de microcontrollerpoorten) - 8 voor elke indicator.

De dynamische weergavemethode vereist een aantal cijfers dat gelijk is aan de som van het aantal segmenten en het aantal cijfers.

De dynamische methode is gepulseerd en is gebaseerd op het feit dat als de “flikkering” wordt geproduceerd met een frequentie van 50 Hz of meer, de gloed voor een persoon constant lijkt. Deze methode vereist minimale hardwarekosten; dynamische weergaveverwerking, inclusief codeconversie, gebeurt in software.

In een dynamisch display zijn de gelijknamige segmenten van alle indicatoren parallel verbonden, waardoor een segmentbus wordt gevormd, en de gemeenschappelijke anodes van de indicatoren vormen een indicatorselectiebus. Er zijn dus aanzienlijk minder lijnen nodig dan bij de statische methode.

Weergaveverwerking bestaat uit het opeenvolgend uitgeven van segmenten van positionele karaktercodes van zeven segmenten aan de bus en het synchroon inschakelen (selecteren) van indicatoren.

Het diagram van een viercijferige dynamische indicator wordt getoond in Figuur 3. De segmentbus is verbonden met poort C van de microcontroller en de vier minst significante bits van poort D zijn de bits voor het selecteren van indicatorbits.

Uiteraard moet de indicator door het programma worden verwerkt. Het programma voert naar poort C een tekencode uit zeven segmenten uit voor het rechter (lage) bit van de indicator, en stelt het PC0-bit in op nul. Het lage cijfer van de indicator gaat branden (het nulniveau opent transistor VT3).

Het signaal op één selectielijn is dus een pulsreeks met een werkcyclus gelijk aan het aantal indicatoren.

Bij een flikkerfrequentie van 50 Hz bedraagt ​​de pulsperiode 20 ms.

Figuur 2

Figuur 3 – Elektrisch circuit van dynamische indicatie

Figuur 2 toont de timingdiagrammen van de selectiesignalen voor een viercijferige weergave. De gloeitijd van één indicator is 5 ms.

Omdat het menselijk oog de intensiteit van gepulseerd licht ‘middelt’, moet om een ​​normale helderheid te verkrijgen de amplitude van de stroom die door de segmenten vloeit groter zijn dan bij een statische indicatie. Het kenmerk van de afhankelijkheid van de lichtintensiteit van de stroomsterkte is niet-lineair.

De amplitude van de stroompuls in het indicatorselectiecircuit moet 8 keer (afhankelijk van het aantal segmenten) groter zijn dan de amplitude van de stroom in het segment.

In afb. Figuur 2 toont een diagram van een dynamisch viercijferig display gemaakt op digitale indicatoren met zeven segmenten.

De SA-SH-segmentbus wordt gevormd door de pinnen van poort P2 van de microcontroller, en de vier minst significante cijfers van poort P1 vormen de indicatorselectiebus (SELI-SEL4). De weergave wordt als volgt door de softwaremodule verwerkt. De zevensegmentcode van het rechter indicatorsymbool (HG4) wordt in poort P2 geladen. Versterkt door element DD2, wordt deze stroom geleverd aan de bus van segmenten a, b, c... Vervolgens wordt de code voor het selecteren (inschakelen) van de HG4-indicator geladen in de lage tetrad van poort P1: SEL1=0, SEL2 - SEL4=1 (hexadecimale waarde E). De logische nulstroom, versterkt door element DD2, vloeit door draad 11 via weerstand R7 en opent transistor VT4. De overige transistors zijn uitgeschakeld. De +5V voedingsspanning wordt via een open transistor aan de gemeenschappelijke anode van de HG4-indicator geleverd, waardoor het symbool wordt weergegeven. Deze toestand blijft 5 ms aanhouden. Aan het einde van dit tijdsinterval geeft de MK een hoog niveau af aan de ontlading van de SEL1-poort, de transistor VT4 sluit en de VT3-schakelaar en het symbool in deze ontlading worden weergegeven en de ontlading stopt met gloeien. Vervolgens wordt een uit zeven segmenten bestaande code van het HG3-indicatorsymbool naar poort P2 gestuurd, en wordt bit P1.1 op een laag niveau gezet. Hierdoor wordt het display enz. ingeschakeld.

Het tijdsinterval dat overeenkomt met de tijd van het indicatielampje kan worden gebruikt om de objectbesturingsfunctie te implementeren.

De conversie van de binaire code van de uitgangsgegevens naar een indicatorcode met zeven segmenten wordt programmatisch uitgevoerd met behulp van een array van codes met zeven segmenten. De elementen van de array zijn tekencodes met zeven segmenten. Volgens het diagram bevindt het segment zich in de aan-status als er een laag spanningsniveau op wordt toegepast. De inhoud van Tabel 2 is op deze overweging gebaseerd.

Tabel 2 - Codes met zeven segmenten

Gegevensbyte A B C D E F G H HEX - tekencode
$ 9F
$25
$D
$99
$49
$41
$ 1F

Oefening

1. Ontwikkel een elektrisch schakelschema van een dynamisch digitaal display met zeven segmenten.

2. Maak een tekening van het elektrische schakelschema in overeenstemming met GOST ESKD.

3. Motiveer de keuze van circuitoplossingen.

4. De initiële gegevens voor het ontwerp zijn weergegeven in tabel 2. Gebruik schuifregisterchips om de capaciteit van de parallelle I/O-poorten van de microcontroller uit te breiden. Om de indicatorselectieregels te beheren, gebruikt u een binaire decimale indicator. Gebruik transistorschakelaars om de indicatiecijferselectiesignalen te versterken.

Tabel 2 - Initiële gegevens

Optie nr. Type microcontroller Indicatortype Aantal segmenten
ATmega8 BL-S56A-11
ATmega16 BC56-11SRWA
ATtiny13 BL-D56A-21
ATtiny2313 BL-S56B-11
ATmega8 BA56-11GWA
ATmega16 BL-D56B-21
ATtiny13 BL-D56A-21
ATtiny2313 BL-D56A-21
ATmega16 BL-S56B-11
ATtiny13 BL-D56B-21