Página 1 de 1

Contador com display de 7 segmentos

MensagemEnviado: 25 Ago 2010 11:18
por Leomatias
Bom dia pessoal!
Estou fazendo um cronômetro simples porém estou com dificuldades de elaborar a escrita nos displays. Estou usando dois displays apenas simulando no Proteus. O programa funciona, conta até 99 mas os dois displays ficam piscando, tentei algumas artimanhas mas sem sucesso. Como não trabalho hÁ muito tempo com PIC, gostaria de pedir se possível um auxílio nesta questão, como fazer os displays contarem sem ficar piscando. o programa segue a seguir... usei interrupção de timer 1 para incrementar as variáveis:

sub procedure interrupt

if testbit(pir1,tmr1if)=1 then

dec(valor)

if valor=0 then
valor=400
end if

if contagem<=9 then
inc(contagem)
end if

if contagem=10 then
contagem=0
inc(contagem2)
end if

if contagem2=10 then
contagem2=0
end if

end if
TMR1H=$0B
TMR1L=$DC
clearbit(pir1,tmr1if)
end sub


main:
TRISA=0
TRISB=0
adcon1=%01111111
valor=400
contagem=0
contagem2=0
TMR1H=$0B
TMR1L=$DC
T1CON=%00110001
INTCON=%11000000
pie1=%00000001
PORTA=0

while (1)
PORTB=converte_7seg(contagem2)
setbit(PORTA,1)
delay_ms(100)
clearbit(PORTA,1)
PORTB=converte_7seg(contagem)
setbit(PORTA,0)
delay_ms(200)
clearbit(Porta,0)
wend

end.

Criei uma função que converte nos caracteres para o display, não coloquei aqui para não ficar muito longo. EStou trabalhando com o pic 18f1320, cristal de 4 Mhz e usando o MikroBasic
Desde já valeu pela atenção!!!

MensagemEnviado: 25 Ago 2010 12:14
por Djalma Toledo Rodrigues
Na Simulação quem esta "rodando" é o PC

Não creio que com PIC se perceba piscar

Já que com Clock de 4 MHz ele executará 1 000 000 de Instruções por segundo.

DJ

MensagemEnviado: 25 Ago 2010 14:41
por cmte
Estes delays não estão muito grandes? Experimenta utilizar uns 5 ou 10 ms.

[]´s!

MensagemEnviado: 25 Ago 2010 16:30
por rafael.wachter
apartir de 30 frames por segundo o cérebro não indentifica mais que está piscando, indentifica como se estivesse ligado all the time

1 segundo / 30 = 0,0333333 segundos cada atualização
2 displays: 0,03333 / 2 = 0,016665 segundos cada display fica ligado

faz como o cmte falou, bota uns 10 ou 5 ms pra cada display :lol:

MensagemEnviado: 25 Ago 2010 16:52
por fabim
rafael.wachter escreveu:apartir de 30 frames por segundo o cérebro não indentifica mais que está piscando, indentifica como se estivesse ligado all the time

1 segundo / 30 = 0,0333333 segundos cada atualização
2 displays: 0,03333 / 2 = 0,016665 segundos cada display fica ligado

faz como o cmte falou, bota uns 10 ou 5 ms pra cada display :lol:


que cérebro mané, são os zóios, hehehe.. no fundo dos olhos onde existem as macro celulas, quando a frequencia ultrapassa a escala de 20hz o olho acha que é constante, pois não da tempo de......

MensagemEnviado: 25 Ago 2010 16:57
por rafael.wachter
q seja, tu entendeu... hehehehehe

MensagemEnviado: 25 Ago 2010 17:12
por Leomatias
Olá Djalma!!!

Eu não tinha pensado nesta possibilidade.

Por acaso você encontrou algum erro no software... alguma coisa errada? Estou aguardando sugestões ou alguma luz sobre o asunto. Vou tentar simular no pic - hardware mesmo. Faz muito tempo que não trabalho com isso, por isso as dúvidas e possível dificuldade. Também sou novo no Proteus...

MensagemEnviado: 25 Ago 2010 17:17
por Leomatias
Olá Rafael e cmte!

Já tentei antes em colocar delays menores... mas sem êxito. Aí é que os displays ficam piscando sem parar mesmo.
Trabalhei com 1, 2, 5, 8 milissegundos e nada.
Será que o Djalma está certo? Ao tentar simular no próprio hardware o mesmo funcionará numa boa? Como o PC é quem está simulando pode ser algo mesmo? Sou novo no Proteus, estou aprendendendo ainda

Desde já, obrigado pelas mensagens de vocês. Grande abraço.
Aguardo sugestões sobre algo que posso estar fazendo de errado, além destas observações.

No Proteus...

MensagemEnviado: 25 Ago 2010 17:43
por Leomatias
Olá pessoal...

Reduzi novamente os delays presentes nos comandos para escrita nos displays para 10 ms.
Agora, na simulação do Proteus, mostra a seguinte mensagem:

" Simulation is not running in real time due to excessive CPU load"

Alguma mensagem de sobrecarga do Pic. Estava usando dois transistores BC337 para chaveamento, poderia ser eles também, aí coloquei dois outros na lista de componentes do Proteus que indicava high speed frequency. Mas, mesmo assim ambos ficam piscando ainda. A contagem ocorre numa boa, mas displays piscando

No simulador, eu não tinha colocado os resistores de base dos transistores e nem dos sete segmentos, porque estava dando um erro no Proteus. Consegui colocar agora reinstalando o proteus e consegui, mas o programa continua com os displays piscando?

Afinal, é erro no programa que fiz ou realmente seria devido a simulação do Proteus que causa o efeito de piscagem dos displays?

Desde já obrigado, aguardo uma luz no fim do túnel pessoal!
Abraço.

Valeu pessoal... aguardo dicas do pessoal que já está calejado nisso!

MensagemEnviado: 27 Ago 2010 00:06
por rafael.wachter
concordo com o Djalma
no hardware eh outra coisa, o proteus não deve conseguir frequências de atualização mto altas
Monta o HW :lol:

MensagemEnviado: 27 Ago 2010 00:26
por _blackmore_
Leomatias

o Djalma já falow, o que acontece é que não é o PIC rodando o firm ... por isso vc via piscar o display na simulação.
Quanto a essa msg, é apenas para lhe informar que a simulação não vai ser rápida como vc imagina, pois está exigindo muita capacidade de processamento do PC ... mas a simulação vai acontecer, porém lenta.

MensagemEnviado: 27 Ago 2010 08:02
por Rodrigo F.
o proteus pisca mesmo! monta num protoboard que vai funcionar! pode colocar delay de 2 ms, tenho um protoboard fazendo graça aqui que funciona beleza!!

MensagemEnviado: 27 Ago 2010 20:53
por cmte
Esqueci de comentar que tive o mesmo problema simulando no Proteus, usando transistores para chavear os displays. Experimenta retirar os transistores no Proteus que deve funcionar. E como o pessoal falou, no hardware deve funcionar com certeza. Comigo foi assim também. Também apanhei um pouco nesse assunto, mais exatamente na parte de chaveamento dos displays. O pessoal aqui me ajudou bastante.

[]´s.

MensagemEnviado: 28 Ago 2010 12:27
por barboza

RESOLVIDO

MensagemEnviado: 29 Ago 2010 18:34
por Leomatias
Boa tarde Pessoal!
Obrigado pelo retorno às mensagens.

Pois é, no Proteus não funciona muito bem mesmo. Problema Sanado - No hardware que montei, funcionou perfeitamente.

Grande abraço para todos.

Que a força esteja conosco sempre!