Guia Completo Dos Displays De 7 Segmentos - Arduino
Maybe your like
Usando Display com o PCF8574
Existem basicamente dois métodos de controle dos Displays de 7 segmentos. O método de controle direto dos segmentos através de portas dos registradores e o método de multiplexação dos segmentos.
O método de controle deve ser analisado antes de montar um projeto, pois existem vantagens e desvantagens em cada método.
Método de controle direto dos segmentos:
Esse tipo de circuito tem a vantagem de emitir uma maior quantidade de luz, tornando-o mais visível. Mas ao mesmo tempo, gasta-se mais corrente. Como cada segmento sempre fica ligado ou desligado, um registrador é associado à cada um. Registrador no estado 1 aciona o segmento. Estado 0 apaga o segmento.
Analisando vários projetos de Displays de 7 segmentos com Arduino, a grande maioria usa as próprias portas do Microcontrolador para acionar os segmentos. Achei esses circuitos inapropriados para o Arduino. Não acho interessante usar 8 ou mais portas para acionamento dos displays, pois dessa forma, sobram poucas portas para outros dispositivos.
Usando o 8 bit I/O Expander PCF8574 :
Por isso, na primeira montagem usei o chip PCF8574. Esse chip contem 8 registradores que podem funcionar como entrada e ou como saída. No controle do display, os registradores são configurados como saída. Como a interface do chip é a I2C, apenas dois pinos são conectados nas portas do Arduino (SDA e SCL). E uma grande vantagem é que no barramento I2C, até oito PCF8574 podem ser usados, conectados em paralelo.
PCF8574 – datasheet

Esse é o diagrama do circuito de controle de dois displays de 7 segmentos (F5161BH- anodo comum) usando os chips PCF8574. Qualquer outro display anodo comum poderá ser usado, desde que não ultrapasse a capacidade de corrente do I/O Expander. Esse circuito é modular e poderá conectar até 8 displays em um mesmo barramento I2C. Para cada display é usado um chip.
Veja que existem muitas ligações entre os displays e o chip. Mas o controle do Arduino é feito através de apenas duas ligações da interface I2C. Para simplificar o diagrama, separei algumas ligações. Conecte as ligações identificadas por letras e cores. Para limitar a corrente nos leds, resistores de 220 ohms são conectados em série com os segmentos. Se precisar de mais brilho, pode usar resistores de até 100 ohms. Resistores de pullup de 4,7 K ohms são necessários nas ligações SDA e SCL da interface I2C. O chip PCF8574 da esquerda tem o endereço 0x21 e o da direita o endereço 0x20 (pinos A0,A1 e A2). São muitas ligações, portanto antes de energizar o circuito, confira todo a montagem.
Diagrama PCF8574 Display 7SBaixar
O sketch para fazer funcionar os displays usando o PCF8574, foi desenvolvido por mim baseando-me em outros dois exemplos. Se for usar mais de 2 displays em um mesmo barramento I2C, terá que fazer algumas adaptações no programa.
O Programa faz a contagem de 0 a 99, sucessivamente.
// Arduino - Display 7 Segmentos com PCF8574 // https://blog.eletrogate.com/guia-completo-dos-displays-de-7-segmentos-arduino // Interface Arduino I2C > SDA = A4 SCL = A5 Resistor 4K7 pullup // baseado em https://www.instructables.com/id/Arduino-and-PCF8574-IO-Expander-Binary-Counter-and // baseado em http://forum.arduino.cc/index.php?topic=307479.15 #include <Wire.h> // biblioteca wire #define digito_1 0x20 // endereço do display digito 1 - lado direito #define digito_2 0x21 // endereço do display digito 2 - lado esquerdo int addressDisplay; // variável do endereço do display int dataDisplay; // variável do dado do display int atraso = 300; // atraso de 300 milisegundos int n; // variável numero de dígitos int digits[2]; // matriz com dois algarismos long value; // variável do numero long divider; // variável do divisor void setup() { Wire.begin(); // inicializa a interface I2C } void pcf8574Write(byte address, byte data ) // envia dado para PCF8574 - interface I2C { Wire.beginTransmission(address); // envia o endereço do PCF8574 Wire.write(data); // envia o dado para o PCF8574 Wire.endTransmission(); // termina transmissão } void displayNumber () { if (digits[n] == 0) dataDisplay = 0x81 ; // mostra número 0 if (digits[n] == 1) dataDisplay = 0xCF ; // mostra número 1 if (digits[n] == 2) dataDisplay = 0x92 ; // mostra número 2 if (digits[n] == 3) dataDisplay = 0x86 ; // mostra número 3 if (digits[n] == 4) dataDisplay = 0xCC ; // mostra número 4 if (digits[n] == 5) dataDisplay = 0xA4 ; // mostra número 5 if (digits[n] == 6) dataDisplay = 0xA0 ; // mostra número 6 if (digits[n] == 7) dataDisplay = 0x8F ; // mostra número 7 if (digits[n] == 8) dataDisplay = 0x80 ; // mostra número 8 if (digits[n] == 9) dataDisplay = 0x8C ; // mostra número 9 } void printDisplay () // mostra algarismos em 2 displays { for (int i = 0; i < 100; i++) // contagem de 0 a 99 { n = 2; // número de casas decimais value = i ; // número a ser desmembrado em digitos divider = 10; // divisor por 10 while (n--) // contagem regressiva dos dígitos { digits[n] = (value / divider); // carrega matriz com a divisão value = value - (digits[n] * divider); // equação divider = divider/10; // divisor dividido por 10 } n = 2; // número de casas decimais while (n--) // contagem regressiva dos dígitos { if (n == 0) // se for o primeiro dígito - lado direito { addressDisplay = digito_1 ; // endereça o PCF8574 displayNumber (); // mostra o número } if (n == 1) // se for o segundo dígito - lado esquerdo { addressDisplay = digito_2 ; // endereça o PCF8574 displayNumber (); // mostra o número } pcf8574Write(addressDisplay, dataDisplay); // envia dado para PCF8574 endereçado } delay (atraso); // atraso de tempo } } void loop() { printDisplay (); // mostra a contagem nos displays } // Para mostrar carater A = 0x88 // Para mostrar carater B = 0xE0 // Para mostrar carater C = 0xB1 // Para mostrar carater D = 0xC2 // Para mostrar carater E = 0xB0 // Para mostrar carater F = 0xB8 // Para mostrar todos segmentos ligados = 0x00Tag » Codigo Para Display 7 Segmentos Arduino
-
Display 7 Segmentos Y Cómo Crear Un Dado Electrónico DIY
-
Como Usar Um Display 7 Segmentos Com O Arduino - FilipeFlop
-
Practicas Y Codigo Ejemplo Para Display De 7 Segmentos De Anodo ...
-
Arduino: Cómo Conectar Un Display De 7 Segmentos - Tech Krowd
-
Display 7 Segmentos Arduino: Tutorial Para Projetos - Blog Usinainfo
-
Arduino Display 7 Segmentos Cátodo Común | CodigoElectronica
-
[PDF] ARDUINO Y EL DISPLAY DE 7 SEGMENTOS - Blogsaverroes
-
Display De 7 Segmentos | Tienda Y Tutoriales Arduino - Prometec
-
Liberia "7 Segmentos" Arduino (Español)
-
Empezando Con Arduino - 1G: Display De 7 Segmentos
-
Práticas E Código Exemplo Para Display De 7 Segmentos De Anodo ...
-
Usando Display 7 Segmentos Com Arduino (código Otimizado) - Squids
-
Arduino Display De 7 Segmentos. - KIO4