4-siffrig indikator Arduino-anslutning. Sjusegmentsindikator. Utdata till indikatorer för bråktal, flytformat

Det finns parametrar för vilka det skulle vara bekvämare att tillhandahålla objektiv information snarare än bara en indikation. Till exempel lufttemperaturen ute eller tiden på väckarklockan. Ja, allt detta skulle kunna göras med glödande lampor eller lysdioder. En grad – en brinnande LED eller glödlampa, etc. Men att räkna dessa eldflugor - ja, nej! Men, som de säger, mest enkla lösningar- den mest pålitliga. Därför, utan att tänka länge, tog utvecklarna enkla LED-remsor och ordnade dem i rätt ordning.

I början av nittonhundratalet med tillkomsten vakuumrör de första gasutsläppsindikatorerna dök upp

Med hjälp av sådana indikatorer var det möjligt att härleda digital information i arabiska siffror. Tidigare var det på sådana lampor som olika indikationer gjordes för enheter och annat elektroniska apparater. För närvarande används gasurladdningselement nästan aldrig någonstans. Men retro är alltid på modet, därför samlar många radioamatörer underbara klockor på gasurladdningsindikatorer för sig själva och sina nära och kära.


Nackdelen med gasurladdningslampor är att de förbrukar mycket el. Man kan argumentera om hållbarhet. På vårt universitet använder vi fortfarande frekvensräknare i våra laboratorielokaler. gasutsläppsindikatorer.

Sjusegmentindikatorer

Med tillkomsten av lysdioder har situationen förändrats dramatiskt till det bättre. LED själva förbrukar liten ström. Om du placerar dem i rätt position kan du visa absolut vilken information som helst. För att markera alla arabiska siffror räcker det med endast sju lysande LED-remsor - segment, inställda på ett visst sätt:

Till nästan alla sådana sjusegmentsindikatorer läggs också ett åttonde segment - en punkt, så att det är möjligt att visa heltal och bråkvärde för vilken parameter som helst

I teorin får vi en åttasegmentsindikator, men på gammaldags vis kallas den även för en sjusegmentsindikator.

Vad är resultatet? Varje remsa på sjusegmentsindikatorn är upplyst av en lysdiod eller grupp av lysdioder. Som ett resultat, genom att markera vissa segment, kan vi visa siffror från 0 till 9, såväl som bokstäver och symboler.

Typer och beteckning på diagrammet

Det finns ensiffriga, tvåsiffriga, tresiffriga och fyrsiffriga sjusegmentsindikatorer. Jag har aldrig sett mer än fyra kategorier.

I diagrammen ser sjusegmentsindikatorn ut ungefär så här:

Faktum är att, förutom huvudterminalerna, har varje sjusegmentsindikator också en gemensam terminal med en gemensam anod (OA) eller en gemensam katod (OC)

Den interna kretsen för en sjusegmentsindikator med en gemensam anod kommer att se ut så här:


och med en gemensam katod så här:


Om vi ​​har en sjusegmentsindikator med en gemensam anod (OA), måste vi i kretsen leverera "plus" ström till detta stift, och om med en gemensam katod (OC), då "minus" eller jord.

Hur man kontrollerar en sjusegmentsindikator

Vi har följande indikatorer:


För att kontrollera en modern sjusegmentsindikator behöver vi bara en multimeter med en diodtestfunktion. Till att börja med letar vi efter en generell slutsats – det kan vara antingen OA eller OK. Här bara på måfå. Tja, då kontrollerar vi prestandan för de återstående segmenten av indikatorn enligt diagrammen ovan.

Som du kan se på bilden nedan lyser segmentet som testas. Vi kontrollerar andra segment på samma sätt. Om alla segment är tända är en sådan indikator intakt och kan användas i din utveckling.


Ibland räcker inte spänningen på multimetern för att testa ett segment. Därför tar vi en strömförsörjning och ställer in den på 5 Volt. För att begränsa strömmen genom segmentet kontrollerar vi genom ett 1-2 Kilo-Ohm motstånd.


På samma sätt kontrollerar vi indikatorn från den kinesiska mottagaren


I kretsarna är sjusegmentsindikatorer anslutna till resistorer vid varje stift

I vår modern värld sjusegmentsindikatorer ersätts av flytande kristallindikatorer som kan visa absolut all information

men för att använda dem behöver du vissa färdigheter i kretsdesignen av sådana enheter. Därför används indikatorer med sju segment fortfarande idag, på grund av deras låga kostnad och användarvänlighet.

LED-indikatorer med sju segment är mycket populära bland digitala värdedisplayenheter och används i mikrovågsugnarnas frontpaneler, tvättmaskiner, digitala klockor, räknare, timers, etc. Jämfört med LCD-indikatorer lyser LED-indikatorsegment starkt och är synliga över långa avstånd och i en bred betraktningsvinkel. För att ansluta en sjusegments 4-bitarsindikator till en mikrokontroller krävs minst 12 I/O-linjer. Därför är det nästan omöjligt att använda dessa indikatorer med mikrokontroller med ett litet antal stift, till exempel serier från företaget. Självklart kan du använda olika metoder multiplexering (en beskrivning av vilken finns på webbplatsen i avsnittet "Schema"), men även i det här fallet finns det vissa begränsningar för varje metod, och de använder ofta komplexa mjukvarualgoritmer.

Vi kommer att titta på metoden för att ansluta en indikator via SPI-gränssnittet, som endast kräver 3 I/O-linjer från mikrokontrollern. Samtidigt kommer kontrollen över alla indikatorsegment att finnas kvar.

För att ansluta en 4-bitars indikator till en mikrokontroller via SPI-bussen används ett specialiserat drivrutinchip som produceras av företaget. Mikrokretsen kan driva åtta sjusegmentsindikatorer med en gemensam katod och inkluderar en BCD-avkodare, segmentdrivrutiner, en multiplexeringskrets och statiskt RAM-minne för lagring av siffervärden.

Strömmen genom indikatorsegmenten ställs in med endast ett externt motstånd. Dessutom stöder chippet kontroll av indikatorljusstyrka (16 ljusstyrkanivåer) med inbyggd PWM.

