LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Gli indicatori LED a sette segmenti sono molto popolari tra i display di valori digitali e trovano applicazioni nei pannelli frontali dei forni a microonde, lavatrici, orologi digitali, contatori, timer, ecc. Rispetto a indicatori LCD, segmenti indicatore LED brillano intensamente e sono distinguibili a grande distanza e con un ampio angolo di visione. Sono necessarie almeno 12 linee I / O per collegare un display a 4 cifre a 7 segmenti al microcontrollore. Pertanto, è praticamente impossibile utilizzare questi indicatori con microcontrollori con un numero limitato di pin, ad esempio una serie dell'azienda. Certo, puoi usare diversi metodi di multiplexing (la cui descrizione è disponibile sul sito nella sezione "Schemi"), ma in questo caso ci sono alcune restrizioni per ogni metodo, e spesso usano algoritmi software complessi.

Considereremo il metodo di connessione dell'indicatore tramite l'interfaccia SPI, che richiederà solo 3 linee I / O del microcontrollore. In questo caso, verrà preservato il controllo di tutti i segmenti dell'indicatore.

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

La corrente attraverso i segmenti dell'indicatore è impostata con un solo resistore esterno. Inoltre, il microcircuito supporta il controllo della luminosità degli indicatori (16 livelli di luminosità) tramite il PWM integrato.

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

Il microcircuito viene utilizzato in inclusione standard, dei componenti esterni, è necessaria solo una resistenza, che regola la corrente attraverso i segmenti, un diodo di protezione per l'alimentazione e un condensatore di filtraggio per l'alimentazione.

I dati vengono trasferiti al microcircuito in pacchetti a 16 bit (due byte), che vengono inseriti nel registro a scorrimento a 16 bit integrato su ciascun fronte di salita del segnale CLK. Indichiamo il pacchetto a 16 bit D0-D15, dove i bit D0-D7 contengono dati, D8-D11 contengono l'indirizzo del registro, i bit D12-D15 non sono importanti. Il bit D15 è il bit più significativo ed è il primo bit ad essere ricevuto. Sebbene il microcircuito sia in grado di pilotare otto indicatori, considereremo di lavorare solo con quattro. Sono comandati alle uscite DIG0 - DIG3, poste nell'ordine da destra a sinistra, gli indirizzi a 4 bit (D8-D11) che corrispondono ad esse sono 0 × 01, 0 × 02, 0 × 03 e 0 × 04 (formato esadecimale). Il registro delle cifre è implementato sulla base della RAM di bordo con un'organizzazione di 8 × 8 ed è direttamente indirizzabile in modo che ogni singola cifra sul display possa essere aggiornata in qualsiasi momento. La tabella seguente elenca le cifre indirizzabili e i registri di controllo per MAX7219.

Registrati

Indirizzo

Valore HEX

Nessuna operazione

Modalità di decodifica

Numero di indicatori

Spegnimento

Test degli indicatori

Registri di controllo

Il chip MAX1792 ha 5 registri di controllo: modalità di decodifica, intensità, limite di scansione, spegnimento, test del display.

Accensione e spegnimento del microcircuito

Quando l'alimentazione viene applicata al microcircuito, tutti i registri vengono cancellati e si passa alla modalità di arresto. In questa modalità, il display è spento. Per passare al funzionamento normale, impostare il bit D0 del registro Shutdown (indirizzo 0Сh). Questo bit può essere cancellato in qualsiasi momento per disattivare il driver, mantenendo invariati tutti i registri. Questa modalità può essere utilizzata per risparmiare energia o in modalità di segnalazione mediante il lampeggio dell'indicatore (attivazione e disattivazione sequenziale della modalità Spegnimento).

Il trasferimento del microcircuito alla modalità Shutdown viene effettuato mediante trasmissione sequenziale dell'indirizzo (0Ch) e dei dati (00h), e il trasferimento di 0Ch (indirizzo) e quindi 01h (dati) torna al normale funzionamento.

Modalità di decodifica

Con 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 nessuna decodifica per ciascuna cifra. Ogni bit nel registro corrisponde a una cifra, l'impostazione di un'unità logica corrisponde all'abilitazione del decodificatore per questo bit, l'impostazione 0 - il decodificatore è escluso. Se viene utilizzato un decodificatore BCD, viene preso in considerazione solo il frammento di dati meno significativo nei registri delle cifre (D3-D0), i bit D4-D6 vengono ignorati, il bit D7 non dipende dal decodificatore BCD ed è responsabile dell'inclusione del punto decimale sull'indicatore se D7 \u003d 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 vengono inviati 01h e 89h, l'indicatore DIG0 visualizzerà il numero 9 con il punto decimale abilitato. La tabella seguente fornisce un elenco completo dei caratteri visualizzati quando si utilizza il chip del decodificatore BCD.

