Indicatore a 4 cifre connessione Arduino. Indicatore a sette segmenti. Output per indicatori di numeri frazionari, formato float

Ci sono parametri per i quali sarebbe più conveniente fornire informazioni oggettive piuttosto che semplici indicazioni. Ad esempio, la temperatura dell'aria esterna o l'ora della sveglia. Sì, tutto questo potrebbe essere fatto con lampadine o LED. Un grado: un LED o una lampadina accesa, ecc. Ma contando queste lucciole - beh, no! Ma, come si suol dire, di più soluzioni semplici- il più affidabile. Pertanto, senza pensarci a lungo, gli sviluppatori hanno preso semplici strisce LED e le hanno sistemate nell'ordine giusto.

All'inizio del XX secolo con l'avvento tubi a vuoto apparvero i primi indicatori di scarica di gas

Con l'aiuto di tali indicatori è stato possibile dedurre informazioni digitali in numeri arabi. In precedenza, era su tali lampade che venivano fornite varie indicazioni per dispositivi e altro dispositivi elettronici. Attualmente, gli elementi a scarica di gas non vengono quasi mai utilizzati da nessuna parte. Ma il retrò è sempre di moda, quindi molti radioamatori collezionano meravigliosi orologi con indicatori di scarica di gas per sé e per i loro cari.


Lo svantaggio delle lampade a scarica di gas è che consumano molta elettricità. Si può discutere sulla durabilità. Nella nostra università utilizziamo ancora i frequenzimetri nei nostri laboratori. indicatori di scarica di gas.

Indicatori a sette segmenti

Con l’avvento dei LED la situazione è cambiata radicalmente in meglio. I LED stessi consumano piccola corrente. Se li posizioni nella giusta posizione, puoi visualizzare assolutamente qualsiasi informazione. Per mettere in risalto tutti i numeri arabi sono sufficienti solo sette strisce LED luminose, segmenti disposti in un certo modo:

A quasi tutti questi indicatori a sette segmenti viene aggiunto anche un ottavo segmento: un punto, in modo che sia possibile mostrare il valore intero e frazionario di qualsiasi parametro

In teoria, otteniamo un indicatore a otto segmenti, ma alla vecchia maniera veniva anche chiamato indicatore a sette segmenti.

Qual'è il risultato? Ogni striscia dell'indicatore a sette segmenti è illuminata da un LED o da un gruppo di LED. Di conseguenza, evidenziando determinati segmenti, possiamo visualizzare i numeri da 0 a 9, nonché lettere e simboli.

Tipi e designazione sul diagramma

Sono disponibili indicatori a sette segmenti a una cifra, due cifre, tre cifre e quattro cifre. Non ho mai visto più di quattro categorie.

Nei diagrammi, l'indicatore a sette segmenti assomiglia a questo:

Infatti, oltre ai terminali principali, ogni indicatore a sette segmenti ha anche un terminale comune con anodo comune (OA) o catodo comune (OC)

Il circuito interno di un indicatore a sette segmenti con un anodo comune sarà simile al seguente:


e con un catodo comune come questo:


Se abbiamo un indicatore a sette segmenti con un anodo comune (OA), quindi nel circuito dobbiamo fornire potenza "più" a questo pin e, se con un catodo comune (OC), quindi "meno" o terra.

Come controllare un indicatore a sette segmenti

Abbiamo i seguenti indicatori:


Per controllare un moderno indicatore a sette segmenti, abbiamo solo bisogno di un multimetro con funzione di test dei diodi. Per cominciare, stiamo cercando una conclusione generale: può essere OA o OK. Qui solo a caso. Bene, allora controlliamo l'andamento dei restanti segmenti dell'indicatore secondo i diagrammi sopra.

Come puoi vedere nella foto sotto, il segmento in prova si illumina. Controlliamo gli altri segmenti allo stesso modo. Se tutti i segmenti sono accesi, tale indicatore è intatto e può essere utilizzato nei tuoi sviluppi.


A volte la tensione sul multimetro non è sufficiente per testare un segmento. Pertanto, prendiamo un alimentatore e lo impostiamo su 5 Volt. Per limitare la corrente attraverso il segmento, controlliamo attraverso un resistore da 1-2 Kilo-Ohm.


Allo stesso modo controlliamo l'indicatore del ricevitore cinese


Nei circuiti, gli indicatori a sette segmenti sono collegati a resistori su ciascun pin

Nel nostro mondo moderno Gli indicatori a sette segmenti sono sostituiti da indicatori a cristalli liquidi in grado di visualizzare assolutamente qualsiasi informazione

ma per utilizzarli sono necessarie determinate competenze nella progettazione dei circuiti di tali dispositivi. Pertanto, gli indicatori a sette segmenti vengono utilizzati ancora oggi, grazie al loro basso costo e alla facilità d'uso.

Gli indicatori LED a sette segmenti sono molto popolari tra i dispositivi di visualizzazione del valore digitale e vengono utilizzati nei pannelli frontali dei forni a microonde, lavatrici, orologi digitali, contatori, timer, ecc. Rispetto agli indicatori LCD, i segmenti degli indicatori LED si illuminano intensamente e sono visibili a lunga distanza e con un ampio angolo di visione. Per collegare un indicatore a sette segmenti e 4 bit a un microcontrollore, saranno necessarie almeno 12 linee I/O. Pertanto, è quasi impossibile utilizzare questi indicatori con microcontrollori con un numero limitato di pin, ad esempio le serie dell'azienda. Certo che puoi usare metodi diversi multiplexing (la cui descrizione può essere trovata sul sito nella sezione “Schemi”), ma anche in questo caso ci sono alcune limitazioni per ciascun metodo e spesso utilizzano algoritmi software complessi.

Esamineremo il metodo per collegare un indicatore tramite l'interfaccia SPI, che richiederà solo 3 linee I/O del microcontrollore. Allo stesso tempo, rimarrà il controllo di tutti i segmenti dell'indicatore.

Per collegare un indicatore a 4 bit a un microcontrollore tramite il bus SPI, viene utilizzato un chip driver specializzato prodotto dall'azienda. Il microcircuito è in grado di pilotare otto indicatori a sette segmenti con un catodo comune e comprende un decodificatore BCD, driver di segmento, un circuito multiplexing e RAM statica per la memorizzazione dei valori delle cifre.

La corrente attraverso i segmenti dell'indicatore viene impostata utilizzando solo un resistore esterno. Inoltre, il chip supporta il controllo della luminosità dell'indicatore (16 livelli di luminosità) utilizzando il PWM integrato.

Il circuito discusso nell'articolo è un circuito del modulo display con un'interfaccia SPI che può essere utilizzato nei progetti di radioamatori. E non siamo più interessati al circuito in sé, ma a lavorare con il microcircuito tramite l'interfaccia SPI. L'alimentazione del modulo +5 V viene fornita al pin Vcc, linee di segnale MOSI, CLK e CS sono progettati per la comunicazione tra un dispositivo master (microcontrollore) e un dispositivo slave (chip MAX7219).

