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:
Firmware: ContadorDePulsos.hex;
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); } }
COMO ACRESSENTAR MAIS 2 DISPLAY NO CONTADOR DE PULSOS
ResponderExcluirTenho 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
ExcluirAmigo tiago você pode fazer um contador com pic16f628a. obrigado
ResponderExcluirTenho um contador com o PIC16F628A é só entrar em contato te envio por e-mail jp.mecatron@gmail.com
ExcluirTiago, 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...
ResponderExcluirOLÁ 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.
ResponderExcluirOlá Jairo! Você é sempre bem-vindo!!!
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirOLA , como mudaria esse codigo para o display 7 seg duplo?
ResponderExcluirOla amigo, muito legal, mais o link para asm não esta funcionando. dinomartins_2007@hotmail.com, se puder me enviar, agradeço.
ResponderExcluirAlterei 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
ResponderExcluirCara, como você utilizou esse cristal?
ResponderExcluirola amigo, parabéns pelo seu blog,
ResponderExcluireu 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