Simbolo

Dati nei registri

Segmenti inclusi \u003d 1

Vuoto

*Il punto decimale è impostato dal bit D7 \u003d 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à degli indicatori

Il microcircuito consente di controllare in modo programmatico la luminosità degli indicatori tramite il PWM integrato. L'uscita PWM è controllata dal nibble basso (D3-D0) del registro Intensità (indirizzo 0Ah), che consente di impostare uno dei 16 livelli di luminosità. L'impostazione di tutti i bit di nibble su 1 seleziona la luminosità massima dell'indicatore.

Numero di indicatori collegati

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

Test degli indicatori

Il registro responsabile di questa modalità si trova in 0Fh. Impostando il bit D0 nel registro, l'utente accende tutti i segmenti degli indicatori, mentre i contenuti dei registri di controllo e dati non vengono modificati. Per disattivare la modalità Display-Test, il bit D0 deve essere 0.

Interfaccia microcontrollore

Il modulo indicatore può essere collegato a qualsiasi microcontrollore dotato di tre linee I / O libere. Se il microcontrollore dispone di un modulo SPI hardware integrato, il modulo indicatore può essere collegato come dispositivo slave sul bus. In questo caso, le linee di segnale SPI dell'interfaccia SDO (serial data out), SCLK (orologio seriale) e SS (selezione slave) del microcontrollore possono essere collegate direttamente ai pin MOSI, CLK e CS del microcircuito MAX7219 (modulo), 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 impostando e mantenendosi basso sulla linea CS, dopodiché vengono inviati in sequenza 16 bit di dati (prima il bit più significativo) sulla linea MOSI sul fronte di salita del segnale CLK. Quando la trasmissione è completa, la linea CS torna alta.

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

Per commentare i materiali dal sito e ottenere pieno accesso al nostro forum, è necessario registrati .

Dall'avvento dell'ingegneria radio e dell'elettronica risposta dispositivo elettronico e una persona era accompagnata da varie spie luminose, pulsanti, interruttori a levetta, campanelli (segnale pronto per microonde - tintinnio!). Alcuni dispositivi elettronici forniscono un minimo di informazioni, perché più sarebbero ridondanti. Ad esempio, un LED acceso accanto al caricabatterie del telefono cinese indica che il caricabatterie è collegato alla rete e riceve tensione. 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 utilizzando lampadine luminose o LED. Un grado: un diodo acceso o una lampadina. Quanti gradi - tanti indicatori accesi. Contare queste lucciole può essere una cosa comune, ma ancora una volta, quante luci di questo tipo saranno necessarie per mostrare la temperatura con una precisione di un decimo di grado? Ad ogni modo, quale area occuperanno questi LED e lampadine su un dispositivo elettronico?

I pratici dispositivi di visualizzazione a sette segmenti dovrebbero avere almeno otto terminali di connessione esterni; sette di loro forniscono l'accesso a singoli segmenti fotovoltaici e l'ottavo fornisce una connessione 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 ogni segmento drive è solitamente alto ma va basso per accendere un 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, era su queste lampade che venivano fornite varie indicazioni per strumenti e altri dispositivi elettronici. Attualmente, gli elementi di scarico del gas non vengono quasi mai utilizzati ovunque. Ma il retrò è sempre di moda, così tanti radioamatori collezionano orologi raffinati su tubi a scarica di gas per se stessi e per i loro cari.

La spiegazione completa per questo è un po 'più complicata, come segue. Quando la tensione è zero, il segmento è praticamente invisibile. Tuttavia, quando la tensione all'ingresso ha un valore positivo o negativo significativo, il segmento diventa effettivamente visibile, ma se la tensione del drive viene mantenuta per più di poche centinaia di millisecondi, il segmento può diventare permanentemente visibile e non avere più significato.

In queste condizioni, il segmento è disabilitato. Pertanto, il segmento è incluso in questi termini. Questa forma di azionamento è comunemente nota come sistema di "azionamento a ponte" di raddoppio della tensione. La sequenza di azioni dello schema è la seguente. Il semplice sistema a cascata descritto in precedenza soffre di un grave difetto in quanto il display diventa sfocato durante il periodo di conteggio effettivo, diventando stabile e leggibile solo quando ogni contatore è completato e il gate di ingresso è chiuso. Questo tipo di display "sfocato e leggibile" è molto fastidioso da guardare.

Svantaggi delle lampade a scarica di gas: mangiano molto. La durabilità è discutibile. Nella nostra università, i frequenzimetri su tubi a scarica di gas sono ancora utilizzati nelle stanze dei laboratori.