Il microcircuito viene utilizzato in una connessione standard; gli unici componenti esterni necessari sono un resistore che imposta la corrente attraverso i segmenti, un diodo protettivo per l'alimentazione e un condensatore di filtro per l'alimentazione.

I dati vengono trasferiti al chip in pacchetti da 16 bit (due byte), che vengono inseriti nel registro a scorrimento a 16 bit integrato su ciascun fronte di salita del segnale CLK. Indichiamo un pacchetto a 16 bit come D0-D15, dove i bit D0-D7 contengono dati, D8-D11 contengono l'indirizzo del registro, i bit D12-D15 non hanno significato. Il bit D15 è il bit più significativo ed è il primo bit ricevuto. Sebbene il chip sia in grado di controllare otto indicatori, considereremo di lavorare solo con quattro. Sono controllati dalle uscite DIG0 - DIG3, poste in sequenza da destra a sinistra, gli indirizzi a 4 bit (D8-D11) che corrispondono ad essi sono 0x01, 0x02, 0x03 e 0x04 (formato esadecimale). Il registro delle cifre è implementato utilizzando RAM on-chip con organizzazione 8x8 ed è direttamente indirizzabile in modo che ogni singola cifra sul display possa essere aggiornata in qualsiasi momento. La tabella seguente mostra le cifre indirizzabili e i registri di controllo del chip MAX7219.

Registrati

Indirizzo

Valore esadecimale

Nessuna operazione

Modalità di decodifica

Numero di indicatori

Fermare

Prova dell'indicatore

Registri di controllo

Il chip MAX1792 dispone di 5 registri di controllo: modalità di decodifica (Decode-Mode), controllo della luminosità degli indicatori (Intensity), registro del numero di indicatori collegati (Scan Limit), controllo di accensione/spegnimento (Shutdown), modalità di test (Display Test).

Accensione e spegnimento del chip

Quando viene applicata l'alimentazione al chip, tutti i registri vengono ripristinati e va in modalità di spegnimento. In questa modalità il display è spento. Per passare alla modalità operativa normale, è necessario impostare il bit D0 del registro di spegnimento (indirizzo 0Сh). Questo bit può essere cancellato in qualsiasi momento per forzare lo spegnimento del driver, lasciando invariato il contenuto di tutti i registri. Questa modalità può essere utilizzata per risparmiare energia o in modalità allarme facendo lampeggiare l'indicatore (attivazione e disattivazione sequenziale della modalità Spegnimento).

Il microcircuito passa alla modalità Spegnimento trasmettendo in sequenza l'indirizzo (0Сh) e i dati (00h), e il trasferimento di 0Ch (indirizzo) e quindi 01h (dati) ritorna al normale funzionamento.

Modalità di decodifica

Utilizzando il registro di selezione della modalità di decodifica (indirizzo 09h), è possibile utilizzare la decodifica del codice BCD B (caratteri visualizzati 0-9, E, H, L, P, -) o senza decodifica per ciascuna cifra. Ogni bit nel registro corrisponde ad una cifra, impostarne uno logico corrisponde all'accensione del decoder per questo bit, impostare 0 significa che il decoder è disabilitato. Se viene utilizzato un decoder BCD, viene preso in considerazione solo il bit di dati più basso nei registri delle cifre (D3-D0), i bit D4-D6 vengono ignorati, il bit D7 non dipende dal decoder BCD ed è responsabile dell'accensione il punto decimale sull'indicatore se D7 = 1. Ad esempio, quando i byte 02h e 05h vengono inviati in sequenza, l'indicatore DIG1 (seconda cifra da destra) visualizzerà il numero 5. Allo stesso modo, quando si inviano 01h e 89h, l'indicatore DIG0 visualizzerà il numero 9 con il punto decimale incluso . La tabella seguente mostra lista completa caratteri visualizzati quando si utilizza il decodificatore BCD del chip.

Simbolo

Dati nei registri

Segmenti abilitati = 1

Vuoto

*Il punto decimale è impostato dal bit D7=1

Quando il decodificatore BCD è escluso dal funzionamento, i bit di dati D7-D0 corrispondono alle linee del segmento (A-G e DP) dell'indicatore.

Controllo della luminosità dell'indicatore

Il chip consente di controllare a livello di codice la luminosità degli indicatori utilizzando il PWM integrato. L'uscita PWM è controllata dal nibble di ordine basso (D3-D0) del registro di intensità (indirizzo 0Ah), che consente di impostare uno dei 16 livelli di luminosità. Quando tutti i bit di un bocconcino sono impostati su 1, viene selezionata la luminosità massima dell'indicatore.

Numero di indicatori collegati

Il registro Scan-Limit (indirizzo 0Bh) imposta il valore del numero di bit serviti dal microcircuito (1 ... 8). Per la nostra versione a 4 bit, nel registro dovrebbe essere scritto il valore 03h.

Prova dell'indicatore

Il registro responsabile di questa modalità si trova all'indirizzo 0Fh. Impostando il bit D0 nel registro, l'utente attiva tutti i segmenti dell'indicatore, mentre il contenuto dei registri di controllo e dati non cambia. Per disabilitare la modalità Display-Test, il bit D0 deve essere 0.

Interfaccia con microcontrollore

Il modulo indicatore può essere collegato a qualsiasi microcontrollore dotato di tre linee I/O libere. Se il microcontrollore ha un modulo hardware SPI integrato, il modulo indicatore può essere collegato come dispositivo slave sul bus. In questo caso, le linee di segnale SPI SDO (serial data out), SCLK (serial clock) e SS (slave select) del microcontrollore possono essere collegate direttamente ai pin MOSI, CLK e CS del chip MAX7219 (modulo), il Il segnale CS è attivo basso.

Se il microcontrollore non dispone di SPI hardware, l'interfaccia può essere organizzata in software. La comunicazione con il MAX7219 inizia tirando e tenendo bassa la linea CS, quindi inviando 16 bit di dati in sequenza (prima MSB) sulla linea MOSI sul fronte di salita del segnale CLK. Al termine della trasmissione la linea CS torna alta.

Nella sezione download gli utenti possono scaricare il testo sorgente del programma di test e il file HEX del firmware, che implementa un contatore convenzionale a 4 bit con visualizzazione dei valori su un modulo indicatore con interfaccia SPI. Il microcontrollore utilizzato è un'interfaccia implementata nel software, le linee di segnale CS, MOSI e CLK del modulo indicatore sono collegate rispettivamente alle porte GP0, GP1 e GP2. Viene utilizzato il compilatore mikroC Microcontrollori PIC(microElektronika

Per commentare i materiali dal sito e ricevere accesso completo al nostro forum di cui hai bisogno Registrati .


