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