Kretsen som diskuteras i artikeln är en displaymodulkrets med ett SPI-gränssnitt som kan användas i amatörradiodesigner. Och vi är mer intresserade inte av själva kretsen, utan av att arbeta med mikrokretsen via SPI-gränssnittet. +5 V-modulens ström tillförs Vcc-stiftet, signallinjer MOSI, CLK och CS är designade för kommunikation mellan en masterenhet (mikrokontroller) och en slavenhet (MAX7219-chip).

Mikrokretsen används i en standardanslutning, de enda externa komponenter som behövs är ett motstånd som ställer in strömmen genom segmenten, en skyddsdiod för strömförsörjningen och en filterkondensator för strömförsörjningen.

Data överförs till chippet i 16-bitars paket (två byte), som placeras i det inbyggda 16-bitars skiftregistret på varje stigande flank av CLK-signalen. Vi betecknar ett 16-bitars paket som D0-D15, där bitarna D0-D7 innehåller data, D8-D11 innehåller registeradressen, bitarna D12-D15 har ingen betydelse. Bit D15 är den mest signifikanta biten och är den första biten som tas emot. Även om chippet kan styra åtta indikatorer, kommer vi att överväga att arbeta med endast fyra. De styrs av utgångarna DIG0 - DIG3, placerade i sekvens från höger till vänster, de 4-bitars adresser (D8-D11) som motsvarar dem är 0x01, 0x02, 0x03 och 0x04 (hexadecimalt format). Sifferregistret implementeras med hjälp av on-chip RAM med en 8x8 organisation och är direkt adresserbart så att varje enskild siffra på displayen kan uppdateras när som helst. Följande tabell visar adresserbara siffror och kontrollregister för MAX7219-chippet.

Registrera

Adress

HEX-värde

Ingen operation

Avkodningsläge

Antal indikatorer

Stänga av

Indikatortest

Kontrollregister

MAX1792-chippet har 5 kontrollregister: avkodningsläge (Decode-Mode), indikatorljusstyrka (Intensity), register över antalet anslutna indikatorer (Scan Limit), på/av-kontroll (Shutdown), testläge (Display Test).

Slå på och av chippet

När ström tillförs chippet återställs alla register och det går in i avstängningsläge. I detta läge stängs displayen av. För att växla till normalt driftläge måste bit D0 i Shutdown-registret (adress 0Сh) ställas in. Denna bit kan rensas när som helst för att tvinga föraren att stänga av, vilket lämnar innehållet i alla register oförändrat. Detta läge kan användas för att spara energi eller i larmläge genom att blinka indikatorn (sekventiell aktivering och avaktivering av avstängningsläge).

Mikrokretsen växlas till avstängningsläge genom att sekventiellt överföra adressen (0Сh) och data (00h), och överföring av 0Ch (adress) och sedan 01h (data) återgår till normal drift.

Avkodningsläge

Med hjälp av valregistret för avkodningsläge (adress 09h) kan du använda BCD-kod B-avkodning (visa tecknen 0-9, E, H, L, P, -) eller utan avkodning för varje siffra. Varje bit i registret motsvarar en siffra, inställning av en logisk motsvarar att slå på avkodaren för denna bit, inställning 0 betyder att avkodaren är inaktiverad. Om en BCD-avkodare används, tas endast den lägsta biten av data i sifferregistren (D3-D0) med i beräkningen, bitarna D4-D6 ignoreras, bit D7 är inte beroende av BCD-avkodaren och ansvarar för att slå på decimaltecknet på indikatorn om D7 = 1. Till exempel, när byte 02h och 05h skickas i följd, kommer DIG1-indikatorn (andra siffran från höger) att visa siffran 5. På liknande sätt, när du skickar 01h och 89h, kommer DIG0-indikatorn att visa siffran 9 med decimaltecknet inkluderat . Tabellen nedan visar full lista tecken som visas när du använder chipets BCD-avkodare.

Symbol

Data i register

Aktiverade segment = 1

Tömma

*Decimaltecknet sätts av bit D7=1

När BCD-avkodaren är utesluten från drift, motsvarar databitarna D7-DO segmentlinjerna (A-G och DP) för indikatorn.

Kontroll av indikatorljusstyrka

Chipet låter dig programmera styra ljusstyrkan på indikatorerna med hjälp av den inbyggda PWM. PWM-utgången styrs av lågordningens nibble (D3-D0) i intensitetsregistret (adress 0Ah), som låter dig ställa in en av 16 ljusstyrkenivåer. När alla bitar av en nibble är inställda på 1, väljs indikatorns maximala ljusstyrka.

Antal anslutna indikatorer

Scan-Limit-registret (adress 0Bh) ställer in värdet på antalet bitar som betjänas av mikrokretsen (1 ... 8). För vår 4-bitarsversion bör värdet 03h skrivas till registret.

Indikatortest

Det register som ansvarar för detta läge finns på adressen 0Fh. Genom att ställa in D0-biten i registret slår användaren på alla indikatorsegment, medan innehållet i kontroll- och dataregistren inte ändras. För att inaktivera Display-Test-läget måste bit D0 vara 0.

Gränssnitt med mikrokontroller

Indikatormodulen kan anslutas till vilken mikrokontroller som helst som har tre fria I/O-linjer. Om mikrokontrollern har en inbyggd SPI-hårdvarumodul kan indikatormodulen anslutas som en slavenhet på bussen. I detta fall kan SPI-signallinjerna SDO (seriell data ut), SCLK (seriell klocka) och SS (slavval) på mikrokontrollern anslutas direkt till MOSI-, CLK- och CS-stiften på MAX7219-chippet (modulen), CS-signalen är aktiv låg.

Om mikrokontrollern inte har hårdvaru-SPI kan gränssnittet organiseras i mjukvara. Kommunikation med MAX7219 börjar genom att dra och hålla CS-linjen lågt, och sedan skicka 16 bitar data sekventiellt (MSB först) på MOSI-linjen på den stigande kanten av CLK-signalen. När överföringen är klar går CS-linjen högt igen.

