Frequência do display multiplexado maluca

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Frequência do display multiplexado maluca

Mensagempor hemasc » 03 Mai 2007 08:39

Tenho 3 displays de 7 segmentos, eles estão multiplexados, mas demoram cerca de 20 segundos para trocar de um display para o outro, mas quando coloco um resistor de 10Mohm entre os terminais do cristal (4MHz), aumenta a velocidade, mas ainda fica muito lento, caso eu coloque junto ao resistor, meus dedos nos terminais do cristal, a velocidade fica perfeita, ou seja, nem parece que é multiplexado.
Percebi também que a uma variação repentina de velocidade, acredito que o cristal não esteja oscilando constantemente.
Já aterrei a carcaça do cristal mas não ouve diferença na velocidade de multiplexagem.
Tentei aumentar a velocidade para microsegundos mas não ficou legal.
Por favor, preciso de ajuda.
O programa que fiz está abaixo.


#include <16F877a.h>
#device ADC=10
#use delay(clock=4000000)
#fuses NOCPD,NOWDT,BROWNOUT,PUT,XT,NOWRT,NOLVP,NODEBUG,NOPROTECT //0x3F71
//****************************************************************

#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)

#DEFINE Q1 PIN_D1 // transistor 1
#DEFINE Q2 PIN_D0 // transistor 2
#DEFINE Q3 PIN_E2 // transistor 3
#DEFINE punto PIN_E1 // punto decimal

#BYTE salida=7

//****************************************************************
struct digitos_separados // variables en bcd de unidad,decena,centena
{ int unidad, decena, centena;
}
digito;
//****************************************************************

void separar_digitos() // separa resultado en unidad, decena y centena
{ digito.unidad=3;
digito.decena=2;
digito.centena=1;
}
//****************************************************************
void mostrar()
{ int const bcd_7seg[10]= {0x6f,0x05,0x7c,0x3d,0x17,0x3b,0x7b,0x0d,0x7f,0x3f};
int contador;
output_low(Q1);
output_low(Q2);
output_low(Q3);
output_low(punto);
for(contador=0;contador<11000;contador++)
{ salida=bcd_7seg[digito.unidad];
output_high(Q1);
delay_us(500);
output_low(Q1);
delay_cycles(4);
salida=bcd_7seg[digito.decena];
output_high(Q2);
output_high(punto);
delay_us(500);
output_low(Q2);
output_low(punto);
delay_cycles(4);
salida=bcd_7seg[digito.centena];
output_high(Q3);
delay_us(500);
output_low(Q3);
delay_cycles(4);
}
}

void main()
{ set_tris_b(0x0); // puertob=entrada
set_tris_c(0x0); // puertoc=salida
set_tris_d(0x0);
set_tris_e(0x0);

separar_digitos();
mostrar();
}
hemasc
Nibble
 
Mensagens: 80
Registrado em: 26 Fev 2007 08:59
Localização: Campinas - SP

Re: Frequência do display multiplexado maluca

Mensagempor hemasc » 03 Mai 2007 09:18

já me ajudaram... mudei de XT para HS e funcionou perfeitamente
hemasc
Nibble
 
Mensagens: 80
Registrado em: 26 Fev 2007 08:59
Localização: Campinas - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x