Piscar display 7 seg de 500 em 500ms

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Piscar display 7 seg de 500 em 500ms

Mensagempor cristian » 10 Dez 2009 09:04

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));
}
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor tcpipchip » 10 Dez 2009 09:20

se voce esta usando um 4511...mexe nos pinos de controle dele...o LATCH ENABLE
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor cristian » 10 Dez 2009 09:23

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor tcpipchip » 10 Dez 2009 09:38

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 ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor andre_luis » 10 Dez 2009 10:56

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.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Djalma Toledo Rodrigues » 10 Dez 2009 11:06

Tris

Trizaz as Portas - rs

DJ


PS.: Todos os Pinos como entrada - P.q.a.ñ.e rs

.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor ze » 10 Dez 2009 12:09

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ç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor cristian » 10 Dez 2009 13:35

nao tenho tiomer sobrando estou usando ccs vou fazer o teste do tris

valeu
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor barboza » 10 Dez 2009 15:42

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
__
...
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor Djalma Toledo Rodrigues » 10 Dez 2009 17:16

Salva os atuais valores de Tris

TrisX = 0xFF
Delay x
Restabelece TrisX

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Djalma Toledo Rodrigues » 10 Dez 2009 17:17

.
Editado pela última vez por Djalma Toledo Rodrigues em 10 Dez 2009 23:02, em um total de 1 vez.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor cristian » 10 Dez 2009 22:52

obrigado a todos adaptei o codigo de barboza ao meu e deu certo

valeu
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba


Voltar para PIC

Quem está online

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

x