Con l'avvento dei LED, la situazione è cambiata radicalmente. I LED stessi consumano poca corrente. Se li metti nella giusta posizione, puoi visualizzare assolutamente qualsiasi informazione. Per mettere in risalto tutti i numeri arabi è bastato qualcosa sette (da qui il nome indicatore a sette segmenti) strisce LED luminose, esposte in un certo modo:

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

Dopo alcuni secondi, la sequenza si ripete nuovamente, con i contatori azzerati e quindi conteggio degli impulsi della frequenza di ingresso per un secondo, durante il quale il display legge continuamente i risultati del conteggio precedente, ecc.

a quasi tutti questi indicatori a sette segmenti, viene aggiunto anche un ottavo segmento, un punto, per poter mostrare il valore intero e frazionario di qualsiasi parametro

Pertanto, il circuito in Figura 13 crea una visualizzazione stabile che viene aggiornata una volta al secondo; in pratica, il periodo di conteggio effettivo di questo e il diagramma in Figura 12 possono essere fatti su qualsiasi decennio con secondi multipli o incompleti, a condizione che la visualizzazione dell'output sia adeguatamente ridimensionata.

Si noti che il contatore a 3 cifre può indicare frequenze massime di 999 Hz utilizzando una base dei tempi di 1 secondo, 99 kHz utilizzando una base dei tempi di 100 ms, 9 kHz utilizzando una base dei tempi di 10 ms e 999 kHz utilizzando una base dei tempi di 1 ms.

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

In breve, indicatore a sette segmenti - questi sono LED, posizionati l'uno rispetto all'altro in un certo ordine e proprietari in un alloggiamento.

Questa tecnica può essere compresa facendo riferimento alle Figure 14 e 15. Questi interruttori sono cablati insieme e forniscono il funzionamento effettivo del multiplexer e dovrebbero essere considerati interruttori elettronici ad alta velocità che vengono commutati ripetutamente attraverso le posizioni 1, 2 e la sequenza delle operazioni è la seguente. Supponiamo prima che l'interruttore sia in posizione.

Qualche istante dopo, l'interruttore si porta in posizione 3, facendo sì che il display 3 mostri un numero dopo pochi minuti, l'intero ciclo ricomincia a ripetersi, e così via, aggiungendo l'infinito. In pratica, circa 50 di questi cicli si verificano ogni secondo, quindi l'occhio non vede che i display si accendono e si spengono separatamente, ma li percepisce come un display chiaramente stabile che mostra il numero 327, o qualche altro numero dettato dal segmento di dati.

Se consideriamo lo schema di un singolo indicatore a sette segmenti, allora assomiglia a questo:

Come possiamo vedere, un indicatore a sette segmenti può essere entrambi con anodo comune (OA)e con catodo comune (OK)... In parole povere, se abbiamo un dispositivo a sette segmenti con un anodo comune (OA), allora nel circuito dobbiamo appendere un "più" a questa uscita e, se con un catodo comune (OK), un "meno" o massa. A quale uscita applichiamo la tensione, un tale LED si accenderà con noi. Dimostriamo tutto questo in pratica.

Nei multiplexer pratici, la corrente di picco del display è sufficientemente alta da fornire una luminosità del display sufficiente. FIGURA. 15 mostra un esempio di una tecnica di multiplexing migliorata applicata a un contatore di frequenza a tre cifre. Questo metodo ha due vantaggi principali.

Se questi terminali sono attivi alti, avranno le seguenti caratteristiche. FIGURA. 18 e 19. La Figura 18 mostra la tecnica di smorzamento del ripple utilizzata per fornire la soppressione dello zero finale su un display a quattro cifre che legge una quantità.

Abbiamo i seguenti indicatori LED disponibili:

Come possiamo vedere, i dispositivi a sette segmenti possono essere a una cifra e a più cifre, ovvero due, tre, quattro dispositivi a sette segmenti in un unico corpo. Per controllare un moderno dispositivo a sette segmenti, abbiamo bisogno di un multimetro con una funzione di continuità del diodo. Stiamo cercando una conclusione generale - può essere OA o OK - digitando e quindi esaminiamo le prestazioni di tutti i segmenti dell'indicatore. Controllo dei sette segmenti a tre cifre:

Pertanto, il display mostra. Fondamentalmente, sono facili da usare, li accendono e si illuminano. Possono essere fastidiosi perché hanno una sorta di polarità, il che significa che funzioneranno solo quando li colleghi correttamente. Se annulli le tensioni positive e negative, non si accenderanno affatto.