I nedladdningssektionen kan användare ladda ner källtexten för testprogrammet och HEX-filen för den fasta programvaran, som implementerar en konventionell 4-bitarsräknare med visning av värden på en indikatormodul med ett SPI-gränssnitt. Mikrokontrollern som används är ett gränssnitt implementerat i mjukvara, signallinjerna CS, MOSI och CLK för indikatormodulen är anslutna till portarna GP0, GP1 respektive GP2. MikroC-kompilatorn används för PIC mikrokontroller(microElektronika

Att kommentera material från sajten och ta emot full tillgång till vårt forum du behöver Registrera .


Kopplingsschema för en ensiffrig sjusegmentsindikator
Kopplingsschema för en flersiffrig sjusegmentsindikator

Digital informationsdisplay. Detta är den enklaste implementeringen av en indikator som kan visa arabiska siffror. Mer komplexa multisegment- och matrisindikatorer används för att visa bokstäver.

Som namnet säger består den av sju displayelement (segment) som slås på och av separat. Genom att inkludera dem i olika kombinationer kan de användas för att skapa förenklade bilder av arabiska siffror.
Segmenten betecknas med bokstäverna A till G; åttonde segmentet - decimalkomma (decimalkomma, DP), utformad för att visa bråktal.
Ibland visas bokstäver på indikatorn med sju segment.

De finns i en mängd olika färger, vanligtvis vit, röd, grön, gul och blå. Dessutom kan de ha olika storlekar.

LED-indikatorn kan också vara ensiffrig (som i figuren ovan) eller flersiffrig. I grund och botten används en-, två-, tre- och fyrsiffriga LED-indikatorer i praktiken:

Förutom tio siffror kan indikatorer med sju segment visa bokstäver. Men få bokstäver har en intuitiv representation med sju segment.
På latin: versaler A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, gemener a, b, c, d, e, g , h, i, n, o, q, r, t, u.
På kyrilliska: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (två siffror), b, E/Z.
Därför används sjusegmentsindikatorer endast för att visa enkla meddelanden.

Totalt kan LED-indikatorn med sju segment visa 128 tecken:

En typisk LED-indikator har nio avledningar: en går till katoderna för alla segment och de andra åtta går till anoden för varje segment. Detta schema kallas "vanlig katodkrets", det finns också system med gemensam anod(då är det tvärtom). Ofta görs inte en utan två vanliga terminaler i olika ändar av basen - detta förenklar ledningarna utan att öka dimensionerna. Det finns också så kallade "universella", men jag personligen har inte stött på sådana. Dessutom finns det indikatorer med ett inbyggt skiftregister, vilket kraftigt minskar antalet inblandade mikrokontrollerportstift, men de är mycket dyrare och används sällan i praktiken. Och eftersom ofantligheten inte kan förstås kommer vi inte att överväga sådana indikatorer för närvarande (men det finns också indikatorer med ett mycket större antal segment, matris).

Flersiffriga LED-indikatorer fungerar ofta på en dynamisk princip: utgångarna från segmenten med samma namn av alla siffror är sammankopplade. För att visa information om en sådan indikator måste styrmikrokretsen cykliskt mata ström till de gemensamma plintarna av alla siffror, medan ström tillförs segmentklämmorna beroende på om ett givet segment lyser med en given siffra.

Anslutning av en ensiffrig sjusegmentsindikator till en mikrokontroller

Diagrammet nedan visar hur en ensiffrig sjusegmentsindikator är ansluten till mikrokontrollern.
Det bör beaktas att om indikatorn med GEMENSAM KATOD, sedan ansluts dess gemensamma utgång till "jorden" och segmenten antänds genom matning logisk enhet till portutgången.
Om indikatorn är GEMENSAM ANOD, sedan matas den till sin gemensamma ledning "plus" spänning, och segmenten tänds genom att växla portutgången till tillståndet logisk nolla.

Indikering i en ensiffrig LED-indikator utförs genom att applicera en binär kod på stiften på mikrokontrollerporten för motsvarande siffra för motsvarande logiska nivå (för indikatorer med OK - logiska, för indikatorer med OA - logiska nollor).

Strömbegränsande motstånd kan eller kanske inte finns i diagrammet. Allt beror på matningsspänningen som tillförs indikatorn och tekniska egenskaper indikatorer. Om till exempel spänningen som tillförs segmenten är 5 volt, och de är konstruerade för en driftspänning på 2 volt, måste strömbegränsande motstånd installeras (för att begränsa strömmen genom dem för en ökad matningsspänning och inte brinna inte bara indikatorn utan även mikrokontrollerporten).
Det är mycket enkelt att beräkna värdet på strömbegränsande motstånd med hjälp av farfars formel Ohm.
Till exempel är egenskaperna hos indikatorn följande (tagen från databladet):
— driftspänning — 2 volt
— driftström — 10 mA (=0,01 A)
— matningsspänning 5 volt
Formel för beräkning:
R= U/I (alla värden i denna formel måste vara i ohm, volt och ampere)
R= (matningsspänning - driftspänning)/driftström
R= (5-2)/0,01 = 300 Ohm

Kopplingsschema för en flersiffrig sjusegments LED-indikator I princip samma sak som vid anslutning av en ensiffrig indikator. Det enda är att kontrolltransistorer läggs till i katoderna (anoderna) på indikatorerna:

Det visas inte i diagrammet, men mellan baserna på transistorerna och stiften på mikrokontrollerporten är det nödvändigt att inkludera motstånd, vars resistans beror på typen av transistor (motståndsvärdena beräknas, men Du kan också prova att använda motstånd med ett nominellt värde på 5-10 kOhm).

Indikering av urladdningar utförs dynamiskt:
— den binära koden för motsvarande siffra ställs in vid utgångarna på PB-porten för den första siffran, sedan appliceras den logiska nivån på styrtransistorn för den första siffran
— den binära koden för motsvarande siffra ställs in vid utgångarna på PB-porten för den andra siffran, sedan appliceras den logiska nivån på kontrolltransistorn för den andra siffran
— den binära koden för motsvarande siffra ställs in vid utgångarna på PB-porten för den tredje siffran, sedan appliceras den logiska nivån på kontrolltransistorn för den tredje siffran
- så i en cirkel
I det här fallet är det nödvändigt att ta hänsyn till:
— för indikatorer med OK kontrolltransistorstruktur används NPN(styrs av logisk enhet)
- för indikator med OA- strukturtransistor PNP(styrs av logisk noll)

Sedan tillkomsten av radioteknik och elektronik Respons elektronisk enhet och person åtföljdes av olika signallampor, knappar, vippomkopplare, klockor (mikrovågsklar signal - ding!). Vissa elektroniska enheter ger ett minimum av information, eftersom mer skulle vara onödigt. Till exempel indikerar en lysande LED på din kinesiska telefonladdare att laddaren är ansluten och får ström. Men det finns också parametrar för vilka det skulle vara bekvämare att ge objektiv information. Till exempel lufttemperaturen ute eller tiden på väckarklockan. Ja, allt detta skulle också kunna göras med glödande lampor eller lysdioder. En grad - en brinnande diod eller glödlampa. Hur många grader det finns, så många indikatorer är på. Att räkna dessa eldflugor kan vara en vanlig sak, men återigen, hur många av dessa lampor kommer att behövas för att visa temperaturen med en noggrannhet på en tiondels grad? Och i allmänhet, vilket område kommer dessa lysdioder och glödlampor att uppta på en elektronisk enhet?

Praktiska displayenheter med sju segment måste ha minst åtta externa anslutningsplintar; sju av dem ger tillgång till enskilda solcellssegment och den åttonde ger en gemensam anslutning till alla segment. I det första fallet är enheten känd som en sjusegments gemensam anoddisplay; i det senare fallet är enheten känd som en sjusegments gemensam katoddisplay.

För att driva en gemensam anoddisplay måste föraren ha en aktiv-låg utgång, där varje segmentdrift normalt är hög men går låg för att slå på segmentet. För att driva en gemensam katoddisplay måste föraren ha en aktiv aktiv utgång.

Och i början av 1900-talet, med tillkomsten av elektroniska rör, dök de första gasurladdningsindikatorerna upp

Med hjälp av sådana indikatorer var det möjligt att visa digital information med arabiska siffror. Tidigare var det dessa lampor som användes för att göra olika indikationer för instrument och andra elektroniska enheter. För närvarande används gasurladdningselement nästan aldrig någonstans. Men retro är alltid på modet, vilket är anledningen till att många radioamatörer samlar på sig underbara gasurladdningsklockor till sig själva och sina nära och kära.

Den fullständiga förklaringen av detta är lite mer komplicerad, enligt följande. När spänningen är noll är segmentet i praktiken osynligt. Emellertid, när inspänningen är signifikant positiv eller negativ, blir segmentet effektivt synligt, men om drivspänningen bibehålls i mer än några hundra millisekunder kan segmentet bli permanent synligt och inte ha någon vidare betydelse.

Under dessa förhållanden är segmentet inaktiverat. Således ingår segmentet under dessa villkor. Denna form av drivning är allmänt känd som ett spänningsfördubblande "bryggdrivsystem". Åtgärdssekvensen för schemat är som följer. Det enkla kaskadsystemet som beskrivits tidigare lider av en allvarlig defekt i det att displayen blir suddig under den faktiska räkneperioden och blir stabil och läsbar endast när varje räkning är avslutad och ingångsporten stängs. Denna "suddig och läs" typ av display är väldigt irriterande att titta på.

Nackdelar med gasurladdningslampor - de äter mycket. Man kan argumentera om hållbarhet. På vårt universitet använder vi fortfarande frekvensmätare på gasavlastare i laboratorielokaler.

Med tillkomsten av lysdioder har situationen förändrats dramatiskt. Lysdioder själva förbrukar en liten mängd ström. Om du placerar dem i rätt position kan du visa absolut vilken information som helst. För att lyfta fram alla arabiska siffror räckte bara något sju (därav namnet sjusegmentsindikator) glödande LED-remsor arrangerade på ett visst sätt:

Figur 13 visar en förbättrad frekvensräknarekrets som använder displaylåsning för att övervinna ovanstående defekt. Detta schema fungerar enligt följande. Samtidigt öppnas ingångsporten och räknarna börjar summera insignalens pulser. Denna räknare fortsätter i exakt en sekund, och under denna period förhindrar fyrabitars spärrarna räknarens utsignal från att nå bildskärmsdrivrutinerna; displayen förblir stabil under denna period.

Efter några sekunder upprepas sekvensen igen, med räknarna omstartar och sedan räknar ingångsfrekvenspulser under en sekund, under vilken displayen ger en kontinuerlig avläsning av föregående räkning, etc.

Nästan alla sådana sjusegmentsindikatorer lägger också till ett åttonde segment - en punkt, så att det är möjligt att visa heltal och bråkvärde för vilken parameter som helst

Således producerar kretsen i figur 13 en stabil display som uppdateras en gång per sekund; i praktiken kan den faktiska räkneperioden för denna och diagrammet i figur 12 göras att vara i vilket decennium som helst med flera eller partiella sekunder, förutsatt att utmatningsdisplayen skalas i enlighet därmed.

Observera att en tresiffrig frekvensräknare kan indikera maximala frekvenser på 999 Hz vid användning av en tidsbas på en sekund, 99 kHz vid användning av en 100 ms tidsbas, 9 kHz vid användning av en 10 ms tidsbas och 999 kHz vid användning av en 1 ms tidsbas.

I teorin visar det sig vara en åttasegmentsindikator, men på gammaldags vis kallas den också för sjusegment, och det är inget fel i det.

Kort sagt, en sjusegmentsindikator är lysdioder placerade i förhållande till varandra i en viss ordning och inneslutna i ett hus.

Denna metod kan förstås med hjälp av figurerna 14 och 15. Dessa omkopplare är sammankopplade och ger den faktiska multiplexerfunktionen och bör betraktas som elektroniska höghastighetsomkopplare som upprepade gånger växlas genom positionerna 1, 2 och sekvensen av operationer för kretsen är som följer. Låt oss först anta att omkopplaren är i läge.

Några ögonblick senare flyttas omkopplaren till position 3, vilket gör att display 3 visar ett nummer efter några minuter, hela cykeln börjar upprepas igen och så vidare, vilket lägger till oändlighet. I praktiken inträffar cirka 50 av dessa cykler varje sekund, så ögat ser inte att displayerna slås på och av separat, utan uppfattar dem som en till synes stabil display som visar siffran 327, eller något annat nummer som dikteras av datasegmentet.

Om vi ​​betraktar diagrammet för en enda sjusegmentsindikator ser det ut så här:

Som vi ser kan sjusegmentsindikatorn vara antingen med gemensam anod (CA), så med gemensam katod (OC). Grovt sett, om vi har ett sjusegment med en gemensam anod (OA), så ska vi i kretsen hänga ett "plus" på detta stift, och om med en gemensam katod (OC), då ett "minus" eller jord . Till vilket stift vi lägger spänning kommer denna lysdiod att lysa. Låt oss visa allt detta i praktiken.

I praktiska multiplexorer är den maximala displayströmmen ganska hög för att säkerställa tillräcklig ljusstyrka på displayen. I fig. Figur 15 visar ett exempel på en förbättrad multiplexeringsmetod som tillämpas på en tresiffrig frekvensräknare. Denna metod har två huvudsakliga fördelar.

Om dessa terminaler är aktiva hög kommer de att ha följande egenskaper. Fikon. 18 och 19. Figur 18 visar rippelundertryckningstekniken som används för att tillhandahålla inledande nollundertryckning på en fyrsiffrig display som läser kvantitet.

Vi har följande LED-indikatorer i lager:

Som vi kan se kan enheter med sju segment vara en- och flerbitar, det vill säga två, tre, fyra enheter med sju segment i ett fall. För att kontrollera en modern sjusegmentsenhet behöver vi bara en multimeter med en diodtestfunktion. Vi letar efter en allmän slutsats - det kan vara antingen OA eller OK - slumpmässigt och sedan tittar vi på prestandan för alla segment av indikatorn. Vi kontrollerar trebitars sju-segmentet:

Så visar displayen. I grund och botten är de enkla att använda, slår på dem och de lyser upp. De kan vara irriterande eftersom de har någon form av polaritet, vilket innebär att de bara fungerar om du ansluter dem korrekt. Om du avbryter den positiva och negativa spänningen tänds de inte alls.

Hur irriterande det än är så är det också ganska användbart. Den andra tråden är katoden. Katoden är ansluten till jord. I grund och botten kommer det att komma ner till det. För gemensam katod lägger du ström till stiften du vill slå på. Multiplexering. Det finns till och med skärmkontroller för detta om du inte vill oroa dig för att byta in din programvara.

Hoppsan, ett segment fattade eld, så vi kontrollerar de andra segmenten på samma sätt.

Ibland räcker inte spänningen på den tecknade filmen för att kontrollera indikatorsegmenten. Därför tar vi strömförsörjningen, ställer in den på 5 volt, ansluter ett 1-2 kiloOhm-motstånd till en terminal på strömförsörjningen och börjar kontrollera sjusegmentsenheten.

7-segments displaykontroll

Så när du har en 4-siffrig, multiplexerad 7 segment, gemensam anod. Först måste vi veta vilken typ av display vi har, eftersom det finns två möjliga former: gemensam katod och gemensam anod. Saker du behöver för den här handledningen. Vänster: En grafisk vy av en 7-segmentsskärm som visar en allmän layout för interna ledningar och stiftplatser.

Var uppmärksam på den initiala utdatan, eftersom du kommer att behöva den senare när du laddar programmet. Om displayen vore en vanlig katod skulle vi avbryta den. Längst ner i artikeln finns ett foto av kretsen som finns på mitt prototypkort. Vi tillhandahåller också ett bibliotek för att styra mer än en skärm.

Varför behöver vi ett motstånd? När spänning appliceras på lysdioden börjar den kraftigt förbruka ström när den slås på. Därför kan det i detta ögonblick brinna ut. För att begränsa strömmen ansluts ett motstånd i serie med lysdioden. Du kan läsa mer i den här artikeln.

Hex räknat på en 7-segments display

Nackdelen är att de är resurskrävande. Denna speciella display har fyra siffror och två kolondisplayer. Men enheten ger också digital styrning displayens ljusstyrka genom en intern bredbandsmodulator. I sådana fall kan utmatningen göras på flera 7-segmentsskärmar.

Detta sparar kontakter på huset och sedan på styrningen. Följaktligen hänvisas till vanliga anod- eller gemensamma katoddisplayer. Utdata som motsvarar ett segment eller decimalpunkt extraheras bäst från databladet för visning. En 7-segmentsskärm som är klassad för de vanliga 10-20mA kommer fortfarande att lysa, om än svagt. Men detta kräver inte att du tilldelar kontakter. Följande fördelning av detta segment baseras på.

På samma sätt kontrollerar vi det fyrsiffriga sjusegmentet från en kinesisk radio

Jag tycker att det inte borde vara några särskilda svårigheter med detta. I kretsarna är sjusegmentskretsar anslutna till resistorer vid varje stift. Detta beror också på det faktum att lysdioder, när spänning appliceras på dem, frenetiskt förbrukar ström och brinner ut.

Om ett annat ändamål används är detta i princip möjligt, men måste beaktas vid programmering. Att konvertera enskilda siffror till ett specifikt utdatamönster kan göras med något som kallas. Alla andra segment ska vara mörka. Om den här kryssrutan är markerad för alla siffror visas följande tabell.

I testprogram siffror från 0 till 9 visas sekventiellt på en 7-segmentsdisplay. Utgångsnumret lagras i en registerräknare och inkrementeras med 1 inom cykeln. Om registret når värdet 10 återställs det till 0. När det väl har höjts uppstår en väntslinga som säkerställer att en viss tid har gått i nästa release. Normalt skulle du inte göra så långa väntecykler, men det här handlar inte om att vänta, det handlar om att styra en 7-segmentsdisplay. Att använda en timer för detta är för mycket ansträngning.

I vår moderna värld ersätts enheter med sju segment redan av LCD-indikatorer som kan visa helt annan information

men för att använda dem behöver du vissa färdigheter i kretsdesignen av sådana enheter. Hittills finns det inget enklare eller billigare än LED-indikatorer med sju segment.

Det faktiska problemet, och därför den intressanta delen av denna artikel, uppstår dock direkt efter etikettslingan. Observera att räknarvärdet måste fördubblas. Detta är direkt relaterat till det faktum att flashminnet är ord- och inte byte-mässigt. Det andra exemplet på den här sidan gör det annorlunda. Den visar hur, genom en annan tabellpost, genereringen av utfyllnadsbytes kan förhindras av assemblern. Det är också intressant att beräkningen kräver ett register som innehåller värdet 0.

Därför måste denna konstant först laddas in i ett register och först därefter kan addition utföras med detta register. Det intressanta är att detta faktum finns i många program, och konstanter i de allra flesta fall är konstanten 0. Därför reserverar många programmerare ett register från allra första början för detta och kallar det nollregistret.

I den här artikeln kommer vi att prata om digital display.
LED-indikatorer med sju segment är utformade för att visa arabiska siffror från 0 till 9 (Fig. 1).

Sådana indikatorer är ensiffriga, som bara visar ett nummer, men det kan finnas fler sjusegmentsgrupper kombinerade till ett hus (flersiffrig). I det här fallet separeras siffrorna med en decimalkomma (bild 2)

Tyvärr finns det ett problem eftersom displayen kräver åtta portar - fyra annonser skulle kräva 32 portar. Men det finns flera sätt. Skiftregister beskrivs redan i en annan handledning. Detta skulle göra det lättare att skapa de 32 utgångslinjer som krävs med endast tre stift. Styrprincipen skiljer sig inte från att köra en enda 7-segmentsdisplay, bara hur "utgångsstiften" närmar sig sina värden är olika och bestäms av användningen av skiftregister. På det här ögonblicket dock måste ett annat kontrollalternativ visas.



Fig.2.

Indikatorn kallas sju-segment på grund av att den visade symbolen är uppbyggd av sju separata segment. Inuti höljet till en sådan indikator finns lysdioder, som var och en lyser upp sitt eget segment.
Det är problematiskt att visa bokstäver och andra symboler på sådana indikatorer, så 16-segmentsindikatorer används för dessa ändamål.

Vi kommer att titta på multiplexing igen nedan. Multiplexing innebär att inte alla fyra skärmar är påslagna samtidigt, utan bara en åt gången en kort tid. Om bytet mellan displayerna sker snabbare än vad vi människor kan uppfatta verkar alla fyra lamporna fungera samtidigt, även om bara en lyser under en kort tidsperiod. På så sätt kan fyra displayer dela individuella segmentsegment, och allt som krävs är 4 extra kontrollrader för de 4 displayer som displayen är aktiverad med.

En aspekt av denna typ av kontroll är multiplexeringsfrekvensen, det vill säga hela övergångscykeln från en bildskärm till en annan. Den ska vara tillräckligt hög för att förhindra att skärmen flimrar. Det mänskliga ögat är trögt, i en biograf 24 bilder per sekund, med TV:n för att vara på den säkra sidan att även stillbilder är lugna, varje segment måste styras minst 100 Hz, så det ansluts minst var 10:e ms. I undantagsfall kan dock även 100 Hz fortfarande flimra, till exempel när skärmen rör sig snabbt eller när störningar uppstår med artificiella ljuskällor som arbetar med växelström.

LED-indikatorer finns i två typer.
I den första av dem är alla katoder, dvs. de negativa terminalerna för alla lysdioder kombineras tillsammans och en motsvarande terminal är tilldelad för dem på höljet.
De återstående terminalerna på indikatorn är anslutna till anoden på varje lysdiod (Fig. 3, a). Denna krets kallas en "gemensam katodkrets".
Det finns också indikatorer där lysdioderna för varje segment är anslutna enligt en krets med en gemensam anod (fig. 3, b).



Fig.3.

Varje segment betecknas med en motsvarande bokstav. Figur 4 visar deras placering.

Fig.4.

Som ett exempel, betrakta en tvåsiffrig sjusegmentsindikator GND-5622As-21 röd. Förresten, det finns andra färger, beroende på modell.
Med hjälp av ett trevoltsbatteri kan du slå på segment, och om du kombinerar en grupp stift till ett gäng och sätter ström på dem kan du till och med visa siffror. Men den här metoden är obekväm, så skiftregister och avkodare används för att styra sjusegmentsindikatorer. Ofta är indikatorstiften också anslutna direkt till mikrokontrollerutgångarna, men endast när indikatorer med låg strömförbrukning används. Figur 5 visar ett fragment av en krets som använder PIC16F876A.



Fig.5.

För att styra sjusegmentsindikatorn används ofta K176ID2-dekodern.
Detta chip kan omvandla binär kod bestående av nollor och ettor till decimalsiffror från 0 till 9.

För att förstå hur det hela fungerar måste du montera en enkel krets (fig. 6). K176ID2-avkodaren är inrymd i ett DIP16-paket. Den har 7 utgångsstift (stift 9 - 15), var och en dedikerad till ett specifikt segment. Punktkontroll tillhandahålls inte här. Mikrokretsen har även 4 ingångar (stift 2 - 5) för leverans av binär kod. Det 16:e och 8:e stiftet levereras med plus- respektive minuskraft. De återstående tre slutsatserna är hjälpmedel, jag kommer att prata om dem lite senare.



Fig. 6.

DD1 - K176ID2
R1 - R4 (10 - 100 kOhm)
HG1 - GND-5622As-21

Det finns 4 vippomkopplare i kretsen (alla knappar är möjliga), när du trycker på dem matas en logisk till dekoderingångarna från strömförsörjningen plus. Förresten, själva mikrokretsen drivs med en spänning på 3 till 15 volt. I det här exemplet drivs hela kretsen av en 9-volts strömförsörjning.

Det finns även 4 motstånd i kretsen. Dessa är så kallade pull-up resistorer. De behövs för att säkerställa att den logiska ingången är låg när det inte finns någon signal. Utan dem kanske avläsningarna på indikatorn inte visas korrekt. Det rekommenderas att använda sammamotstånd från 10 kOhm till 100 kOhm.

I diagrammet är stift 2 och 7 på HG1-indikatorn inte anslutna. Om du ansluter DP-stiftet till minusströmförsörjningen kommer decimaltecknet att lysa. Och om du applicerar ett minus på Dig.2-utgången kommer även den andra gruppen av segment att tändas (kommer att visa samma symbol).

Avkodaringångarna är utformade på ett sådant sätt att för att visa siffrorna 1, 2, 4 och 8 på indikatorn behöver du bara trycka på en knapp (layouten har vippomkopplare som motsvarar ingångarna D0, D1, D2 och D3). Om det inte finns någon signal visas siffran noll. När en signal appliceras på ingång D0 visas siffran 1. Och så vidare. För att visa andra nummer måste du trycka på en kombination av vippknappar. Tabell 1 talar om för oss vilka vi behöver trycka på.


Bord 1.

För att visa siffran "3" måste du använda en logisk etta på ingångarna D0 och D1. Om du applicerar en signal till D0 och D2 kommer siffran "5" att visas(Fig. 6).



Fig. 6.

Här är en utökad tabell där vi inte bara ser den förväntade siffran utan även de segment (a - g) som kommer att utgöra denna siffra.



Tabell 2.

De 1:a, 6:e och 7:e stiften på mikrokretsen är hjälpmedel (S, M, K, respektive).

I diagrammet (fig. 6) är det 6:e stiftet "M" jordat (till strömförsörjningen minus) och det finns en positiv spänning vid utgången av mikrokretsen för att arbeta med en indikator med en gemensam katod. Om en indikator med en gemensam anod används, bör en appliceras på den 6:e stiftet.

Om en logisk etta appliceras på det 7:e stiftet "K", släcks indikatortecknet, noll tillåter indikeringen. I schemat denna slutsats jordad (till strömförsörjningen minus).

En logisk enhet (plus ström) tillförs den första utgången på dekodern, vilket gör att den konverterade koden kan visas på indikatorn. Men om du tillämpar en logisk nolla på detta stift (S), kommer ingångarna att sluta ta emot en signal, och det aktuella visade tecknet kommer att frysa på indikatorn.

En intressant sak att notera är att vi vet att vippströmställaren D0 slår på siffran "1", och vippströmbrytaren D1 slår på siffran "2". Om du trycker på båda vippknapparna kommer siffran 3 att visas (1+2=3). Och i andra fall visar indikatorn summan av siffrorna som utgör denna kombination. Vi kommer till slutsatsen att avkodaringångarna är ordnade eftertänksamt och har mycket logiska kombinationer.

Du kan också titta på videon för den här artikeln.

Låt oss ansluta en LED-indikator med sju segment till Arduino-kortet och lära oss hur man styr det med Led4Digits.h-biblioteket.

Den föregående lektionen beskrivs i detalj mikrokontroller. Låt oss ansluta en sådan indikator till Arduino-kortet.

Diagrammet för att ansluta indikatorn till Arduino-kortet ser ut så här.

Jag monterade den på ett kretskort.

För att hantera indikatorer skrev jag Led4Digits.h-biblioteket:

Och betala.

Biblioteket låter dig hantera sju-segmentindikatorer:

  • upp till fyra siffror i storlek;
  • med alla varianter av styrpulspolariteter (alla);
  • arbetar i en parallell process;
  • låter dig visa på indikatorn:
    • segment av varje kategori;
    • siffran för varje siffra;
    • heltal 0 ... 9999;
  • för att mata ut ett heltal kan antalet siffror anges;
  • Det finns ett läge för att undertrycka obetydliga siffror.

Du kan ladda ner Led4Digits.h-biblioteket från denna länk:

Och betala. Endast 40 rub. per månad för tillgång till alla webbplatsresurser!

Hur man installerar står skrivet i .

Jag kommer inte att tillhandahålla källtexterna. Du kan slå upp dem i biblioteksfilerna. Som alltid finns det massor av kommentarer där. Jag kommer att beskriva i detalj, med exempel, hur man använder biblioteket.

LED-kontrollbibliotek för Arduino Led4Digits.

Här är klassbeskrivningen. Jag tillhandahöll bara offentliga metoder och egenskaper.

klass Led4Digits (
offentlig:
byte siffra; // bitsegmentkontrollkoder
void regen(); // regenerering måste metoden kallas regelbundet
void tetradToSegCod(byte dig, byte tetrad); // konvertera tetrad till segmentkoder
boolean print (osignerat int-värde, byte siffraNum, byte blank); // heltalsutgång



} ;

Konstruktör.

Led4Digits (bytetypLed, byte digitPin0, byte digitPin1, byte digitPin2, byte digitPin3,
byte segPinA, byte segPinB, byte segPinC, byte segPinD,
byte segPinE, byte segPinF, byte segPinG, byte segPinH);

typLed Ställer in styrpulspolariteter för bit- och segmentvalssignaler. Stöder alla anslutningsscheman ().

typLed Val av kategori Val av segment Kretstyp
0 -_- -_- Gemensam anod med urladdningsvalknappar
1 _-_ -_- Vanlig anod
2 -_- _-_ Vanlig katod
3 _-_ _-_ Gemensam katod med urladdningsvalknappar

sifferPin0...digitPin3– utgångar för val av siffror. Om siffraPin = 255, är siffran inaktiverad. Detta gör att du kan ansluta indikatorer med färre siffror. digitPin0 – låg (höger) siffra.

segPinA...segPinH– segmentstyrningsutgångar.

Till exempel,

betyder: indikator typ 1; urladdningsutgångar 5,4,3,2; utgångar för segment 6,7,8,9,10,11,12,13.

void regen() metod

Metoden måste anropas regelbundet i en parallell process. Det återskapar bilden på indikatorerna. Regenereringscykeltiden är lika med metodanropsperioden multiplicerad med antalet bitar.

Till exempel,

// avbrottshanterare 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Byte siffra array

Innehåller tillståndet för segmenten. siffran är den minst signifikanta biten, den minst signifikanta biten av siffran är "A"-segmentet av den minst signifikanta biten. En bitstatus på 1 betyder att segmentet lyser.

Till exempel,

siffra = B0000101;

betyder att i den andra siffran lyser segmenten "A" och "C".

Ett exempel på ett program som sekventiellt tänder alla segment av varje siffra.

// löpande segment
#omfatta
#omfatta

//
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
timeravbrott 2 ms
MsTimer2::start(); // avbryta aktivera
}

