Ir ao conteúdo

Display fazer palavra piscar


Ir à solução Resolvido por Poporms,

Posts recomendados

Postado

Boa tarde, estou projetando com MIKROC PRO FOR PIC --18F4550--

 

Eu tenho que escrever 8 palavras no display, tenho que ter 2 botões para cada uma, vou dar um exemplo com duas palavras:

Ao ligar o display ja vai estar escrito no display -> LCD_out(1,1,"Palavra1"); 

                                                                               LCD_out(1,2,"Palavra2");

Pois bem, se eu apertar o botão1 a Palavra1 irá piscar, quando eu apertar o botão2 a palavra2 irá piscar JUNTOS! Se eu apertar o botão3 a palavra1 vai parar de piscar e se eu apertar o botão4 a palavra2 irá parar de piscar.

O codigo que fiz piscar e para sair do while é esse:

void display1()
{
 
     while(desp1 = 0x01)
     {
                  for(i=0;i<10;i++)
                  {
                  Lcd_Chr(1,i,_LCD_TURN_OFF);
                  delay_us(10);
                  }
                  delay_ms(500);
                  Lcd_out(1,4,"Palavra1");
                  delay_ms(500);
                  if(botao3 == 0x01) desp1 = 0x00;
     }
 
}
A duvida é que eu não sei como fazer as duas piscarem ao mesmo tempo, pois não tem como deixar elas em um mesmo WHILE, tem jeito para isso?
Obrigado!
  • Membro VIP
Postado

Uma maneira de piscar é escrever em branco onde antes estava a 'palavra'

//inicialização do hwfor(;{if (botao3) //supondo que está pro gnd{Lcd_out(1,4,"Pressione    ");Lcd_out(2,4,"Botao...");//não conheço lcdout. Suponho que seja (linha,coluna,"texto")}else{Lcd_out(1,4,"Tire o dedo");Lcd_out(2,4,"por favor!!");//não conheço lcdout. Suponho que seja (linha,coluna,"texto")delay_ms(500);Lcd_out(1,4,"             "); //apaga da linha1Lcd_out(2,4,"             "); //apaga da linha2delay_ms(500);}}
 
Postado

Obrigado Isadora, mais se eu fizer isso ele não vai piscar... Para piscar ele tem que ficar apagando e escrevendo, ou seja, dentro de um loop... E é isso mesmo, Lcd_Out(Linha, Coluna, "Texto");

Para fazer Piscar você tem que selecionar a palavra através do for(i=0;i<10;i++), o meu maior problema é fazer duas palavras piscarem ao mesmo tempo, tendo que usar um While para cada palavra, e o microprocessador não lê duas linhas ao mesmo tempo, mais deve ter alguma resposta para isso.

Obrigado. 

  • Membro VIP
Postado

está dentro do loop sim amigo. não é apenas o for(i=0;i<10;i++)... que forma loop, sabia? Perceba o "if" ... "else" que podemos traduzir assim:

"se" o botão não pressionado imprima "Pressione botao"

"caso contrário" imprima "Tire o dedo!" por meio segundo e apague por meio segundo. Eis o loop pisca

 

Se prefere com while e loop for...e tenta ver se tem algo errado

while(1) //ou for(;{Lcd_out(1,4,"Pressione    ");Lcd_out(2,4,"Botao..."); while (botao3); //fique aqui enquanto o botão não estiver pressionado (supondo um pusbutton pro gnd) for(i=0;i<10;i++) //pisca 10 vezes{Lcd_out(1,4,"Espere 10 segs!");Lcd_out(2,4,"por favor!!");//não conheço lcdout. Suponho que seja (linha,coluna,"texto")delay_ms(500); //mantem texto por meio segundoLcd_out(1,4,"                "); //apaga da linha1Lcd_out(2,4,"                "); //apaga da linha2delay_ms(500); //por meio segundo}}

De fato não sei se é exatamente isso que te inquieta

Postado

Obrigado pela explicação.... eu peguei o que você escreveu e coloquei como eu quero....

while(1) //ou for(;;)
{
Lcd_out(1,1,"Palavra1");
Lcd_Out(2,1,"Palavra2");
 
while (botao1 == 0x00); //fique aqui enquanto o botão não estiver pressionado (supondo um pusbutton pro gnd) Ele vai ativar quando for NL1
 
for(i=0;i<10;i++) //vai ficar piscando até o botão1 for == NL0
{
                  Lcd_Chr(1,i,_LCD_TURN_OFF);
                  delay_us(10);
                  }
                  delay_ms(500);
                  Lcd_out(1,1,"Palavra1");
                  delay_ms(500);
}//ASSIm ele fica piscando!!!
//Agora eu quero apertar o BOTAO2 para fazer a Palavra2 Piscar TAMBÉM!
//É isso que não me enquitou! 
  • Solução
Postado

Funcionou!

Obrigado Isadora!

olha como ficou:

while (botao1 == 0x00); //fique aqui enquanto o botão não estiver pressionado (supondo um pusbutton pro gnd)
if(botao4 == 0x01)
{
for(i=0;i<8;i++)
{
                  Lcd_Chr(1,i,_LCD_TURN_OFF);
                  delay_us(10);
                  }
                  delay_ms(500);
                  Lcd_out(1,1,"Palavra1");
                  delay_ms(500);
}// E assim vai... 
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...