Fastidioso, è così, è anche abbastanza utile. L'altro filo è il catodo. Il catodo è collegato a terra. Fondamentalmente, si arriverà a questo. Per un catodo comune, applichi corrente ai pin che desideri attivare. Multiplexing. Ci sono anche controller di visualizzazione per questo, se non vuoi preoccuparti di cambiare il tuo software.

Cazzo, abbiamo un segmento in fiamme, controlliamo altri segmenti allo stesso modo.

A volte la tensione sul cartone animato non è sufficiente per controllare i segmenti dell'indicatore. Pertanto, prendiamo l'alimentatore, impostiamo 5 Volt su di esso, colleghiamo un resistore da 1-2 kiloohm a un terminale dell'alimentatore e iniziamo a controllare il dispositivo a sette segmenti.

Controllo del display a 7 segmenti

Quindi, quando si dispone di un segmento 7 multiplex a 4 cifre, l'anodo comune. Innanzitutto, dobbiamo sapere che tipo di display abbiamo, poiché ci sono due forme possibili: 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 comune per cablaggio interno e piedinatura.

A questo punto fate attenzione all'output iniziale, in quanto vi servirà in seguito durante il caricamento del programma. Se il display fosse stato un normale catodo, lo avremmo cancellato. In fondo all'articolo c'è una foto del circuito che gira sulla mia scheda prototipo. Forniamo anche una libreria per controllare più di un display.

Perché abbiamo bisogno di una resistenza? Quando la tensione viene applicata al LED, inizia a consumare improvvisamente corrente quando viene acceso. Pertanto, in questo momento potrebbe esaurirsi. Per limitare la corrente, un resistore è collegato in serie al LED nel circuito. Maggiori dettagli possono essere trovati in questo articolo.

Conteggio in esadecimale su un display a 7 segmenti

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

Questo salva i contatti sul corpo e poi sul controllo. Di conseguenza, vengono menzionati display con un anodo comune o un catodo comune. L'output che corrisponde al segmento o al punto decimale si ricava al meglio dal foglio dati per la visualizzazione. Il display a 7 segmenti, che è valutato per i soliti 10-20mA, si accenderà comunque, anche se debolmente. Ma questo non richiede l'assegnazione dei pin. Inoltre, la distribuzione di questo segmento si basa su.

Allo stesso modo, controlliamo un registratore a sette segmenti a quattro cifre da una radio cinese.

Penso che non dovrebbero esserci particolari difficoltà con questo. Nei circuiti, i dispositivi a sette segmenti si aggrappano ai resistori su ciascuna uscita. Ciò è anche dovuto al fatto che i LED, quando viene applicata tensione, consumano freneticamente corrente e si bruciano.

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

NEL programma di test Le cifre da 0 a 9 vengono visualizzate in sequenza sul display a 7 segmenti. Il numero in uscita viene memorizzato in un contatore di registro e incrementato di 1 all'interno del ciclo. Se il registro raggiunge 10, viene reimpostato a 0. Dopo l'aumento, si verifica un ciclo di attesa, che garantisce che trascorra un certo periodo di tempo nella versione successiva. Di solito non si eseguono cicli di attesa così lunghi, ma non si tratta di aspettare, ma 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 usarli, sono necessarie determinate abilità nei circuiti di tali dispositivi. Finora, non c'è niente di più semplice ed economico degli indicatori LED a sette segmenti.

Il problema vero e proprio, e quindi la parte interessante di questo articolo, tuttavia, si verifica subito dopo il loop dell'etichetta. Si noti che il valore del contatore deve essere raddoppiato. Ciò è direttamente correlato al fatto che la memoria flash è di natura verbale e non per quanto riguarda i byte. Il secondo esempio in questa pagina lo fa in modo diverso. Mostra come l'assemblatore può impedire la generazione di byte di riempimento tramite un'altra voce di tabella. È anche interessante che il calcolo richiede un registro che contenga il valore 0.

Pertanto, questa costante deve essere prima caricata in un registro prima che l'aggiunta possa essere eseguita utilizzando questo registro. È interessante notare che questo fatto si verifica in molti programmi e le costanti nella stragrande maggioranza dei casi sono costanti 0. Pertanto, molti programmatori riservano un registro fin dall'inizio per questo e lo chiamano registro zero.

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

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

Sfortunatamente, c'è un problema perché sono necessarie otto porte per la visualizzazione: quattro annunci richiedono 32 porte. Ma ci sono diversi modi. I registri a turni sono già trattati in un altro tutorial. Ciò renderebbe più semplice creare le 32 linee di output richieste con solo tre pin. Il principio di guida è lo stesso della guida 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. Sul questo momentotuttavia, deve essere visualizzata un'altra opzione di controllo.



Fig. 2.

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

