Boa noite,
Sou novo no forum e preciso de ajuda na programação do pic16f84.
Pretendo fazer um contador de pulsos com 4 digitos que comece em 0 e vá até 9999. A ideia é a seguinte:
Sempre que se precione e largue o botão 1 ele incrementa uma unidade ao contador e esse valor apareçe no digito.
O botão 2 faz um reset ao contador ficando os digitos a zero.
O botão 3 quando precionado memoriza o valor que está apresentado no digito.
O botão 4 e 5 premite a visualisação dos valores memorizados permitindo navegar nos mesmos para cima ou para baixo
O botão 6 apaga os valores em memoria.
Complicado? ideias para esquematico também são bem vindas
Obrigado desde já e fico a aguardar a vossa colaboração.
Ajuda com PIC16F84
- carlos_cfr7
- Quadro de Honra
- Mensagens: 619
- Registado: 11 jun 2007, 15:37
- Localização: Faro
- Been thanked: 1 time
Re: Ajuda com PIC16F84
e qual é a parte que precisas ajuda?
nao sabes por onde começar? ou queres ouvir opinioes antes de começar a fazer qq coisa?
programas em C ou assembly?
nao tens portos suficientes para fazer 4 digitos em bcd. por isso aconselho a fazeres isso em binario e usar electronica para converter de binario para BCD com os respectivos displays de 7 segmentos.
nao sabes por onde começar? ou queres ouvir opinioes antes de começar a fazer qq coisa?
programas em C ou assembly?
nao tens portos suficientes para fazer 4 digitos em bcd. por isso aconselho a fazeres isso em binario e usar electronica para converter de binario para BCD com os respectivos displays de 7 segmentos.
Eng. de electrónica e telecomunicações
Re: Ajuda com PIC16F84
Boa noite carlos
Não sei por onde começar, mas 3 digitos chega para contagem.
O que se passa é que estou a começar a programar em assembly e gostaria de fazer um trabalho inicial com as caracteristicas descritas.
Tinha-me esquecido do problema do numero de portos do PIC obrigado pela dica, mas 3 digitos é suficiente excedi-me.
Quanto ao esquematico procuro ainda na net e não encontrei ainda nada.
Obrigado
Não sei por onde começar, mas 3 digitos chega para contagem.
O que se passa é que estou a começar a programar em assembly e gostaria de fazer um trabalho inicial com as caracteristicas descritas.
Tinha-me esquecido do problema do numero de portos do PIC obrigado pela dica, mas 3 digitos é suficiente excedi-me.
Quanto ao esquematico procuro ainda na net e não encontrei ainda nada.
Obrigado
-
- Técnico Dedicado
- Mensagens: 754
- Registado: 12 jan 2008, 00:53
- Localização: Funchal
- Has thanked: 17 times
- Been thanked: 14 times
- Contacto:
Re: Ajuda com PIC16F84
Viva,
Aconselho fazer isso em MikroC pois já tem funções específicas para botões, pois elimina problemas de debounce.
No site do mikroelektronica tem vários exemplos e o help do programa é bastante elucidativo.
A nível do hardware sempre tens o Proteus que tem diversos circuitos com PIC's.
Cumps,
Bruno
Aconselho fazer isso em MikroC pois já tem funções específicas para botões, pois elimina problemas de debounce.
No site do mikroelektronica tem vários exemplos e o help do programa é bastante elucidativo.
A nível do hardware sempre tens o Proteus que tem diversos circuitos com PIC's.
Cumps,
Bruno
Atentamente,
Bruno
-------------------------------------------------------------------------------------------------------------------
M4I - Manutenção Industrial
e-mail: geral@m4i.pt
Bruno
-------------------------------------------------------------------------------------------------------------------
M4I - Manutenção Industrial
e-mail: geral@m4i.pt
- patinhofeio
- Quadro de Honra
- Mensagens: 513
- Registado: 30 mar 2008, 10:45
- Localização: 150 Km de Lisboa
Re: Ajuda com PIC16F84
Boas.
Para projecto inicial, é um bocado arrojado, mas força nisso.
Para solucionar o problema dos portos, podes usar multiplexagem. Complica um pouco, mas nesse projecto todo, não será a multiplexagem a travar-te o projecto.
Explicando a multiplexagem:
Ligas cada segmendo(A a H) a cada pino do portB e depois a cada segmento igual do digito seguinte. Ficas por exemplo:
RB0=> A (de todos os display's)
RB1=> B (de todos os display's)
etc.
Depois disso, ligas o comum de cada display a um transistos apropriado ao display(conforme seja de ânodo ou cátodo comum) A base desses transístores vai usar 4 pinos do PortA(de 0 a 3)
O conjunto de teclas, podes fazer com teclado matricial, ou por array de teclas. Se for o 1º caso, o teclado vai partilhar o PortB com os segmentos, se for o 2º caso, podes alimentar o comum com um pino do PortA, e cada botão ligar a um pino do PortB.
O funcionamento:
O pic mostra o valor no display 1 e espera 5ms;
Apaga o display 1 e liga o 2, volta a esperar 5ms
Apaga o display 2 e liga o 3, volta a esperar 5ms
Apaga o display 3 e liga o 4, volta a esperar 5ms
Apaga o display 4 e liga o pino comum das teclas=> vai ler o PortB(entretanto reconfigurado para funcionar como entradas)
Faz o debouce á tecla premida, e incrementa os contadores necessários
Desliga o pino comum das teclas e reinicia o ciclo.
Se usares interrupções para contar os 5ms, podes usar o tempo restante entre interrupções para fazer os cálculos para o valor de cada digito(dividir o numero inteiro em unidades, dezenas centenas e milhares)
Para ideias sobre ligações, podes visitar a pagina da MIKROELECTRONIKA tem tem uns kits de desenvolvimento fantásticos. Nessa pagina, podes aceder ao esquema da placa, e consegues ver como fazer as ligações em multiplexagem. Na placa o porto dos segmentos é o PortD, mas nesse pic podes usar o PortB. Ah, também nessa página há exemplos de código, que é fixe para quem quer experimentar alterações ou tentar interpretar programas.
Mais alguma coisa, vai dizendo.
Abraço
PS: Eu no fim do curso que fiz de programação, fiz um contador sua vez de 0 a 99 com 8 balcões de chamada diferentes.(com 4 display's = 27-2 ) O sistema incrementava a contagem da senha, e mostrava o numero do balcão que chamou. Com uma pequena alteração de código, coloquei o mesmo programa a contar ate 999 com os 4 display's apenas(usei o ponto decimal do 3º display para fazer a separação entre o numero e o balcão = 327.8 ) Fica outra ideia para projectos de quem esteja a aventurar-se nos pic's.
Para projecto inicial, é um bocado arrojado, mas força nisso.
Para solucionar o problema dos portos, podes usar multiplexagem. Complica um pouco, mas nesse projecto todo, não será a multiplexagem a travar-te o projecto.
Explicando a multiplexagem:
Ligas cada segmendo(A a H) a cada pino do portB e depois a cada segmento igual do digito seguinte. Ficas por exemplo:
RB0=> A (de todos os display's)
RB1=> B (de todos os display's)
etc.
Depois disso, ligas o comum de cada display a um transistos apropriado ao display(conforme seja de ânodo ou cátodo comum) A base desses transístores vai usar 4 pinos do PortA(de 0 a 3)
O conjunto de teclas, podes fazer com teclado matricial, ou por array de teclas. Se for o 1º caso, o teclado vai partilhar o PortB com os segmentos, se for o 2º caso, podes alimentar o comum com um pino do PortA, e cada botão ligar a um pino do PortB.
O funcionamento:
O pic mostra o valor no display 1 e espera 5ms;
Apaga o display 1 e liga o 2, volta a esperar 5ms
Apaga o display 2 e liga o 3, volta a esperar 5ms
Apaga o display 3 e liga o 4, volta a esperar 5ms
Apaga o display 4 e liga o pino comum das teclas=> vai ler o PortB(entretanto reconfigurado para funcionar como entradas)
Faz o debouce á tecla premida, e incrementa os contadores necessários
Desliga o pino comum das teclas e reinicia o ciclo.
Se usares interrupções para contar os 5ms, podes usar o tempo restante entre interrupções para fazer os cálculos para o valor de cada digito(dividir o numero inteiro em unidades, dezenas centenas e milhares)
Para ideias sobre ligações, podes visitar a pagina da MIKROELECTRONIKA tem tem uns kits de desenvolvimento fantásticos. Nessa pagina, podes aceder ao esquema da placa, e consegues ver como fazer as ligações em multiplexagem. Na placa o porto dos segmentos é o PortD, mas nesse pic podes usar o PortB. Ah, também nessa página há exemplos de código, que é fixe para quem quer experimentar alterações ou tentar interpretar programas.
Mais alguma coisa, vai dizendo.
Abraço
PS: Eu no fim do curso que fiz de programação, fiz um contador sua vez de 0 a 99 com 8 balcões de chamada diferentes.(com 4 display's = 27-2 ) O sistema incrementava a contagem da senha, e mostrava o numero do balcão que chamou. Com uma pequena alteração de código, coloquei o mesmo programa a contar ate 999 com os 4 display's apenas(usei o ponto decimal do 3º display para fazer a separação entre o numero e o balcão = 327.8 ) Fica outra ideia para projectos de quem esteja a aventurar-se nos pic's.
Aprender sem pensar é tempo perdido - Confúcio
Participar neste fórum é um privilégio e não um direito
A vida é uma escola. Quem não aprende com a vida, considere-se morto
Participar neste fórum é um privilégio e não um direito
A vida é uma escola. Quem não aprende com a vida, considere-se morto
Re: Ajuda com PIC16F84
boa noite a todos
obrigado pela ajuda e dicas mas tenho que me empenar neste projecto pois faz parte de um trabalho para a faculdade.
muito obrigado
obrigado pela ajuda e dicas mas tenho que me empenar neste projecto pois faz parte de um trabalho para a faculdade.
muito obrigado