LIÇÃO 14: Registros de turno - Registro de deslocamento 74HC595 e display de 7 segmentos

Introdução

Em algum momento ele chegará ou já chegou ao estágio onde você não tem saídas suficientes em sua Arduino.

Quando conectamos o display diretamente ao Arduino, ocupamos até oito pinos digitais. Isso significa que a placa Arduino (equipada com 14 entradas/saídas digitais) só pode controlar uma tela.

A solução para este problema é muito fácil, basta usar o registro de pergaminho 74HC595.

O registro de deslocamento nos permite aumentar o número de pinos que podemos usar em nossos Arduino (ou outro microcontrolador).

Graças a este pequeno circuito integrado, temos a capacidade de controlar oito saídas usando apenas três pinos de Arduinodigitais.

Componentes

{Product:2000}{Product:256}{Product:1436}{Product:536}{Product:603}{Product:1220}{Product:154}

Início do experimento

Diagrama de display LED de 7 segmentos. A imagem mostra a exibição de 7 segmentos de cátodo comum:

Este tipo de display é "controlado" com "1" lógico ou com tensão positiva.

A tabela a seguir apresenta 0 a 9 (dez dígitos) e cuja correspondência para cada segmento, como você pode ver ao desenhar o número na imagem esquerda, é a seguinte:

Se você estiver usando o visor comum, a tabela deve ser substituída a cada '1' lógico deve ser substituído por zero (0) e cada zero (0) por '1'.

O registro de deslocamento 74HC595 tem um registro de armazenamento de 8 bits e um registro de deslocamento de 8 bits. Os dados são gravados no registro de rolagem serial e, em seguida, ligados ao registro de armazenamento. O registro de armazenamento então controla 8 linhas de saída.

O diagrama do pino de log 74HC595 é o seguinte:

Como funciona o registro de deslocamento 74HC595

O princípio de trabalho do log de rolagem é muito simples: você deve enviar um byte de dados (8 bits) para o log, dependendo do qual o log habilitará ou desativará cada um de seus oito pinos de saída.

O registro tem uma entrada da série DS, que é usada para inserir os dados em cada flanco de upload, ou seja, quando o sinal do relógio relógio (SH_CP) sobe de 0 para 1.

Quando ocorre um flanco a montante no sinal de trava (ST_CP) sobregrava o estado das saídas paralelas do registro de deslocamento no registro de memória.

O estado armazenado no registro de memória aparece nas saídas do sistema quando o sinal do pino OE está baixo.

Os bits que compõem o byte de dados enviados são atribuídos aos pinos de saída na ordem do Q7 ao Q0. Isso significa que o bit de dados mais à esquerda representa o estado do pino Q0 do tronco de deslocamento, e a parte de extrema direita representa o estado do pino de saída do Q7.

Olhando atentamente para a imagem abaixo, você pode entender muito melhor. Cada vez que o relógio marca um pulso de upload, o valor no Data Pin (DS) é registrado. Eles são registrados até que o pino de trava salte, em que ponto para cada saída (Q0 a Q7) um pulso sairá correspondentemente à sequência de pinos de dados capturados. O primeiro 1 seria um 1 para saída Q0, o segundo 1 para o Q1, na sequência 3, '0' sairia pelo Q2, e assim por diante.

Procedimento

Passo 1: Conecte o circuito como mostrado no diagrama a seguir:

Passo 2:Conecte 74HC595

Primeiro, a fiação está conectada à potência e ao solo:

• Vcc (pino 16) e MR (pino 10) conectados a 5V

• Solo GND (pino 8) e OE (pino 13)

Conexão DS, ST_CP e pino SH_CP:

• DS (pino 14) conectado ao pino 11 de Arduino (figura abaixo da linha azul)

• ST_CP (pino 12, pino de bloqueio) conectado ao pino Arduino 8 (linha verde FIG abaixo)

• SH_CP (pino 11, pino do relógio) conectado ao pino Arduino 12 (figura abaixo da linha amarela)

Passo 3: Conecte o display de 7 segmentos

• A exibição de sete segmentos de 3, 8 pinos para GND (Este exemplo utiliza o cátodo comum, em caso de ânodo comum - de 3, 8 pinos a + 5V)

• De acordo com a tabela 74HC595, conectamos o Q0-Q7 a um pino de exibição correspondente de 7 segmentos (A - G e DP), e uma resistência de 220 ohms em série.

Diagrama do circuito

Passo 4: Programa (veja código de amostra em CD ou site oficial)

/ Lab13 Usando um display de 74hc595 e sete segmentos para fazer função recíproca

define os padrões de dígitos LED, de 0 a 9

1 x LED ligado, 0' LED desligado, nesta ordem:

74HC595 pino Q0, Q1, Q2,Q3, Q4, Q5, Q6, Q7

Mapeamento para a,b,c,d,e,f,g de LED de sete segmentos

byte seven_seg_digits[10] ? B1111100, // - 0

B01100000, // ?

B11011010, // ?

B11110010, // ?

B01100110, // ?

B10110110, // ?

B10111110, // ?

B11100000, // ?

B1111110, // ?

B11100110 // ?

};

conectar-se ao ST_CP de 74HC595 (pino 12,pino de trava)

int latchPin 8;

conectar-se ao SH_CP de 74HC595 (pino 11, pino de relógio)

int clockPin s 12;

conectar-se ao DS de 74HC595 (pino 14)

int dataPin s 11;

configuração do vazio() ?

Definir travar, clockPin, dataPin como saída

pinMode(travaPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

}

exibir um número no display do segmento digital

vazio seteSegWrite (dígito byte) ?

definir a travaPin para baixo potencial, antes de enviar dados

digitalWrite(latchPin, LOW);

os dados originais (padrão de bit)

shiftOut (dataPin, clockPin, LSBFIRST, seven_seg_digits[dígito]);

definir a travaPin para alto potencial, depois de enviar dados

digitalWrite(latchPin, HIGH);

}

loop vazio() ?

contar de 9 a 0

para (byte dígito x 10; dígito > 0; --dígito)

atraso (1000);

sevenSegWrite (dígito - 1);

}

suspender 4 segundos

atraso (4000);

}

Passo 5:Construir o programa

Passo 6: Registo o programa no Quadro Um