Ir ao conteúdo

Paulo Roberto Santos

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Tudo que Paulo Roberto Santos postou

  1. Olá pessoal! Sou novo aqui no Clube do Hardware. Tenho disponível um kit PEX-30 (diagrama em anexo) que utiliza o microcontrolador PIC16F877A. Estou tendo problemas para fazer 2 displays funcionarem por meio da multiplexação. Tentei realizar a simulação no PROTEUS (em anexo) e também não funcionou Não consigo fazer com que o PORTB envie os sinais necessários para fazer o display funcionar. O código de referência está na aula 16 do seguinte curso: Segue código: #define MENOS PORTA.F0 #define MAIS PORTA.F1 #define DIGIT1 PORTB.F7 #define DIGIT2 PORTA.F2 #define DIGIT3 PORTA.F3 int CENTENA,DEZENA,UNIDADE,Cnt = 0; int Display(int no); void changeCount(); void main() { CMCON=0x07; TRISA=0b00000011; // Configura RA0 e RA1 como entradas TRISB=0b00000000; // Configura PORTB como saídas DIGIT2 = 1; // Desabilita Digito2 DIGIT3 = 1; // Desabilita Digito3 while(1) { changeCount(); // Digito das CENTENAS CENTENA = (Cnt/100)-((Cnt%100)/100); // 253 , 253 e 100 = 53, 0,53 ("2") PORTB = Display(CENTENA); // Envia para PORTB DIGIT1 = 0; // Liga Display1 delay_ms(5); // Aguarda 5 milisegundos DIGIT1 = 1; // Desliga Display1 // Digito das DEZENAS DEZENA = (Cnt%100); //53 , 5,3 , 3 , 0,3 DEZENA = (DEZENA/10)-((DEZENA%10)/10); // "5" PORTB = Display(DEZENA); // Envia para PORTB DIGIT2 = 0; // Liga Display2 delay_ms(5); // Aguarda 5 milisegundos DIGIT2 = 1; // Desliga Display2 // Digito das UNIDADES UNIDADE=Cnt%10; PORTB=Display(UNIDADE); //Envia para PORTB DIGIT3=0; //habilita digito 3(unidade) delay_ms(5); //aguarda 5 milisegundos DIGIT3=1; //desabilita digito 3(unidade) } // Fim do While } // Fim do Void Main //esta função acha o bit pattern(matrix de bits) para ser enviado //para o PORTB e mostrar um número no display de 7 segmentos.O número //é passado como um argumento para a função. int Display(int no) { int Pattern; int SEGMENTO[] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18}; Pattern=SEGMENTO[no]; //para retornar o Pattern return(Pattern); } //end função void changeCount() { while(MAIS == 1) { Cnt = Cnt + 1; delay_ms(180); if(Cnt > 999) Cnt = 99; } while(MENOS == 1) { Cnt = Cnt - 1; delay_ms(180); if(Cnt < 1) Cnt = 0; } } Segue diagrama no proteus, diagrama do display, manual da PEX-30 e arquivos do MikroC e Proteus (zipados). Preciso de uma luz!!! Abraço! proteus - contador - pic16f877a.pdf PEX-30-Diagrama Display.pdf MANUAL_PEX_30_MAXIM_LAB.pdf Contador.zip

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...