Schema di collegamento per un indicatore a sette segmenti a una cifra
Schema di collegamento per un indicatore multicifra a sette segmenti

Dispositivo di visualizzazione delle informazioni digitali. Questa è l'implementazione più semplice di un indicatore in grado di visualizzare numeri arabi. Per visualizzare le lettere vengono utilizzati indicatori multisegmento e a matrice più complessi.

Come dice il nome, è composto da sette elementi di visualizzazione (segmenti) che si accendono e spengono separatamente. Includendoli in diverse combinazioni, possono essere utilizzati per creare immagini semplificate di numeri arabi.
I segmenti sono indicati dalle lettere dalla A alla G; ottavo segmento - punto decimale (punto decimale, DP), progettato per visualizzare numeri frazionari.
Occasionalmente vengono visualizzate delle lettere sull'indicatore a sette segmenti.

Sono disponibili in una varietà di colori, solitamente bianco, rosso, verde, giallo e blu. Inoltre, possono avere dimensioni diverse.

Inoltre, l'indicatore LED può essere a una cifra (come nella figura sopra) o a più cifre. Fondamentalmente nella pratica vengono utilizzati indicatori LED a una, due, tre e quattro cifre:

Oltre a dieci cifre, gli indicatori a sette segmenti sono in grado di visualizzare lettere. Ma poche lettere hanno una rappresentazione intuitiva a sette segmenti.
In latino: maiuscola A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, minuscola a, b, c, d, e, g , h, i, n, o, q, r, t, u.
In cirillico: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (due cifre), b, E/Z.
Pertanto, gli indicatori a sette segmenti vengono utilizzati solo per visualizzare messaggi semplici.

In totale, l'indicatore LED a sette segmenti può visualizzare 128 caratteri:

Un tipico indicatore LED ha nove conduttori: uno va ai catodi di tutti i segmenti e gli altri otto vanno all'anodo di ciascun segmento. Questo schema si chiama "circuito a catodo comune", ci sono anche schemi con anodo comune(allora è il contrario). Spesso alle diverse estremità della base vengono realizzati non uno, ma due terminali comuni: ciò semplifica il cablaggio senza aumentare le dimensioni. Esistono anche quelli cosiddetti “universali”, ma personalmente non ne ho incontrati. Inoltre, ci sono indicatori con un registro a scorrimento integrato, che riduce notevolmente il numero di pin delle porte del microcontrollore coinvolti, ma sono molto più costosi e vengono utilizzati raramente nella pratica. E poiché l'immensità non può essere colta, per ora non considereremo tali indicatori (ma esistono anche indicatori con un numero molto maggiore di segmenti, quelli a matrice).

Indicatori LED a più cifre spesso funzionano secondo un principio dinamico: le uscite dei segmenti con lo stesso nome di tutte le cifre sono collegate insieme. Per visualizzare informazioni su tale indicatore, il microcircuito di controllo deve fornire ciclicamente corrente ai terminali comuni di tutte le cifre, mentre la corrente viene fornita ai terminali del segmento a seconda che un dato segmento sia illuminato in una determinata cifra.

Collegamento di un indicatore a sette segmenti a una cifra a un microcontrollore

Il diagramma seguente mostra come è collegato un indicatore a sette segmenti a una cifra al microcontrollore.
Va tenuto presente che se l'indicatore con CATODO COMUNE, quindi è collegata la sua uscita comune "terra" e i segmenti vengono accesi durante l'alimentazione unità logica all'uscita del porto.
Se l'indicatore è ANODO COMUNE, quindi viene alimentato al suo filo comune "più" tensione e i segmenti vengono accesi commutando l'uscita della porta nello stato zero logico.

L'indicazione in un indicatore LED a una cifra viene effettuata applicando un codice binario ai pin della porta del microcontrollore della cifra corrispondente del livello logico corrispondente (per indicatori con OK - quelli logici, per indicatori con OA - zeri logici).

Resistori limitatori di corrente può essere presente o meno nel diagramma. Tutto dipende dalla tensione di alimentazione fornita all'indicatore e caratteristiche tecniche indicatori. Se, ad esempio, la tensione fornita ai segmenti è di 5 volt e sono progettati per una tensione operativa di 2 volt, è necessario installare resistori limitatori di corrente (per limitare la corrente che li attraversa per una maggiore tensione di alimentazione e non bruciare non solo l'indicatore, ma anche la porta del microcontrollore).
È molto semplice calcolare il valore dei resistori limitatori di corrente, utilizzando la formula del nonno Ohm.
Ad esempio, le caratteristiche dell’indicatore sono le seguenti (tratte dalla scheda tecnica):
— tensione operativa — 2 volt
— corrente operativa — 10 mA (=0,01 A)
— tensione di alimentazione 5 volt
Formula per il calcolo:
R= U/I (tutti i valori in questa formula devono essere in Ohm, Volt e Amp)
R= (tensione di alimentazione - tensione di funzionamento)/corrente di funzionamento
R= (5-2)/0,01 = 300 Ohm

Schema di collegamento per un indicatore LED multicifra a sette segmenti Fondamentalmente è lo stesso di quando si collega un indicatore a una cifra. L'unica cosa è che i transistor di controllo vengono aggiunti nei catodi (anodi) degli indicatori:

Non è mostrato nello schema, ma tra le basi dei transistor e i pin della porta del microcontrollore è necessario includere dei resistori, la cui resistenza dipende dal tipo di transistor (i valori dei resistori vengono calcolati, ma puoi anche provare ad utilizzare resistori con un valore nominale di 5-10 kOhm).

L'indicazione tramite scarichi viene eseguita dinamicamente:
— il codice binario della cifra corrispondente viene impostato sulle uscite della porta PB per la 1a cifra, quindi il livello logico viene applicato al transistor di controllo della prima cifra
— il codice binario della cifra corrispondente viene impostato sulle uscite della porta PB per la 2a cifra, quindi il livello logico viene applicato al transistor di controllo della seconda cifra
— il codice binario della cifra corrispondente viene impostato sulle uscite della porta PB per la 3a cifra, quindi il livello logico viene applicato al transistor di controllo della terza cifra
- quindi in cerchio
In questo caso è necessario tenere conto:
— per gli indicatori con OK viene utilizzata la struttura del transistor di controllo NPN(controllato da unità logica)
- per indicatore con OA- struttura del transistor PNP(controllato da zero logico)