Vedremo di nuovo il multiplexing di seguito. Multiplexing significa che non tutti e quattro i display si accendono contemporaneamente, ma solo uno per un breve periodo. Se il cambio di display è più veloce di quanto noi umani possiamo percepire, tutte e quattro le luci sembrano funzionare simultaneamente, anche se solo una è accesa per un breve periodo. Pertanto, quattro display possono condividere segmenti separati di un segmento e tutto ciò che è necessario sono 4 linee di controllo aggiuntive per i 4 display con cui il display è acceso.

Un aspetto di questo tipo di controllo è la frequenza di multiplexing, ovvero un ciclo completo di transizione da un display all'altro. Dovrebbe essere abbastanza alto da evitare lo sfarfallio del display. L'occhio umano è pigro, nel cinema 24 fotogrammi al secondo, con la TV per stare sul sicuro, che anche le immagini fisse sono calme, ogni segmento deve essere monitorato almeno 100Hz, quindi si collega almeno ogni 10ms. In casi eccezionali, tuttavia, anche 100 Hz possono ancora sfarfallare, ad esempio quando il display si muove velocemente o quando c'è interferenza con sorgenti di luce artificiale che funzionano a corrente alternata.

Esistono due tipi di indicatori LED.
Nel primo di essi, tutti i catodi, ad es. i cavi negativi di tutti i LED sono combinati insieme e un cavo corrispondente è assegnato per loro sulla custodia.
Gli altri conduttori dell'indicatore sono collegati all'anodo di ciascuno dei LED (Fig. 3, a). Questo è chiamato "circuito catodico comune".
Ci sono anche indicatori in cui i LED di ciascuno dei segmenti sono collegati secondo uno schema con un anodo comune (Fig.3, b).



Fig. 3.

Ogni segmento è identificato da una lettera corrispondente. La figura 4 mostra la loro posizione.

Fig. 4.

Ad esempio, consideriamo un indicatore a sette segmenti a due cifre GND-5622As-21 con un bagliore rosso. A proposito, ci sono altri colori, a seconda del modello.
Con l'aiuto di una batteria da tre volt, puoi accendere i segmenti e, se combini un gruppo di pin in un gruppo e applichi l'alimentazione a loro, puoi persino visualizzare i numeri. Ma questo metodo è scomodo, quindi per controllare gli indicatori a sette segmenti vengono utilizzati registri a scorrimento e decoder. Inoltre, spesso, le uscite degli indicatori sono collegate direttamente alle uscite del microcontrollore, ma solo se vengono utilizzati indicatori a basso consumo di corrente. La Figura 5 mostra un frammento del circuito che utilizza il PIC16F876A.



Fig.5.

Per controllare un display a sette segmenti, viene spesso utilizzato il decodificatore K176ID2.
Questo microcircuito è in grado di convertire un codice binario composto da zeri e uno in cifre decimali da 0 a 9.

Per capire come funziona tutto questo, è necessario mettere insieme un semplice diagramma (Figura 6). Il decoder K176ID2 è realizzato in un pacchetto DIP16. Dispone di 7 pin di uscita (pin 9-15), ciascuno dedicato a un segmento specifico. Il controllo del punto non è fornito qui. Inoltre, il microcircuito dispone di 4 ingressi (pin 2-5) per l'alimentazione codice binario... Il 16 ° e l'8 ° pin vengono forniti rispettivamente con alimentazione più e meno. Le altre tre conclusioni sono ausiliarie, ne parlerò un po 'più tardi.



Fig. 6.

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

Ci sono 4 interruttori a levetta nel circuito (è possibile utilizzare qualsiasi pulsante), quando li si preme, un'unità logica viene fornita agli ingressi del decoder dall'alimentatore plus. A proposito, il microcircuito stesso è alimentato da una tensione da 3 a 15 volt. NEL questo esempio l'intero circuito è alimentato da una "corona" da 9 volt.

Ci sono anche 4 resistenze nel circuito. Queste sono le cosiddette resistenze di pull-up. Sono necessari per garantire un livello basso all'ingresso logico in assenza di segnale. Senza di essi, le letture sull'indicatore potrebbero essere visualizzate in modo errato. Si consiglia di utilizzare lo stesso resistenze da 10 kOhm a 100 kOhm.

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

Gli ingressi del decoder sono disposti in modo tale che per visualizzare i numeri 1, 2, 4 e 8 sull'indicatore, è necessario un solo pulsante (la breadboard ha interruttori a levetta corrispondenti agli ingressi D0, D1, D2 e \u200b\u200bD3). Se non c'è segnale, viene visualizzato il numero zero. Quando un segnale viene applicato all'ingresso D0, viene visualizzato il numero 1. E così via. Per visualizzare altri numeri, è necessario premere la combinazione di interruttori a levetta. E quali è necessario premere, ci dirà la Tabella 1.