void loop() (
för (int i = 0; i< 32; i++) {
om (i == 0) disp.digit= 1;
annat om (i == 8) disp.digit= 1;
annat om (i == 16) disp.digit= 1;
annat om (i == 24) disp.digit= 1;
annan(
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
fördröjning(250);
}
}

//avbrottshanterare 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

I sifferfältet förskjuts 1 och indikatorerna visar detta.

Metod void tetradToSegCod(byte dig, byte tetrad)

Metoden låter dig visa siffror och bokstäver i hexadecimal kod i enskilda siffror. Har argument:

  • dig – siffran 0 ... 3;
  • tetrad – decimalteckenkod. Kod 0 visar siffran "0", kod 1 - siffran "1", kod 14 - bokstaven "E".

Till exempel,

tetrad(2,7);

kommer att visa siffran "7" i den tredje siffran.

Ett exempel på ett program som ändrar tecken i varje siffra i tur och ordning.

// nummer en efter en
#omfatta
#omfatta

// indikator typ 1; urladdningsutgångar 5,4,3,2; segmentutgångar 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // timeravbrott 2 ms
MsTimer2::start(); // avbryta aktivera
}

void loop() (
för (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
fördröjning(250);
}
}

// avbrottshanterare 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Metod boolesk utskrift (osignerat int-värde, byte siffraNum, byte tom)