Dall'avvento dell'ingegneria radiofonica e dell'elettronica Feedback il dispositivo elettronico e la persona erano accompagnati da varie spie luminose, pulsanti, interruttori a levetta, campanelli (segnale di pronto microonde - ding!). Alcuni dispositivi elettronici forniscono un minimo di informazioni perché di più non sarebbero necessarie. Ad esempio, un LED luminoso sul caricabatterie del tuo telefono cinese indica che il caricabatterie è collegato e riceve alimentazione. Ma ci sono anche parametri per i quali sarebbe più conveniente fornire informazioni oggettive. Ad esempio, la temperatura dell'aria esterna o l'ora della sveglia. Sì, tutto questo potrebbe essere fatto anche con lampadine o LED luminosi. Un grado: un diodo o una lampadina accesa. Quanti gradi ci sono, tanti indicatori sono accesi. Contare queste lucciole può essere una cosa comune, ma ancora una volta, quante di queste luci saranno necessarie per mostrare la temperatura con una precisione di un decimo di grado? E in generale, che area occuperanno questi LED e lampadine su un dispositivo elettronico?

I pratici dispositivi di visualizzazione a sette segmenti devono avere almeno otto terminali di collegamento esterno; sette di essi forniscono l'accesso ai singoli segmenti fotovoltaici e l'ottavo fornisce un collegamento comune a tutti i segmenti. Nel primo caso il dispositivo è noto come display ad anodo comune a sette segmenti; in quest'ultimo caso il dispositivo è noto come display a catodo comune a sette segmenti.

Per pilotare un display ad anodo comune, il driver deve avere un'uscita attiva-bassa, in cui ciascun segmento è normalmente alto ma va basso per accendere il segmento. Per pilotare un display a catodo comune, il driver deve avere un'uscita attiva attiva.

E all'inizio del XX secolo, con l'avvento dei tubi elettronici, apparvero i primi indicatori di scarica di gas

Con l'aiuto di tali indicatori è stato possibile visualizzare le informazioni digitali in numeri arabi. In precedenza, queste lampade venivano utilizzate per fornire varie indicazioni per strumenti e altri dispositivi elettronici. Attualmente, gli elementi a scarica di gas non vengono quasi mai utilizzati da nessuna parte. Ma il retrò è sempre di moda, motivo per cui molti radioamatori collezionano meravigliosi orologi a scarica di gas per sé e per i propri cari.

La spiegazione completa di questo è un po’ più complicata, come segue. Quando la tensione è zero, il segmento è effettivamente invisibile. Tuttavia, quando la tensione di ingresso è significativamente positiva o negativa, il segmento diventa effettivamente visibile, ma se la tensione di comando viene mantenuta per più di poche centinaia di millisecondi, il segmento potrebbe diventare permanentemente visibile e non avere alcun ulteriore significato.

In queste condizioni il segmento è disabilitato. Pertanto, il segmento è incluso in queste condizioni. Questa forma di azionamento è comunemente nota come sistema "azionamento a ponte" con raddoppio della tensione. La sequenza delle azioni dello schema è la seguente. Il semplice sistema a cascata descritto in precedenza soffre di un grave difetto in quanto la visualizzazione si offusca durante l'effettivo periodo di conteggio, diventando stabile e leggibile solo quando ogni conteggio è completato e il cancello di ingresso è chiuso. Questo tipo di visualizzazione "sfocata e leggibile" è molto fastidiosa da guardare.

Svantaggi delle lampade a scarica di gas: mangiano molto. Si può discutere sulla durabilità. Nella nostra università utilizziamo ancora i frequenzimetri sugli scaricatori di gas nei laboratori.

Con l’avvento dei LED la situazione è cambiata radicalmente. I LED stessi consumano una piccola quantità di corrente. Se li posizioni nella giusta posizione, puoi visualizzare assolutamente qualsiasi informazione. Per mettere in risalto tutti i numeri arabi bastava qualcosa Sette (da qui il nome indicatore a sette segmenti) strisce LED luminose disposte in un certo modo:

La Figura 13 mostra un circuito contatore di frequenza migliorato che utilizza il blocco del display per superare il difetto di cui sopra. Questo schema funziona come segue. Allo stesso tempo, il gate di ingresso si apre e i contatori iniziano a sommare gli impulsi del segnale di ingresso. Questo contatore continua esattamente per un secondo e durante questo periodo i latch a quattro bit impediscono all'uscita del contatore di raggiungere i driver dello schermo; il display rimane stabile durante questo periodo.

Dopo alcuni secondi la sequenza viene ripetuta nuovamente, con i contatori che si riavviano e quindi contano gli impulsi di frequenza in ingresso per un secondo, durante il quale il display fornisce una lettura continua del conteggio precedente, ecc.

Quasi tutti questi indicatori a sette segmenti aggiungono anche un ottavo segmento, un punto, in modo che sia possibile mostrare il valore intero e frazionario di qualsiasi parametro

Pertanto, il circuito della Figura 13 produce una visualizzazione stabile che si aggiorna una volta al secondo; in pratica, il periodo di conteggio effettivo di questo e del diagramma di Figura 12 può essere fatto in qualsiasi decade con secondi multipli o parziali, a condizione che la visualizzazione dell'uscita sia scalata di conseguenza.

Si noti che un frequenzimetro a tre cifre può indicare frequenze massime di 999 Hz quando si utilizza una base temporale di un secondo, 99 kHz quando si utilizza una base temporale di 100 ms, 9 kHz quando si utilizza una base temporale di 10 ms e 999 kHz quando si utilizza una base temporale di 10 ms. Base temporale di 1 ms.

In teoria, risulta essere un indicatore a otto segmenti, ma alla vecchia maniera è anche chiamato a sette segmenti, e non c'è errore in questo.

In breve, un indicatore a sette segmenti è costituito da LED posizionati uno rispetto all'altro in un determinato ordine e racchiusi in un unico alloggiamento.

Questo metodo può essere compreso con l'aiuto delle Figure 14 e 15. Questi interruttori sono collegati insieme e forniscono l'effettiva azione del multiplexer e dovrebbero essere considerati come interruttori elettronici ad alta velocità che vengono commutati ripetutamente attraverso le posizioni 1, 2 e la sequenza di operazioni di il circuito è il seguente. Supponiamo innanzitutto che l'interruttore sia in posizione.

Pochi istanti dopo, l'interruttore si sposta in posizione 3, facendo sì che sul display 3 venga visualizzato un numero; dopo pochi minuti, l'intero ciclo inizia a ripetersi ancora e così via, aggiungendo l'infinito. In pratica, circa 50 di questi cicli si verificano ogni secondo, quindi l'occhio non vede i display accendersi e spegnersi separatamente, ma li percepisce come un display apparentemente fermo che mostra il numero 327, o qualche altro numero dettato dal segmento dati.

Se consideriamo il diagramma di un singolo indicatore a sette segmenti, appare così:

Come vediamo, l'indicatore a sette segmenti può essere con anodo comune (CA), quindi con catodo comune (OC). In parole povere, se abbiamo un sette segmenti con un anodo comune (OA), allora nel circuito dovremmo appendere un "più" su questo pin, e se con un catodo comune (OC), allora un "meno" o terra . A quale pin applichiamo la tensione, questo LED si accenderà. Dimostriamo tutto questo in pratica.

Nei multiplexer pratici, la corrente di picco del display è piuttosto elevata per garantire una luminosità del display sufficiente. Nella fig. La Figura 15 mostra un esempio di un metodo di multiplexing migliorato applicato a un frequenzimetro a tre cifre. Questo metodo presenta due vantaggi principali.

Se questi terminali sono attivi alti, avranno le seguenti caratteristiche. Fico. 18 e 19. La Figura 18 mostra la tecnica di soppressione dell'ondulazione utilizzata per fornire la soppressione dello zero iniziale su un display a quattro cifre che legge la quantità.

Abbiamo in magazzino i seguenti indicatori LED:

Come possiamo vedere, i dispositivi a sette segmenti possono essere singoli e multi-bit, ovvero due, tre, quattro dispositivi a sette segmenti in un caso. Per controllare un moderno dispositivo a sette segmenti, abbiamo solo bisogno di un multimetro con funzione di test dei diodi. Cerchiamo una conclusione generale - può essere OA o OK - in modo casuale e poi osserviamo la performance di tutti i segmenti dell'indicatore. Controlliamo il segmento a sette segmenti a tre bit:

Quindi il display mostra. Fondamentalmente sono facili da usare, li accendi e si illuminano. Possono essere fastidiosi perché hanno una sorta di polarità, il che significa che funzioneranno solo se li colleghi correttamente. Se annulli la tensione positiva e negativa, non si accenderanno affatto.

Per quanto fastidioso, è anche abbastanza utile. L'altro filo è il catodo. Il catodo è collegato a terra. Fondamentalmente si ridurrà a questo. Per il catodo comune, applichi corrente ai pin che desideri accendere. Multiplexing. Ci sono anche controller video per questo se non vuoi preoccuparti di cambiare il tuo software.

Spiacenti, un segmento ha preso fuoco, quindi controlliamo gli altri segmenti allo stesso modo.

A volte la tensione sul cartone non è sufficiente per controllare i segmenti dell'indicatore. Pertanto, prendiamo l'alimentatore, lo impostiamo su 5 Volt, colleghiamo un resistore da 1-2 kiloOhm a un terminale dell'alimentatore e iniziamo a controllare l'unità a sette segmenti.

Controllo del display a 7 segmenti

Quindi quando si dispone di un anodo comune a 7 segmenti multiplex a 4 cifre. Per prima cosa dobbiamo sapere che tipo di display abbiamo, poiché le forme possibili sono due: catodo comune e anodo comune. Cose di cui avrai bisogno per questo tutorial. A sinistra: una vista grafica di un display a 7 segmenti che mostra un layout generale per il cablaggio interno e le posizioni dei pin.

A questo punto, presta attenzione all'output iniziale, poiché ti servirà in seguito durante il caricamento del programma. Se il display fosse un catodo normale, lo cancelleremmo. In fondo all'articolo c'è una foto dei circuiti che vanno sulla mia scheda prototipo. Forniamo anche una libreria per controllare più di un display.

Perché abbiamo bisogno di un resistore? Quando viene applicata la tensione al LED, inizia a consumare bruscamente corrente quando è acceso. Pertanto, in questo momento potrebbe bruciarsi. Per limitare la corrente, un resistore è collegato in serie al LED. Puoi leggere di più in questo articolo.

Conteggio esadecimale su un display a 7 segmenti

Lo svantaggio è che consumano molte risorse. Questo particolare display ha quattro cifre e due punti. Tuttavia, il dispositivo fornisce anche controllo digitale luminosità del display attraverso un modulatore interno a banda larga. In questi casi, l'output può essere effettuato su più display a 7 segmenti.

Ciò consente di risparmiare contatti sull'alloggiamento e quindi sul controllo. Di conseguenza si parla di display ad anodo comune o a catodo comune. L'output che corrisponde a un segmento o a un punto decimale è meglio estrarlo dalla scheda tecnica per la visualizzazione. Un display a 7 segmenti classificato per i soliti 10-20 mA si accenderà comunque, anche se debolmente. Ma ciò non richiede l'assegnazione dei contatti. La seguente distribuzione di questo segmento si basa su.

Allo stesso modo controlliamo i sette segmenti a quattro cifre di una radio cinese

Penso che non dovrebbero esserci particolari difficoltà con questo. Nei circuiti, i circuiti a sette segmenti sono collegati a resistori su ciascun pin. Ciò è dovuto anche al fatto che i LED, quando viene loro applicata la tensione, consumano freneticamente corrente e si bruciano.

Se viene utilizzato uno scopo diverso, ciò è in linea di principio possibile, ma deve essere tenuto in considerazione durante la programmazione. La conversione di singole cifre in uno specifico modello di output può essere eseguita utilizzando qualcosa chiamato. Tutti gli altri segmenti dovrebbero essere scuri. Se questa casella di controllo è selezionata per tutte le cifre, viene fornita la seguente tabella.

IN programma di prova i numeri da 0 a 9 vengono visualizzati in sequenza su un display a 7 segmenti. Il numero di uscita viene memorizzato in un contatore di registri e incrementato di 1 all'interno del ciclo. Se il registro raggiunge il valore 10, viene reimpostato nuovamente su 0. Una volta sollevato, si verifica un ciclo di attesa che garantisce che sia trascorso un certo periodo di tempo nella versione successiva. Normalmente non faresti cicli di attesa così lunghi, ma non si tratta di aspettare, si tratta di controllare un display a 7 segmenti. Usare un timer per questo è uno sforzo eccessivo.

Nel nostro mondo moderno, i dispositivi a sette segmenti vengono già sostituiti da indicatori LCD in grado di visualizzare informazioni completamente diverse

ma per utilizzarli sono necessarie determinate competenze nella progettazione dei circuiti di tali dispositivi. Finora non c'è niente di più semplice o più economico degli indicatori LED a sette segmenti.

Il vero problema, e quindi la parte interessante di questo articolo, tuttavia, si verifica direttamente dopo il ciclo dell'etichetta. Tieni presente che il valore del contatore deve essere raddoppiato. Ciò è direttamente correlato al fatto che la memoria flash è a parole e non a byte. Il secondo esempio in questa pagina funziona diversamente. Mostra come, attraverso un'altra voce della tabella, la generazione di byte di riempimento può essere impedita dall'assemblatore. È anche interessante che il calcolo richieda un registro che contenga il valore 0.

Pertanto, questa costante deve prima essere caricata in un registro e solo successivamente è possibile eseguire l'addizione utilizzando questo registro. La cosa interessante è che questo fatto si trova in molti programmi e le costanti nella stragrande maggioranza dei casi sono la costante 0. Pertanto, molti programmatori riservano fin dall'inizio un registro a questo e lo chiamano registro zero.

In questo articolo parleremo di display digitale.
Gli indicatori LED a sette segmenti sono progettati per visualizzare i numeri arabi da 0 a 9 (Fig. 1).

