Contador com display de 7 segmentos

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Contador com display de 7 segmentos

Mensagempor Leomatias » 25 Ago 2010 11:18

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!!!
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor Djalma Toledo Rodrigues » 25 Ago 2010 12:14

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
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor cmte » 25 Ago 2010 14:41

Estes delays não estão muito grandes? Experimenta utilizar uns 5 ou 10 ms.

[]´s!
cmte
Byte
 
Mensagens: 141
Registrado em: 29 Nov 2006 12:53

Mensagempor rafael.wachter » 25 Ago 2010 16:30

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:
Any program which runs right is obsolete.
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Mensagempor fabim » 25 Ago 2010 16:52

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......
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor rafael.wachter » 25 Ago 2010 16:57

q seja, tu entendeu... hehehehehe
Any program which runs right is obsolete.
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Mensagempor Leomatias » 25 Ago 2010 17:12

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...
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor Leomatias » 25 Ago 2010 17:17

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.
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

No Proteus...

Mensagempor Leomatias » 25 Ago 2010 17:43

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!
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20

Mensagempor rafael.wachter » 27 Ago 2010 00:06

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:
Any program which runs right is obsolete.
Avatar do usuário
rafael.wachter
Nibble
 
Mensagens: 89
Registrado em: 19 Nov 2008 13:12
Localização: no RS tchê

Mensagempor _blackmore_ » 27 Ago 2010 00:26

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.
Ouça mais classic rock
_blackmore_
Dword
 
Mensagens: 1397
Registrado em: 28 Set 2008 13:26

Mensagempor Rodrigo F. » 27 Ago 2010 08:02

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!!
Rodrigo F.
Nibble
 
Mensagens: 66
Registrado em: 12 Mar 2010 09:40
Localização: Macapá

Mensagempor cmte » 27 Ago 2010 20:53

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.
cmte
Byte
 
Mensagens: 141
Registrado em: 29 Nov 2006 12:53

Mensagempor barboza » 28 Ago 2010 12:27

Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

RESOLVIDO

Mensagempor Leomatias » 29 Ago 2010 18:34

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!
Leomatias
Bit
 
Mensagens: 35
Registrado em: 20 Fev 2008 09:20


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x