Alguém poderia me dar uma ajuda nissoo?

Exibições: 1073

Responder esta

Respostas a este tópico

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);

}

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço