Mobile
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