Tabella 1.

Per visualizzare la cifra "3" è necessario applicare un'unità logica agli ingressi D0 e D1. Se date 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 attesa, ma anche quei segmenti (a - g) che comporranno questa figura.



Tavolo 2.

Ausiliari sono 1, 6 e 7 ° pin del microcircuito (S, M, K, rispettivamente).

Nello schema (Fig. 6), il 6 ° terminale "M" è collegato a massa (al meno di alimentazione) ed è presente una tensione positiva all'uscita del microcircuito per lavorare con un indicatore con un catodo comune. Se viene utilizzato un indicatore con un anodo comune, uno dovrebbe essere applicato alla sesta uscita.

Se un'unità logica viene applicata al 7 ° pin "K", il segno dell'indicatore si spegne, lo zero abilita l'indicazione. Nello schema questa conclusione messa a terra (a meno alimentazione).

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

Vale la pena notare una cosa interessante: sappiamo che l'interruttore a levetta D0 include il numero "1" e l'interruttore a levetta D1 include il numero "2". Se si premono entrambi gli interruttori a levetta, verrà visualizzato il numero 3 (1 + 2 \u003d 3). E in altri casi, l'indicatore mostra la somma delle cifre che compongono questa combinazione. Arriviamo alla conclusione che gli ingressi del decodificatore sono ben pensati e hanno combinazioni molto logiche.

Puoi anche guardare il video di questo articolo.

Su richiesta dei lavoratori, ho deciso di parlarvi di una cosa meravigliosa chiamata indicatore LED a 7 segmenti. Per cominciare, cos'è. Ecco una cosa del genere. Questo è un bit, ci sono anche due, tre e quattro bit. Ho visto altri sei bit. C'è un punto decimale dopo ogni cifra. Se sono presenti quattro cifre, molto spesso dopo la seconda cifra è possibile trovare i due punti per indicare i secondi durante la visualizzazione dell'ora. Dopo aver affrontato i pezzi di ferro, passiamo allo studio del circuito. Cos'è l'indicazione dinamica in generale e perché è necessaria. Poiché l'indicatore è a 7 segmenti, vengono utilizzati solo 7 segmenti per visualizzare una cifra. Sono sempre designati in lettere latine. A, B, C, D, E, F, G e DP Guarda l'immagine. Un LED si trova sotto ogni segmento. Tutti i LED sono collegati a un'estremità. Vengono portati fuori gli anodi o i catodi e le estremità opposte. È facile vedere che devono essere usati 8 pin per visualizzare una cifra. Uno comune e sette per i segmenti. Se si tratta di una categoria, non c'è nulla a cui pensare, dobbiamo semplicemente appendere tutto su una porta. E se ci sono quattro cifre? Otto volte quattro fa trentadue. Oh ... Sì, ci sarà un poro su un tale indicatore da 32 mega. Questo non funzionerà. Ci sono due soluzioni. La nostra con voi indicazione dinamica o statica. Per approfondire guardiamo il diagramma di accensione dell'indicatore.

