O display de sete segmentos é muito usado em circuito com microcntroladores. Esta postagem mostra como ligá-lo ao picaxe 08M com o auxilio do shift register 74hc595, já que este picaxe possui apenas quatro pinos que podem ser usados como saída.
A postagem "Arduino dimmer com display de sete segmentos" traz alguns detalhes sobre o display de sete segmentos que serão úteis nesta montagem. Os dígitos serão formados a partir da mesma tabela, acrescentando-se um zero à direita do bit menos significativo de cada número da tabela para completar o byte.
O 08M envia cada byte, bit a bit, para o 7495 que tem suas oito saídas ligadas ao display. A saída Q7 foi ligada ao pino correspondente ao ponto. Um bom tutorial sobre o shift register pode ser encontrado no site do arduino. Basicamente para usá-lo é preciso três sinais: um clock para o shift, um clock para o latch e o terceiro deve conter o bit de dado.
O 08M envia cada byte, bit a bit, para o 7495 que tem suas oito saídas ligadas ao display. A saída Q7 foi ligada ao pino correspondente ao ponto. Um bom tutorial sobre o shift register pode ser encontrado no site do arduino. Basicamente para usá-lo é preciso três sinais: um clock para o shift, um clock para o latch e o terceiro deve conter o bit de dado.
Para formar um número no display são enviados oito bits através do pino "out0" do picaxe, denominado aqui como dataPin. Por exemplo, para formar o número zero, considerando 1 para segmento aceso e 0 para apagado, temos que enviar o byte "11111100" que corresponde, em decimal, a 252. O programa segue a sequência abaixo:
1 - Armazena o byte em "b0" que começa no bit 0 e termina no bit 7;
2 - Coloca o clock do latch em nível baixo;
3 - Coloca o clock do shift em nível baixo. Preparando-o para a passagem do bit que acontece na mudança do clock do nível baixo para o alto (0 para 1);
4 - Verifica o estado do bit0, que neste caso é 0 colocando o dataPin em nível baixo;
5 - Coloca o clock do shift em nível alto. O bit0 vai para a saída do primeiro registrador do shift que também é a entrada do segundo;
6 - Os paços 3 , 4 e 5 se repetem para os outros sete bits. Cada vez que um bit é adicionado os outros são "empurrados" para o registrador seguinte;
7 - Após completar o envio dos oito bits coloca o clock do latch em nível alto fazendo com que todos os bits apareçam na saída do CI, mostrando assim o dígito no display.
symbol dataPin = 0 ' pino do dados seriais
symbol latchPin = 2 ' clock do latch apos ter todos os dado vai a nivel alto para mostrar na saida
symbol shiftPin = 1 ' clock do registrador de deslocamento
symbol cnt1 = b1
symbol dados = b0
main: 'laco principal
for b4=0 to 9
'lookup armazena o numero que esta na posicao b4 na variavel "dados"
'0 1 2 3 4 5 6 7 8 9
lookup b4,(252,96,218,242,102,182,190,224,254,246),dados
low latchPin 'clock do latch em nivel baixo
for cnt1 =0 to 7
low shiftPin 'clk do shift em nivel baixo
' a cada passagem verifica se o bit correspondente
' é zero ou um e coloca a saida em nivel alto ou baixo respectivamente
select cnt1
case 0
{
if bit0 = 1 then
high dataPin
else
low dataPin
endif
}
case 1
{
if bit1 = 1 then
high dataPin
else
low dataPin
endif
}
case 2
{
if bit2 = 1 then
high dataPin
else
low dataPin
endif
}
case 3
{
if bit3 = 1 then
high dataPin
else
low dataPin
endif
}
case 4
{
if bit4 = 1 then
high dataPin
else
low dataPin
endif
}
case 5
{
if bit5 = 1 then
high dataPin
else
low dataPin
endif
}
case 6
{
if bit6 = 1 then
high dataPin
else
low dataPin
endif
}
case 7
{
if bit7 = 1 then
high dataPin
else
low dataPin
endif
}
endselect
high shiftPin 'clk shift pin em nivel alto envia o bit para o proximo registrador
next cnt1
high latchPin 'clock do latch apos ter todos os dado (8 bits)
'vai a nivel alto para mostrar na saida do 7495
pause 945 'entre numeros
next b4 ' fim do laco for
goto main ' fim do laco pricipal