Fork me on GitHub

Microcontrolandos

O Blog está passando por uma fase de mudanças. Todos os posts estão sendo atualizados, códigos, links e imagens estão sendo arrumados. Conteúdos novos ainda estão por vir.

Projeto 13: Contador de Pulsos

Share:

Contador de Pulsos





Mais um projeto criado por mim. Trata-se de um contador de pulsos. funciona da seguinte maneira: Ao aplicar um pulso na entra PORTD.RD0 faz com que a variável cnt incremente. Como utiliza-se um display de 7 segmentos não é possivel inserir o valor de cnt direto na saída para o display. É necessário criar um array com valores correspondentes ao digito que será mostrado no display. No próprio MikroC PRO for PIC existe uma ferramenta que o auxilia.

Para que cada numero fosse mostrado corretamente no display, foi necessário "dizer" ao display em qual coluna (1, 2, 3 ou 4) será utilizada. Para isso usamos as saídas da PORTC, pino 0, 1, 2 e 3.

Neste projeto utilizou-se um cristal de 4MHz.

DOWNLOAD:
Arquivo-Fonte: ContadorDePulsos.asm;
Arquivo de Simulação do Proteus: ContadorDePulsos.DSN;

CÓDIGO-FONTE:

unsigned int cnt=0;
bit oldstate;
char number[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
char digito1,digito2,digito3,digito4;

void main() {
TRISD=255;
TRISB=0;
TRISC=0b10000000;
while(1){

 if(portd.f0==1){
  oldstate=1;
 }
 if(oldstate && portd.f0==0){
  oldstate=0;
  cnt++;
      if(cnt>9999){
      cnt=0;
      }
 }
digito1 = cnt / 1000;
digito2 = (cnt % 1000) / 100;
digito3 = ((cnt % 1000) % 100) / 10;
digito4 = ((cnt % 1000) % 100) % 10;

PORTC=0b00001000;
PORTB=number[digito4];
delay_ms(1);
PORTC=0b00000100;
PORTB=number[digito3];
delay_ms(1);
PORTC=0b00000010;
PORTB=number[digito2];
delay_ms(1);
PORTC=0b00000001;
PORTB=number[digito1];
delay_ms(5);
}
}

13 comentários:

  1. COMO ACRESSENTAR MAIS 2 DISPLAY NO CONTADOR DE PULSOS

    ResponderExcluir
    Respostas
    1. Tenho um exemplo de contador que é expanssível, sem o uso de microcontrolador, muito fácil de ser realizado. http://jp-mecatron.weebly.com/digital.html

      Excluir
  2. Amigo tiago você pode fazer um contador com pic16f628a. obrigado

    ResponderExcluir
    Respostas
    1. Tenho um contador com o PIC16F628A é só entrar em contato te envio por e-mail jp.mecatron@gmail.com

      Excluir
  3. Tiago, você teria algum programa onde a cada vez que fosse pressionado um botão o display incrementa de 1 em 1? Por ex: apertou uma vez o display mostra 1, apertou outra vez o mesmo botão o display mostra 2, e etc...

    ResponderExcluir
  4. OLÁ TIAGO ESTOU POSTANDO AQUI NO SEU BLOG ALGUNS COMENTÁRIOS AFIM DE AJUDÁ-LO A ATENDER OS LEITORES DE SEU BLOG, EM ALGUNS CASOS TENHO COLOCADO LINK QUE OS DESVIAM PARA O MEU SITE OU E-MAIL, MAS SEMPRE TRATANDO DE OFERECER AJUDA. SOU UM FÃ ASSÍDUO DO SEU BLOG. ONDE APRENDI MUITO COM VC. GRANDE ABRAÇO.

    ResponderExcluir
  5. OLA , como mudaria esse codigo para o display 7 seg duplo?

    ResponderExcluir
  6. Ola amigo, muito legal, mais o link para asm não esta funcionando. dinomartins_2007@hotmail.com, se puder me enviar, agradeço.

    ResponderExcluir
  7. Alterei para o 16f887 com catodo comum!! Tambem da para anodo comum no arquivo esta explicando como fazer !!! https://drive.google.com/file/d/0B-YFPrv2IzWXS29qMEw0SVlhMDg/view?usp=sharing

    ResponderExcluir
  8. ola amigo, parabéns pelo seu blog,
    eu sou iniciante em Arduíno, precisava alterar o meu projeto de Contador de Pulsos, o CÓDIGO-FONTE em Arduíno dá o erro de "'bit' does not name a type" como posso corrigir este erro? ou tem como enviar o arquivo em .ino
    badiulah@terra.com.br

    ResponderExcluir