Questo schema presuppone un'indicazione dinamica. Sì, sono tutto dinamico e statico. Qual è la differenza?. L'indicazione statica è quando impostiamo ogni cifra sulla sua cifra ed è costantemente accesa, e l'indicazione dinamica è quando emettiamo una cifra sulla prima cifra, poi la estinguiamo e la emettiamo sulla seconda cifra, poi la spegniamo e la emettiamo sulla terza cifra, e così via fino a quando gli scarichi non si esauriranno. Dopo l'ultima scarica, torna alla prima e così via in cerchio. Se lo fai lentamente, sarai in grado di contemplare una linea digitale strisciante e se aumenti la velocità, ad esempio, a 50 Hz, non vedrai lo sfarfallio dei tuoi occhi. Ecco come funziona la visualizzazione dinamica. Diamo ora un'occhiata al circuito. A sinistra dell'ATmega8 MK, dietro di esso è appeso un chip 74ALS373 sulla porta D. Perché è necessario? Il fatto è che l'indicatore è composto da soli 8 LED assemblati in una sorta di matrice. Cioè, l'indicatore può essere rappresentato come una linea di 8 LED. E come sapete, i LED mangiano in relazione al MK quanto. Certo, non è vietato connettersi direttamente, ma è meglio mettere una sorta di ripetitore tra l'MK e l'indicatore. Per questi scopi, ho deciso di utilizzare un latch buffer a 8 bit. Perché lui. Tenendo conto che uso l'indicatore con un anodo comune, cioè per il compito della cifra il livello attivo è 0, allora sarebbe sicuro usare il microcircuito ULN2003A (7 gruppi di transistor secondo il circuito Darlington) e non fare il bagno con il buffer, ma ... Ma il fatto è che ULN2003A ha a bordo solo transistor NPN e posso usare l'indicatore solo con un anodo comune, ma se devo alimentarlo con un catodo comune? Qui è dove il buffer aiuterà, poiché quello che scrivo ci sarà l'output. Vuoi 0, vuoi 1. Le gambe di controllo sono collegate in modalità traduttore. Cioè, il buffer restituisce lo stesso output dell'input. Ala pseudo isolamento galvanico. Il buffer è seguito da resistori limitatori di corrente. Ricorda, questi sono LED e bruceranno senza resistenze. Il valore delle resistenze deve essere selezionato leggermente inferiore a quello consentito. Il fatto è che il display dinamico mostra i caratteri con una certa frequenza ed è con i parenti PWM, cioè, maggiore è la frequenza, maggiore è il contrasto, per così dire. E con il contrasto più confortevole, i numeri risulteranno leggermente più deboli. Pertanto, i resistori devono assumere un valore leggermente inferiore. Ho usato solo 360 ohm perché ne avevo uno. Più avanti dopo le resistenze c'è il nostro indicatore. D'altra parte, dove sono gli anodi, ho collegato i primi quattro bit della porta C. Quindi, abbiamo in qualche modo capito il circuito. Ora parliamo dell'algoritmo del programma. Per attivare le cifre dell'indicatore una alla volta, scriveremo una funzione separata e la chiameremo all'infinito nel corpo principale del programma. Più specificamente, la funzione riceverà un numero da 0 a 9999, lo dividerà in cifre e quindi emetterà ogni cifra al suo posto. Se il numero ha meno di 4 cifre, gli spazi a sinistra verranno riempiti con zeri. Siamo allineati sul bordo destro. Esamineremo le categorie da sinistra a destra. Per vedere eventuali azioni, quindi utilizzando gli interrupt dal contatore, aumenteremo il numero visualizzato di uno ogni secondo. Quindi il compito è fissato, per la battaglia. #define F_CPU 7372800UL // Frequenza al quarzo #includere #includere #includere test int senza segno volatile \u003d 9980; // Variabile per l'output all'indicatore ISR (TIMER1_COMPA_vect) // Gestore dell'interrupt di coincidenza del timer 1 (test ++; // Aumenta il numero visualizzato se (test\u003e 9999) test \u003d 0; // Se supera le quattro cifre, zero TCNT1H \u003d 0x00; // Reimposta registro TCNT1L \u003d 0x00; // account ) void dig_out (int num); // Dichiarazione di una funzione per la visualizzazione di un indicatore int main (void) (DDRC \u003d 0x0F; // Configura le porte DDRD \u003d 0xFF; // per lavorare con l'indicatore Porta C per le cifre, Porta D per le cifre TCCR1A \u003d 0x00; // Impostazione del timer TCCR1B \u003d 0x04; TCNT1H \u003d 0x00; TCNT1L \u003d 0x00; OCR1AH \u200b\u200b\u003d 0x70; OCR1AL \u003d 0x80; TIMSK \u003d 0x10; sei (); // Abilita gli interrupt while (1) (dig_out (test); // Chiama costantemente la funzione per visualizzare il numero corrente )) void dig_out (int num) // Funzione per visualizzare 4 cifre sull'indicatore (carattere senza segno i \u003d 0; // Variabile contatore char raz senza segno \u003d 1; // Numero bit char non firmato dig_num \u003d (0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10); // Codici numerici per indicatore con un anodo comune carattere senza segno dig \u003d (0, 0, 0, 0); // Array per il valore del bit se (num (dig \u003d 0; dig \u003d 0; dig \u003d 0;) if (num // Per riempire le cifre di sinistra con zeri (dig \u003d 0; dig \u003d 0;) if (num // Per riempire le cifre di sinistra con zeri (dig \u003d 0;) while (num\u003e 999) // Ottieni il numero di migliaia (dig ++; num - \u003d 1000;) mentre (num\u003e 99) // Ottieni il numero di centinaia (dig ++; num - \u003d 100;) mentre (num\u003e 9) // Ottieni il numero di decine (dig ++; num - \u003d 10;) dig \u003d num; // Ottieni il numero di unità mentre (raz // Gira finché non riempiamo tutte e 4 le cifre (PORTC \u003d raz; // Seleziona la categoria PORTD \u003d dig_num]; // Stampa il numero raz \u003d raz // Passa alla cifra successiva i ++; // Aumenta l'indice della cifra successiva _delay_ms (1); // 1 ms di ritardo } } Questo è tutto il codice. Non lo descriverò poiché ha commenti su ogni riga. Di seguito puoi scaricare l'archivio con il progetto per AtmelStudio6.2 Se hai ancora domande, sei il benvenuto nel forum. Bene, per i video più schizzinosi qui sotto, tutto questo balalaika))).

Il collegamento di un display a 7 segmenti a un Arduino è un ottimo progetto entry-level da conoscere scheda Arduino più vicino. Ma è abbastanza semplice da implementare. Pertanto, complicheremo in qualche modo il compito e collegheremo un indicatore a sette segmenti a quattro cifre.



In questo caso, utilizzeremo un modulo LED a catodo comune a 4 cifre.


Ogni segmento nel modulo indicatore è multiplexato, cioè condivide un punto di connessione dell'anodo con altri segmenti della sua scarica. E ciascuna delle quattro scariche nel modulo ha il proprio punto di connessione con un catodo comune. Ciò consente a ciascuna cifra di essere attivata o disattivata in modo indipendente. Inoltre, questa tecnica di multiplexing consente al microcontrollore di utilizzare solo undici o dodici pin invece di trentadue.



I segmenti LED dell'indicatore richiedono il collegamento di resistori limitatori di corrente quando alimentati da 5 V al pin logico. Il valore del resistore è generalmente compreso tra 330 e 470 ohm. Si consiglia inoltre di utilizzare transistor per fornire corrente aggiuntiva, poiché ogni pin del microcontrollore può fornire un massimo di 40 mA. Se si attivano tutti i segmenti della scarica (cifra 8), la corrente consumata supererà questo limite. La figura seguente mostra lo schema di collegamento di un indicatore a sette segmenti a quattro cifre che utilizza transistor resistori limitatori di corrente.



Di seguito sono riportati gli schemi per il collegamento dell'indicatore ai pin di Arduino. Utilizza transistor bipolari NPN BC547. Un potenziometro da 10KOhm collegato all'ingresso A0 della scheda permette di modificare il valore visualizzato sull'indicatore da 0 a 1023.




Sulla scheda Arduino, le uscite digitali D2-D8 in questo caso sono usate per pilotare i segmenti da "a" a "g", e le uscite digitali D9-D12 sono usate per pilotare i bit da D0 a D3. Va notato che in questo esempio il punto non viene utilizzato, ma nello schizzo sottostante è possibile utilizzarlo. Il pin D13 della scheda Arduino è riservato per pilotare il segmento point.



Di seguito è riportato il codice che consente di controllare il display a segmenti a 4 cifre utilizzando la scheda Arduino. In esso, la matrice numerica specifica i codici per i numeri da 0 a 9 in forma binaria. Questo schizzo supporta sia misuratori di catodo comuni (impostazione predefinita) che misuratori di anodo comuni (è necessario rimuovere il commento da una linea alla fine dello schizzo per farlo).


// bit che rappresentano i segmenti da A a G (e punti) per i numeri 0-9 const int numeral \u003d (// ABCDEFG / dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9); // pin per un punto e ogni segmento // DP, G, F, E, D, C, B, A const int segmentPins \u003d (13,8,7,6,5,4,3,2); const int nbrDigits \u003d 4; // numero di cifre dell'indicatore LED // cifre 0 1 2 3 const int digitPins \u003d (9,10,11,12); void setup () (for (int i \u003d 0; i< 8; i++) { pinMode(segmentPins[i], OUTPUT); // устанавливаем выводы для сегментов и точки на выход } for(int i=0; i < nbrDigits; i++) { pinMode(digitPins[i], OUTPUT); } } void loop() { int value = analogRead(0); showNumber(value); } void showNumber(int number) { if(number == 0) { showDigit(0, nbrDigits-1) ; // отображаем 0 в правом разряде } else { // отображаем значение, соответствующее каждой цифре // крайняя левая цифра 0, правая на единицу меньше, чем число позиций for(int digit = nbrDigits-1; digit >\u003d 0; digit--) (if (number\u003e 0) (showDigit (number% 10, digit); number \u003d number / 10;)))) // Visualizza il numero specificato alla cifra data dell'indicatore a 7 segmenti void showDigit (int numero, int digit) (digitalWrite (digitPins, HIGH); for (int segment \u003d 1; segment< 8; segment++) { boolean isBitSet = bitRead(numeral, segment); // isBitSet будет истинным, если данный бит будет 1 // isBitSet = ! isBitSet; // опционально // раскомментируйте опциональную строчку выше для индикатора с общим анодом digitalWrite(segmentPins, isBitSet); } delay(5); digitalWrite(digitPins, LOW); }

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam