Curso Técnico em Automação Industrial
Disciplina: Programação aplicada a Microcontroladores
Professor: Marcelo Cendron
Exercícios 4511
O circuito integrado 4511 é um decodificador de 4 bits para displays de
7 segmentos de LED:
Atividade 1
1) Crie um projeto com um Arduino, de forma que apresente os valores de 0 a 9
no display LED de 7 segmentos com o uso do CI 4511.
2) Acrescente mais um conjunto de Display 7 segmentos e CI 4511, de forma
que apresente os valores de 00 a 99.
Atividade 2
Dessa vez, a ideia é economizar pinos, utilizando os pinos de dados em
comuns entre os CI 4511 e trabalhando apenas com o pinos de habilitação:
1
Abaixo é mostrado um exemplo de código fonte:
byte segA[] = {8, 9, 10, 11};
byte valor[5][4] = {
{0, 0, 0, 0},
{1, 0, 0, 0},
{0, 1, 0, 0},
{1, 1, 0, 0},
{0, 0, 1, 0}};
byte habilita1 = 5;
byte habilita2 = 4;
byte pinosLT = 7;
byte pinosBL = 6;
void setup()
{
for (int i = 0; i<4 ;i++)
pinMode(segA[i], OUTPUT);
pinMode(habilita1, OUTPUT);
1 Retirado de http://www.learnerswings.com/2014/04/control-two-seven-
segment-displays.html
pinMode(habilita2, OUTPUT);
pinMode(pinosLT, OUTPUT);
pinMode(pinosBL, OUTPUT);
}
void loop()
{
digitalWrite(pinosLT, HIGH);
digitalWrite(pinosBL, HIGH);
// Enviando o número 1 para o 1º display:
digitalWrite(habilita1, LOW);
digitalWrite(habilita2, HIGH);
for (int i = 0; i<4 ;i++)
digitalWrite(segA[i], valor[1][i]);
delay(1000);
// Enviando o número 2 para o 2º display:
digitalWrite(habilita1, HIGH);
digitalWrite(habilita2, LOW);
for (int i = 0; i<4 ;i++)
digitalWrite(segA[i], valor[2][i]);
delay(1000);
// Enviando o número 3 para o 1º display:
digitalWrite(habilita1, LOW);
digitalWrite(habilita2, HIGH);
for (int i = 0; i<4 ;i++)
digitalWrite(segA[i], valor[3][i]);
delay(1000);
// Enviando o número 4 para o 2º display:
digitalWrite(habilita1, HIGH);
digitalWrite(habilita2, LOW);
for (int i = 0; i<4 ;i++)
digitalWrite(segA[i], valor[4][i]);
delay(1000);
// Enviando zero para os dois displays:
digitalWrite(habilita1, LOW);
digitalWrite(habilita2, LOW);
for (int i = 0; i<4 ;i++)
digitalWrite(segA[i], valor[0][i]);
delay(1000);
}
3) Faça um programa que apresente os valores de 00 a 99 nos dois displays
4) Acrescente mais um conjunto de display e CI e apresente os valores de 000 a
999.