Tali indicatori sono a una cifra, ovvero mostrano un solo numero, ma possono esserci più gruppi di sette segmenti combinati in un unico alloggiamento (a più cifre). In questo caso i numeri sono separati da un punto decimale (Fig. 2)

Sfortunatamente c'è un problema perché il display richiede otto porte: quattro annunci pubblicitari richiederebbero 32 porte. Ma ci sono diversi modi. I registri a scorrimento sono già descritti in un altro tutorial. Ciò renderebbe più semplice creare le 32 linee di uscita richieste con soli tre pin. Il principio di controllo non è diverso dal pilotaggio di un singolo display a 7 segmenti, solo il modo in cui i "pin di uscita" si avvicinano ai loro valori è diverso ed è determinato dall'uso dei registri a scorrimento. SU questo momento tuttavia, deve essere mostrata un'altra opzione di controllo.



Fig.2.

L'indicatore è chiamato a sette segmenti perché il simbolo visualizzato è costituito da sette segmenti separati. All'interno dell'alloggiamento di tale indicatore sono presenti dei LED, ognuno dei quali illumina il proprio segmento.
È problematico visualizzare lettere e altri simboli su tali indicatori, quindi per questi scopi vengono utilizzati indicatori a 16 segmenti.

Vedremo nuovamente il multiplexing di seguito. Multiplexing significa che non tutti e quattro i display vengono accesi contemporaneamente, ma solo uno alla volta poco tempo. Se il passaggio da un display all'altro avviene più velocemente di quanto noi umani possiamo percepire, tutte e quattro le luci sembrano funzionare contemporaneamente, anche se solo una è accesa per un breve periodo di tempo. In questo modo, quattro display possono condividere singoli segmenti di segmento e tutto ciò che serve sono 4 linee di controllo aggiuntive per i 4 display con cui è abilitato il display.

Un aspetto di questo tipo di controllo è la frequenza del multiplexing, cioè il ciclo completo di transizione da un display all'altro. Dovrebbe essere sufficientemente alto da evitare lo sfarfallio del display. L'occhio umano è lento, in un cinema 24 fotogrammi al secondo, con la TV per essere sicuri che anche le immagini fisse sono calme, ogni segmento deve essere controllato almeno 100 Hz, quindi si collega almeno ogni 10 ms. In casi eccezionali, tuttavia, anche a 100 Hz possono ancora sfarfallare, ad esempio quando il display si muove rapidamente o quando si verificano interferenze con sorgenti luminose artificiali che funzionano con corrente alternata.

Gli indicatori LED sono di due tipi.
Nel primo di essi, tutti i catodi, ad es. i terminali negativi di tutti i LED sono combinati insieme e sulla custodia è assegnato loro un terminale corrispondente.
I restanti terminali dell'indicatore sono collegati all'anodo di ciascun LED (Fig. 3, a). Questo circuito è chiamato “circuito a catodo comune”.
Esistono anche indicatori in cui i LED di ciascun segmento sono collegati secondo un circuito con un anodo comune (Fig. 3, b).



Fig.3.

Ogni segmento è contrassegnato da una lettera corrispondente. La Figura 4 mostra la loro posizione.

Fig.4.

Ad esempio, considera un indicatore a sette segmenti a due cifre GND-5622As-21 rosso. A proposito, ci sono altri colori, a seconda del modello.
Usando una batteria da tre volt, puoi accendere i segmenti e, se combini un gruppo di pin in un mazzo e li alimenta, puoi persino visualizzare i numeri. Ma questo metodo è scomodo, quindi i registri a scorrimento e i decodificatori vengono utilizzati per controllare gli indicatori a sette segmenti. Inoltre, spesso, i pin dell'indicatore sono collegati direttamente alle uscite del microcontrollore, ma solo quando vengono utilizzati indicatori a basso consumo di corrente. La Figura 5 mostra un frammento di un circuito che utilizza PIC16F876A.



Fig.5.

Per controllare l'indicatore a sette segmenti, viene spesso utilizzato il decoder K176ID2.
Questo chip è in grado di convertire il codice binario composto da zero e uno in cifre decimali da 0 a 9.

Per capire come funziona il tutto, è necessario assemblare un semplice circuito (Fig. 6). Il decoder K176ID2 è alloggiato in un contenitore DIP16. Dispone di 7 pin di uscita (pin 9 - 15), ciascuno dedicato ad un segmento specifico. Il controllo dei punti non è fornito qui. Il microcircuito dispone inoltre di 4 ingressi (pin 2 - 5) per la fornitura del codice binario. Il 16° e l'8° pin vengono forniti rispettivamente con alimentazione positiva e negativa. Le restanti tre conclusioni sono ausiliarie, ne parlerò poco dopo.



Fig.6.

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

Ci sono 4 interruttori a levetta nel circuito (tutti i pulsanti sono possibili), quando li si preme, ne viene fornito uno logico agli ingressi del decodificatore dall'alimentatore plus. A proposito, il microcircuito stesso è alimentato con una tensione compresa tra 3 e 15 Volt. In questo esempio, l'intero circuito è alimentato da un alimentatore da 9 volt.

Ci sono anche 4 resistori nel circuito. Queste sono le cosiddette resistenze di pull-up. Sono necessari per garantire che l'ingresso logico sia basso quando non c'è segnale. Senza di essi, le letture sull'indicatore potrebbero non essere visualizzate correttamente. Si consiglia di utilizzare lo stessoresistenza da 10 kOhm a 100 kOhm.

Nello schema, i pin 2 e 7 dell'indicatore HG1 non sono collegati. Se colleghi il pin DP all'alimentatore negativo, il punto decimale si illuminerà. E se applichi un segno meno all'uscita Dig.2, anche il secondo gruppo di segmenti si illuminerà (mostrerà lo stesso simbolo).

Gli ingressi del decoder sono progettati in modo tale che per visualizzare i numeri 1, 2, 4 e 8 sull'indicatore, è sufficiente premere un solo pulsante (il layout dispone di interruttori a levetta corrispondenti agli ingressi D0, D1, D2 e ​​D3). Se non c'è segnale, viene visualizzato il numero zero. Quando viene applicato un segnale all'ingresso D0, viene visualizzato il numero 1. E così via. Per visualizzare altri numeri, è necessario premere una combinazione di interruttori a levetta. La tabella 1 ci dirà quali dobbiamo premere.


Tabella 1.

Per visualizzare il numero "3" è necessario applicarne uno logico agli ingressi D0 e D1. Se si applica un segnale a D0 e D2, verrà visualizzato il numero "5".(Fig. 6).



Fig.6.

Ecco una tabella estesa in cui vediamo non solo la figura prevista, ma anche quei segmenti (a - g) che comporranno questa figura.



Tavolo 2.

Il 1o, 6o e 7o pin del microcircuito sono ausiliari (rispettivamente S, M, K).

