Alguém poderia me dar uma ajuda nissoo?
Tags:
Amigo wallace, vamos la
A forma de se multiplexar display de 7 segmento procede da seguinte maneira
Nesta imagem acima, vimos que o PIC não esta ativando nenhuma de suas saidas.
Agora ja podemos ver ele jogando a sequencia binaria no PORTB para que o numero 4 seja mostrado no 4 display, temos que observar que para o 4 display ligar temos que acionar o pino C0 que faz o transistor acionar e ligar o display ao GND
Mostrando Dezena
Mostrando Milhar
Pessoal viram como a sequencia fisica é facil de ser feita
Segue o codigo para exemplo feito no compilador CCS, para quem quiser baixar o arquivo do protheus e o .hex baixar www.mvm.eng.br/multiplexador.rar
Codigo utilizado
void main()
{
int display_unidade=4;
int display_dezena=3;
int display_centena=2;
int display_milhar=1;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(VREF_HIGH|0);
output_b(0); //Inicializa portB em 0
while(true)
{
switch (display_unidade)
{
case 0:output_b(0b00111111);
break;
case 1:output_b(0b00000110);
break;
case 2:output_b(0b01011011);
break;
case 3:output_b(0b01001111);
break;
case 4:output_b(0b01100110);
break;
case 5:output_b(0b01101101);
break;
case 6:output_b(0b01111101);
break;
case 7:output_b(0b00000111);
break;
case 8:output_b(0b01111111);
break;
case 9:output_b(0b01101111);
break;
}
output_high(PIN_C0);
delay_ms(10);
output_low(PIN_C0);
switch (display_dezena)
{
case 0:output_b(0b00111111);
break;
case 1:output_b(0b00000110);
break;
case 2:output_b(0b01011011);
break;
case 3:output_b(0b01001111);
break;
case 4:output_b(0b01100110);
break;
case 5:output_b(0b01101101);
break;
case 6:output_b(0b01111101);
break;
case 7:output_b(0b00000111);
break;
case 8:output_b(0b01111111);
break;
case 9:output_b(0b01101111);
break;
}
output_high(PIN_C1);
delay_ms(10);
output_low(PIN_C1);
//rotina para multiplexar os displays
switch (display_centena)
{
case 0:output_b(0b00111111);
break;
case 1:output_b(0b00000110);
break;
case 2:output_b(0b01011011);
break;
case 3:output_b(0b01001111);
break;
case 4:output_b(0b01100110);
break;
case 5:output_b(0b01101101);
break;
case 6:output_b(0b01111101);
break;
case 7:output_b(0b00000111);
break;
case 8:output_b(0b01111111);
break;
case 9:output_b(0b01101111);
break;
}
output_high(PIN_C2);
delay_ms(10);
output_low(PIN_C2);
switch (display_milhar)
{
case 0:output_b(0b00111111);
break;
case 1:output_b(0b00000110);
break;
case 2:output_b(0b01011011);
break;
case 3:output_b(0b01001111);
break;
case 4:output_b(0b01100110);
break;
case 5:output_b(0b01101101);
break;
case 6:output_b(0b01111101);
break;
case 7:output_b(0b00000111);
break;
case 8:output_b(0b01111111);
break;
case 9:output_b(0b01101111);
break;
}
output_high(PIN_C3);
delay_ms(10);
output_low(PIN_C3);
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por