Metoden visar ett heltal på indikatorerna. Den omvandlar det binära talet till BCD för varje siffra. Har argument:

  • värde – siffran som visas på indikatorn.
  • digitNum – antal siffror för numret. Detta ska inte förväxlas med antalet indikatorsiffror. Du kanske vill visa ett nummer på två siffror och visa tecken på de andra två med hjälp av siffror.
  • blank – ett tecken på undertryckande av obetydliga siffror. blank=0 betyder att numret ska visas med alla nollor. Siffran "7" kommer att se ut som "0007". Om tomrummet skiljer sig från 0 kommer obetydliga nollor att dämpas.

Om siffervärdet överskrider det tillåtna antalet för det valda antalet siffror (digitNum), kommer funktionen att visa "---" på indikatorn och returnera falskt.

Ett exempel på ett nummerutmatningsprogram.

// utdatanummer
#omfatta
#omfatta

// indikator typ 1; urladdningsutgångar 5,4,3,2; segmentutgångar 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // timeravbrott 2 ms
MsTimer2::start(); // avbryta aktivera
}

void loop() (
för (int i = 0; i< 12000; i++) {
disp.print(i, 4, 1);
fördröjning(50);
}
}

// avbrottshanterare 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

De två sista metoderna ändrar inte tillståndet för "H" -segmentet - decimalkomma. För att ändra tillståndet för en punkt kan du använda kommandona:

siffra |= 0x80; // tänd decimalkomma
siffra &= 0x7f; // släcka decimaltecknet

Utdata till indikatorer för negativa tal (int).

Negativa tal kan matas ut enligt följande:

  • Kontrollera numrets tecken.
  • Om talet är negativt, skriv ut ett minustecken vid den mest signifikanta siffran och ändra tecknet för talet till positivt i print()-funktionen.
  • Om talet är positivt, stäng sedan av teckenbiten och skriv ut talet med funktionen print().

Här är ett program som visar denna metod. Den matar ut nummer från -999 till 999.

// mata ut negativa tal
#omfatta
#omfatta

// indikator typ 1; urladdningsutgångar 5,4,3,2; segmentutgångar 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // timeravbrott 2 ms
MsTimer2::start(); // avbryta aktivera
}

void loop() (

för (int i = -999; i< 1000; i++) {

om jag< 0) {
// siffran är negativ
disp.digit= B01000000; // skylt -
disp.print(i * -1, 3, 1);
}
annan(
disp.digit= B00000000; // rensa skylten
disp.print(i, 3, 1);
}

fördröjning(50);
}
}

// avbrottshanterare 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Utdata till indikatorer för bråktal, flytformat.

Det finns många sätt att visa flyttal (flytande) med hjälp av vanliga C-språkfunktioner. Detta är först och främst sprint()-funktionen. Det fungerar väldigt långsamt, kräver ytterligare konverteringar av teckenkoder till binära decimalkoder, du måste extrahera en punkt från en sträng. Samma problem med andra funktioner.