Nello schema (Fig. 6), il sesto pin “M” è collegato a terra (al meno dell'alimentatore) e all'uscita del microcircuito è presente una tensione positiva per lavorare con un indicatore con un catodo comune. Se si utilizza un indicatore con anodo comune, è necessario applicarne uno al 6° pin.

Se al 7° pin “K” viene applicato quello logico, il segnale indicatore si spegne, lo zero consente l'indicazione. Nello schema questa conclusione messo a terra (al meno dell'alimentatore).

Alla prima uscita del decoder viene fornita un'unità logica (più alimentazione) che permette di visualizzare sull'indicatore il codice convertito. Ma se applichi uno zero logico a questo pin (S), gli ingressi smetteranno di ricevere un segnale e il segno attualmente visualizzato si bloccherà sull'indicatore.

Una cosa interessante da notare è che sappiamo che l'interruttore a levetta D0 attiva il numero "1" e l'interruttore a levetta D1 attiva il numero "2". Se si premono entrambi gli interruttori a levetta, verrà visualizzato il numero 3 (1+2=3). E in altri casi, l'indicatore mostra la somma dei numeri che compongono questa combinazione. Arriviamo alla conclusione che gli ingressi del decoder sono disposti in modo accurato e hanno combinazioni molto logiche.

Puoi anche guardare il video di questo articolo.

Colleghiamo un indicatore LED a sette segmenti alla scheda Arduino e impariamo a controllarlo utilizzando la libreria Led4Digits.h.

La lezione precedente descriveva in dettaglio i microcontrollori. Colleghiamo un tale indicatore alla scheda Arduino.

Lo schema per collegare l'indicatore alla scheda Arduino è simile al seguente.

L'ho assemblato su un circuito.

Per gestire gli indicatori ho scritto la libreria Led4Digits.h:

E paga.

La libreria consente di gestire indicatori a sette segmenti:

  • dimensione fino a quattro cifre;
  • con eventuali varianti delle polarità degli impulsi di comando (tutti);
  • lavora in un processo parallelo;
  • permette di visualizzare sull'indicatore:
    • segmenti di ciascuna categoria;
    • la cifra di ciascuna cifra;
    • intero 0...9999;
  • per emettere un numero intero, è possibile specificare il numero di cifre;
  • Esiste una modalità per sopprimere le cifre insignificanti.

Puoi scaricare la libreria Led4Digits.h da questo link:

E paga. Solo 40 rubli. al mese per l'accesso a tutte le risorse del sito!

La modalità di installazione è scritta in .

Non fornirò i testi originali. Puoi cercarli nei file della libreria. Come sempre, i commenti non mancano. Descriverò in dettaglio, con esempi, come utilizzare la libreria.

Libreria di controllo LED per Arduino Led4Digits.

Ecco la descrizione della classe. Ho fornito solo metodi e proprietà pubblici.

classe Led4Cifre (
pubblico:
cifra in byte; // codici di controllo dei segmenti di bit
rigenerazione del vuoto(); // rigenerazione, il metodo deve essere richiamato regolarmente
void tetradToSegCod(byte dig, byte tetrad); // convertire tetradi in codici di segmento
stampa booleana (valore int senza segno, byte digitNum, byte vuoto); // uscita intera



} ;

Costruttore.

Led4Cifre (tipo byteLed, byte cifraPin0, byte cifraPin1, byte cifraPin2, byte cifraPin3,
byte segPinA, byte segPinB, byte segPinC, byte segPinD,
byte segPinE, byte segPinF, byte segPinG, byte segPinH);

tipoLed Imposta le polarità degli impulsi di controllo per i segnali di selezione di bit e segmenti. Supporta qualsiasi schema di connessione ().

tipoLed Selezione della categoria Selezione del segmento Tipo di circuito
0 -_- -_- Anodo comune con tasti di selezione della scarica
1 _-_ -_- Anodo comune
2 -_- _-_ Catodo comune
3 _-_ _-_ Catodo comune con tasti di selezione della scarica

PINcifra0...Pincifra3– uscite per la selezione delle cifre. Se digitPin = 255, la cifra è disabilitata. Ciò consente di collegare indicatori con meno cifre. digitPin0 – cifra bassa (destra).

segPinA...segPinH– uscite di controllo del segmento.

Per esempio,

significa: indicatore tipo 1; uscite di scarico 5,4,3,2; output dei segmenti 6,7,8,9,10,11,12,13.

metodo void regen()

Il metodo deve essere chiamato regolarmente in un processo parallelo. Rigenera l'immagine sugli indicatori. La durata del ciclo di rigenerazione è uguale al periodo di chiamata del metodo moltiplicato per il numero di bit.

Per esempio,

// gestore di interruzioni 2 ms
void timerInterrupt() (
disp.regen(); // rigenerazione dell'indicatore
}

Matrice di cifre byte

Contiene lo stato dei segmenti. la cifra è il bit meno significativo, il bit meno significativo della cifra è il segmento “A” del bit meno significativo. Uno stato del bit pari a 1 significa che il segmento è illuminato.

Per esempio,

cifra = B0000101;

significa che nella seconda cifra sono illuminati i segmenti “A” e “C”.

Un esempio di un programma che illumina in sequenza tutti i segmenti di ciascuna cifra.

// segmenti in esecuzione
#includere
#includere

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

configurazione nulla() (
interruzione del timer 2 ms
MsTimer2::start(); // abilitazione interruzione
}

ciclo vuoto() (
for (int i = 0; i< 32; i++) {
if (i == 0) disp.cifra= 1;
altrimenti se (i == 8) disp.cifra= 1;
altrimenti se (i == 16) disp.cifra= 1;
altrimenti se (i == 24) disp.cifra= 1;
altro(
disp.cifra = disp.cifra<< 1;
disp.cifra = disp.cifra<< 1;
disp.cifra = disp.cifra<< 1;
disp.cifra = disp.cifra<< 1;
}
ritardo(250);
}
}

//gestore di interruzioni 2 ms
void timerInterrupt() (
disp.regen(); // rigenerazione dell'indicatore
}

Nell'array di cifre, 1 viene spostato e gli indicatori lo visualizzano.

Metodo void tetradToSegCod(byte dig, byte tetrad)

Il metodo consente di visualizzare numeri e lettere del codice esadecimale in singole cifre. Ha argomenti:

  • dig – cifra numero 0...3;
  • tetrad – codice carattere decimale. Il codice 0 visualizzerà il numero "0", il codice 1 - il numero "1", il codice 14 - la lettera "E".

Per esempio,

tetrado(2, 7);

verrà visualizzato il numero "7" nella terza cifra.

Un esempio di un programma che cambia a turno i caratteri in ciascuna cifra.

// numeri uno per uno
#includere
#includere

// indicatore tipo 1; uscite di scarico 5,4,3,2; output del segmento 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

configurazione nulla() (
MsTimer2::set(2, timerInterrupt); // interruzione del timer 2 ms
MsTimer2::start(); // abilitazione interruzione
}

