Página 1 de 1
Piscar display 7 seg de 500 em 500ms

Enviado:
10 Dez 2009 09:04
por cristian
galera me dar uma dica como faço para os 2 display piscar em 500ms agora quero os 2 ao mesmo tempo isso indica q esta em programaçao
ja tentei varias maneiras so que fica piscando 1 as vezes o outro
este é o codigo
if(tm1==attdisplay)
{
tm1=0;
switch (PonteiroDisplay) //Alterna Display
{
case 0:
output_low(U);
Display=DEZ;
output_D(mask(display));
output_high(D);
break;
case 1:
output_low(D);
Display=UNI;
output_D(mask(display));
output_high(U);
break;
default:
PonteiroDisplay=0;
break;
}//switch (PonteiroDisplay).
if(++PonteiroDisplay >=2)PonteiroDisplay=0;
//output_D(mask(display));
}

Enviado:
10 Dez 2009 09:20
por tcpipchip
se voce esta usando um 4511...mexe nos pinos de controle dele...o LATCH ENABLE

Enviado:
10 Dez 2009 09:23
por cristian
oi Miguel
o msn de casa e do trablaho nao funiona mais nao sei pq tem q formatar mas falta tempo ...pra gente fechar aquele negocio do gsm
.... nao estou usando 4511 ta direto do pic os display

Enviado:
10 Dez 2009 09:38
por tcpipchip
Cara
Tentou jogar LOW em todos os pinos por um tempo de 8ms ?
TCPIPCHIP
PS: Tinha esquecido...ainda tenho aqui guardado...mas lembre-se, tens que trocar pelo modulo com o GPS dentro, certo ?

Enviado:
10 Dez 2009 10:56
por andre_luis
Já fiz uma funcionalidade de piscar / apagar em displays 7-seg ( anodo-comum ), onde apenas um transistor PNP cumpria essa fução. Para isso teria de utilizar mais um pino de I/O do uC.
Não me lembro exatamente o motivo, mas realizar pino-a-pino apresentava algum inconveniente.
+++

Enviado:
10 Dez 2009 11:06
por Djalma Toledo Rodrigues
Tris
Trizaz as Portas - rs
DJ
PS.: Todos os Pinos como entrada - P.q.a.ñ.e rs
.

Enviado:
10 Dez 2009 12:09
por ze
me desculpe mas tenho um antivirus que me impede de avaliar fontes em ccs. Foquemos no piscar display. Isso é fácil. Tendo uma interrupt de timer livre faça-a acontecer na intermitência da piscada. Veja:
...
char port_virtual;
static bit bp,bpd; //flags pisca ou não
...
interrupt inttimer()
{
...
if (bp && bpd) PORTB=0; //ou 0xff... depende CC ou CA
else PORTB=port_virtual; //se não for pra piscar, envia o dado
bpd^=1; //pisca
}
no main() voce controla bp (pisca ou não) e port_virtual (cópia do port)
digitando ao vivo e sem pensar muito... sujeito a cagada.
A qualquer momento vais chegar a conclusão que a interr do timer pode (e deve) ser usada pra algo + nobre como acionar os displays multiplexadamente. (e também auxiliar nas piscadas). Até lá...
a ideia do dj de alternar o tris é ótima e fica + enxuto ainda. Tô com ela na mente mas com pregui de teclar aqui agora.
abç

Enviado:
10 Dez 2009 13:35
por cristian
nao tenho tiomer sobrando estou usando ccs vou fazer o teste do tris
valeu

Enviado:
10 Dez 2009 15:42
por barboza
Bem, a forma que faço pra isso é ao invés de apagar e controlar os display, eu mudo a informação que será apresentada para ' ' (vazio, espaço), assim você separa o seu driver do display da sua aplicação.
Considerando que o multiplex do display esta ok e apresentando o conteúdo nos 2 via interrupção, pense algo assim:
- Código: Selecionar todos
void main ()
{
while (1)
{
dez = '1';
uni = '0';
delayms(500);
dez = ' ';
uni = ' ';
delayms(500);
}
}
/* como são 2, pode ser a cada 10ms */
void int ()
{
static display = 0;
display ^= 1;
if (display)
{
segmentos = dez;
catodo_0 = 0;
catodo_1 = 1;
}
else
{
segmentos = uni;
catodo_1 = 0;
catodo_0 = 1;
}
}
Claro que usei ASCII como exemplo, mas você tem que decodificar para o seu HW.
Pegou a ideia?
Isso ficará piscando
10
__
10
__
...

Enviado:
10 Dez 2009 17:16
por Djalma Toledo Rodrigues
Salva os atuais valores de Tris
TrisX = 0xFF
Delay x
Restabelece TrisX
DJ

Enviado:
10 Dez 2009 17:17
por Djalma Toledo Rodrigues
.

Enviado:
10 Dez 2009 22:52
por cristian
obrigado a todos adaptei o codigo de barboza ao meu e deu certo
valeu