Jag använder en annan metod för att visa värdena för flytvariabler på indikatorer. Metoden är enkel, pålitlig, snabb. Reducerar till följande operationer:

  • Flyttalstalet multipliceras med 10 till den potens som motsvarar det antal decimaler som krävs. Om du behöver visa 1 decimal på indikatorer, multiplicera med 10, om 2, multiplicera sedan med 100, 3 decimaler med 1000.
  • Därefter omvandlas flyttalstalet uttryckligen till ett heltal (int) och visas på indikatorerna med hjälp av print()-funktionen.
  • En prick placeras i den önskade siffran.

Till exempel kommer följande rader att mata ut en flytvariabel med två decimaler till de sju segments LED:erna.

float x = 2,12345;

disp.digit |= 0x80; //

Vi multiplicerar talet med 100 och genom att placera en punkt i den tredje siffran dividerar vi resultatet med 100.

Här är ett program som visar flyttal från 0,00 till 99,99 på indikatorerna.

// flyttalsutgång
#omfatta
#omfatta

// indikator typ 1; urladdningsutgångar 5,4,3,2; segmentutgångar 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // timeravbrott 2 ms
MsTimer2::start(); // avbryta aktivera
}

void loop() (
float x = 0;

för (int i = 0; i< 10000; i++) {
x+= 0,01;

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // tänd den tredje nivån

fördröjning(50);
}
}