ciclo vuoto() (
for (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
ritardo(250);
}
}

// gestore di interruzioni 2 ms
void timerInterrupt() (
disp.regen(); // rigenerazione dell'indicatore
}

Metodo booleano print(valore int senza segno, byte digitNum, byte vuoto)

Il metodo visualizza un numero intero sugli indicatori. Converte il numero binario in BCD per ogni cifra. Ha argomenti:

  • valore – il numero visualizzato sull'indicatore.
  • digitNum – numero di cifre del numero. Questo non deve essere confuso con il numero di cifre dell'indicatore. Potresti voler visualizzare un numero su 2 cifre e visualizzare i caratteri sulle altre due utilizzando la cifra.
  • vuoto – un segno di soppressione di cifre insignificanti. vuoto=0 significa che il numero deve essere visualizzato con tutti zeri. Il numero "7" sarà simile a "0007". Se lo spazio vuoto è diverso da 0, gli zeri non significativi verranno soppressi.

Se il valore numerico supera il numero consentito per il numero di cifre selezionato (digitNum), la funzione visualizzerà "---" sull'indicatore e restituirà false.

Un esempio di un programma di output di numeri.

// numero di output
#includere
#includere

// indicatore tipo 1; uscite di scarico 5,4,3,2; output del segmento 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

configurazione nulla() (
MsTimer2::set(2, timerInterrupt); // interruzione del timer 2 ms
MsTimer2::start(); // abilitazione interruzione
}

ciclo vuoto() (
for (int i = 0; i< 12000; i++) {
disp.stampa(i, 4, 1);
ritardo(50);
}
}

// gestore di interruzioni 2 ms
void timerInterrupt() (
disp.regen(); // rigenerazione dell'indicatore
}

Gli ultimi due metodi non modificano lo stato del segmento “H” – il punto decimale. Per modificare lo stato di un punto è possibile utilizzare i comandi:

cifra |= 0x80; // illuminare il punto decimale
cifra &= 0x7f; // estinguere la virgola decimale

Output verso indicatori di numeri negativi (int).

I numeri negativi possono essere emessi come segue:

  • Controlla il segno del numero.
  • Se il numero è negativo, stampa un segno meno sulla cifra più significativa e cambia il segno del numero in positivo nella funzione print().
  • Se il numero è positivo, disattiva il bit di segno e stampa il numero utilizzando la funzione print().

Ecco un programma che dimostra questo metodo. Emette numeri da -999 a 999.

// emettere numeri negativi
#includere
#includere

// indicatore tipo 1; uscite di scarico 5,4,3,2; output del segmento 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

configurazione nulla() (
MsTimer2::set(2, timerInterrupt); // interruzione del timer 2 ms
MsTimer2::start(); // abilitazione interruzione
}

ciclo vuoto() (

for (int i = -999; i< 1000; i++) {

se io< 0) {
// il numero è negativo
cifra disp= B01000000; // cartello -
disp.stampa(i * -1, 3, 1);
}
altro(
cifra disp= B00000000; // cancella il segno
disp.stampa(i, 3, 1);
}

ritardo(50);
}
}

// gestore di interruzioni 2 ms
void timerInterrupt() (
disp.regen(); // rigenerazione dell'indicatore
}

Output per indicatori di numeri frazionari, formato float.

Esistono molti modi per visualizzare i numeri in virgola mobile (float) utilizzando le funzioni standard del linguaggio C. Questa è, prima di tutto, la funzione sprint(). Funziona molto lentamente, richiede ulteriori conversioni di codici carattere in codici decimali binari, è necessario estrarre un punto da una stringa. Stessi problemi con altre funzioni.

Utilizzo un metodo diverso per visualizzare i valori delle variabili float sugli indicatori. Il metodo è semplice, affidabile, veloce. Si riduce alle seguenti operazioni:

  • Il numero in virgola mobile viene moltiplicato per 10 alla potenza corrispondente al numero richiesto di cifre decimali. Se è necessario visualizzare 1 cifra decimale sugli indicatori, moltiplicare per 10, se 2, quindi moltiplicare per 100, 3 cifre decimali per 1000.
  • Successivamente, il numero in virgola mobile viene convertito esplicitamente in un numero intero (int) e visualizzato sugli indicatori utilizzando la funzione print().
  • Viene inserito un punto nella cifra richiesta.

Ad esempio, le righe seguenti restituiranno una variabile float con due cifre decimali ai LED a sette segmenti.

virgola mobile x = 2,12345;

disp.cifra |= 0x80; //

Moltiplichiamo il numero per 100 e, inserendo un punto nella terza cifra, dividiamo il risultato per 100.

Ecco un programma che visualizza i numeri in virgola mobile da 0,00 a 99,99 sugli indicatori.

// uscita in virgola mobile
#includere
#includere

// indicatore tipo 1; uscite di scarico 5,4,3,2; output del segmento 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

configurazione nulla() (
MsTimer2::set(2, timerInterrupt); // interruzione del timer 2 ms
MsTimer2::start(); // abilitazione interruzione
}

ciclo vuoto() (
galleggiante x = 0;

for (int i = 0; i< 10000; i++) {
x+= 0,01;

disp.print((int)(x * 100.), 4, 1);
disp.cifra |= 0x80; // illuminare il punto del terzo livello

ritardo(50);
}
}

//gestore di interruzioni 2 ms
void timerInterrupt() (
disp.regen(); // rigenerazione dell'indicatore
}

Come puoi vedere, la libreria Led4Digits.h semplifica notevolmente il lavoro con gli indicatori LED (diodo a emissione di luce) a sette segmenti collegati alla scheda Arduino. Non ho trovato un analogo di una simile biblioteca.

Esistono librerie per lavorare con i display LED tramite un registro a scorrimento. Qualcuno mi ha scritto di aver trovato una libreria che funziona con un display LED collegato direttamente alla scheda Arduino. Ma quando lo si utilizza, le cifre dell'indicatore si illuminano in modo non uniforme e lampeggiano.

A differenza dei suoi analoghi, la libreria Led4Digits.h:

  • Viene eseguito come un processo parallelo. Nel ciclo principale, il programma carica i dati in determinate variabili, che vengono automaticamente visualizzate sul display. L'output delle informazioni e la rigenerazione dell'indicatore avvengono in un'interruzione del timer, invisibile al programma principale.
  • I numeri sul display si illuminano in modo uniforme, senza lampeggiare. Questa proprietà è garantita dal fatto che la rigenerazione avviene in un ciclo rigorosamente definito da un'interruzione del timer.
  • La libreria ha un codice compatto, viene eseguita rapidamente e carica minimamente il controller.

Nella prossima lezione collegheremo contemporaneamente un indicatore LED e una matrice di pulsanti alla scheda Arduino. Scriviamo una libreria per un tale progetto.

Categoria: . Puoi aggiungerlo ai segnalibri.


Superiore