//avbrottshanterare 2 ms
void timerInterrupt() (
disp.regen(); // indikatorregenerering
}

Som du kan se förenklar Led4Digits.h-biblioteket avsevärt arbetet med sju-segments lysdiodindikatorer (LED) anslutna till Arduino-kortet. Jag har inte hittat en analog till ett sådant bibliotek.

Det finns bibliotek för att arbeta med LED-displayer via ett skiftregister. Någon skrev till mig att de hittat ett bibliotek som fungerar med en LED-skärm direkt kopplad till Arduino-kortet. Men när du använder den lyser indikatorsiffrorna ojämnt och blinkar.

Till skillnad från sina analoger, Led4Digits.h-biblioteket:

  • Går som en parallell process. I huvudslingan laddar programmet in data i vissa variabler, som automatiskt visas på displayen. Informationsutmatning och indikatorregenerering sker i ett timeravbrott, osynligt för huvudprogrammet.
  • Displaysiffrorna lyser jämnt utan att blinka. Denna egenskap säkerställs av det faktum att regenerering sker i en cykel strikt definierad av ett timeravbrott.
  • Biblioteket har kompakt kod, körs snabbt och belastar styrenheten minimalt.

I nästa lektion kommer vi att ansluta en LED-indikator och en knappmatris till Arduino-kortet samtidigt. Låt oss skriva ett bibliotek för en sådan design.

Kategori: . Du kan bokmärka den.


Topp